From 1dd6e5eb98b3f8f913d4d972007aa5d30cbdb40e Mon Sep 17 00:00:00 2001 From: Helen Chong <119173961+helenclx@users.noreply.github.com> Date: Mon, 13 Jan 2025 17:56:01 +0800 Subject: [PATCH] Upgrade to Chyrp Lite "Boreal" --- admin/javascripts/admin.js.php | 207 +-- admin/layouts/help.twig | 102 +- admin/locale/de_DE/LC_MESSAGES/admin.mo | Bin 20866 -> 20629 bytes admin/locale/de_DE/LC_MESSAGES/admin.po | 375 ++-- admin/locale/en_US/LC_MESSAGES/admin.pot | 438 +++-- admin/locale/fr_FR/LC_MESSAGES/admin.mo | Bin 21044 -> 20837 bytes admin/locale/fr_FR/LC_MESSAGES/admin.po | 373 ++-- admin/locale/it_IT/LC_MESSAGES/admin.mo | Bin 20718 -> 20479 bytes admin/locale/it_IT/LC_MESSAGES/admin.po | 373 ++-- admin/locale/nl_NL/LC_MESSAGES/admin.mo | Bin 20446 -> 20207 bytes admin/locale/nl_NL/LC_MESSAGES/admin.po | 373 ++-- admin/locale/zh_CN/LC_MESSAGES/admin.mo | Bin 17108 -> 16879 bytes admin/locale/zh_CN/LC_MESSAGES/admin.po | 367 ++-- admin/pages/content_settings.twig | 26 +- admin/pages/export.twig | 8 +- admin/pages/feathers.twig | 16 +- admin/pages/general_settings.twig | 7 +- admin/pages/manage_groups.twig | 13 +- admin/pages/manage_pages.twig | 15 +- admin/pages/manage_posts.twig | 18 +- admin/pages/manage_uploads.twig | 19 +- admin/pages/manage_users.twig | 15 +- admin/pages/modules.twig | 10 +- admin/pages/route_settings.twig | 5 +- admin/pages/themes.twig | 5 +- admin/partials/page_fields.twig | 18 +- admin/partials/post_fields.twig | 24 +- admin/partials/uploads_modal.twig | 13 +- admin/stylesheets/all.css | 379 ++-- admin/stylesheets/monospace.css | 2 +- feathers/audio/audio.php | 39 +- .../audio/locale/de_DE/LC_MESSAGES/audio.mo | Bin 835 -> 833 bytes .../audio/locale/de_DE/LC_MESSAGES/audio.po | 6 +- .../audio/locale/en_US/LC_MESSAGES/audio.pot | 4 +- .../audio/locale/fr_FR/LC_MESSAGES/audio.mo | Bin 883 -> 881 bytes .../audio/locale/fr_FR/LC_MESSAGES/audio.po | 6 +- .../audio/locale/it_IT/LC_MESSAGES/audio.mo | Bin 841 -> 839 bytes .../audio/locale/it_IT/LC_MESSAGES/audio.po | 6 +- .../audio/locale/nl_NL/LC_MESSAGES/audio.mo | Bin 792 -> 790 bytes .../audio/locale/nl_NL/LC_MESSAGES/audio.po | 6 +- .../audio/locale/zh_CN/LC_MESSAGES/audio.mo | Bin 762 -> 760 bytes .../audio/locale/zh_CN/LC_MESSAGES/audio.po | 6 +- feathers/link/link.php | 24 +- .../link/locale/de_DE/LC_MESSAGES/link.mo | Bin 702 -> 702 bytes .../link/locale/de_DE/LC_MESSAGES/link.po | 6 +- .../link/locale/en_US/LC_MESSAGES/link.pot | 8 +- .../link/locale/fr_FR/LC_MESSAGES/link.mo | Bin 733 -> 731 bytes .../link/locale/fr_FR/LC_MESSAGES/link.po | 6 +- .../link/locale/it_IT/LC_MESSAGES/link.mo | Bin 713 -> 711 bytes .../link/locale/it_IT/LC_MESSAGES/link.po | 6 +- .../link/locale/nl_NL/LC_MESSAGES/link.mo | Bin 617 -> 615 bytes .../link/locale/nl_NL/LC_MESSAGES/link.po | 6 +- .../link/locale/zh_CN/LC_MESSAGES/link.mo | Bin 661 -> 659 bytes .../link/locale/zh_CN/LC_MESSAGES/link.po | 6 +- .../photo/locale/de_DE/LC_MESSAGES/photo.mo | Bin 1441 -> 1439 bytes .../photo/locale/de_DE/LC_MESSAGES/photo.po | 8 +- .../photo/locale/en_US/LC_MESSAGES/photo.pot | 6 +- .../photo/locale/fr_FR/LC_MESSAGES/photo.mo | Bin 1478 -> 1476 bytes .../photo/locale/fr_FR/LC_MESSAGES/photo.po | 8 +- .../photo/locale/it_IT/LC_MESSAGES/photo.mo | Bin 1442 -> 1440 bytes .../photo/locale/it_IT/LC_MESSAGES/photo.po | 8 +- .../photo/locale/nl_NL/LC_MESSAGES/photo.mo | Bin 1364 -> 1362 bytes .../photo/locale/nl_NL/LC_MESSAGES/photo.po | 8 +- .../photo/locale/zh_CN/LC_MESSAGES/photo.mo | Bin 1276 -> 1274 bytes .../photo/locale/zh_CN/LC_MESSAGES/photo.po | 8 +- feathers/photo/photo.php | 24 +- .../quote/locale/de_DE/LC_MESSAGES/quote.mo | Bin 530 -> 530 bytes .../quote/locale/de_DE/LC_MESSAGES/quote.po | 4 +- .../quote/locale/en_US/LC_MESSAGES/quote.pot | 4 +- .../quote/locale/fr_FR/LC_MESSAGES/quote.mo | Bin 580 -> 578 bytes .../quote/locale/fr_FR/LC_MESSAGES/quote.po | 4 +- .../quote/locale/it_IT/LC_MESSAGES/quote.mo | Bin 562 -> 560 bytes .../quote/locale/it_IT/LC_MESSAGES/quote.po | 4 +- .../quote/locale/nl_NL/LC_MESSAGES/quote.mo | Bin 481 -> 479 bytes .../quote/locale/nl_NL/LC_MESSAGES/quote.po | 4 +- .../quote/locale/zh_CN/LC_MESSAGES/quote.mo | Bin 511 -> 509 bytes .../quote/locale/zh_CN/LC_MESSAGES/quote.po | 4 +- feathers/quote/quote.php | 19 +- .../text/locale/de_DE/LC_MESSAGES/text.mo | Bin 542 -> 542 bytes .../text/locale/de_DE/LC_MESSAGES/text.po | 4 +- .../text/locale/en_US/LC_MESSAGES/text.pot | 4 +- .../text/locale/fr_FR/LC_MESSAGES/text.mo | Bin 592 -> 590 bytes .../text/locale/fr_FR/LC_MESSAGES/text.po | 4 +- .../text/locale/it_IT/LC_MESSAGES/text.mo | Bin 596 -> 594 bytes .../text/locale/it_IT/LC_MESSAGES/text.po | 4 +- .../text/locale/nl_NL/LC_MESSAGES/text.mo | Bin 502 -> 500 bytes .../text/locale/nl_NL/LC_MESSAGES/text.po | 4 +- .../text/locale/zh_CN/LC_MESSAGES/text.mo | Bin 501 -> 499 bytes .../text/locale/zh_CN/LC_MESSAGES/text.po | 4 +- feathers/text/text.php | 19 +- .../locale/de_DE/LC_MESSAGES/uploader.mo | Bin 964 -> 962 bytes .../locale/de_DE/LC_MESSAGES/uploader.po | 6 +- .../locale/en_US/LC_MESSAGES/uploader.pot | 4 +- .../locale/fr_FR/LC_MESSAGES/uploader.mo | Bin 1016 -> 1014 bytes .../locale/fr_FR/LC_MESSAGES/uploader.po | 6 +- .../locale/it_IT/LC_MESSAGES/uploader.mo | Bin 966 -> 964 bytes .../locale/it_IT/LC_MESSAGES/uploader.po | 6 +- .../locale/nl_NL/LC_MESSAGES/uploader.mo | Bin 894 -> 892 bytes .../locale/nl_NL/LC_MESSAGES/uploader.po | 6 +- .../locale/zh_CN/LC_MESSAGES/uploader.mo | Bin 853 -> 851 bytes .../locale/zh_CN/LC_MESSAGES/uploader.po | 6 +- feathers/uploader/uploader.php | 50 +- .../video/locale/de_DE/LC_MESSAGES/video.mo | Bin 877 -> 875 bytes .../video/locale/de_DE/LC_MESSAGES/video.po | 6 +- .../video/locale/en_US/LC_MESSAGES/video.pot | 4 +- .../video/locale/fr_FR/LC_MESSAGES/video.mo | Bin 934 -> 932 bytes .../video/locale/fr_FR/LC_MESSAGES/video.po | 6 +- .../video/locale/it_IT/LC_MESSAGES/video.mo | Bin 885 -> 883 bytes .../video/locale/it_IT/LC_MESSAGES/video.po | 6 +- .../video/locale/nl_NL/LC_MESSAGES/video.mo | Bin 837 -> 835 bytes .../video/locale/nl_NL/LC_MESSAGES/video.po | 6 +- .../video/locale/zh_CN/LC_MESSAGES/video.mo | Bin 798 -> 796 bytes .../video/locale/zh_CN/LC_MESSAGES/video.po | 6 +- feathers/video/video.php | 42 +- fonts/Cousine-Bold.woff | Bin 168312 -> 168256 bytes fonts/Cousine-BoldItalic.woff | Bin 160044 -> 160000 bytes fonts/Cousine-Italic.woff | Bin 157304 -> 157224 bytes fonts/Cousine-Regular.woff | Bin 173044 -> 173000 bytes fonts/OpenSans-Bold.woff | Bin 75632 -> 75752 bytes fonts/OpenSans-BoldItalic.woff | Bin 78764 -> 78840 bytes fonts/OpenSans-Italic.woff | Bin 81828 -> 81900 bytes fonts/OpenSans-Regular.woff | Bin 77988 -> 78080 bytes fonts/OpenSans-SemiBold.woff | Bin 77816 -> 77900 bytes fonts/OpenSans-SemiBoldItalic.woff | Bin 81940 -> 82028 bytes includes/cacert.pem | 217 ++- includes/caddyfile.conf.php | 32 + includes/class/Config.php | 43 +- includes/class/Feathers.php | 30 +- includes/class/Flash.php | 49 +- includes/class/Model.php | 34 +- includes/class/Modules.php | 11 +- includes/class/Paginator.php | 20 +- includes/class/Query.php | 23 +- includes/class/Route.php | 28 +- includes/class/SQL.php | 16 +- includes/class/Session.php | 32 +- includes/class/Theme.php | 41 +- includes/class/Translation.php | 25 +- includes/class/Trigger.php | 26 +- includes/class/Update.php | 14 +- includes/common.js | 21 +- includes/common.php | 6 +- includes/controller/Admin.php | 421 +++-- includes/controller/Ajax.php | 29 +- includes/controller/Main.php | 133 +- includes/download.php | 6 +- includes/error.php | 175 +- includes/helpers.php | 808 ++++++--- includes/htaccess.conf.php | 15 + includes/interface/CaptchaProvider.php | 6 +- includes/interface/Controller.php | 8 +- includes/interface/Feather.php | 21 +- includes/interface/FeedGenerator.php | 34 +- includes/lib/AtomFeed.php | 11 +- includes/lib/JSONFeed.php | 19 +- includes/lib/Leaf.php | 78 +- includes/lib/RSSFeed.php | 25 +- includes/lib/ThumbnailFile.php | 108 +- includes/lib/Twig/AbstractTwigCallable.php | 184 ++ .../Attribute/FirstClassTwigCallableReady.php | 20 + includes/lib/Twig/Cache/ChainCache.php | 19 +- includes/lib/Twig/Cache/FilesystemCache.php | 10 +- includes/lib/Twig/Cache/NullCache.php | 6 +- .../Twig/Cache/RemovableCacheInterface.php | 20 + includes/lib/Twig/Compiler.php | 17 +- includes/lib/Twig/DeprecatedCallableInfo.php | 67 + includes/lib/Twig/Environment.php | 63 +- includes/lib/Twig/Error/Error.php | 2 +- includes/lib/Twig/ExpressionParser.php | 757 ++++---- includes/lib/Twig/Extension/CoreExtension.php | 546 ++++-- .../lib/Twig/Extension/DebugExtension.php | 6 +- .../lib/Twig/Extension/EscaperExtension.php | 3 +- .../lib/Twig/Extension/ExtensionInterface.php | 8 +- .../lib/Twig/Extension/GlobalsInterface.php | 5 +- .../lib/Twig/Extension/OptimizerExtension.php | 8 +- .../lib/Twig/Extension/SandboxExtension.php | 32 +- .../Twig/Extension/StringLoaderExtension.php | 5 +- .../Twig/Extension/YieldNotReadyExtension.php | 8 +- includes/lib/Twig/ExtensionSet.php | 80 +- .../Twig/FileExtensionEscapingStrategy.php | 1 + includes/lib/Twig/Lexer.php | 126 +- includes/lib/Twig/Loader/ArrayLoader.php | 8 +- includes/lib/Twig/Loader/ChainLoader.php | 37 +- includes/lib/Twig/Loader/FilesystemLoader.php | 13 +- includes/lib/Twig/Markup.php | 9 +- includes/lib/Twig/Node/AutoEscapeNode.php | 4 +- includes/lib/Twig/Node/BlockNode.php | 11 +- includes/lib/Twig/Node/BlockReferenceNode.php | 4 +- includes/lib/Twig/Node/CaptureNode.php | 6 +- includes/lib/Twig/Node/CheckToStringNode.php | 2 +- includes/lib/Twig/Node/DeprecatedNode.php | 6 +- includes/lib/Twig/Node/DoNode.php | 4 +- includes/lib/Twig/Node/EmbedNode.php | 14 +- includes/lib/Twig/Node/EmptyNode.php | 33 + .../Node/Expression/AbstractExpression.php | 15 + .../Twig/Node/Expression/ArrayExpression.php | 13 +- .../Expression/ArrowFunctionExpression.php | 4 +- .../Node/Expression/AssignNameExpression.php | 16 + .../Node/Expression/Binary/AbstractBinary.php | 11 + .../Node/Expression/Binary/ElvisBinary.php | 50 + .../Node/Expression/Binary/MatchesBinary.php | 18 + .../Expression/Binary/NullCoalesceBinary.php | 83 + .../Twig/Node/Expression/Binary/XorBinary.php | 23 + .../Expression/BlockReferenceExpression.php | 11 +- .../Twig/Node/Expression/CallExpression.php | 116 +- .../Node/Expression/ConditionalExpression.php | 10 +- .../Node/Expression/Filter/DefaultFilter.php | 34 +- .../Twig/Node/Expression/Filter/RawFilter.php | 19 +- .../Twig/Node/Expression/FilterExpression.php | 52 +- .../Node/Expression/FunctionExpression.php | 51 +- .../FunctionNode/EnumCasesFunction.php | 41 + .../Expression/FunctionNode/EnumFunction.php | 45 + .../Node/Expression/GetAttrExpression.php | 40 +- .../lib/Twig/Node/Expression/InlinePrint.php | 5 + .../Expression/MacroReferenceExpression.php | 56 + .../Node/Expression/MethodCallExpression.php | 20 +- .../Twig/Node/Expression/NameExpression.php | 5 + .../Expression/NullCoalesceExpression.php | 20 +- .../Expression/OperatorEscapeInterface.php | 25 + .../Twig/Node/Expression/ParentExpression.php | 4 +- .../Node/Expression/TempNameExpression.php | 30 +- .../Expression/Ternary/ConditionalTernary.php | 42 + .../Twig/Node/Expression/Test/DefinedTest.php | 20 +- .../Twig/Node/Expression/TestExpression.php | 44 +- .../Node/Expression/Unary/AbstractUnary.php | 18 +- .../Node/Expression/Unary/SpreadUnary.php | 22 + .../Node/Expression/Unary/StringCastUnary.php | 22 + .../Variable/AssignContextVariable.php | 18 + .../Variable/AssignTemplateVariable.php | 44 + .../Expression/Variable/ContextVariable.php | 18 + .../Expression/Variable/LocalVariable.php | 18 + .../Expression/Variable/TemplateVariable.php | 42 + includes/lib/Twig/Node/FlushNode.php | 15 +- includes/lib/Twig/Node/ForLoopNode.php | 6 +- includes/lib/Twig/Node/ForNode.php | 17 +- includes/lib/Twig/Node/IfNode.php | 4 +- includes/lib/Twig/Node/ImportNode.php | 30 +- includes/lib/Twig/Node/IncludeNode.php | 12 +- includes/lib/Twig/Node/MacroNode.php | 74 +- includes/lib/Twig/Node/ModuleNode.php | 79 +- includes/lib/Twig/Node/Node.php | 86 +- includes/lib/Twig/Node/Nodes.php | 28 + includes/lib/Twig/Node/PrintNode.php | 4 +- includes/lib/Twig/Node/SandboxNode.php | 4 +- includes/lib/Twig/Node/SetNode.php | 35 +- includes/lib/Twig/Node/TypesNode.php | 28 + includes/lib/Twig/Node/WithNode.php | 6 +- .../Twig/NodeVisitor/EscaperNodeVisitor.php | 100 +- .../Twig/NodeVisitor/OptimizerNodeVisitor.php | 46 +- .../NodeVisitor/SafeAnalysisNodeVisitor.php | 76 +- .../Twig/NodeVisitor/SandboxNodeVisitor.php | 24 +- .../NodeVisitor/YieldNotReadyNodeVisitor.php | 11 +- .../lib/Twig/OperatorPrecedenceChange.php | 42 + includes/lib/Twig/Parser.php | 104 +- .../NodeVisitor/ProfilerNodeVisitor.php | 12 +- includes/lib/Twig/Profiler/Profile.php | 29 +- includes/lib/Twig/Resources/core.php | 4 +- includes/lib/Twig/Runtime/EscaperRuntime.php | 17 +- .../RuntimeLoader/ContainerRuntimeLoader.php | 8 +- .../RuntimeLoader/FactoryRuntimeLoader.php | 8 +- includes/lib/Twig/Sandbox/SecurityPolicy.php | 12 +- includes/lib/Twig/Source.php | 14 +- includes/lib/Twig/Template.php | 229 +-- includes/lib/Twig/TemplateWrapper.php | 29 +- .../lib/Twig/Test/IntegrationTestCase.php | 40 +- includes/lib/Twig/Test/NodeTestCase.php | 63 +- includes/lib/Twig/Token.php | 14 +- .../lib/Twig/TokenParser/ApplyTokenParser.php | 19 +- .../TokenParser/AutoEscapeTokenParser.php | 8 +- .../lib/Twig/TokenParser/BlockTokenParser.php | 19 +- .../TokenParser/DeprecatedTokenParser.php | 2 +- .../lib/Twig/TokenParser/DoTokenParser.php | 4 +- .../lib/Twig/TokenParser/EmbedTokenParser.php | 16 +- .../Twig/TokenParser/ExtendsTokenParser.php | 8 +- .../lib/Twig/TokenParser/FlushTokenParser.php | 4 +- .../lib/Twig/TokenParser/ForTokenParser.php | 18 +- .../lib/Twig/TokenParser/FromTokenParser.php | 25 +- .../lib/Twig/TokenParser/GuardTokenParser.php | 73 + .../lib/Twig/TokenParser/IfTokenParser.php | 11 +- .../Twig/TokenParser/ImportTokenParser.php | 17 +- .../Twig/TokenParser/IncludeTokenParser.php | 16 +- .../lib/Twig/TokenParser/MacroTokenParser.php | 73 +- .../Twig/TokenParser/SandboxTokenParser.php | 10 +- .../lib/Twig/TokenParser/SetTokenParser.php | 10 +- .../lib/Twig/TokenParser/TypesTokenParser.php | 90 + .../lib/Twig/TokenParser/UseTokenParser.php | 14 +- .../lib/Twig/TokenParser/WithTokenParser.php | 10 +- includes/lib/Twig/TokenStream.php | 22 +- includes/lib/Twig/TwigCallableInterface.php | 53 + includes/lib/Twig/TwigFilter.php | 94 +- includes/lib/Twig/TwigFunction.php | 89 +- includes/lib/Twig/TwigTest.php | 73 +- .../Twig/Util/CallableArgumentsExtractor.php | 219 +++ .../lib/Twig/Util/DeprecationCollector.php | 8 +- includes/lib/Twig/Util/ReflectionCallable.php | 12 +- .../lib/xenocrat/markdown/ChyrpMarkdown.php | 1 + .../lib/xenocrat/markdown/GithubMarkdown.php | 30 +- includes/lib/xenocrat/markdown/Parser.php | 7 +- .../markdown/inline/EmphStrongTrait.php | 12 +- .../xenocrat/markdown/inline/LinkTrait.php | 56 +- .../markdown/inline/MediaLinkTrait.php | 54 +- includes/locale/ar_LY/LC_MESSAGES/chyrp.mo | Bin 33156 -> 33371 bytes includes/locale/ar_LY/LC_MESSAGES/chyrp.po | 1038 +++++------ includes/locale/de_DE/LC_MESSAGES/chyrp.mo | Bin 29689 -> 29856 bytes includes/locale/de_DE/LC_MESSAGES/chyrp.po | 1036 +++++------ includes/locale/en_US/LC_MESSAGES/chyrp.pot | 1540 +++++++++-------- includes/locale/fr_FR/LC_MESSAGES/chyrp.mo | Bin 30651 -> 30837 bytes includes/locale/fr_FR/LC_MESSAGES/chyrp.po | 1038 +++++------ includes/locale/it_IT/LC_MESSAGES/chyrp.mo | Bin 29498 -> 29688 bytes includes/locale/it_IT/LC_MESSAGES/chyrp.po | 1038 +++++------ includes/locale/ko_KR/LC_MESSAGES/chyrp.mo | Bin 29642 -> 29884 bytes includes/locale/ko_KR/LC_MESSAGES/chyrp.po | 1042 +++++------ includes/locale/nl_NL/LC_MESSAGES/chyrp.mo | Bin 28894 -> 29073 bytes includes/locale/nl_NL/LC_MESSAGES/chyrp.po | 1038 +++++------ includes/locale/zh_CN/LC_MESSAGES/chyrp.mo | Bin 26069 -> 26227 bytes includes/locale/zh_CN/LC_MESSAGES/chyrp.po | 1042 +++++------ includes/main.js.php | 22 +- includes/model/Group.php | 42 +- includes/model/Page.php | 52 +- includes/model/Post.php | 98 +- includes/model/User.php | 89 +- includes/model/Visitor.php | 17 +- includes/nginx.conf.php | 21 + includes/thumbnail.php | 7 +- install.php | 196 ++- licenses/Open Sans/LICENSE.txt | 259 +-- modules/cacher/cacher.php | 35 +- modules/cacher/upgrades.php | 6 +- modules/cascade/cascade.php | 17 +- modules/cascade/javascript.php | 16 +- .../locale/de_DE/LC_MESSAGES/cascade.mo | Bin 741 -> 739 bytes .../locale/de_DE/LC_MESSAGES/cascade.po | 4 +- .../locale/en_US/LC_MESSAGES/cascade.pot | 2 +- .../locale/it_IT/LC_MESSAGES/cascade.mo | Bin 759 -> 757 bytes .../locale/it_IT/LC_MESSAGES/cascade.po | 4 +- .../locale/nl_NL/LC_MESSAGES/cascade.mo | Bin 705 -> 703 bytes .../locale/nl_NL/LC_MESSAGES/cascade.po | 4 +- .../locale/zh_CN/LC_MESSAGES/cascade.mo | Bin 654 -> 652 bytes .../locale/zh_CN/LC_MESSAGES/cascade.po | 4 +- modules/cascade/upgrades.php | 3 +- .../admin/pages/manage_category.twig | 13 +- modules/categorize/categorize.php | 132 +- .../locale/de_DE/LC_MESSAGES/categorize.mo | Bin 4947 -> 4945 bytes .../locale/de_DE/LC_MESSAGES/categorize.po | 48 +- .../locale/en_US/LC_MESSAGES/categorize.pot | 60 +- .../locale/it_IT/LC_MESSAGES/categorize.mo | Bin 4762 -> 4760 bytes .../locale/it_IT/LC_MESSAGES/categorize.po | 48 +- .../locale/nl_NL/LC_MESSAGES/categorize.mo | Bin 4647 -> 4645 bytes .../locale/nl_NL/LC_MESSAGES/categorize.po | 48 +- .../locale/zh_CN/LC_MESSAGES/categorize.mo | Bin 4163 -> 4161 bytes .../locale/zh_CN/LC_MESSAGES/categorize.po | 48 +- modules/categorize/model/Category.php | 68 +- .../comments/admin/pages/edit_comment.twig | 8 +- .../comments/admin/pages/manage_comments.twig | 11 +- modules/comments/admin/pages/manage_spam.twig | 11 +- modules/comments/comments.php | 248 ++- modules/comments/info.php | 2 +- modules/comments/javascript.php | 18 +- .../locale/de_DE/LC_MESSAGES/comments.mo | Bin 7528 -> 7855 bytes .../locale/de_DE/LC_MESSAGES/comments.po | 190 +- .../locale/en_US/LC_MESSAGES/comments.pot | 216 +-- .../locale/it_IT/LC_MESSAGES/comments.mo | Bin 7694 -> 7692 bytes .../locale/it_IT/LC_MESSAGES/comments.po | 186 +- .../locale/nl_NL/LC_MESSAGES/comments.mo | Bin 7713 -> 7710 bytes .../locale/nl_NL/LC_MESSAGES/comments.po | 186 +- .../locale/zh_CN/LC_MESSAGES/comments.mo | Bin 7026 -> 7024 bytes .../locale/zh_CN/LC_MESSAGES/comments.po | 186 +- modules/comments/model/Comment.php | 99 +- modules/comments/upgrades.php | 9 +- modules/easy_embed/easy_embed.php | 121 +- modules/easy_embed/info.php | 4 +- .../locale/de_DE/LC_MESSAGES/easy_embed.mo | Bin 624 -> 1129 bytes .../locale/de_DE/LC_MESSAGES/easy_embed.po | 36 +- .../locale/en_US/LC_MESSAGES/easy_embed.pot | 33 +- .../locale/it_IT/LC_MESSAGES/easy_embed.mo | Bin 619 -> 1118 bytes .../locale/it_IT/LC_MESSAGES/easy_embed.po | 34 +- .../locale/nl_NL/LC_MESSAGES/easy_embed.mo | Bin 569 -> 1051 bytes .../locale/nl_NL/LC_MESSAGES/easy_embed.po | 36 +- .../locale/zh_CN/LC_MESSAGES/easy_embed.mo | Bin 554 -> 1102 bytes .../locale/zh_CN/LC_MESSAGES/easy_embed.po | 38 +- modules/highlighter/highlight.min.js | 519 +++--- modules/highlighter/highlighter.php | 30 +- modules/highlighter/javascript.php | 6 +- .../locale/de_DE/LC_MESSAGES/highlighter.mo | Bin 687 -> 687 bytes .../locale/de_DE/LC_MESSAGES/highlighter.po | 4 +- .../locale/en_US/LC_MESSAGES/highlighter.pot | 2 +- .../locale/it_IT/LC_MESSAGES/highlighter.mo | Bin 733 -> 731 bytes .../locale/it_IT/LC_MESSAGES/highlighter.po | 4 +- .../locale/nl_NL/LC_MESSAGES/highlighter.mo | Bin 632 -> 630 bytes .../locale/nl_NL/LC_MESSAGES/highlighter.po | 8 +- .../locale/zh_CN/LC_MESSAGES/highlighter.mo | Bin 631 -> 629 bytes .../locale/zh_CN/LC_MESSAGES/highlighter.po | 4 +- modules/highlighter/styles/1c-light.css | 107 ++ modules/highlighter/styles/1c-light.min.css | 9 + modules/highlighter/styles/a11y-dark.css | 94 + modules/highlighter/styles/a11y-light.css | 94 + modules/highlighter/styles/agate.css | 127 ++ modules/highlighter/styles/an-old-hope.css | 75 + modules/highlighter/styles/androidstudio.css | 60 + modules/highlighter/styles/arduino-light.css | 78 + modules/highlighter/styles/arta.css | 66 + modules/highlighter/styles/ascetic.css | 45 + .../styles/atom-one-dark-reasonable.css | 105 ++ modules/highlighter/styles/atom-one-dark.css | 90 + modules/highlighter/styles/atom-one-light.css | 90 + modules/highlighter/styles/base16/3024.css | 163 ++ modules/highlighter/styles/base16/apathy.css | 163 ++ .../highlighter/styles/base16/apprentice.css | 163 ++ modules/highlighter/styles/base16/ashes.css | 163 ++ .../styles/base16/atelier-cave-light.css | 163 ++ .../styles/base16/atelier-cave.css | 163 ++ .../styles/base16/atelier-dune-light.css | 163 ++ .../styles/base16/atelier-dune.css | 163 ++ .../styles/base16/atelier-estuary-light.css | 163 ++ .../styles/base16/atelier-estuary.css | 163 ++ .../styles/base16/atelier-forest-light.css | 163 ++ .../styles/base16/atelier-forest.css | 163 ++ .../styles/base16/atelier-heath-light.css | 163 ++ .../styles/base16/atelier-heath.css | 163 ++ .../styles/base16/atelier-lakeside-light.css | 163 ++ .../styles/base16/atelier-lakeside.css | 163 ++ .../styles/base16/atelier-plateau-light.css | 163 ++ .../styles/base16/atelier-plateau.css | 163 ++ .../styles/base16/atelier-savanna-light.css | 163 ++ .../styles/base16/atelier-savanna.css | 163 ++ .../styles/base16/atelier-seaside-light.css | 163 ++ .../styles/base16/atelier-seaside.css | 163 ++ .../base16/atelier-sulphurpool-light.css | 163 ++ .../styles/base16/atelier-sulphurpool.css | 163 ++ modules/highlighter/styles/base16/atlas.css | 163 ++ modules/highlighter/styles/base16/bespin.css | 163 ++ .../styles/base16/black-metal-bathory.css | 163 ++ .../styles/base16/black-metal-burzum.css | 163 ++ .../base16/black-metal-dark-funeral.css | 163 ++ .../styles/base16/black-metal-gorgoroth.css | 163 ++ .../styles/base16/black-metal-immortal.css | 163 ++ .../styles/base16/black-metal-khold.css | 163 ++ .../styles/base16/black-metal-marduk.css | 163 ++ .../styles/base16/black-metal-mayhem.css | 163 ++ .../styles/base16/black-metal-nile.css | 163 ++ .../styles/base16/black-metal-venom.css | 163 ++ .../highlighter/styles/base16/black-metal.css | 163 ++ modules/highlighter/styles/base16/brewer.css | 163 ++ modules/highlighter/styles/base16/bright.css | 163 ++ .../highlighter/styles/base16/brogrammer.css | 163 ++ .../styles/base16/brush-trees-dark.css | 163 ++ .../highlighter/styles/base16/brush-trees.css | 163 ++ modules/highlighter/styles/base16/chalk.css | 163 ++ modules/highlighter/styles/base16/circus.css | 163 ++ .../styles/base16/classic-dark.css | 163 ++ .../styles/base16/classic-light.css | 163 ++ .../highlighter/styles/base16/codeschool.css | 163 ++ modules/highlighter/styles/base16/colors.css | 163 ++ modules/highlighter/styles/base16/cupcake.css | 163 ++ .../highlighter/styles/base16/cupertino.css | 163 ++ modules/highlighter/styles/base16/danqing.css | 163 ++ modules/highlighter/styles/base16/darcula.css | 163 ++ .../highlighter/styles/base16/dark-violet.css | 163 ++ .../highlighter/styles/base16/darkmoss.css | 163 ++ .../highlighter/styles/base16/darktooth.css | 163 ++ modules/highlighter/styles/base16/decaf.css | 163 ++ .../styles/base16/default-dark.css | 163 ++ .../styles/base16/default-light.css | 163 ++ .../highlighter/styles/base16/dirtysea.css | 163 ++ modules/highlighter/styles/base16/dracula.css | 163 ++ .../highlighter/styles/base16/edge-dark.css | 163 ++ .../highlighter/styles/base16/edge-light.css | 163 ++ .../highlighter/styles/base16/eighties.css | 163 ++ modules/highlighter/styles/base16/embers.css | 163 ++ .../styles/base16/equilibrium-dark.css | 163 ++ .../styles/base16/equilibrium-gray-dark.css | 163 ++ .../styles/base16/equilibrium-gray-light.css | 163 ++ .../styles/base16/equilibrium-light.css | 163 ++ .../highlighter/styles/base16/espresso.css | 163 ++ modules/highlighter/styles/base16/eva-dim.css | 163 ++ modules/highlighter/styles/base16/eva.css | 163 ++ modules/highlighter/styles/base16/flat.css | 163 ++ modules/highlighter/styles/base16/framer.css | 163 ++ .../highlighter/styles/base16/fruit-soda.css | 163 ++ .../highlighter/styles/base16/gigavolt.css | 163 ++ modules/highlighter/styles/base16/github.css | 163 ++ .../highlighter/styles/base16/google-dark.css | 163 ++ .../styles/base16/google-light.css | 163 ++ .../styles/base16/grayscale-dark.css | 163 ++ .../styles/base16/grayscale-light.css | 163 ++ .../styles/base16/green-screen.css | 163 ++ .../styles/base16/gruvbox-dark-hard.css | 163 ++ .../styles/base16/gruvbox-dark-medium.css | 163 ++ .../styles/base16/gruvbox-dark-pale.css | 163 ++ .../styles/base16/gruvbox-dark-soft.css | 163 ++ .../styles/base16/gruvbox-light-hard.css | 163 ++ .../styles/base16/gruvbox-light-medium.css | 163 ++ .../styles/base16/gruvbox-light-soft.css | 163 ++ .../highlighter/styles/base16/hardcore.css | 163 ++ .../styles/base16/harmonic16-dark.css | 163 ++ .../styles/base16/harmonic16-light.css | 163 ++ .../highlighter/styles/base16/heetch-dark.css | 163 ++ .../styles/base16/heetch-light.css | 163 ++ modules/highlighter/styles/base16/helios.css | 163 ++ .../highlighter/styles/base16/hopscotch.css | 163 ++ .../styles/base16/horizon-dark.css | 163 ++ .../styles/base16/horizon-light.css | 163 ++ .../styles/base16/humanoid-dark.css | 163 ++ .../styles/base16/humanoid-light.css | 163 ++ modules/highlighter/styles/base16/ia-dark.css | 163 ++ .../highlighter/styles/base16/ia-light.css | 163 ++ .../highlighter/styles/base16/icy-dark.css | 163 ++ .../highlighter/styles/base16/ir-black.css | 163 ++ modules/highlighter/styles/base16/isotope.css | 163 ++ modules/highlighter/styles/base16/kimber.css | 163 ++ .../highlighter/styles/base16/london-tube.css | 163 ++ .../highlighter/styles/base16/macintosh.css | 163 ++ .../highlighter/styles/base16/marrakesh.css | 163 ++ modules/highlighter/styles/base16/materia.css | 163 ++ .../styles/base16/material-darker.css | 163 ++ .../styles/base16/material-lighter.css | 163 ++ .../styles/base16/material-palenight.css | 163 ++ .../styles/base16/material-vivid.css | 163 ++ .../highlighter/styles/base16/material.css | 163 ++ .../styles/base16/mellow-purple.css | 163 ++ .../styles/base16/mexico-light.css | 163 ++ modules/highlighter/styles/base16/mocha.css | 163 ++ modules/highlighter/styles/base16/monokai.css | 163 ++ modules/highlighter/styles/base16/nebula.css | 163 ++ modules/highlighter/styles/base16/nord.css | 163 ++ modules/highlighter/styles/base16/nova.css | 163 ++ modules/highlighter/styles/base16/ocean.css | 163 ++ .../highlighter/styles/base16/oceanicnext.css | 163 ++ .../highlighter/styles/base16/one-light.css | 163 ++ modules/highlighter/styles/base16/onedark.css | 163 ++ .../highlighter/styles/base16/outrun-dark.css | 163 ++ .../styles/base16/papercolor-dark.css | 163 ++ .../styles/base16/papercolor-light.css | 163 ++ modules/highlighter/styles/base16/paraiso.css | 163 ++ modules/highlighter/styles/base16/pasque.css | 163 ++ modules/highlighter/styles/base16/phd.css | 163 ++ modules/highlighter/styles/base16/pico.css | 163 ++ modules/highlighter/styles/base16/pop.css | 163 ++ modules/highlighter/styles/base16/porple.css | 163 ++ modules/highlighter/styles/base16/qualia.css | 163 ++ .../highlighter/styles/base16/railscasts.css | 163 ++ modules/highlighter/styles/base16/rebecca.css | 163 ++ .../styles/base16/ros-pine-dawn.css | 163 ++ .../styles/base16/ros-pine-moon.css | 163 ++ .../highlighter/styles/base16/ros-pine.css | 163 ++ .../highlighter/styles/base16/sagelight.css | 163 ++ .../highlighter/styles/base16/sandcastle.css | 163 ++ modules/highlighter/styles/base16/seti-ui.css | 163 ++ .../styles/base16/shapeshifter.css | 163 ++ .../highlighter/styles/base16/silk-dark.css | 163 ++ .../highlighter/styles/base16/silk-light.css | 163 ++ modules/highlighter/styles/base16/snazzy.css | 163 ++ .../styles/base16/solar-flare-light.css | 163 ++ .../highlighter/styles/base16/solar-flare.css | 163 ++ .../styles/base16/solarized-dark.css | 163 ++ .../styles/base16/solarized-light.css | 163 ++ .../highlighter/styles/base16/spacemacs.css | 163 ++ .../highlighter/styles/base16/summercamp.css | 163 ++ .../styles/base16/summerfruit-dark.css | 163 ++ .../styles/base16/summerfruit-light.css | 163 ++ .../base16/synth-midnight-terminal-dark.css | 163 ++ .../base16/synth-midnight-terminal-light.css | 163 ++ modules/highlighter/styles/base16/tango.css | 163 ++ modules/highlighter/styles/base16/tender.css | 163 ++ .../styles/base16/tomorrow-night.css | 163 ++ .../highlighter/styles/base16/tomorrow.css | 163 ++ .../highlighter/styles/base16/twilight.css | 163 ++ .../styles/base16/unikitty-dark.css | 163 ++ .../styles/base16/unikitty-light.css | 163 ++ modules/highlighter/styles/base16/vulcan.css | 163 ++ .../styles/base16/windows-10-light.css | 163 ++ .../highlighter/styles/base16/windows-10.css | 163 ++ .../styles/base16/windows-95-light.css | 163 ++ .../highlighter/styles/base16/windows-95.css | 163 ++ .../base16/windows-high-contrast-light.css | 163 ++ .../styles/base16/windows-high-contrast.css | 163 ++ .../styles/base16/windows-nt-light.css | 163 ++ .../highlighter/styles/base16/windows-nt.css | 163 ++ .../highlighter/styles/base16/woodland.css | 163 ++ .../highlighter/styles/base16/xcode-dusk.css | 163 ++ modules/highlighter/styles/base16/zenburn.css | 163 ++ modules/highlighter/styles/brown-paper.css | 63 + modules/highlighter/styles/codepen-embed.css | 57 + modules/highlighter/styles/color-brewer.css | 66 + modules/highlighter/styles/dark.css | 62 + modules/highlighter/styles/default.css | 117 ++ modules/highlighter/styles/devibeans.css | 90 + modules/highlighter/styles/docco.css | 83 + modules/highlighter/styles/far.css | 67 + modules/highlighter/styles/felipec.css | 94 + modules/highlighter/styles/foundation.css | 80 + .../highlighter/styles/github-dark-dimmed.css | 117 ++ modules/highlighter/styles/github-dark.css | 118 ++ modules/highlighter/styles/github.css | 118 ++ modules/highlighter/styles/gml.css | 72 + modules/highlighter/styles/googlecode.css | 79 + modules/highlighter/styles/gradient-dark.css | 90 + modules/highlighter/styles/gradient-light.css | 90 + modules/highlighter/styles/grayscale.css | 89 + modules/highlighter/styles/hybrid.css | 88 + modules/highlighter/styles/idea.css | 86 + modules/highlighter/styles/intellij-light.css | 107 ++ modules/highlighter/styles/ir-black.css | 66 + .../highlighter/styles/isbl-editor-dark.css | 94 + .../highlighter/styles/isbl-editor-light.css | 93 + modules/highlighter/styles/kimbie-dark.css | 69 + modules/highlighter/styles/kimbie-light.css | 69 + modules/highlighter/styles/lightfair.css | 81 + modules/highlighter/styles/lioshi.css | 76 + modules/highlighter/styles/magula.css | 66 + modules/highlighter/styles/mono-blue.css | 56 + .../highlighter/styles/monokai-sublime.css | 76 + modules/highlighter/styles/monokai.css | 70 + modules/highlighter/styles/monokai.min.css | 2 +- modules/highlighter/styles/night-owl.css | 174 ++ modules/highlighter/styles/nnfx-dark.css | 104 ++ modules/highlighter/styles/nnfx-light.css | 104 ++ modules/highlighter/styles/nord.css | 275 +++ modules/highlighter/styles/obsidian.css | 79 + .../highlighter/styles/panda-syntax-dark.css | 92 + .../highlighter/styles/panda-syntax-light.css | 89 + modules/highlighter/styles/paraiso-dark.css | 67 + modules/highlighter/styles/paraiso-light.css | 67 + modules/highlighter/styles/pojoaque.css | 76 + modules/highlighter/styles/purebasic.css | 103 ++ modules/highlighter/styles/qtcreator-dark.css | 76 + .../highlighter/styles/qtcreator-light.css | 74 + modules/highlighter/styles/rainbow.css | 77 + modules/highlighter/styles/routeros.css | 86 + modules/highlighter/styles/school-book.css | 62 + .../highlighter/styles/shades-of-purple.css | 84 + modules/highlighter/styles/srcery.css | 89 + .../highlighter/styles/stackoverflow-dark.css | 117 ++ .../styles/stackoverflow-light.css | 117 ++ modules/highlighter/styles/sunburst.css | 89 + .../highlighter/styles/tokyo-night-dark.css | 114 ++ .../highlighter/styles/tokyo-night-light.css | 114 ++ .../styles/tomorrow-night-blue.css | 69 + .../styles/tomorrow-night-bright.css | 68 + modules/highlighter/styles/vs.css | 63 + modules/highlighter/styles/vs2015.css | 100 ++ modules/highlighter/styles/xcode.css | 90 + modules/highlighter/styles/xt256.css | 79 + modules/highlighter/upgrades.php | 3 +- modules/lightbox/info.php | 2 +- modules/lightbox/javascript.php | 45 +- modules/lightbox/lightbox.php | 26 +- .../locale/de_DE/LC_MESSAGES/lightbox.mo | Bin 979 -> 1033 bytes .../locale/de_DE/LC_MESSAGES/lightbox.po | 18 +- .../locale/en_US/LC_MESSAGES/lightbox.pot | 16 +- .../locale/it_IT/LC_MESSAGES/lightbox.mo | Bin 1061 -> 1115 bytes .../locale/it_IT/LC_MESSAGES/lightbox.po | 18 +- .../locale/nl_NL/LC_MESSAGES/lightbox.mo | Bin 980 -> 1034 bytes .../locale/nl_NL/LC_MESSAGES/lightbox.po | 18 +- .../locale/zh_CN/LC_MESSAGES/lightbox.mo | Bin 902 -> 943 bytes .../locale/zh_CN/LC_MESSAGES/lightbox.po | 18 +- modules/likes/images/gold.svg | 2 +- modules/likes/images/outline.svg | 2 +- modules/likes/images/pink.svg | 2 +- modules/likes/images/solid.svg | 2 +- modules/likes/info.php | 2 +- modules/likes/javascript.php | 19 +- modules/likes/likes.css | 5 +- modules/likes/likes.php | 189 +- .../likes/locale/de_DE/LC_MESSAGES/likes.mo | Bin 2394 -> 2392 bytes .../likes/locale/de_DE/LC_MESSAGES/likes.po | 34 +- .../likes/locale/en_US/LC_MESSAGES/likes.pot | 52 +- .../likes/locale/it_IT/LC_MESSAGES/likes.mo | Bin 2384 -> 2382 bytes .../likes/locale/it_IT/LC_MESSAGES/likes.po | 34 +- .../likes/locale/nl_NL/LC_MESSAGES/likes.mo | Bin 2414 -> 2412 bytes .../likes/locale/nl_NL/LC_MESSAGES/likes.po | 34 +- .../likes/locale/zh_CN/LC_MESSAGES/likes.mo | Bin 2071 -> 2069 bytes .../likes/locale/zh_CN/LC_MESSAGES/likes.po | 34 +- modules/likes/model/Like.php | 38 +- modules/likes/upgrades.php | 9 +- .../locale/de_DE/LC_MESSAGES/maptcha.mo | Bin 1531 -> 1531 bytes .../locale/de_DE/LC_MESSAGES/maptcha.po | 26 +- .../locale/en_US/LC_MESSAGES/maptcha.pot | 20 +- .../locale/it_IT/LC_MESSAGES/maptcha.mo | Bin 1537 -> 1535 bytes .../locale/it_IT/LC_MESSAGES/maptcha.po | 22 +- .../locale/nl_NL/LC_MESSAGES/maptcha.mo | Bin 1498 -> 1496 bytes .../locale/nl_NL/LC_MESSAGES/maptcha.po | 26 +- .../locale/zh_CN/LC_MESSAGES/maptcha.mo | Bin 1498 -> 1496 bytes .../locale/zh_CN/LC_MESSAGES/maptcha.po | 22 +- modules/maptcha/maptcha.php | 12 +- modules/maptcha/upgrades.php | 3 +- .../mathjax/admin/pages/mathjax_settings.twig | 20 +- .../locale/de_DE/LC_MESSAGES/mathjax.mo | Bin 651 -> 649 bytes .../locale/de_DE/LC_MESSAGES/mathjax.po | 8 +- .../locale/en_US/LC_MESSAGES/mathjax.pot | 6 +- .../locale/it_IT/LC_MESSAGES/mathjax.mo | Bin 665 -> 663 bytes .../locale/it_IT/LC_MESSAGES/mathjax.po | 8 +- .../locale/nl_NL/LC_MESSAGES/mathjax.mo | Bin 607 -> 605 bytes .../locale/nl_NL/LC_MESSAGES/mathjax.po | 8 +- .../locale/zh_CN/LC_MESSAGES/mathjax.mo | Bin 612 -> 610 bytes .../locale/zh_CN/LC_MESSAGES/mathjax.po | 8 +- modules/mathjax/mathjax.php | 17 +- .../locale/de_DE/LC_MESSAGES/migrator.mo | Bin 3931 -> 3929 bytes .../locale/de_DE/LC_MESSAGES/migrator.po | 52 +- .../locale/en_US/LC_MESSAGES/migrator.pot | 72 +- .../locale/it_IT/LC_MESSAGES/migrator.mo | Bin 3932 -> 3930 bytes .../locale/it_IT/LC_MESSAGES/migrator.po | 52 +- .../locale/nl_NL/LC_MESSAGES/migrator.mo | Bin 3797 -> 3795 bytes .../locale/nl_NL/LC_MESSAGES/migrator.po | 52 +- .../locale/zh_CN/LC_MESSAGES/migrator.mo | Bin 3581 -> 3579 bytes .../locale/zh_CN/LC_MESSAGES/migrator.po | 52 +- modules/migrator/migrator.php | 20 +- .../admin/pages/manage_pingbacks.twig | 9 +- .../locale/de_DE/LC_MESSAGES/pingable.mo | Bin 3035 -> 3033 bytes .../locale/de_DE/LC_MESSAGES/pingable.po | 36 +- .../locale/en_US/LC_MESSAGES/pingable.pot | 46 +- .../locale/it_IT/LC_MESSAGES/pingable.mo | Bin 2940 -> 2938 bytes .../locale/it_IT/LC_MESSAGES/pingable.po | 36 +- .../locale/nl_NL/LC_MESSAGES/pingable.mo | Bin 2856 -> 2854 bytes .../locale/nl_NL/LC_MESSAGES/pingable.po | 36 +- .../locale/zh_CN/LC_MESSAGES/pingable.mo | Bin 2632 -> 2630 bytes .../locale/zh_CN/LC_MESSAGES/pingable.po | 36 +- modules/pingable/model/Pingback.php | 30 +- modules/pingable/pingable.php | 78 +- modules/pingable/upgrades.php | 3 +- .../locale/de_DE/LC_MESSAGES/post_views.mo | Bin 1155 -> 1155 bytes .../locale/de_DE/LC_MESSAGES/post_views.po | 12 +- .../locale/en_US/LC_MESSAGES/post_views.pot | 10 +- .../locale/it_IT/LC_MESSAGES/post_views.mo | Bin 1244 -> 1242 bytes .../locale/it_IT/LC_MESSAGES/post_views.po | 12 +- .../locale/nl_NL/LC_MESSAGES/post_views.mo | Bin 1095 -> 1093 bytes .../locale/nl_NL/LC_MESSAGES/post_views.po | 12 +- .../locale/zh_CN/LC_MESSAGES/post_views.mo | Bin 1020 -> 1018 bytes .../locale/zh_CN/LC_MESSAGES/post_views.po | 12 +- modules/post_views/model/View.php | 21 +- modules/post_views/post_views.php | 75 +- .../locale/de_DE/LC_MESSAGES/read_more.mo | Bin 938 -> 936 bytes .../locale/de_DE/LC_MESSAGES/read_more.po | 6 +- .../locale/en_US/LC_MESSAGES/read_more.pot | 4 +- .../locale/it_IT/LC_MESSAGES/read_more.mo | Bin 952 -> 950 bytes .../locale/it_IT/LC_MESSAGES/read_more.po | 6 +- .../locale/nl_NL/LC_MESSAGES/read_more.mo | Bin 872 -> 870 bytes .../locale/nl_NL/LC_MESSAGES/read_more.po | 6 +- .../locale/zh_CN/LC_MESSAGES/read_more.mo | Bin 906 -> 904 bytes .../locale/zh_CN/LC_MESSAGES/read_more.po | 6 +- modules/read_more/read_more.php | 29 +- modules/read_more/upgrades.php | 3 +- .../rights/admin/help/choosing_a_licence.twig | 26 +- .../rights/locale/de_DE/LC_MESSAGES/rights.mo | Bin 3994 -> 3994 bytes .../rights/locale/de_DE/LC_MESSAGES/rights.po | 30 +- .../locale/en_US/LC_MESSAGES/rights.pot | 46 +- .../rights/locale/it_IT/LC_MESSAGES/rights.mo | Bin 4043 -> 4041 bytes .../rights/locale/it_IT/LC_MESSAGES/rights.po | 30 +- .../rights/locale/nl_NL/LC_MESSAGES/rights.mo | Bin 3895 -> 3893 bytes .../rights/locale/nl_NL/LC_MESSAGES/rights.po | 30 +- .../rights/locale/zh_CN/LC_MESSAGES/rights.mo | Bin 2454 -> 2452 bytes .../rights/locale/zh_CN/LC_MESSAGES/rights.po | 30 +- modules/rights/rights.php | 19 +- .../locale/de_DE/LC_MESSAGES/sitemap.mo | Bin 1611 -> 1609 bytes .../locale/de_DE/LC_MESSAGES/sitemap.po | 18 +- .../locale/en_US/LC_MESSAGES/sitemap.pot | 16 +- .../locale/it_IT/LC_MESSAGES/sitemap.mo | Bin 1623 -> 1621 bytes .../locale/it_IT/LC_MESSAGES/sitemap.po | 18 +- .../locale/nl_NL/LC_MESSAGES/sitemap.mo | Bin 1511 -> 1509 bytes .../locale/nl_NL/LC_MESSAGES/sitemap.po | 18 +- .../locale/zh_CN/LC_MESSAGES/sitemap.mo | Bin 1432 -> 1430 bytes .../locale/zh_CN/LC_MESSAGES/sitemap.po | 18 +- modules/sitemap/sitemap.php | 16 +- modules/sitemap/upgrades.php | 3 +- modules/tags/admin/pages/manage_tags.twig | 9 +- modules/tags/admin/pages/posts_tagged.twig | 17 +- modules/tags/info.php | 2 +- modules/tags/javascript.php | 11 +- modules/tags/locale/de_DE/LC_MESSAGES/tags.mo | Bin 4647 -> 4645 bytes modules/tags/locale/de_DE/LC_MESSAGES/tags.po | 70 +- .../tags/locale/en_US/LC_MESSAGES/tags.pot | 90 +- modules/tags/locale/it_IT/LC_MESSAGES/tags.mo | Bin 4367 -> 4365 bytes modules/tags/locale/it_IT/LC_MESSAGES/tags.po | 70 +- modules/tags/locale/nl_NL/LC_MESSAGES/tags.mo | Bin 4317 -> 4315 bytes modules/tags/locale/nl_NL/LC_MESSAGES/tags.po | 70 +- modules/tags/locale/zh_CN/LC_MESSAGES/tags.mo | Bin 4059 -> 4057 bytes modules/tags/locale/zh_CN/LC_MESSAGES/tags.po | 70 +- modules/tags/tags.php | 222 ++- themes/blossom/content/comment.twig | 2 +- themes/blossom/content/post.twig | 17 +- themes/blossom/content/sidebar.twig | 6 +- themes/blossom/forms/comment/new.twig | 11 +- themes/blossom/images/checkbox.svg | 2 +- themes/blossom/info.php | 2 +- .../locale/de_DE/LC_MESSAGES/blossom.mo | Bin 5896 -> 5952 bytes .../locale/de_DE/LC_MESSAGES/blossom.po | 30 +- .../locale/en_US/LC_MESSAGES/blossom.pot | 28 +- .../locale/fr_FR/LC_MESSAGES/blossom.mo | Bin 5990 -> 6043 bytes .../locale/fr_FR/LC_MESSAGES/blossom.po | 30 +- .../locale/it_IT/LC_MESSAGES/blossom.mo | Bin 5736 -> 5780 bytes .../locale/it_IT/LC_MESSAGES/blossom.po | 30 +- .../locale/nl_NL/LC_MESSAGES/blossom.mo | Bin 5828 -> 5874 bytes .../locale/nl_NL/LC_MESSAGES/blossom.po | 30 +- .../locale/zh_CN/LC_MESSAGES/blossom.mo | Bin 5571 -> 5615 bytes .../locale/zh_CN/LC_MESSAGES/blossom.po | 30 +- themes/blossom/stylesheets/all.css | 51 +- themes/sparrow/content/comment.twig | 2 +- themes/sparrow/content/post.twig | 14 +- themes/sparrow/forms/comment/new.twig | 11 +- themes/sparrow/images/checkbox.svg | 2 +- themes/sparrow/info.php | 2 +- .../locale/de_DE/LC_MESSAGES/sparrow.mo | Bin 5607 -> 5671 bytes .../locale/de_DE/LC_MESSAGES/sparrow.po | 18 +- .../locale/en_US/LC_MESSAGES/sparrow.pot | 16 +- .../locale/fr_FR/LC_MESSAGES/sparrow.mo | Bin 5188 -> 5745 bytes .../locale/fr_FR/LC_MESSAGES/sparrow.po | 92 +- .../locale/it_IT/LC_MESSAGES/sparrow.mo | Bin 5442 -> 5494 bytes .../locale/it_IT/LC_MESSAGES/sparrow.po | 18 +- .../locale/nl_NL/LC_MESSAGES/sparrow.mo | Bin 5537 -> 5591 bytes .../locale/nl_NL/LC_MESSAGES/sparrow.po | 18 +- .../locale/zh_CN/LC_MESSAGES/sparrow.mo | Bin 5151 -> 5187 bytes .../locale/zh_CN/LC_MESSAGES/sparrow.po | 18 +- themes/sparrow/stylesheets/all.css | 49 +- themes/topaz/content/comment.twig | 2 +- themes/topaz/content/post.twig | 17 +- themes/topaz/content/sidebar.twig | 6 +- themes/topaz/forms/comment/new.twig | 11 +- themes/topaz/images/checkbox.svg | 2 +- themes/topaz/info.php | 2 +- .../topaz/locale/de_DE/LC_MESSAGES/topaz.mo | Bin 5972 -> 6060 bytes .../topaz/locale/de_DE/LC_MESSAGES/topaz.po | 30 +- .../topaz/locale/en_US/LC_MESSAGES/topaz.pot | 28 +- .../topaz/locale/fr_FR/LC_MESSAGES/topaz.mo | Bin 5857 -> 6131 bytes .../topaz/locale/fr_FR/LC_MESSAGES/topaz.po | 50 +- .../topaz/locale/it_IT/LC_MESSAGES/topaz.mo | Bin 5801 -> 5877 bytes .../topaz/locale/it_IT/LC_MESSAGES/topaz.po | 30 +- .../topaz/locale/nl_NL/LC_MESSAGES/topaz.mo | Bin 5913 -> 5991 bytes .../topaz/locale/nl_NL/LC_MESSAGES/topaz.po | 30 +- .../topaz/locale/zh_CN/LC_MESSAGES/topaz.mo | Bin 5480 -> 5516 bytes .../topaz/locale/zh_CN/LC_MESSAGES/topaz.po | 30 +- themes/topaz/stylesheets/all.css | 51 +- themes/umbra/content/comment.twig | 2 +- themes/umbra/content/post.twig | 12 +- themes/umbra/forms/comment/new.twig | 11 +- themes/umbra/images/checkbox_focus.svg | 2 +- themes/umbra/info.php | 2 +- .../umbra/locale/de_DE/LC_MESSAGES/umbra.mo | Bin 4894 -> 4942 bytes .../umbra/locale/de_DE/LC_MESSAGES/umbra.po | 20 +- .../umbra/locale/en_US/LC_MESSAGES/umbra.pot | 18 +- .../umbra/locale/fr_FR/LC_MESSAGES/umbra.mo | Bin 4813 -> 5003 bytes .../umbra/locale/fr_FR/LC_MESSAGES/umbra.po | 100 +- .../umbra/locale/it_IT/LC_MESSAGES/umbra.mo | Bin 4725 -> 4761 bytes .../umbra/locale/it_IT/LC_MESSAGES/umbra.po | 20 +- .../umbra/locale/nl_NL/LC_MESSAGES/umbra.mo | Bin 4776 -> 4814 bytes .../umbra/locale/nl_NL/LC_MESSAGES/umbra.po | 20 +- .../umbra/locale/zh_CN/LC_MESSAGES/umbra.mo | Bin 4500 -> 4552 bytes .../umbra/locale/zh_CN/LC_MESSAGES/umbra.po | 20 +- themes/umbra/stylesheets/all.css | 49 +- themes/virgula/content/post.twig | 15 +- themes/virgula/forms/comment/new.twig | 2 + themes/virgula/images/checkbox.svg | 2 +- themes/virgula/info.php | 2 +- .../locale/de_DE/LC_MESSAGES/virgula.mo | Bin 5172 -> 5220 bytes .../locale/de_DE/LC_MESSAGES/virgula.po | 40 +- .../locale/en_US/LC_MESSAGES/virgula.pot | 54 +- .../locale/fr_FR/LC_MESSAGES/virgula.mo | Bin 4534 -> 5238 bytes .../locale/fr_FR/LC_MESSAGES/virgula.po | 64 +- .../locale/it_IT/LC_MESSAGES/virgula.mo | Bin 4988 -> 5024 bytes .../locale/it_IT/LC_MESSAGES/virgula.po | 40 +- .../locale/nl_NL/LC_MESSAGES/virgula.mo | Bin 5056 -> 5094 bytes .../locale/nl_NL/LC_MESSAGES/virgula.po | 40 +- .../locale/zh_CN/LC_MESSAGES/virgula.mo | Bin 4836 -> 4872 bytes .../locale/zh_CN/LC_MESSAGES/virgula.po | 40 +- themes/virgula/pages/archive.twig | 24 +- themes/virgula/pages/author.twig | 15 +- themes/virgula/pages/category.twig | 15 +- themes/virgula/pages/drafts.twig | 15 +- themes/virgula/pages/index.twig | 4 + themes/virgula/pages/search.twig | 15 +- themes/virgula/pages/tag.twig | 15 +- themes/virgula/pages/updated.twig | 15 +- themes/virgula/stylesheets/all.css | 80 +- tools/api_docs.txt | 119 +- tools/docgen.php | 134 +- tools/gettext.php | 178 +- tools/triggers.php | 164 +- tools/triggers_list.txt | 271 +-- upgrade.php | 283 +-- 878 files changed, 52784 insertions(+), 12131 deletions(-) create mode 100644 includes/caddyfile.conf.php create mode 100644 includes/htaccess.conf.php create mode 100644 includes/lib/Twig/AbstractTwigCallable.php create mode 100644 includes/lib/Twig/Attribute/FirstClassTwigCallableReady.php create mode 100644 includes/lib/Twig/Cache/RemovableCacheInterface.php create mode 100644 includes/lib/Twig/DeprecatedCallableInfo.php create mode 100644 includes/lib/Twig/Node/EmptyNode.php create mode 100644 includes/lib/Twig/Node/Expression/Binary/ElvisBinary.php create mode 100644 includes/lib/Twig/Node/Expression/Binary/NullCoalesceBinary.php create mode 100644 includes/lib/Twig/Node/Expression/Binary/XorBinary.php create mode 100644 includes/lib/Twig/Node/Expression/FunctionNode/EnumCasesFunction.php create mode 100644 includes/lib/Twig/Node/Expression/FunctionNode/EnumFunction.php create mode 100644 includes/lib/Twig/Node/Expression/MacroReferenceExpression.php create mode 100644 includes/lib/Twig/Node/Expression/OperatorEscapeInterface.php create mode 100644 includes/lib/Twig/Node/Expression/Ternary/ConditionalTernary.php create mode 100644 includes/lib/Twig/Node/Expression/Unary/SpreadUnary.php create mode 100644 includes/lib/Twig/Node/Expression/Unary/StringCastUnary.php create mode 100644 includes/lib/Twig/Node/Expression/Variable/AssignContextVariable.php create mode 100644 includes/lib/Twig/Node/Expression/Variable/AssignTemplateVariable.php create mode 100644 includes/lib/Twig/Node/Expression/Variable/ContextVariable.php create mode 100644 includes/lib/Twig/Node/Expression/Variable/LocalVariable.php create mode 100644 includes/lib/Twig/Node/Expression/Variable/TemplateVariable.php create mode 100644 includes/lib/Twig/Node/Nodes.php create mode 100644 includes/lib/Twig/Node/TypesNode.php create mode 100644 includes/lib/Twig/OperatorPrecedenceChange.php create mode 100644 includes/lib/Twig/TokenParser/GuardTokenParser.php create mode 100644 includes/lib/Twig/TokenParser/TypesTokenParser.php create mode 100644 includes/lib/Twig/TwigCallableInterface.php create mode 100644 includes/lib/Twig/Util/CallableArgumentsExtractor.php create mode 100644 includes/nginx.conf.php create mode 100644 modules/highlighter/styles/1c-light.css create mode 100644 modules/highlighter/styles/1c-light.min.css create mode 100644 modules/highlighter/styles/a11y-dark.css create mode 100644 modules/highlighter/styles/a11y-light.css create mode 100644 modules/highlighter/styles/agate.css create mode 100644 modules/highlighter/styles/an-old-hope.css create mode 100644 modules/highlighter/styles/androidstudio.css create mode 100644 modules/highlighter/styles/arduino-light.css create mode 100644 modules/highlighter/styles/arta.css create mode 100644 modules/highlighter/styles/ascetic.css create mode 100644 modules/highlighter/styles/atom-one-dark-reasonable.css create mode 100644 modules/highlighter/styles/atom-one-dark.css create mode 100644 modules/highlighter/styles/atom-one-light.css create mode 100644 modules/highlighter/styles/base16/3024.css create mode 100644 modules/highlighter/styles/base16/apathy.css create mode 100644 modules/highlighter/styles/base16/apprentice.css create mode 100644 modules/highlighter/styles/base16/ashes.css create mode 100644 modules/highlighter/styles/base16/atelier-cave-light.css create mode 100644 modules/highlighter/styles/base16/atelier-cave.css create mode 100644 modules/highlighter/styles/base16/atelier-dune-light.css create mode 100644 modules/highlighter/styles/base16/atelier-dune.css create mode 100644 modules/highlighter/styles/base16/atelier-estuary-light.css create mode 100644 modules/highlighter/styles/base16/atelier-estuary.css create mode 100644 modules/highlighter/styles/base16/atelier-forest-light.css create mode 100644 modules/highlighter/styles/base16/atelier-forest.css create mode 100644 modules/highlighter/styles/base16/atelier-heath-light.css create mode 100644 modules/highlighter/styles/base16/atelier-heath.css create mode 100644 modules/highlighter/styles/base16/atelier-lakeside-light.css create mode 100644 modules/highlighter/styles/base16/atelier-lakeside.css create mode 100644 modules/highlighter/styles/base16/atelier-plateau-light.css create mode 100644 modules/highlighter/styles/base16/atelier-plateau.css create mode 100644 modules/highlighter/styles/base16/atelier-savanna-light.css create mode 100644 modules/highlighter/styles/base16/atelier-savanna.css create mode 100644 modules/highlighter/styles/base16/atelier-seaside-light.css create mode 100644 modules/highlighter/styles/base16/atelier-seaside.css create mode 100644 modules/highlighter/styles/base16/atelier-sulphurpool-light.css create mode 100644 modules/highlighter/styles/base16/atelier-sulphurpool.css create mode 100644 modules/highlighter/styles/base16/atlas.css create mode 100644 modules/highlighter/styles/base16/bespin.css create mode 100644 modules/highlighter/styles/base16/black-metal-bathory.css create mode 100644 modules/highlighter/styles/base16/black-metal-burzum.css create mode 100644 modules/highlighter/styles/base16/black-metal-dark-funeral.css create mode 100644 modules/highlighter/styles/base16/black-metal-gorgoroth.css create mode 100644 modules/highlighter/styles/base16/black-metal-immortal.css create mode 100644 modules/highlighter/styles/base16/black-metal-khold.css create mode 100644 modules/highlighter/styles/base16/black-metal-marduk.css create mode 100644 modules/highlighter/styles/base16/black-metal-mayhem.css create mode 100644 modules/highlighter/styles/base16/black-metal-nile.css create mode 100644 modules/highlighter/styles/base16/black-metal-venom.css create mode 100644 modules/highlighter/styles/base16/black-metal.css create mode 100644 modules/highlighter/styles/base16/brewer.css create mode 100644 modules/highlighter/styles/base16/bright.css create mode 100644 modules/highlighter/styles/base16/brogrammer.css create mode 100644 modules/highlighter/styles/base16/brush-trees-dark.css create mode 100644 modules/highlighter/styles/base16/brush-trees.css create mode 100644 modules/highlighter/styles/base16/chalk.css create mode 100644 modules/highlighter/styles/base16/circus.css create mode 100644 modules/highlighter/styles/base16/classic-dark.css create mode 100644 modules/highlighter/styles/base16/classic-light.css create mode 100644 modules/highlighter/styles/base16/codeschool.css create mode 100644 modules/highlighter/styles/base16/colors.css create mode 100644 modules/highlighter/styles/base16/cupcake.css create mode 100644 modules/highlighter/styles/base16/cupertino.css create mode 100644 modules/highlighter/styles/base16/danqing.css create mode 100644 modules/highlighter/styles/base16/darcula.css create mode 100644 modules/highlighter/styles/base16/dark-violet.css create mode 100644 modules/highlighter/styles/base16/darkmoss.css create mode 100644 modules/highlighter/styles/base16/darktooth.css create mode 100644 modules/highlighter/styles/base16/decaf.css create mode 100644 modules/highlighter/styles/base16/default-dark.css create mode 100644 modules/highlighter/styles/base16/default-light.css create mode 100644 modules/highlighter/styles/base16/dirtysea.css create mode 100644 modules/highlighter/styles/base16/dracula.css create mode 100644 modules/highlighter/styles/base16/edge-dark.css create mode 100644 modules/highlighter/styles/base16/edge-light.css create mode 100644 modules/highlighter/styles/base16/eighties.css create mode 100644 modules/highlighter/styles/base16/embers.css create mode 100644 modules/highlighter/styles/base16/equilibrium-dark.css create mode 100644 modules/highlighter/styles/base16/equilibrium-gray-dark.css create mode 100644 modules/highlighter/styles/base16/equilibrium-gray-light.css create mode 100644 modules/highlighter/styles/base16/equilibrium-light.css create mode 100644 modules/highlighter/styles/base16/espresso.css create mode 100644 modules/highlighter/styles/base16/eva-dim.css create mode 100644 modules/highlighter/styles/base16/eva.css create mode 100644 modules/highlighter/styles/base16/flat.css create mode 100644 modules/highlighter/styles/base16/framer.css create mode 100644 modules/highlighter/styles/base16/fruit-soda.css create mode 100644 modules/highlighter/styles/base16/gigavolt.css create mode 100644 modules/highlighter/styles/base16/github.css create mode 100644 modules/highlighter/styles/base16/google-dark.css create mode 100644 modules/highlighter/styles/base16/google-light.css create mode 100644 modules/highlighter/styles/base16/grayscale-dark.css create mode 100644 modules/highlighter/styles/base16/grayscale-light.css create mode 100644 modules/highlighter/styles/base16/green-screen.css create mode 100644 modules/highlighter/styles/base16/gruvbox-dark-hard.css create mode 100644 modules/highlighter/styles/base16/gruvbox-dark-medium.css create mode 100644 modules/highlighter/styles/base16/gruvbox-dark-pale.css create mode 100644 modules/highlighter/styles/base16/gruvbox-dark-soft.css create mode 100644 modules/highlighter/styles/base16/gruvbox-light-hard.css create mode 100644 modules/highlighter/styles/base16/gruvbox-light-medium.css create mode 100644 modules/highlighter/styles/base16/gruvbox-light-soft.css create mode 100644 modules/highlighter/styles/base16/hardcore.css create mode 100644 modules/highlighter/styles/base16/harmonic16-dark.css create mode 100644 modules/highlighter/styles/base16/harmonic16-light.css create mode 100644 modules/highlighter/styles/base16/heetch-dark.css create mode 100644 modules/highlighter/styles/base16/heetch-light.css create mode 100644 modules/highlighter/styles/base16/helios.css create mode 100644 modules/highlighter/styles/base16/hopscotch.css create mode 100644 modules/highlighter/styles/base16/horizon-dark.css create mode 100644 modules/highlighter/styles/base16/horizon-light.css create mode 100644 modules/highlighter/styles/base16/humanoid-dark.css create mode 100644 modules/highlighter/styles/base16/humanoid-light.css create mode 100644 modules/highlighter/styles/base16/ia-dark.css create mode 100644 modules/highlighter/styles/base16/ia-light.css create mode 100644 modules/highlighter/styles/base16/icy-dark.css create mode 100644 modules/highlighter/styles/base16/ir-black.css create mode 100644 modules/highlighter/styles/base16/isotope.css create mode 100644 modules/highlighter/styles/base16/kimber.css create mode 100644 modules/highlighter/styles/base16/london-tube.css create mode 100644 modules/highlighter/styles/base16/macintosh.css create mode 100644 modules/highlighter/styles/base16/marrakesh.css create mode 100644 modules/highlighter/styles/base16/materia.css create mode 100644 modules/highlighter/styles/base16/material-darker.css create mode 100644 modules/highlighter/styles/base16/material-lighter.css create mode 100644 modules/highlighter/styles/base16/material-palenight.css create mode 100644 modules/highlighter/styles/base16/material-vivid.css create mode 100644 modules/highlighter/styles/base16/material.css create mode 100644 modules/highlighter/styles/base16/mellow-purple.css create mode 100644 modules/highlighter/styles/base16/mexico-light.css create mode 100644 modules/highlighter/styles/base16/mocha.css create mode 100644 modules/highlighter/styles/base16/monokai.css create mode 100644 modules/highlighter/styles/base16/nebula.css create mode 100644 modules/highlighter/styles/base16/nord.css create mode 100644 modules/highlighter/styles/base16/nova.css create mode 100644 modules/highlighter/styles/base16/ocean.css create mode 100644 modules/highlighter/styles/base16/oceanicnext.css create mode 100644 modules/highlighter/styles/base16/one-light.css create mode 100644 modules/highlighter/styles/base16/onedark.css create mode 100644 modules/highlighter/styles/base16/outrun-dark.css create mode 100644 modules/highlighter/styles/base16/papercolor-dark.css create mode 100644 modules/highlighter/styles/base16/papercolor-light.css create mode 100644 modules/highlighter/styles/base16/paraiso.css create mode 100644 modules/highlighter/styles/base16/pasque.css create mode 100644 modules/highlighter/styles/base16/phd.css create mode 100644 modules/highlighter/styles/base16/pico.css create mode 100644 modules/highlighter/styles/base16/pop.css create mode 100644 modules/highlighter/styles/base16/porple.css create mode 100644 modules/highlighter/styles/base16/qualia.css create mode 100644 modules/highlighter/styles/base16/railscasts.css create mode 100644 modules/highlighter/styles/base16/rebecca.css create mode 100644 modules/highlighter/styles/base16/ros-pine-dawn.css create mode 100644 modules/highlighter/styles/base16/ros-pine-moon.css create mode 100644 modules/highlighter/styles/base16/ros-pine.css create mode 100644 modules/highlighter/styles/base16/sagelight.css create mode 100644 modules/highlighter/styles/base16/sandcastle.css create mode 100644 modules/highlighter/styles/base16/seti-ui.css create mode 100644 modules/highlighter/styles/base16/shapeshifter.css create mode 100644 modules/highlighter/styles/base16/silk-dark.css create mode 100644 modules/highlighter/styles/base16/silk-light.css create mode 100644 modules/highlighter/styles/base16/snazzy.css create mode 100644 modules/highlighter/styles/base16/solar-flare-light.css create mode 100644 modules/highlighter/styles/base16/solar-flare.css create mode 100644 modules/highlighter/styles/base16/solarized-dark.css create mode 100644 modules/highlighter/styles/base16/solarized-light.css create mode 100644 modules/highlighter/styles/base16/spacemacs.css create mode 100644 modules/highlighter/styles/base16/summercamp.css create mode 100644 modules/highlighter/styles/base16/summerfruit-dark.css create mode 100644 modules/highlighter/styles/base16/summerfruit-light.css create mode 100644 modules/highlighter/styles/base16/synth-midnight-terminal-dark.css create mode 100644 modules/highlighter/styles/base16/synth-midnight-terminal-light.css create mode 100644 modules/highlighter/styles/base16/tango.css create mode 100644 modules/highlighter/styles/base16/tender.css create mode 100644 modules/highlighter/styles/base16/tomorrow-night.css create mode 100644 modules/highlighter/styles/base16/tomorrow.css create mode 100644 modules/highlighter/styles/base16/twilight.css create mode 100644 modules/highlighter/styles/base16/unikitty-dark.css create mode 100644 modules/highlighter/styles/base16/unikitty-light.css create mode 100644 modules/highlighter/styles/base16/vulcan.css create mode 100644 modules/highlighter/styles/base16/windows-10-light.css create mode 100644 modules/highlighter/styles/base16/windows-10.css create mode 100644 modules/highlighter/styles/base16/windows-95-light.css create mode 100644 modules/highlighter/styles/base16/windows-95.css create mode 100644 modules/highlighter/styles/base16/windows-high-contrast-light.css create mode 100644 modules/highlighter/styles/base16/windows-high-contrast.css create mode 100644 modules/highlighter/styles/base16/windows-nt-light.css create mode 100644 modules/highlighter/styles/base16/windows-nt.css create mode 100644 modules/highlighter/styles/base16/woodland.css create mode 100644 modules/highlighter/styles/base16/xcode-dusk.css create mode 100644 modules/highlighter/styles/base16/zenburn.css create mode 100644 modules/highlighter/styles/brown-paper.css create mode 100644 modules/highlighter/styles/codepen-embed.css create mode 100644 modules/highlighter/styles/color-brewer.css create mode 100644 modules/highlighter/styles/dark.css create mode 100644 modules/highlighter/styles/default.css create mode 100644 modules/highlighter/styles/devibeans.css create mode 100644 modules/highlighter/styles/docco.css create mode 100644 modules/highlighter/styles/far.css create mode 100644 modules/highlighter/styles/felipec.css create mode 100644 modules/highlighter/styles/foundation.css create mode 100644 modules/highlighter/styles/github-dark-dimmed.css create mode 100644 modules/highlighter/styles/github-dark.css create mode 100644 modules/highlighter/styles/github.css create mode 100644 modules/highlighter/styles/gml.css create mode 100644 modules/highlighter/styles/googlecode.css create mode 100644 modules/highlighter/styles/gradient-dark.css create mode 100644 modules/highlighter/styles/gradient-light.css create mode 100644 modules/highlighter/styles/grayscale.css create mode 100644 modules/highlighter/styles/hybrid.css create mode 100644 modules/highlighter/styles/idea.css create mode 100644 modules/highlighter/styles/intellij-light.css create mode 100644 modules/highlighter/styles/ir-black.css create mode 100644 modules/highlighter/styles/isbl-editor-dark.css create mode 100644 modules/highlighter/styles/isbl-editor-light.css create mode 100644 modules/highlighter/styles/kimbie-dark.css create mode 100644 modules/highlighter/styles/kimbie-light.css create mode 100644 modules/highlighter/styles/lightfair.css create mode 100644 modules/highlighter/styles/lioshi.css create mode 100644 modules/highlighter/styles/magula.css create mode 100644 modules/highlighter/styles/mono-blue.css create mode 100644 modules/highlighter/styles/monokai-sublime.css create mode 100644 modules/highlighter/styles/monokai.css create mode 100644 modules/highlighter/styles/night-owl.css create mode 100644 modules/highlighter/styles/nnfx-dark.css create mode 100644 modules/highlighter/styles/nnfx-light.css create mode 100644 modules/highlighter/styles/nord.css create mode 100644 modules/highlighter/styles/obsidian.css create mode 100644 modules/highlighter/styles/panda-syntax-dark.css create mode 100644 modules/highlighter/styles/panda-syntax-light.css create mode 100644 modules/highlighter/styles/paraiso-dark.css create mode 100644 modules/highlighter/styles/paraiso-light.css create mode 100644 modules/highlighter/styles/pojoaque.css create mode 100644 modules/highlighter/styles/purebasic.css create mode 100644 modules/highlighter/styles/qtcreator-dark.css create mode 100644 modules/highlighter/styles/qtcreator-light.css create mode 100644 modules/highlighter/styles/rainbow.css create mode 100644 modules/highlighter/styles/routeros.css create mode 100644 modules/highlighter/styles/school-book.css create mode 100644 modules/highlighter/styles/shades-of-purple.css create mode 100644 modules/highlighter/styles/srcery.css create mode 100644 modules/highlighter/styles/stackoverflow-dark.css create mode 100644 modules/highlighter/styles/stackoverflow-light.css create mode 100644 modules/highlighter/styles/sunburst.css create mode 100644 modules/highlighter/styles/tokyo-night-dark.css create mode 100644 modules/highlighter/styles/tokyo-night-light.css create mode 100644 modules/highlighter/styles/tomorrow-night-blue.css create mode 100644 modules/highlighter/styles/tomorrow-night-bright.css create mode 100644 modules/highlighter/styles/vs.css create mode 100644 modules/highlighter/styles/vs2015.css create mode 100644 modules/highlighter/styles/xcode.css create mode 100644 modules/highlighter/styles/xt256.css diff --git a/admin/javascripts/admin.js.php b/admin/javascripts/admin.js.php index 8472b01..9dfd85a 100644 --- a/admin/javascripts/admin.js.php +++ b/admin/javascripts/admin.js.php @@ -22,7 +22,8 @@ $(function() { Settings.init(); }); // Adds a master toggle to forms that have multiple checkboxes. -function toggle_all() { +function toggle_all( +) { $("form[data-toggler]").each( function() { var all_on = true; @@ -69,7 +70,8 @@ function toggle_all() { ); } // Validates slug fields. -function validate_slug() { +function validate_slug( +) { $("input[pattern='^[a-z0-9\\\\-]*$']").keyup( function(e) { var slug = $(this).val(); @@ -82,7 +84,8 @@ function validate_slug() { ); } // Validates email fields. -function validate_email() { +function validate_email( +) { $("input[type='email']").keyup( function(e) { var text = $(this).val(); @@ -95,7 +98,8 @@ function validate_email() { ); } // Validates URL fields. -function validate_url() { +function validate_url( +) { $("input[type='url']").keyup( function(e) { var text = $(this).val(); @@ -118,7 +122,8 @@ function validate_url() { ); } // Tests the strength of #password1 and compares #password1 to #password2. -function validate_passwords() { +function validate_passwords( +) { var passwords = $("input[type='password']").filter( function(index) { var id = $(this).attr("id"); @@ -163,7 +168,8 @@ function validate_passwords() { ); } // Asks the user to confirm form submission. -function confirm_submit() { +function confirm_submit( +) { $("form[data-confirm]").on( "submit.confirm", function(e) { @@ -187,7 +193,8 @@ function confirm_submit() { ); } // Prevents forms being submitted multiple times in a short interval. -function solo_submit() { +function solo_submit( +) { $("form").on( "submit.solo", function(e) { @@ -203,7 +210,8 @@ function solo_submit() { } ); } -function test_uploads() { +function test_uploads( +) { $("input[type='file']:not(.toolbar)").on( "change.uploads", function(e) { @@ -247,7 +255,12 @@ var Uploads = { size_err: 'uploads_limit, "admin")); ?>' }, active: 0, - send: function(file, doneCallback, failCallback, alwaysCallback) { + send: function( + file, + doneCallback, + failCallback, + alwaysCallback + ) { Uploads.active++; var form = new FormData(); @@ -278,7 +291,13 @@ var Uploads = { } ); }, - show: function(search, filter, clickCallback, failCallback, alwaysCallback) { + show: function( + search, + filter, + clickCallback, + failCallback, + alwaysCallback + ) { if (Uploads.active) return; @@ -342,13 +361,7 @@ var Uploads = { $(this).parent().remove(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/close.svg', - "alt": '' - } - ) + '' ) ] ).click( @@ -373,7 +386,8 @@ var Uploads = { } } var Help = { - init: function() { + init: function( + ) { $(".help").on( "click", function(e) { @@ -382,7 +396,9 @@ var Help = { } ); }, - show: function(href) { + show: function( + href + ) { $("
", { "role": "dialog", "aria-label": '' @@ -421,13 +437,7 @@ var Help = { $(this).parent().remove(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/close.svg', - "alt": '' - } - ) + '' ) ] ).click( @@ -439,7 +449,8 @@ var Help = { } } var Write = { - init: function() { + init: function( + ) { // Insert toolbar buttons for text formatting. $("#write_form .options_toolbar, #edit_form .options_toolbar").each( function() { @@ -462,13 +473,7 @@ var Write = { Write.formatting(target, "h3"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/heading.svg', - "alt": '' - } - ) + '' ) ); @@ -487,13 +492,7 @@ var Write = { Write.formatting(target, "strong"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/bold.svg', - "alt": '' - } - ) + '' ) ); @@ -512,13 +511,7 @@ var Write = { Write.formatting(target, "em"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/italic.svg', - "alt": '' - } - ) + '' ) ); @@ -537,13 +530,7 @@ var Write = { Write.formatting(target, "del"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/strikethrough.svg', - "alt": '' - } - ) + '' ) ); @@ -562,13 +549,7 @@ var Write = { Write.formatting(target, "mark"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/highlight.svg', - "alt": '' - } - ) + '' ) ); @@ -587,13 +568,7 @@ var Write = { Write.formatting(target, "code"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/code.svg', - "alt": '' - } - ) + '' ) ); @@ -612,13 +587,7 @@ var Write = { Write.formatting(target, "hyperlink"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/link.svg', - "alt": '' - } - ) + '' ) ); @@ -637,13 +606,7 @@ var Write = { Write.formatting(target, "img"); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/image.svg', - "alt": '' - } - ) + '' ) ); @@ -709,13 +672,7 @@ var Write = { } } ), - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/upload.svg', - "alt": '' - } - ) + $('') ] ).appendTo(toolbar); @@ -753,11 +710,8 @@ var Write = { ); } ).append( - $("", { - "src": Site.chyrp_url + '/admin/images/icons/storage.svg', - "alt": '' - }) - ) + '' + ) ); } } @@ -796,13 +750,7 @@ var Write = { target.focus(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/view.svg', - "alt": '' - } - ) + '' ) ); } @@ -909,16 +857,24 @@ var Write = { ); } }, - dragenter: function(e) { + dragenter: function( + e + ) { $(e.target).addClass("drag_highlight"); }, - dragleave: function(e) { + dragleave: function( + e + ) { $(e.target).removeClass("drag_highlight"); }, - dragover: function(e) { + dragover: function( + e + ) { e.preventDefault(); }, - drop: function(e) { + drop: function( + e + ) { // Process drag-and-drop image file uploads. e.stopPropagation(); e.preventDefault(); @@ -959,7 +915,11 @@ var Write = { ); } }, - formatting: function(target, effect, fragment = "") { + formatting: function( + target, + effect, + fragment = "" + ) { var markdown = enable_markdown); ?>; var opening = ""; var closing = ""; @@ -1119,7 +1079,12 @@ var Write = { target[0].setRangeText(text); $(target).focus().trigger("input").trigger("change"); }, - show: function(action, safename, field, content) { + show: function( + action, + safename, + field, + content + ) { var uid = Date.now().toString(16); // Build a form targeting a named iframe. @@ -1201,8 +1166,12 @@ var Write = { ).loader().on( "load", function() { - if (!!this.contentWindow.location && this.contentWindow.location != "about:blank") + if ( + !!this.contentWindow.location + && this.contentWindow.location != "about:blank" + ) { $(this).loader(true); + } } ), $( @@ -1221,13 +1190,7 @@ var Write = { $(this).parent().remove(); } ).append( - $( - "", - { - "src": Site.chyrp_url + '/admin/images/icons/close.svg', - "alt": '' - } - ) + '' ) ] ).click( @@ -1242,15 +1205,16 @@ var Write = { } } var Settings = { - init: function() { - $("#email_correspondence").click( + init: function( + ) { + $("input#email_correspondence").click( function() { if ($(this).prop("checked") == false) $("#email_activation").prop("checked", false); } ); - $("#email_activation").click( + $("input#email_activation").click( function() { if ($(this).prop("checked") == true) $("#email_correspondence").prop("checked", true); @@ -1263,7 +1227,10 @@ var Settings = { $("form#route_settings code.syntax").each( function() { var syntax = $(this).html(); - var regexp = new RegExp("(/?|^)" + escapeRegExp(syntax) + "(/?|$)", "g"); + + var regexp = new RegExp( + "(/?|^)" + escapeRegExp(syntax) + "(/?|$)", "g" + ); if ($(e.target).val().match(regexp)) $(this).addClass("tag_added"); diff --git a/admin/layouts/help.twig b/admin/layouts/help.twig index 1acfc09..9e9a6a2 100644 --- a/admin/layouts/help.twig +++ b/admin/layouts/help.twig @@ -80,19 +80,52 @@ table { border-collapse: collapse; border-spacing: 0em; } +:root { + color-scheme: light dark; + --chyrp-pure-white: #ffffff; + --chyrp-pure-black: #000000; + --chyrp-inky-black: #1f1f23; + --chyrp-summer-grey: #fbfbfb; + --chyrp-english-grey: #efefef; + --chyrp-welsh-grey: #dfdfdf; + --chyrp-irish-grey: #cfcfcf; + --chyrp-scottish-grey: #afafaf; + --chyrp-winter-grey: #656565; + --chyrp-strong-yellow: #ffdd00; + --chyrp-strong-orange: #ff7f00; + --chyrp-strong-red: #c11600; + --chyrp-strong-green: #108600; + --chyrp-strong-blue: #1e57ba; + --chyrp-strong-purple: #ba1eba; + --chyrp-light-yellow: #fffde6; + --chyrp-light-red: #faebe4; + --chyrp-light-green: #ebfae4; + --chyrp-light-blue: #f2fbff; + --chyrp-light-purple: #fae4fa; + --chyrp-medium-yellow: #fffbcc; + --chyrp-medium-red: #fcddcf; + --chyrp-medium-green: #daf1d0; + --chyrp-medium-blue: #e1f2fa; + --chyrp-medium-purple: #f6d5f6; + --chyrp-border-yellow: #e5d7a1; + --chyrp-border-red: #d6bdb5; + --chyrp-border-green: #bdd6b5; + --chyrp-border-blue: #b8cdd9; + --chyrp-border-purple: #d6b5d6; +} *::selection { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } body { font-family: "Open Sans webfont", sans-serif; font-size: 1rem; line-height: 1.5; - color: #1f1f23; + color: var(--chyrp-inky-black); tab-size: 4; margin: 2rem; max-width: 1024px; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); } h1, h2, h3, h4, h5, h6 { font-weight: bold; @@ -110,6 +143,7 @@ h2 { h3, h4, h5, h6 { font-size: 1em; font-weight: 600; + border-bottom: 1px solid var(--chyrp-irish-grey); } sup, sub { line-height: 1; @@ -145,8 +179,8 @@ small { font-size: 0.75em; } mark { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } del { font: inherit; @@ -154,8 +188,8 @@ del { } ins { font: inherit; - color: #1f1f23; - background-color: #daf1d0; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-medium-green); } p { margin-bottom: 1rem; @@ -190,20 +224,21 @@ dl dd { hr { border: none; clear: both; - border-top: 1px solid #dddddd; + border-top: 1px solid var(--chyrp-irish-grey); margin: 2rem 0rem; } aside { + box-sizing: border-box; margin-bottom: 1rem; - padding: 0.5rem 1rem; - border: 1px solid #e5d7a1; + padding: 0.5rem; + border: 1px solid var(--chyrp-border-yellow); border-radius: 0.25em; - background-color: #fffde6; + background-color: var(--chyrp-light-yellow); } pre { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; + background-color: var(--chyrp-english-grey); margin: 1rem 0rem; padding: 1rem; overflow-x: auto; @@ -212,9 +247,9 @@ pre { code { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; - padding: 0px 2px; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + padding: 2px 4px 0px 4px; + border: 1px solid var(--chyrp-irish-grey); vertical-align: bottom; white-space: break-spaces; } @@ -234,22 +269,22 @@ table { overflow-x: scroll; } table th { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); padding: 0.5rem; font: inherit; font-weight: 600; text-align: center; vertical-align: middle; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); } table td { padding: 0.5rem; font: inherit; vertical-align: middle; - border: 1px solid #cfcfcf; + border: 1px solid var(--chyrp-irish-grey); } table tbody tr:nth-child(even) td { - background-color: #fbfbfb; + background-color: var(--chyrp-summer-grey); } table tbody tr td.emblem { text-align: center; @@ -262,18 +297,18 @@ td > *:last-child { } a:link, a:visited { - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: underline; text-underline-offset: 0.125em; } a:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 0px; } a:hover, a:focus, a:active { - color: #1e57ba; + color: var(--chyrp-strong-blue); text-decoration: underline; text-underline-offset: 0.125em; } @@ -291,26 +326,29 @@ a.emblem > img { } @media (prefers-color-scheme: dark) { body { - background-color: #efefef; + background-color: var(--chyrp-english-grey); + } + h3, h4, h5, h6 { + border-color: var(--chyrp-scottish-grey); } hr { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } aside { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } pre { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } code { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } table tbody tr td { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } table tbody tr:nth-child(even) td { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } } diff --git a/admin/locale/de_DE/LC_MESSAGES/admin.mo b/admin/locale/de_DE/LC_MESSAGES/admin.mo index 99befe02b3c65fa88030d018b294ba6103ae18af..c434e8970f05204a0e62f97b64f0dafbeee7354e 100644 GIT binary patch delta 6678 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 delta 6918 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 bo1bSUy8Tp|9KSnYn5Zc#>K&;mDl-28lh!D# diff --git a/admin/locale/fr_FR/LC_MESSAGES/admin.po b/admin/locale/fr_FR/LC_MESSAGES/admin.po index 0c801da..83e0158 100644 --- a/admin/locale/fr_FR/LC_MESSAGES/admin.po +++ b/admin/locale/fr_FR/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "URL canonique" @@ -92,8 +92,8 @@ msgstr "" "filtrer dans l'ordre croissant des index des articles." #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Mardown" @@ -114,7 +114,7 @@ msgid "## Heading" msgstr "## Titre" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "Titre" @@ -126,8 +126,8 @@ msgstr "### Titre" msgid "**Strong**" msgstr "**Gras**" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "Gras" @@ -135,8 +135,8 @@ msgstr "Gras" msgid "*Emphasis*" msgstr "*Emphase*" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "Emphase" @@ -152,8 +152,8 @@ msgstr "Citation" msgid "~~Strikethrough~~" msgstr "~~Barré~~" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "Barré" @@ -161,8 +161,8 @@ msgstr "Barré" msgid "`Code`" msgstr "`Code`" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "Code" @@ -170,8 +170,8 @@ msgstr "Code" msgid "==Highlight==" msgstr "==Surligné==" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "Surligné" @@ -203,8 +203,8 @@ msgstr "Nouveau paragraphe" msgid "[title](URL)" msgstr "[titre](URL)" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "Lien hypertexte" @@ -212,8 +212,8 @@ msgstr "Lien hypertexte" msgid "![description](URL)" msgstr "![description](URL)" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "Image" @@ -295,7 +295,7 @@ msgstr "" "Un Slug est une URL pratique permettant de nommer un article ou une page." #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Émoticônes unicode" @@ -318,112 +318,67 @@ msgstr "Émoticône" msgid "Emoji" msgstr "Émoji" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "Tout basculer" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "Êtes-vous sûr de vouloir continuer ?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "Téléchargement..." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "Le téléchargement du fichier a échoué !" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "Le type de fichier n’est pas pris en charge !" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "Taille maximale du fichier : %d mégaoctets !" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "Fenêtre modale" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "Téléchargements" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "Fermer" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "fermer" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "Contenu de l’aide" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "titre" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "gras" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "italique" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "barré" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "surligné" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "code" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "lien hypertexte" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "image" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "Téléchargement" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "Insérer" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "insérer" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "Prévisualisation" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "prévisualisation" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "Mots :" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "Contenu du prévisualisation" @@ -454,10 +409,18 @@ msgid "Items Per Admin Page" msgstr "Items par page d'administration" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "État de la publication par défaut" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "Statut de la page par défaut" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "Chemin du téléchargement" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." @@ -465,57 +428,57 @@ msgstr "" "Le dossier dans lequel les fichiers sont téléchargés, relativement à votre " "dossier d'installation." -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "Taille limite de téléchargement" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(Megabytes)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Format du flux" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "Pages de recherche" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "Pages incluses dans les résultats de recherche." -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "Webmentions" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "Envoyer et recevoir des notifications quand les URL sont mentionnées." -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" -msgstr "aide" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" +msgstr "Aider" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "Afficher les émoticônes comme des emoji Unicode." -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "" "Écrire le contenu du blog en utilisant le Markdown comme format de texte." -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "Mise à jour" @@ -549,8 +512,8 @@ msgstr "Supprimé !" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "Cancel" @@ -677,7 +640,7 @@ msgstr "Nom complet" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -757,25 +720,25 @@ msgstr "Plumes" msgid "Enabled" msgstr "Activé" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" -msgstr "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" +msgstr "" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "Désinstaller" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "Désactiver" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "Désactivé" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "Activer" @@ -795,37 +758,41 @@ msgstr "Description" msgid "Chyrp URL" msgstr "URL de Chyrp" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "L’URL de base de votre site." + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "" "Faites en sorte que l'URL de votre site pointe vers un autre emplacement que " "votre dossier d'installation." -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "Courriel de contact" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "Time Zone" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "Langue" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "Fonte Monospace" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "Écrire avec une fonte monospace." -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "Vérification des téléchargements" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "Version en cours : %s." @@ -913,29 +880,29 @@ msgstr "Contrôles" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" -msgstr "oui" +msgid "Yes" +msgstr "Oui" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" -msgstr "modifier" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" +msgstr "Modifier" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" -msgstr "supprimer" +msgid "Delete" +msgstr "Supprimer" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "Aucun résultat" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "Page %d sur %s" @@ -994,11 +961,15 @@ msgstr "Nouvel article" msgid "Posted" msgstr "Posté" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "Statut" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[Aucun]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "Gérer les téléchargements" @@ -1020,14 +991,14 @@ msgid "Type" msgstr "Type" #: admin/pages/manage_uploads.twig:61 -msgid "download" -msgstr "télécharger" +msgid "Download" +msgstr "Télécharger" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "Trier les résultats par:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "Trier les résultats" @@ -1051,11 +1022,11 @@ msgstr "Rejoint" msgid "Modules" msgstr "Modules" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "Ce module est en conflit avec les modules suivants :" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "Ce module nécessite les modules suivants pour fonctionner :" @@ -1083,119 +1054,119 @@ msgstr "Nettoyer les URLs" msgid "Gives your site prettier URLs." msgstr "Donnez à votre site des URLs plus jolies." -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "Nécessite la possibilité de réécrire les URLs." +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "Téléchargez les fichiers de réécriture d’URL." -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "Accueil" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "Faire de l'accueil la route par défaut à la place de l'index du blog." -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "URL de visualisation de l'article" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(nécessite un nettoyage des URLs)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "Syntaxe :" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "Année d'envoi" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(exemple : 2007)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "Mois d'envoi" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(exemple : 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "Jour d'envoi" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(exemple : 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "Heure d'envoi" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(exemple : 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "Minute d'envoi" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(exemple : 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "Seconde d'envoi" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(exemple : 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "Index de l'article" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "Auteur de l'article (nom d'utilisateur)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(exemple : Alex)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "Adresse non unique" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(exemple : ceci_est_propre)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "L'unique formulaire de (propre)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(exemple : celui_ci_en_a_pris_2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "La plume d'article" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(exemple : texte)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "La forme plurielle de la plume d'article" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(exemple : liens)" @@ -1207,7 +1178,7 @@ msgstr "Thèmes" msgid "Blog Themes" msgstr "Thèmes de blog" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "Choisir" @@ -1261,58 +1232,54 @@ msgstr "Écrire" msgid "Body" msgstr "Écrire" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "Slug" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" msgstr "Liste des pages publiques et visibles" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" msgstr "Public" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "Liste des pages visibles et privées" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "Privée" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "Priorité dans la liste des pages" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "Haut" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "Moyen" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "Bas" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "Parent" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[Aucun]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" msgstr "Publier" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "Sauvegarder" @@ -1323,30 +1290,30 @@ msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d fichier précédemment téléchargé avec cet article." msgstr[1] "%d fichiers précédemment téléchargés avec cet article." -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "Brouillon" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "Programmé" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "Visible seulement par un groupe d'utilisateurs :" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "Tous les utilisateurs enregistrés" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "Épingler ?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(montrer cet article au-dessus de tous les autres)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "Timestamp" diff --git a/admin/locale/it_IT/LC_MESSAGES/admin.mo b/admin/locale/it_IT/LC_MESSAGES/admin.mo index 4c4da3cfde0830db161bcd58446cb37080073ceb..b585b69826b0ed8a0c55ad5edca999bb9c7ab5c0 100644 GIT binary patch delta 6641 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 Oex|>qgu&0B@BRl06yak4 delta 6875 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 VDJiUQs;bhtqQG0^E3T??{s)h0+SC95 delta 6866 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 WV~i+J(%j6*H}mITQC~ZMzWE=T#|S9^ diff --git a/admin/locale/nl_NL/LC_MESSAGES/admin.po b/admin/locale/nl_NL/LC_MESSAGES/admin.po index edd876b..536478c 100644 --- a/admin/locale/nl_NL/LC_MESSAGES/admin.po +++ b/admin/locale/nl_NL/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "Kanonieke URL" @@ -90,8 +90,8 @@ msgstr "" "ID en vervolgens in oplopende volgorde van bericht-ID." #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Markdown" @@ -112,7 +112,7 @@ msgid "## Heading" msgstr "## Kop" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "Kop" @@ -124,8 +124,8 @@ msgstr "### Kop" msgid "**Strong**" msgstr "**Sterk**" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "Sterk" @@ -133,8 +133,8 @@ msgstr "Sterk" msgid "*Emphasis*" msgstr "*Vet*" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "Vet" @@ -150,8 +150,8 @@ msgstr "Citaat" msgid "~~Strikethrough~~" msgstr "~~Doorhalen~~" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "Doorhalen" @@ -159,8 +159,8 @@ msgstr "Doorhalen" msgid "`Code`" msgstr "`Code`" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "Code" @@ -168,8 +168,8 @@ msgstr "Code" msgid "==Highlight==" msgstr "==Markeren==" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "Markeren" @@ -201,8 +201,8 @@ msgstr "Nieuwe paragraaf" msgid "[title](URL)" msgstr "[titel](URL)" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "Hyperlink" @@ -210,8 +210,8 @@ msgstr "Hyperlink" msgid "![description](URL)" msgstr "![beschrijving](URL)" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "Afbeelding" @@ -296,7 +296,7 @@ msgstr "" "0-9, en een liggend-streepje (“-”)." #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Unicode Emoticons" @@ -319,112 +319,67 @@ msgstr "Emoticon" msgid "Emoji" msgstr "Emoji" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "Alles selecteren" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "Weet je zeker dat je wilt doorgaan?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "Aan het uploaden..." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "Het uploaden van bestanden is mislukt!" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "Bestandstype wordt niet ondersteund!" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "Maximale bestandsgrootte: %d Megabytes!" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "Voorscherm" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "Uploads" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "Sluit" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "sluit" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "Help inhoud" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "kop" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "sterk" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "vet" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "doorhalen" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "markeren" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "code" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "hyperlink" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "afbeelding" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "Upload" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "Invoegen" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "invoegen" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "Vooruitblik" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "vooruitblik" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "Woorden:" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "Vooruitblik inhoud" @@ -455,66 +410,74 @@ msgid "Items Per Admin Page" msgstr "Onderdelen per beheerpagina" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "Standaardblogpoststatus" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "Standaard paginastatus" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "Pad voor uploads" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." msgstr "" "De map waarnaar bestanden worden geupload, relatief t.o.v. je installatiemap." -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "Upload grootte limiet" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(Megabytes)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Feed formaat" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "Zoek pagina's" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "Zoekresultaten inclusief pagina's." -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "Webmentions" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "Verzend en ontvang meldingen wanneer URL's worden genoemd." -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" -msgstr "hulp" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" +msgstr "" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "Geef emoticons weer als Unicode emojis." -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "Stel een blogpost samen, gebruik makende van markup syntax." -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "Update" @@ -548,8 +511,8 @@ msgstr "Verwijder!" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "Annuleer" @@ -677,7 +640,7 @@ msgstr "Volledige naam" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -757,25 +720,25 @@ msgstr "Feathers" msgid "Enabled" msgstr "Geactiveerd" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" -msgstr "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" +msgstr "" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "Deïnstalleer" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "De-activeer" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "Gedeactiveerd" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "Activeer" @@ -795,37 +758,41 @@ msgstr "Beschrijving" msgid "Chyrp URL" msgstr "Chyrp URL" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "De basis-URL voor uw site." + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "" "Laat de URLs van je website ergens anders naar verwijzen dan naar de " "installatiemap." -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "Contact Emailadres" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "Tijdzone" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "Taal" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "Monospace-lettertype" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "Schrijf met een monospace-lettertype." -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "Controleer op updates" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "Huidige versie: %s." @@ -913,29 +880,29 @@ msgstr "Beheer" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" -msgstr "ja" +msgid "Yes" +msgstr "Ja" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" -msgstr "wijzig" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" +msgstr "Bewerken" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" -msgstr "verwijder" +msgid "Delete" +msgstr "Verwijderen" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "Geen resultaten" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "%de pagina van %s" @@ -994,11 +961,15 @@ msgstr "Nieuwe Blogpost" msgid "Posted" msgstr "Geplaatst" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "Status" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[Geen]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "Beheer Uploads" @@ -1020,14 +991,14 @@ msgid "Type" msgstr "Type" #: admin/pages/manage_uploads.twig:61 -msgid "download" -msgstr "download" +msgid "Download" +msgstr "Download" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "Sorteer resultaten op:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "Sorteer resultaten" @@ -1051,11 +1022,11 @@ msgstr "Toegevoegd" msgid "Modules" msgstr "Modules" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "Deze module veroorzaakt een conflict met de volgende modules:" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "Voor deze module moeten de volgende modules worden gedeactiveerd:" @@ -1083,120 +1054,120 @@ msgstr "Schone URLs" msgid "Gives your site prettier URLs." msgstr "Geef je website mooiere URLs." -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "Vereist URL rewrite ondersteuning" +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "Download de URL-herschrijfbestanden." -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "Homepagina" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "" "Maak de standaard route een statische pagina in plaats van de blogindex." -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "Blogpost Bekijk URL" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(vereist schone URLs)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "Syntax:" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "Jaar geplaatst" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(bijv. 2021)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "Maand geplaatst" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(bijv. 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "Dag geplaatst" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(bijv. 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "Uur geplaatst" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(bijv. 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "Minuut geplaatst" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(bijv. 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "Seconde geplaatst" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(bijv. 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "Blogpost ID" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "Blogpost schrijver (gebruikersnaam)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(bijv. Alex)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "De niet-unieke slug" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(bijv. dit-is-schoon)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "De unieke vorm van (schoon)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(bijv. deze-is-reeds-bezet-2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "De Blogposts' feather" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(bijv. tekst)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "De meervoudsvorm van de blogposts' feather" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(bijv. links)" @@ -1208,7 +1179,7 @@ msgstr "Thema's" msgid "Blog Themes" msgstr "Blogpost thema's" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "Selecteer" @@ -1261,58 +1232,54 @@ msgstr "Schrijf" msgid "Body" msgstr "Body" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "Slug" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" msgstr "Openbaar en zichtbaar in pagina-lijst" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" msgstr "Openbaar" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "Privé en zichtbaar in pagina-lijst" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "Privé" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "Rangorde in pagina-lijst" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "Hoog" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "Gemiddeld" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "Laag" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "Bovenliggend" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[Geen]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" msgstr "Publiceer" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "Opslaan" @@ -1323,30 +1290,30 @@ msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d bestand eerder al met deze blogpost geupload." msgstr[1] "%d bestanden eerder al met deze blogpost geupload." -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "Concept" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "Geagendeerd" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "Alleen zichtbaar voor een bepaalde groep gebruikers:" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "Alle geregistreerde gebruikers" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "Vastgezet?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(toon deze blogpost helemaal bovenaan)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "Tijdstempel" diff --git a/admin/locale/zh_CN/LC_MESSAGES/admin.mo b/admin/locale/zh_CN/LC_MESSAGES/admin.mo index 1ee285ce35134b698f2b4587fe2510956ac38f5b..be683f62550ff516c36d0f6dd94d5ff23ac0bcf8 100644 GIT binary patch delta 5706 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 C^qSKE delta 5985 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 diff --git a/admin/locale/zh_CN/LC_MESSAGES/admin.po b/admin/locale/zh_CN/LC_MESSAGES/admin.po index c540e36..9020b2b 100644 --- a/admin/locale/zh_CN/LC_MESSAGES/admin.po +++ b/admin/locale/zh_CN/LC_MESSAGES/admin.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: admin/help/canonical_url.twig:3 admin/help/canonical_url.twig:6 -#: admin/pages/general_settings.twig:32 +#: admin/pages/general_settings.twig:35 msgid "Canonical URL" msgstr "规范URL" @@ -80,8 +80,8 @@ msgstr "" "将按用户 ID 降序对帖子表进行排序,然后按帖子 ID 升序排序。" #: admin/help/markdown.twig:3 admin/help/markdown.twig:6 -#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:84 -#: admin/partials/page_fields.twig:13 admin/partials/post_fields.twig:52 +#: admin/help/markdown.twig:13 admin/pages/content_settings.twig:106 +#: admin/partials/page_fields.twig:14 admin/partials/post_fields.twig:53 msgid "Markdown" msgstr "Markdown" @@ -100,7 +100,7 @@ msgid "## Heading" msgstr "" #: admin/help/markdown.twig:20 admin/help/markdown.twig:24 -#: admin/javascripts/admin.js.php:455 admin/javascripts/admin.js.php:456 +#: admin/javascripts/admin.js.php:466 admin/javascripts/admin.js.php:467 msgid "Heading" msgstr "" @@ -112,8 +112,8 @@ msgstr "" msgid "**Strong**" msgstr "" -#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:480 -#: admin/javascripts/admin.js.php:481 +#: admin/help/markdown.twig:28 admin/javascripts/admin.js.php:485 +#: admin/javascripts/admin.js.php:486 msgid "Strong" msgstr "" @@ -121,8 +121,8 @@ msgstr "" msgid "*Emphasis*" msgstr "" -#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:505 -#: admin/javascripts/admin.js.php:506 +#: admin/help/markdown.twig:32 admin/javascripts/admin.js.php:504 +#: admin/javascripts/admin.js.php:505 msgid "Emphasis" msgstr "" @@ -138,8 +138,8 @@ msgstr "" msgid "~~Strikethrough~~" msgstr "" -#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:530 -#: admin/javascripts/admin.js.php:531 +#: admin/help/markdown.twig:40 admin/javascripts/admin.js.php:523 +#: admin/javascripts/admin.js.php:524 msgid "Strikethrough" msgstr "" @@ -147,8 +147,8 @@ msgstr "" msgid "`Code`" msgstr "" -#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:580 -#: admin/javascripts/admin.js.php:581 +#: admin/help/markdown.twig:44 admin/javascripts/admin.js.php:561 +#: admin/javascripts/admin.js.php:562 msgid "Code" msgstr "" @@ -156,8 +156,8 @@ msgstr "" msgid "==Highlight==" msgstr "" -#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:555 -#: admin/javascripts/admin.js.php:556 +#: admin/help/markdown.twig:48 admin/javascripts/admin.js.php:542 +#: admin/javascripts/admin.js.php:543 msgid "Highlight" msgstr "" @@ -189,8 +189,8 @@ msgstr "新行" msgid "[title](URL)" msgstr "" -#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:605 -#: admin/javascripts/admin.js.php:606 +#: admin/help/markdown.twig:65 admin/javascripts/admin.js.php:580 +#: admin/javascripts/admin.js.php:581 msgid "Hyperlink" msgstr "" @@ -198,8 +198,8 @@ msgstr "" msgid "![description](URL)" msgstr "" -#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:630 -#: admin/javascripts/admin.js.php:631 +#: admin/help/markdown.twig:69 admin/javascripts/admin.js.php:599 +#: admin/javascripts/admin.js.php:600 msgid "Image" msgstr "图像" @@ -282,7 +282,7 @@ msgstr "" "时自动生成。 一个slug 只能包含字母a-z,数字0-9和连字符减号(“ - ”)。" #: admin/help/unicode_emoticons.twig:3 admin/help/unicode_emoticons.twig:6 -#: admin/pages/content_settings.twig:71 +#: admin/pages/content_settings.twig:93 msgid "Unicode Emoticons" msgstr "Unicode表情符号" @@ -303,112 +303,67 @@ msgstr "表情" msgid "Emoji" msgstr "表情符号" -#: admin/javascripts/admin.js.php:55 admin/javascripts/admin.js.php:61 +#: admin/javascripts/admin.js.php:56 admin/javascripts/admin.js.php:62 msgid "Toggle All" msgstr "全部切换" -#: admin/javascripts/admin.js.php:171 admin/javascripts/admin.js.php:182 +#: admin/javascripts/admin.js.php:177 admin/javascripts/admin.js.php:188 msgid "Are you sure you want to proceed?" msgstr "确定继续?" -#: admin/javascripts/admin.js.php:244 +#: admin/javascripts/admin.js.php:252 msgid "Uploading..." msgstr "上传中..." -#: admin/javascripts/admin.js.php:245 +#: admin/javascripts/admin.js.php:253 msgid "File upload failed!" msgstr "文件上传失败!" -#: admin/javascripts/admin.js.php:246 +#: admin/javascripts/admin.js.php:254 msgid "File type not supported!" msgstr "不支持文件类型!" -#: admin/javascripts/admin.js.php:247 +#: admin/javascripts/admin.js.php:255 #, php-format msgid "Maximum file size: %d Megabytes!" msgstr "最大文件大小:%d兆字节!" -#: admin/javascripts/admin.js.php:300 admin/javascripts/admin.js.php:388 -#: admin/javascripts/admin.js.php:1186 +#: admin/javascripts/admin.js.php:319 admin/javascripts/admin.js.php:404 +#: admin/javascripts/admin.js.php:1151 msgid "Modal window" msgstr "模态窗口" -#: admin/javascripts/admin.js.php:309 admin/pages/manage_uploads.twig:18 +#: admin/javascripts/admin.js.php:328 admin/pages/manage_uploads.twig:18 msgid "Uploads" msgstr "上传" -#: admin/javascripts/admin.js.php:335 admin/javascripts/admin.js.php:414 -#: admin/javascripts/admin.js.php:1214 +#: admin/javascripts/admin.js.php:354 admin/javascripts/admin.js.php:430 +#: admin/javascripts/admin.js.php:1183 msgid "Close" msgstr "关闭" -#: admin/javascripts/admin.js.php:349 admin/javascripts/admin.js.php:428 -#: admin/javascripts/admin.js.php:1228 -msgid "close" -msgstr "关闭" - -#: admin/javascripts/admin.js.php:397 +#: admin/javascripts/admin.js.php:413 msgid "Help content" msgstr "帮助内容" -#: admin/javascripts/admin.js.php:469 -msgid "heading" -msgstr "标题" - -#: admin/javascripts/admin.js.php:494 -msgid "strong" -msgstr "强" - -#: admin/javascripts/admin.js.php:519 -msgid "emphasis" -msgstr "重点" - -#: admin/javascripts/admin.js.php:544 -msgid "strikethrough" -msgstr "穿越" - -#: admin/javascripts/admin.js.php:569 -msgid "highlight" -msgstr "突出" - -#: admin/javascripts/admin.js.php:594 -msgid "code" -msgstr "代码" - -#: admin/javascripts/admin.js.php:619 -msgid "hyperlink" -msgstr "链接" - -#: admin/javascripts/admin.js.php:644 admin/javascripts/admin.js.php:716 -msgid "image" -msgstr "图像" - -#: admin/javascripts/admin.js.php:659 admin/javascripts/admin.js.php:660 +#: admin/javascripts/admin.js.php:622 admin/javascripts/admin.js.php:623 msgid "Upload" msgstr "上传" -#: admin/javascripts/admin.js.php:729 admin/javascripts/admin.js.php:730 +#: admin/javascripts/admin.js.php:686 admin/javascripts/admin.js.php:687 msgid "Insert" msgstr "插入" -#: admin/javascripts/admin.js.php:758 -msgid "insert" -msgstr "插入" - -#: admin/javascripts/admin.js.php:777 admin/javascripts/admin.js.php:778 -#: admin/pages/themes.twig:24 +#: admin/javascripts/admin.js.php:731 admin/javascripts/admin.js.php:732 +#: admin/pages/themes.twig:25 msgid "Preview" msgstr "预览" -#: admin/javascripts/admin.js.php:803 -msgid "preview" -msgstr "预览" - -#: admin/javascripts/admin.js.php:835 +#: admin/javascripts/admin.js.php:783 msgid "Words:" msgstr "" -#: admin/javascripts/admin.js.php:1196 +#: admin/javascripts/admin.js.php:1161 msgid "Preview content" msgstr "预览内容" @@ -439,65 +394,73 @@ msgid "Items Per Admin Page" msgstr "每个管理员的页面" #: admin/pages/content_settings.twig:25 +msgid "Default Post Status" +msgstr "默认帖子状态" + +#: admin/pages/content_settings.twig:36 +msgid "Default Page Status" +msgstr "默认页面状态" + +#: admin/pages/content_settings.twig:47 msgid "Uploads Path" msgstr "上传路径" -#: admin/pages/content_settings.twig:29 +#: admin/pages/content_settings.twig:51 msgid "" "The directory to which files are uploaded, relative to your installation " "directory." msgstr "相对于您安装目录的上传文件的目录。" -#: admin/pages/content_settings.twig:33 +#: admin/pages/content_settings.twig:55 msgid "Upload Size Limit" msgstr "上传大小限制" -#: admin/pages/content_settings.twig:36 +#: admin/pages/content_settings.twig:58 msgid "(Megabytes)" msgstr "(M)" -#: admin/pages/content_settings.twig:39 +#: admin/pages/content_settings.twig:61 msgid "Feed Format" msgstr "Feed格式" -#: admin/pages/content_settings.twig:51 +#: admin/pages/content_settings.twig:73 msgid "Search Pages" msgstr "搜索页面" -#: admin/pages/content_settings.twig:56 +#: admin/pages/content_settings.twig:78 msgid "Include pages in search results." msgstr "在搜索结果中包括页面。" -#: admin/pages/content_settings.twig:61 +#: admin/pages/content_settings.twig:83 msgid "Webmentions" msgstr "" -#: admin/pages/content_settings.twig:66 +#: admin/pages/content_settings.twig:88 msgid "Send and receive notifications when URLs are mentioned." msgstr "在提及 URL 时发送和接收通知。" -#: admin/pages/content_settings.twig:73 admin/pages/content_settings.twig:86 +#: admin/pages/content_settings.twig:95 admin/pages/content_settings.twig:108 #: admin/pages/export.twig:21 admin/pages/export.twig:39 #: admin/pages/export.twig:57 admin/pages/export.twig:75 -#: admin/pages/general_settings.twig:35 admin/pages/manage_pages.twig:11 +#: admin/pages/general_settings.twig:38 admin/pages/manage_pages.twig:11 #: admin/pages/manage_posts.twig:11 admin/pages/manage_users.twig:11 -#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:25 -#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:124 -#: admin/partials/post_fields.twig:148 -msgid "help" +#: admin/pages/route_settings.twig:13 admin/partials/page_fields.twig:27 +#: admin/partials/post_fields.twig:32 admin/partials/post_fields.twig:126 +#: admin/partials/post_fields.twig:150 +msgid "Help" msgstr "帮助" -#: admin/pages/content_settings.twig:79 +#: admin/pages/content_settings.twig:101 msgid "Display emoticons as Unicode emoji." msgstr "将表情符号显示为Unicode表情符号。" -#: admin/pages/content_settings.twig:92 +#: admin/pages/content_settings.twig:114 msgid "Compose blog content using Markdown text formatting." msgstr "使用Markdown语法撰写博客内容。" -#: admin/pages/content_settings.twig:97 admin/pages/edit_group.twig:27 -#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:99 -#: admin/pages/route_settings.twig:95 admin/pages/user_settings.twig:57 +#: admin/pages/content_settings.twig:119 admin/pages/edit_group.twig:27 +#: admin/pages/edit_user.twig:66 admin/pages/general_settings.twig:102 +#: admin/pages/route_settings.twig:96 admin/pages/user_settings.twig:57 msgid "Update" msgstr "更新" @@ -531,8 +494,8 @@ msgstr "删除!" #: admin/pages/delete_group.twig:56 admin/pages/delete_page.twig:24 #: admin/pages/delete_post.twig:17 admin/pages/delete_upload.twig:17 -#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:84 -#: admin/partials/post_fields.twig:194 +#: admin/pages/delete_user.twig:50 admin/partials/page_fields.twig:86 +#: admin/partials/post_fields.twig:196 msgid "Cancel" msgstr "取消" @@ -659,7 +622,7 @@ msgstr "全名" #: admin/pages/edit_user.twig:43 admin/pages/edit_user.twig:51 #: admin/pages/export.twig:19 admin/pages/export.twig:37 #: admin/pages/export.twig:55 admin/pages/export.twig:73 -#: admin/pages/export.twig:94 admin/pages/general_settings.twig:33 +#: admin/pages/export.twig:94 admin/pages/general_settings.twig:36 #: admin/pages/import.twig:37 admin/pages/new_user.twig:46 #: admin/pages/new_user.twig:54 msgid "(optional)" @@ -737,25 +700,25 @@ msgstr "羽毛" msgid "Enabled" msgstr "已启用" -#: admin/pages/feathers.twig:15 admin/pages/feathers.twig:48 -#: admin/pages/modules.twig:15 admin/pages/modules.twig:68 -#: admin/pages/themes.twig:13 -msgid "info" +#: admin/pages/feathers.twig:16 admin/pages/feathers.twig:51 +#: admin/pages/modules.twig:16 admin/pages/modules.twig:70 +#: admin/pages/themes.twig:14 +msgid "Info" msgstr "信息" -#: admin/pages/feathers.twig:28 admin/pages/modules.twig:48 +#: admin/pages/feathers.twig:30 admin/pages/modules.twig:49 msgid "Uninstall" msgstr "卸载" -#: admin/pages/feathers.twig:32 admin/pages/modules.twig:52 +#: admin/pages/feathers.twig:34 admin/pages/modules.twig:53 msgid "Disable" msgstr "禁用" -#: admin/pages/feathers.twig:41 admin/pages/modules.twig:61 +#: admin/pages/feathers.twig:43 admin/pages/modules.twig:62 msgid "Disabled" msgstr "已禁用" -#: admin/pages/feathers.twig:60 admin/pages/modules.twig:101 +#: admin/pages/feathers.twig:64 admin/pages/modules.twig:103 msgid "Enable" msgstr "启用" @@ -775,35 +738,39 @@ msgstr "描述" msgid "Chyrp URL" msgstr "" -#: admin/pages/general_settings.twig:41 +#: admin/pages/general_settings.twig:30 +msgid "The base URL for your site." +msgstr "您网站的基 URL。" + +#: admin/pages/general_settings.twig:44 msgid "Have your site URLs point someplace other than your install directory." msgstr "让您的网站网址指向安装目录以外的其他位置。" -#: admin/pages/general_settings.twig:46 +#: admin/pages/general_settings.twig:49 msgid "Contact Email Address" msgstr "联系的邮件地址" -#: admin/pages/general_settings.twig:53 +#: admin/pages/general_settings.twig:56 msgid "Time Zone" msgstr "时区" -#: admin/pages/general_settings.twig:66 +#: admin/pages/general_settings.twig:69 msgid "Language" msgstr "语言" -#: admin/pages/general_settings.twig:79 +#: admin/pages/general_settings.twig:82 msgid "Monospace Font" msgstr "等宽字体" -#: admin/pages/general_settings.twig:84 +#: admin/pages/general_settings.twig:87 msgid "Write with a monospace font." msgstr "使用等宽字体书写。" -#: admin/pages/general_settings.twig:89 +#: admin/pages/general_settings.twig:92 msgid "Check for Updates" msgstr "检查更新" -#: admin/pages/general_settings.twig:94 +#: admin/pages/general_settings.twig:97 #, php-format msgid "Current version: %s." msgstr "当前版本: %s。" @@ -891,29 +858,29 @@ msgstr "操作" #: admin/pages/manage_groups.twig:41 admin/pages/manage_groups.twig:46 #: admin/pages/manage_pages.twig:55 admin/pages/manage_pages.twig:60 #: admin/pages/manage_users.twig:57 -msgid "yes" +msgid "Yes" msgstr "是" #: admin/pages/manage_groups.twig:51 admin/pages/manage_pages.twig:68 -#: admin/pages/manage_posts.twig:52 admin/pages/manage_users.twig:63 -msgid "edit" +#: admin/pages/manage_posts.twig:56 admin/pages/manage_users.twig:63 +msgid "Edit" msgstr "编辑" #: admin/pages/manage_groups.twig:54 admin/pages/manage_pages.twig:71 -#: admin/pages/manage_posts.twig:55 admin/pages/manage_uploads.twig:66 +#: admin/pages/manage_posts.twig:59 admin/pages/manage_uploads.twig:66 #: admin/pages/manage_users.twig:66 -msgid "delete" +msgid "Delete" msgstr "删除" -#: admin/pages/manage_groups.twig:60 admin/pages/manage_pages.twig:77 -#: admin/pages/manage_posts.twig:62 admin/pages/manage_uploads.twig:73 -#: admin/pages/manage_users.twig:72 admin/partials/uploads_modal.twig:33 +#: admin/pages/manage_groups.twig:61 admin/pages/manage_pages.twig:78 +#: admin/pages/manage_posts.twig:66 admin/pages/manage_uploads.twig:74 +#: admin/pages/manage_users.twig:73 admin/partials/uploads_modal.twig:34 msgid "No results" msgstr "没有结果" -#: admin/pages/manage_groups.twig:68 admin/pages/manage_pages.twig:85 -#: admin/pages/manage_posts.twig:70 admin/pages/manage_uploads.twig:94 -#: admin/pages/manage_users.twig:80 +#: admin/pages/manage_groups.twig:69 admin/pages/manage_pages.twig:86 +#: admin/pages/manage_posts.twig:74 admin/pages/manage_uploads.twig:95 +#: admin/pages/manage_users.twig:81 #, php-format msgid "Page %d of %s" msgstr "%d of %s 的页面" @@ -972,11 +939,15 @@ msgstr "新加帖子" msgid "Posted" msgstr "已发布的" -#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:31 -#: admin/partials/post_fields.twig:78 +#: admin/pages/manage_posts.twig:29 admin/partials/page_fields.twig:33 +#: admin/partials/post_fields.twig:80 msgid "Status" msgstr "状态" +#: admin/pages/manage_posts.twig:48 admin/partials/page_fields.twig:59 +msgid "[None]" +msgstr "[空]" + #: admin/pages/manage_uploads.twig:3 msgid "Manage Uploads" msgstr "管理上传" @@ -998,14 +969,14 @@ msgid "Type" msgstr "类型" #: admin/pages/manage_uploads.twig:61 -msgid "download" +msgid "Download" msgstr "下载" -#: admin/pages/manage_uploads.twig:81 +#: admin/pages/manage_uploads.twig:82 msgid "Sort results by:" msgstr "结果排序依据:" -#: admin/pages/manage_uploads.twig:89 +#: admin/pages/manage_uploads.twig:90 msgid "Sort Results" msgstr "对结果进行排序" @@ -1029,11 +1000,11 @@ msgstr "加入时间" msgid "Modules" msgstr "模块" -#: admin/pages/modules.twig:23 admin/pages/modules.twig:76 +#: admin/pages/modules.twig:24 admin/pages/modules.twig:78 msgid "This module conflicts with the following modules:" msgstr "该模块与以下模块冲突:" -#: admin/pages/modules.twig:33 admin/pages/modules.twig:86 +#: admin/pages/modules.twig:34 admin/pages/modules.twig:88 msgid "This module requires the following modules to be enabled:" msgstr "这个模块需要以下模块启用:" @@ -1061,119 +1032,119 @@ msgstr "优雅链接" msgid "Gives your site prettier URLs." msgstr "为您的网站提供更漂亮的URL。" -#: admin/pages/route_settings.twig:19 -msgid "Requires URL rewrite support." -msgstr "需要 URL rewrite 支持。" +#: admin/pages/route_settings.twig:20 +msgid "Download the URL rewrite files." +msgstr "下载 URL 重写文件。" -#: admin/pages/route_settings.twig:24 +#: admin/pages/route_settings.twig:25 msgid "Homepage" msgstr "主页" -#: admin/pages/route_settings.twig:29 +#: admin/pages/route_settings.twig:30 msgid "Make the default route a homepage instead of the blog index." msgstr "使默认路由成为主页而不是博客索引。" -#: admin/pages/route_settings.twig:34 +#: admin/pages/route_settings.twig:35 msgid "Post View URL" msgstr "帖子查看链接" -#: admin/pages/route_settings.twig:35 +#: admin/pages/route_settings.twig:36 msgid "(requires clean URLs)" msgstr "(需要优雅链接)" -#: admin/pages/route_settings.twig:40 +#: admin/pages/route_settings.twig:41 msgid "Syntax:" msgstr "符号:" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "Year submitted" msgstr "提交的年份" -#: admin/pages/route_settings.twig:45 +#: admin/pages/route_settings.twig:46 msgid "(e.g. 2007)" msgstr "(例如:2007)" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "Month submitted" msgstr "提交的月份" -#: admin/pages/route_settings.twig:49 +#: admin/pages/route_settings.twig:50 msgid "(e.g. 12)" msgstr "(例如 12)" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "Day submitted" msgstr "提交的天" -#: admin/pages/route_settings.twig:53 +#: admin/pages/route_settings.twig:54 msgid "(e.g. 25)" msgstr "(例如 25)" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "Hour submitted" msgstr "提交的小时" -#: admin/pages/route_settings.twig:57 +#: admin/pages/route_settings.twig:58 msgid "(e.g. 03)" msgstr "(例如 03)" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "Minute submitted" msgstr "提交的分" -#: admin/pages/route_settings.twig:61 +#: admin/pages/route_settings.twig:62 msgid "(e.g. 59)" msgstr "(例如 59)" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "Second submitted" msgstr "提交的秒" -#: admin/pages/route_settings.twig:65 +#: admin/pages/route_settings.twig:66 msgid "(e.g. 30)" msgstr "(例如 30)" -#: admin/pages/route_settings.twig:69 +#: admin/pages/route_settings.twig:70 msgid "Post ID" msgstr "帖子ID" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "Post author (username)" msgstr "帖子作者(用户名)" -#: admin/pages/route_settings.twig:73 +#: admin/pages/route_settings.twig:74 msgid "(e.g. Alex)" msgstr "(例如 Alex)" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "The non-unique slug" msgstr "非独特 slug" -#: admin/pages/route_settings.twig:77 +#: admin/pages/route_settings.twig:78 msgid "(e.g. this_is_clean)" msgstr "(例如 this_is_clean)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "The unique form of (clean)" msgstr "独特的(优雅)" -#: admin/pages/route_settings.twig:81 +#: admin/pages/route_settings.twig:82 msgid "(e.g. this_one_is_taken_2)" msgstr "(例如 this_one_is_taken_2)" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "The post's feather" msgstr "帖子的羽毛" -#: admin/pages/route_settings.twig:85 +#: admin/pages/route_settings.twig:86 msgid "(e.g. text)" msgstr "(例如 text)" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "The plural form of the post's feather" msgstr "帖子羽毛的复数形式" -#: admin/pages/route_settings.twig:89 +#: admin/pages/route_settings.twig:90 msgid "(e.g. links)" msgstr "(例如 links)" @@ -1185,7 +1156,7 @@ msgstr "主题" msgid "Blog Themes" msgstr "博客主题" -#: admin/pages/themes.twig:27 +#: admin/pages/themes.twig:28 msgid "Select" msgstr "选择" @@ -1237,58 +1208,54 @@ msgstr "写作" msgid "Body" msgstr "正文" -#: admin/partials/page_fields.twig:23 admin/partials/post_fields.twig:122 +#: admin/partials/page_fields.twig:25 admin/partials/post_fields.twig:124 msgid "Slug" msgstr "" -#: admin/partials/page_fields.twig:34 +#: admin/partials/page_fields.twig:36 msgid "Public and visible in pages list" -msgstr "公开并在页面列表中显示" +msgstr "公共并在页面列表中显示" -#: admin/partials/page_fields.twig:36 admin/partials/post_fields.twig:86 +#: admin/partials/page_fields.twig:38 admin/partials/post_fields.twig:88 msgid "Public" -msgstr "公开" +msgstr "公共" -#: admin/partials/page_fields.twig:38 +#: admin/partials/page_fields.twig:40 msgid "Private and visible in pages list" msgstr "隐藏并在页面列表中显示" -#: admin/partials/page_fields.twig:40 admin/partials/post_fields.twig:90 +#: admin/partials/page_fields.twig:42 admin/partials/post_fields.twig:92 msgid "Private" msgstr "隐藏" -#: admin/partials/page_fields.twig:44 +#: admin/partials/page_fields.twig:46 msgid "Priority in pages list" msgstr "页面列表中的优先级" -#: admin/partials/page_fields.twig:47 +#: admin/partials/page_fields.twig:49 msgid "High" msgstr "高" -#: admin/partials/page_fields.twig:49 +#: admin/partials/page_fields.twig:51 msgid "Medium" msgstr "中" -#: admin/partials/page_fields.twig:51 +#: admin/partials/page_fields.twig:53 msgid "Low" msgstr "低" -#: admin/partials/page_fields.twig:55 +#: admin/partials/page_fields.twig:57 msgid "Parent" msgstr "父级" -#: admin/partials/page_fields.twig:57 -msgid "[None]" -msgstr "[空]" - -#: admin/partials/page_fields.twig:74 admin/partials/post_fields.twig:184 -#: admin/partials/post_fields.twig:200 +#: admin/partials/page_fields.twig:76 admin/partials/post_fields.twig:186 +#: admin/partials/post_fields.twig:202 msgid "Publish" -msgstr "公开" +msgstr "发布" -#: admin/partials/page_fields.twig:77 admin/partials/page_fields.twig:81 -#: admin/partials/post_fields.twig:187 admin/partials/post_fields.twig:191 -#: admin/partials/post_fields.twig:204 +#: admin/partials/page_fields.twig:79 admin/partials/page_fields.twig:83 +#: admin/partials/post_fields.twig:189 admin/partials/post_fields.twig:193 +#: admin/partials/post_fields.twig:206 msgid "Save" msgstr "保存" @@ -1298,30 +1265,30 @@ msgid "%d file previously uploaded with this post." msgid_plural "%d files previously uploaded with this post." msgstr[0] "%d之前随此帖子上传的文件。" -#: admin/partials/post_fields.twig:82 +#: admin/partials/post_fields.twig:84 msgid "Draft" msgstr "草稿" -#: admin/partials/post_fields.twig:94 +#: admin/partials/post_fields.twig:96 msgid "Scheduled" msgstr "定时发布" -#: admin/partials/post_fields.twig:96 +#: admin/partials/post_fields.twig:98 msgid "Visible only to a group of users:" msgstr "仅可见于一组用户:" -#: admin/partials/post_fields.twig:99 +#: admin/partials/post_fields.twig:101 msgid "All registered users" msgstr "所有注册的用户" -#: admin/partials/post_fields.twig:115 +#: admin/partials/post_fields.twig:117 msgid "Pinned?" msgstr "置顶?" -#: admin/partials/post_fields.twig:116 +#: admin/partials/post_fields.twig:118 msgid "(shows this post above all others)" msgstr "(置顶显示)" -#: admin/partials/post_fields.twig:130 +#: admin/partials/post_fields.twig:132 msgid "Timestamp" msgstr "时间戳" diff --git a/admin/pages/content_settings.twig b/admin/pages/content_settings.twig index 4531a08..ed759c5 100644 --- a/admin/pages/content_settings.twig +++ b/admin/pages/content_settings.twig @@ -22,6 +22,28 @@

+ +{#- -#} + +

+

+ +{#- -#} + +

+

{#- -#} @@ -70,7 +92,7 @@ {#- -#} @@ -83,7 +105,7 @@ {#- -#} diff --git a/admin/pages/export.twig b/admin/pages/export.twig index 164152e..411854d 100644 --- a/admin/pages/export.twig +++ b/admin/pages/export.twig @@ -18,7 +18,7 @@ {{ "Filter Posts" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} @@ -36,7 +36,7 @@ {{ "Filter Pages" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} @@ -54,7 +54,7 @@ {{ "Filter Groups" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} @@ -72,7 +72,7 @@ {{ "Filter Users" | translate }} {{ "(optional)" | translate }} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {#- -#} diff --git a/admin/pages/feathers.twig b/admin/pages/feathers.twig index 400fdf5..f34856d 100644 --- a/admin/pages/feathers.twig +++ b/admin/pages/feathers.twig @@ -10,13 +10,15 @@ {% for safename, feather in enabled_feathers %}

  • -{{ feather.name }}{# translation is done in the controller #} +{{ feather.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    -{{ feather.description }}{# translation is done in the controller #} +{{ feather.description }} +{# translation is done in the controller #}

    @@ -43,13 +45,15 @@ {% for safename, feather in disabled_feathers %}
  • -{{ feather.name }}{# translation is done in the controller #} +{{ feather.name }} +{# translation is done in the controller #} -{{- icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    -{{ feather.description }}{# translation is done in the controller #} +{{ feather.description }} +{# translation is done in the controller #}

    diff --git a/admin/pages/general_settings.twig b/admin/pages/general_settings.twig index c25be73..dcc2e09 100644 --- a/admin/pages/general_settings.twig +++ b/admin/pages/general_settings.twig @@ -25,14 +25,17 @@ {{ "Chyrp URL" | translate }} {#- -#} - + + +{{ "The base URL for your site." | translate }} +

    {#- -#} diff --git a/admin/pages/manage_groups.twig b/admin/pages/manage_groups.twig index 78c6ef7..bf77a2d 100644 --- a/admin/pages/manage_groups.twig +++ b/admin/pages/manage_groups.twig @@ -10,7 +10,7 @@ {% if visitor.group.can("add_group") %} -{{ icon_img("add.svg") }}{{ "New Group" | translate }} +{{ icon_svg("add.svg") }}{{ "New Group" | translate }} {% endif %} @@ -38,26 +38,27 @@ {% if group.id == site.default_group %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {% if group.id == site.guest_group %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {{ trigger.call("manage_groups_column", groups) }} -{{ group.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ group.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ group.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ group.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/manage_pages.twig b/admin/pages/manage_pages.twig index b70b816..cc4e253 100644 --- a/admin/pages/manage_pages.twig +++ b/admin/pages/manage_pages.twig @@ -8,14 +8,14 @@ {% if visitor.group.can("add_page") %} -{{ icon_img("add.svg") }}{{ "New Page" | translate }} +{{ icon_svg("add.svg") }}{{ "New Page" | translate }} {% endif %} @@ -52,12 +52,12 @@ {% if page.public %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {% if page.show_in_list %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} @@ -65,16 +65,17 @@ {{ trigger.call("manage_pages_column", page) }} -{{ page.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ page.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ page.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ page.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/manage_posts.twig b/admin/pages/manage_posts.twig index 5792dc6..b4f8e32 100644 --- a/admin/pages/manage_posts.twig +++ b/admin/pages/manage_posts.twig @@ -8,14 +8,14 @@ {% if visitor.group.can("add_post", "add_draft") %} -{{ icon_img("add.svg") }}{{ "New Post" | translate }} +{{ icon_svg("add.svg") }}{{ "New Post" | translate }} {% endif %} @@ -34,7 +34,7 @@ {% for post in posts.paginated %} - + {{ post.title() | striptags | oneof("[Untitled]" | translate) | truncate(40) }} @@ -42,23 +42,27 @@ {{ post.created_at | time }} -{{ post.status_name }} +{% for group in post_statuses.(post.id).groups %} +{{ group.name }} +{% else %} +{{ post_statuses.(post.id).name | oneof("[None]" | translate) }} +{% endfor %} {{ post.author.name }} {{ trigger.call("manage_posts_column", post) }} -{{ post.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ post.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ post.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ post.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} - +{{ icon_svg("failure.svg", false, "emblem") }} {{ "No results" | translate }} diff --git a/admin/pages/manage_uploads.twig b/admin/pages/manage_uploads.twig index e558bb4..b15d114 100644 --- a/admin/pages/manage_uploads.twig +++ b/admin/pages/manage_uploads.twig @@ -10,7 +10,7 @@ {% if visitor.group.can("import_content") %} -{{ icon_img("add.svg") }}{{ "Add Files" | translate }} +{{ icon_svg("add.svg") }}{{ "Add Files" | translate }} {% endif %} @@ -34,15 +34,15 @@ {% if ["jpg", "jpeg", "png", "webp", "gif"] | contains(upload.type) %} {{ upload.name | thumbnail("", false, ["max_width=70", "quality=60", "square=1"], "70px") }} {% elseif ["avif", "tif", "tiff", "heif", "bmp"] | contains(upload.type) %} -{{ icon_img("image.svg", "", "placeholder") }} +{{ icon_svg("image.svg", false, "placeholder") }} {% elseif ["mp3", "m4a", "oga", "ogg", "mka", "flac", "wav", "aiff"] | contains(upload.type) %} -{{ icon_img("audio.svg", "", "placeholder") }} +{{ icon_svg("audio.svg", false, "placeholder") }} {% elseif ["mpg", "mpeg", "mp2", "mp4", "m4v", "ogv", "mkv", "mov", "avi", "webm", "3gp", "ts"] | contains(upload.type) %} -{{ icon_img("video.svg", "", "placeholder") }} +{{ icon_svg("video.svg", false, "placeholder") }} {% elseif ["zip", "tar", "rar", "gz", "bz2", "7z", "dmg", "cab", "iso", "udf"] | contains(upload.type) %} -{{ icon_img("archive.svg", "", "placeholder") }} +{{ icon_svg("archive.svg", false, "placeholder") }} {% else %} -{{ icon_img("file.svg", "", "placeholder") }} +{{ icon_svg("file.svg", false, "placeholder") }} {% endif %} {{ upload.name | fix }} @@ -58,19 +58,20 @@ {{ trigger.call("manage_uploads_column", upload) }} -{{- icon_img("download.svg", "download" | translate) -}} +{{- icon_svg("download.svg", "Download" | translate) -}} -{{- icon_img("delete.svg", "delete" | translate) -}} +{{- icon_svg("delete.svg", "Delete" | translate) -}} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/manage_users.twig b/admin/pages/manage_users.twig index ed00053..9a4243a 100644 --- a/admin/pages/manage_users.twig +++ b/admin/pages/manage_users.twig @@ -8,14 +8,14 @@ {% if visitor.group.can("add_user") %} -{{ icon_img("add.svg") }}{{ "New User" | translate }} +{{ icon_svg("add.svg") }}{{ "New User" | translate }} {% endif %} @@ -43,7 +43,7 @@ {% if user.full_name is not empty %}({{ user.full_name }}){% endif %} -{{ user.group.name }} +{{ user.group.name }} {{ user.joined_at | time }} @@ -54,22 +54,23 @@ {% if site.email_activation %} {% if user.approved %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} {% endif %} {{ trigger.call("manage_users_column", user) }} -{{ user.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ user.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ user.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ user.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/pages/modules.twig b/admin/pages/modules.twig index a51ca67..c1814e9 100644 --- a/admin/pages/modules.twig +++ b/admin/pages/modules.twig @@ -10,9 +10,10 @@ {% for safename, module in enabled_modules %}

  • -{{ module.name }}{# translation is done in the controller #} +{{ module.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    @@ -63,9 +64,10 @@ {% for safename, module in disabled_modules %}

  • -{{ module.name }}{# translation is done in the controller #} +{{ module.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    diff --git a/admin/pages/route_settings.twig b/admin/pages/route_settings.twig index bcaa32b..edab292 100644 --- a/admin/pages/route_settings.twig +++ b/admin/pages/route_settings.twig @@ -10,13 +10,14 @@ {#- -#} -{{ "Gives your site prettier URLs." | translate }} {{ "Requires URL rewrite support." | translate }} +{{ "Gives your site prettier URLs." | translate }} +{{ "Download the URL rewrite files." | translate }}

    diff --git a/admin/pages/themes.twig b/admin/pages/themes.twig index 54b8250..13c58e3 100644 --- a/admin/pages/themes.twig +++ b/admin/pages/themes.twig @@ -8,9 +8,10 @@ {% for safename, theme in themes %}

  • -{{ theme.name }}{# translation is done in the controller #} +{{ theme.name }} +{# translation is done in the controller #} -{{ icon_img("info.svg", "info" | translate) }} +{{- icon_svg("info.svg", "Info" | translate) -}}

    diff --git a/admin/partials/page_fields.twig b/admin/partials/page_fields.twig index d599a62..5488bbc 100644 --- a/admin/partials/page_fields.twig +++ b/admin/partials/page_fields.twig @@ -8,11 +8,13 @@ -{% if field_markdown %} + +{% if field_markdown %} -{{- icon_img("markdown.svg", "Markdown" | translate) -}} +{{- icon_svg("markdown.svg", "Markdown" | translate) -}} -{% endif %} +{% endif %} +

    @@ -22,7 +24,7 @@ @@ -30,13 +32,13 @@

    diff --git a/admin/partials/post_fields.twig b/admin/partials/post_fields.twig index 4c29e4e..6f48adb 100644 --- a/admin/partials/post_fields.twig +++ b/admin/partials/post_fields.twig @@ -29,7 +29,7 @@ {% endif %} {% if field.help is defined %} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {% endif %} @@ -48,10 +48,12 @@ {% endif %} {% elseif field.type == "text_block" %} -{% if field_markdown is not empty %} -{{- icon_img("markdown.svg", "Markdown" | translate) -}} +{% if field_markdown is not empty %} + +{{- icon_svg("markdown.svg", "Markdown" | translate) -}} -{% endif %} +{% endif %} + {% elseif field.type == "checkbox" %} @@ -77,24 +79,24 @@

    @@ -145,7 +147,7 @@ {% endif %} {% if field.help is defined %} -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} {% endif %} diff --git a/admin/partials/uploads_modal.twig b/admin/partials/uploads_modal.twig index e2e9f95..95d83b5 100644 --- a/admin/partials/uploads_modal.twig +++ b/admin/partials/uploads_modal.twig @@ -7,19 +7,19 @@ {{ upload.name | thumbnail("", false, ["max_width=70", "quality=60", "square=1"], "70px") }} {% set file_url = site.chyrp_url ~ "/includes/thumbnail.php?file=" ~ (upload.name | url_encode) %} {% elseif ["avif", "tif", "tiff", "bmp"] | contains(upload.type) %} -{{ icon_img("image.svg", "", "placeholder") }} +{{ icon_svg("image.svg", false, "placeholder") }} {% set file_url = site.chyrp_url ~ "/includes/thumbnail.php?file=" ~ (upload.name | url_encode) %} {% elseif ["mp3", "m4a", "oga", "ogg", "mka", "flac", "wav"] | contains(upload.type) %} -{{ icon_img("audio.svg", "", "placeholder") }} +{{ icon_svg("audio.svg", false, "placeholder") }} {% set file_url = upload.name | uploaded %} {% elseif ["mpg", "mpeg", "mp2", "mp4", "m4v", "ogv", "mkv", "mov", "avi", "webm", "3gp", "ts"] | contains(upload.type) %} -{{ icon_img("video.svg", "", "placeholder") }} +{{ icon_svg("video.svg", false, "placeholder") }} {% set file_url = upload.name | uploaded %} {% elseif ["zip", "tar", "rar", "gz", "bz2", "7z", "dmg", "cab", "iso", "udf"] | contains(upload.type) %} -{{ icon_img("archive.svg", "", "placeholder") }} +{{ icon_svg("archive.svg", false, "placeholder") }} {% set file_url = upload.name | download %} {% else %} -{{ icon_img("file.svg", "", "placeholder") }} +{{ icon_svg("file.svg", false, "placeholder") }} {% set file_url = upload.name | download %} {% endif %} @@ -30,7 +30,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/admin/stylesheets/all.css b/admin/stylesheets/all.css index f6ad72d..f256ddb 100644 --- a/admin/stylesheets/all.css +++ b/admin/stylesheets/all.css @@ -65,7 +65,7 @@ html, body, div, dl, dt, dd, ul, ol, li, p, h1, h2, h3, h4, h5, h6, img, pre, code, -form, fieldset, input, select, textarea, +form, fieldset, input, select, svg, textarea, table, tbody, tr, th, td, legend, caption, blockquote, aside, figure, figcaption { margin: 0em; @@ -107,30 +107,34 @@ ol { --chyrp-strong-red: #c11600; --chyrp-strong-green: #108600; --chyrp-strong-blue: #1e57ba; + --chyrp-strong-purple: #ba1eba; --chyrp-light-yellow: #fffde6; --chyrp-light-red: #faebe4; --chyrp-light-green: #ebfae4; --chyrp-light-blue: #f2fbff; + --chyrp-light-purple: #fae4fa; --chyrp-medium-yellow: #fffbcc; --chyrp-medium-red: #fcddcf; --chyrp-medium-green: #daf1d0; --chyrp-medium-blue: #e1f2fa; + --chyrp-medium-purple: #f6d5f6; --chyrp-border-yellow: #e5d7a1; --chyrp-border-red: #d6bdb5; --chyrp-border-green: #bdd6b5; --chyrp-border-blue: #b8cdd9; + --chyrp-border-purple: #d6b5d6; } *::selection { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } body { font-family: "Open Sans webfont", sans-serif; font-size: 1rem; line-height: 1.5; - color: #1f1f23; + color: var(--chyrp-inky-black); tab-size: 4; - background-color: #efefef; + background-color: var(--chyrp-english-grey); min-width: 320px; } h1, h2, h3, h4, h5, h6 { @@ -168,8 +172,8 @@ small, .small { font-size: 0.75em; } mark { - color: #1f1f23; - background-color: #ffdd00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } del { font: inherit; @@ -177,8 +181,8 @@ del { } ins { font: inherit; - color: #1f1f23; - background-color: #daf1d0; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-medium-green); } figure, blockquote { margin-bottom: 1rem; @@ -200,18 +204,18 @@ p { } a:link, a:visited { - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: underline; text-underline-offset: 0.125em; } a:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 0px; } a:hover, a:focus, a:active { - color: #1e57ba; + color: var(--chyrp-strong-blue); text-decoration: underline; text-underline-offset: 0.125em; } @@ -227,9 +231,9 @@ a:active { /* Group: Header */ #header { - background-color: #1f1f23; + background-color: var(--chyrp-inky-black); padding: 2rem 0rem 3rem 0rem; - color: #efefef; + color: var(--chyrp-english-grey); text-align: center; position: relative; } @@ -237,7 +241,7 @@ a:active { margin: 0rem 2rem 2rem 2rem; } #header h1 a { - color: #ffffff; + color: var(--chyrp-pure-white); text-decoration: none; } #header #navigation { @@ -273,14 +277,14 @@ a:active { } #header #navigation li a:link, #header #navigation li a:visited { - background-color: #cfcfcf; + background-color: var(--chyrp-irish-grey); } #header #navigation li.selected a:link, #header #navigation li.selected a:visited, #header #navigation li a:hover, #header #navigation li a:focus { outline: none; - background-color: #efefef; + background-color: var(--chyrp-english-grey); } /* Group: Sub-Navigation */ @@ -292,7 +296,7 @@ a:active { column-gap: 4px; margin: 4rem 4rem 0rem 4rem; overflow: hidden; - border-bottom: 1px solid #afafaf; + border-bottom: 1px solid var(--chyrp-scottish-grey); } #sub_nav li { display: block; @@ -313,31 +317,31 @@ a:active { text-overflow: ellipsis; margin: 0rem; padding: 0rem 1rem 100vh 1rem; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); border-bottom: none; border-top-left-radius: 0.75em; border-top-right-radius: 0.75em; } #sub_nav li a:link, #sub_nav li a:visited { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } #sub_nav li.selected a:link, #sub_nav li.selected a:visited, #sub_nav li a:hover, #sub_nav li a:focus { outline: none; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); } /* Group: Content */ #content { clear: both; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); padding: 1rem; margin: 0rem 4rem 4rem 4rem; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); border-top: none; position: relative; overflow: hidden; @@ -345,21 +349,21 @@ a:active { hr { border: none; clear: both; - border-top: 1px solid #cfcfcf; + border-top: 1px solid var(--chyrp-irish-grey); margin: 2rem 0rem; } aside { box-sizing: border-box; margin-bottom: 1rem; - padding: 0.5rem 1rem; - border: 1px solid #e5d7a1; + padding: 0.5rem; + border: 1px solid var(--chyrp-border-yellow); border-radius: 0.25em; - background-color: #fffde6; + background-color: var(--chyrp-light-yellow); } pre { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; + background-color: var(--chyrp-english-grey); margin: 1rem 0rem; padding: 1rem; overflow-x: auto; @@ -368,9 +372,9 @@ pre { code { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; - padding: 0px 2px; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + padding: 2px 4px 0px 4px; + border: 1px solid var(--chyrp-irish-grey); vertical-align: bottom; white-space: break-spaces; } @@ -418,19 +422,19 @@ span.pages { border-radius: 0.5em; } #content ul.extend > li { - background-color: #efefef; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + border: 1px solid var(--chyrp-irish-grey); } #content ul#modules_enabled > li, #content ul#feathers_enabled > li, #content ul.themes > li.current { - background-color: #daf1d0; - border: 1px solid #bdd6b5; + background-color: var(--chyrp-medium-green); + border: 1px solid var(--chyrp-border-green); } #content ul#modules_enabled > li.error, #content ul#modules_disabled > li.error { - background-color: #fcddcf; - border: 1px solid #d6bdb5; + background-color: var(--chyrp-medium-red); + border: 1px solid var(--chyrp-border-red); } li.module ol.module_conflicts_list, li.module ol.module_dependencies_list { @@ -448,20 +452,16 @@ li.theme div.controls { text-align: end; margin-top: 1rem; padding-top: 1rem; - border-top: 1px solid #cfcfcf; + border-top: 1px solid var(--chyrp-irish-grey); } ul#modules_enabled div.controls, ul#feathers_enabled div.controls, li.theme.current div.controls { - border-top: 1px solid #bdd6b5; + border-top: 1px solid var(--chyrp-border-green); } ul#modules_enabled > li.error div.controls, ul#modules_disabled > li.error div.controls { - border-top: 1px solid #d6bdb5; -} -#content ul.extend li a.emblem img, -#content ul.extend > li > h3 a { - text-decoration: none; + border-top: 1px solid var(--chyrp-border-red); } /* Group: Forms */ @@ -478,11 +478,16 @@ textarea { select, input { display: inline-block; } +textarea[readonly], +input[readonly], +select[readonly] { + cursor: not-allowed; +} input[type="checkbox"], input[type="radio"] { appearance: none; box-sizing: border-box; - color: #1f1f23; + color: var(--chyrp-inky-black); font: inherit; font-size: 1.25rem; position: relative; @@ -490,8 +495,8 @@ input[type="radio"] { width: 1em; height: 1em; border-radius: 0em; - border: 1px solid #cfcfcf; - background-color: #ffffff; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-pure-white); } input[type="radio"] { border-radius: 50%; @@ -509,23 +514,23 @@ input[type="range"], input[type="password"] { box-sizing: border-box; width: 20ch; - color: #1f1f23; + color: var(--chyrp-inky-black); font: inherit; font-size: 1.25rem; padding: 0.5rem; border-radius: 0em; - border: 1px solid #cfcfcf; - background-color: #ffffff; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-pure-white); } input[type="file"] { box-sizing: border-box; - color: #1f1f23; + color: var(--chyrp-inky-black); font: inherit; font-size: 1.25rem; padding: 1rem; border-radius: 0em; - border: 1px solid #cfcfcf; - background-color: #ffffff; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-pure-white); } html[dir="ltr"] select { appearance: none; @@ -556,12 +561,12 @@ input[type="radio"]:checked { background-repeat: no-repeat; } input::placeholder { - color: #656565; + color: var(--chyrp-winter-grey); opacity: 1; } input:invalid, textarea:invalid { - border-color: #ff7f00; + border-color: var(--chyrp-strong-orange); } select:focus, textarea:focus, @@ -576,8 +581,8 @@ input[type="number"]:focus, input[type="range"]:focus, input[type="password"]:focus, input[type="file"]:focus { - border-color: #1e57ba; - outline: #1e57ba solid 2px; + border-color: var(--chyrp-strong-blue); + outline: var(--chyrp-strong-blue) solid 2px; outline-offset: -2px; } textarea.error, @@ -593,7 +598,7 @@ input[type="number"].error, input[type="range"].error, input[type="password"].error, input[type="file"].error { - background-color: #faebe4; + background-color: var(--chyrp-light-red); } textarea.error:focus, input[type="checkbox"].error:focus, @@ -608,15 +613,21 @@ input[type="number"].error:focus, input[type="range"].error:focus, input[type="password"].error:focus, input[type="file"].error:focus { - border: 1px solid #c11600; - outline-color: #c11600; + border: 1px solid var(--chyrp-strong-red); + outline-color: var(--chyrp-strong-red); } input[type="password"].strong { - background-color: #ebfae4; + background-color: var(--chyrp-light-green); } input[type="password"].strong:focus { - border: 1px solid #108600; - outline-color: #108600; + border: 1px solid var(--chyrp-strong-green); + outline-color: var(--chyrp-strong-green); +} +textarea[readonly]:focus, +input[readonly]:focus, +select[readonly]:focus { + border-color: var(--chyrp-irish-grey); + outline-color: var(--chyrp-irish-grey); } input.code, textarea.code { @@ -684,21 +695,21 @@ table { width: 100%; } table th { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); padding: 0.5rem; font: inherit; font-weight: 600; vertical-align: middle; - border: 1px solid #afafaf; + border: 1px solid var(--chyrp-scottish-grey); } table td { padding: 0.5rem; font: inherit; vertical-align: middle; - border: 1px solid #cfcfcf; + border: 1px solid var(--chyrp-irish-grey); } table tbody tr:nth-child(even) td { - background-color: #fbfbfb; + background-color: var(--chyrp-summer-grey); } table tbody tr td.main { min-width: 10em; @@ -745,22 +756,22 @@ table tbody tr td.placeholder { border: none; } table tbody tr td.status { - background-color: #f2fbff; + background-color: var(--chyrp-light-blue); } table tbody tr.private td.status { - background-color: #faebe4; + background-color: var(--chyrp-light-red); } table tbody tr.registered_only td.status { - background-color: #fffde6; + background-color: var(--chyrp-light-purple); } table tbody tr.public td.status { - background-color: #ebfae4; + background-color: var(--chyrp-light-green); } table tbody tr.denied td.status { - background-color: #faebe4; + background-color: var(--chyrp-light-red); } table tbody tr.approved td.status { - background-color: #ebfae4; + background-color: var(--chyrp-light-green); } table tbody tr.comment_excerpt td p { margin: 0rem; @@ -768,7 +779,9 @@ table tbody tr.comment_excerpt td p { th.toggler > label { display: none; } +td.controls svg, td.controls img { + fill: currentColor; position: relative; top: 2px; width: 16px; @@ -779,10 +792,12 @@ td img.image { height: 70px; margin-inline-end: 0.5rem; vertical-align: middle; - outline: #ff7f00 solid 1px; + outline: var(--chyrp-border-blue) solid 1px; outline-offset: 0px; } +td svg.placeholder, td img.placeholder { + fill: var(--chyrp-winter-grey); width: 16px; height: 16px; padding: 27px; @@ -795,19 +810,19 @@ td img.placeholder { div.flash { padding: 0.5rem; margin-bottom: 1rem; - background-color: #1e57ba; - color: #ffffff; + background-color: var(--chyrp-strong-blue); + color: var(--chyrp-pure-white); border: none; border-radius: 0.25em; } div.flash.notice { - background-color: #108600; + background-color: var(--chyrp-strong-green); } div.flash.warning { - background-color: #c11600; + background-color: var(--chyrp-strong-red); } div.flash a { - color: #ffffff; + color: var(--chyrp-pure-white); font-weight: 600; } @@ -822,12 +837,12 @@ a.prev_page { display: inline-block; font: inherit; font-size: 1.25rem; - color: #1f1f23; + color: var(--chyrp-inky-black); text-align: center; margin: 0rem; padding: 0.5rem 1rem; - background-color: #f2fbff; - border: 2px solid #b8cdd9; + background-color: var(--chyrp-light-blue); + border: 2px solid var(--chyrp-border-blue); border-radius: 0.25em; cursor: pointer; text-decoration: none; @@ -850,14 +865,14 @@ input::file-selector-button:active, a.button:active, a.next_page:active, a.prev_page:active { - border-color: #1e57ba; + border-color: var(--chyrp-strong-blue); outline: none; } button.boo, a.button.boo { - color: #1f1f23; - background-color: #faebe4; - border: 2px solid #d6bdb5; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-light-red); + border: 2px solid var(--chyrp-border-red); } button.boo:hover, a.button.boo:hover, @@ -865,13 +880,13 @@ button.boo:focus, a.button.boo:focus, button.boo:active, a.button.boo:active { - border-color: #c11600; + border-color: var(--chyrp-strong-red); } button.yay, a.button.yay { - color: #1f1f23; - background-color: #ebfae4; - border: 2px solid #bdd6b5; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-light-green); + border: 2px solid var(--chyrp-border-green); } button.yay:hover, a.button.yay:hover, @@ -879,10 +894,13 @@ button.yay:focus, a.button.yay:focus, button.yay:active, a.button.yay:active { - border-color: #108600; + border-color: var(--chyrp-strong-green); } +button > svg, button > img, +a.button > svg, a.button > img { + fill: currentColor; display: block; position: relative; top: 0.5rem; @@ -963,9 +981,9 @@ span.options_extra { display: block; width: 100%; max-height: 10rem; - padding: 1rem; - background-color: #fffde6; - border: 1px solid #cfcfcf; + padding: 0.5rem; + background-color: var(--chyrp-light-yellow); + border: 1px solid var(--chyrp-irish-grey); border-top: none; overflow-y: auto; } @@ -979,8 +997,8 @@ span.options_toolbar { gap: 24px; justify-content: flex-start; width: 100%; - background-color: #fbfbfb; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-summer-grey); + border: 1px solid var(--chyrp-irish-grey); border-bottom: none; padding: 0.5rem 0.75rem calc(0.5rem + 0.1875rem) 0.75rem; border-top-left-radius: 0.25rem; @@ -994,8 +1012,8 @@ span.options_tray { display: block; width: 100%; font-size: 0.67rem; - background-color: #fbfbfb; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-summer-grey); + border: 1px solid var(--chyrp-irish-grey); border-top: none; padding: 0.25rem 0.5rem; border-bottom-left-radius: 0.25rem; @@ -1012,21 +1030,26 @@ span.options_tray:empty { margin-top: 0.25rem; padding: 0em 0.25em; border-radius: 0.25em; - border: 1px solid #cfcfcf; - background-color: #efefef; + border: 1px solid var(--chyrp-irish-grey); + background-color: var(--chyrp-english-grey); } *.tag:link, *.tag:visited { text-decoration: none; } +*.tag:focus { + outline: var(--chyrp-strong-purple) solid 2px; + outline-offset: -1px; +} +*.tag:active, *.tag_added { - background-color: #f2fbff; - border-color: #1e57ba; + background-color: var(--chyrp-light-purple); + border-color: var(--chyrp-strong-purple); } table.interactive + div.controls { - background-color: #fffde6; - padding: 1rem; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-light-yellow); + padding: 1rem 0.5rem; + border: 1px solid var(--chyrp-irish-grey); border-top: none; } table.interactive.empty + div.controls { @@ -1039,8 +1062,8 @@ div.confirmation { column-gap: 2rem; justify-content: space-between; padding: 1rem; - background-color: #fbfbfb; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-summer-grey); + border: 1px solid var(--chyrp-irish-grey); border-radius: 0.25rem; } a.emblem { @@ -1054,7 +1077,7 @@ button.emblem { display: inline; font: inherit; font-size: 1em; - color: #1f1f23; + color: var(--chyrp-inky-black); margin: 0rem; padding: 0rem; background-color: transparent; @@ -1062,10 +1085,15 @@ button.emblem { border-radius: 0rem; cursor: pointer; } +svg.emblem, img.emblem, +a.emblem > svg, a.emblem > img, +label.emblem > svg, label.emblem > img, +button.emblem > svg, button.emblem > img { + fill: currentColor; float: none; display: inline; position: relative; @@ -1079,10 +1107,25 @@ label.emblem:focus, button.emblem:focus { outline: none; } -a.emblem:focus > img, -button.emblem:focus > img, -label.emblem.toolbar > input:focus + img { - outline: #ff7f00 dashed 2px; +a.emblem:hover, +a.emblem:focus, +a.emblem:active, +label.emblem:hover, +label.emblem:focus, +label.emblem:active, +button.emblem:hover, +button.emblem:focus, +button.emblem:active { + color: var(--chyrp-strong-blue); +} +a.emblem:focus-visible > svg, +a.emblem:focus-visible > img, +button.emblem:focus-visible > svg, +button.emblem:focus-visible > img, +label.emblem.toolbar > input:focus-visible + svg, +label.emblem.toolbar > input:focus-visible + img { + fill: var(--chyrp-strong-blue); + outline: var(--chyrp-strong-orange) dashed 2px; outline-offset: 1px; } input.toolbar.hidden { @@ -1100,7 +1143,7 @@ input.toolbar.hidden::file-selector-button { display: none !important; } .drag_highlight { - background-color: #fffde6; + background-color: var(--chyrp-light-yellow); } /* Group: iFrames */ @@ -1114,7 +1157,7 @@ input.toolbar.hidden::file-selector-button { left: 0px; /* Prevent other elements overlapping */ z-index: 1; - background-color: rgba(239, 239, 239, 0.75); + backdrop-filter: blur(4px) contrast(33%) brightness(150%); } .iframe_foreground { box-sizing: border-box; @@ -1129,13 +1172,9 @@ input.toolbar.hidden::file-selector-button { overflow-y: auto; overscroll-behavior: contain; border: none; - background-color: #ffffff; + background-color: var(--chyrp-pure-white); box-shadow: 0px 4px 16px 2px rgba(79, 79, 79, 0.5); } -.iframe_foreground:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; -} .iframe_close_gadget { display: block; position: absolute; @@ -1145,7 +1184,18 @@ input.toolbar.hidden::file-selector-button { right: calc(20% - 1.5rem); cursor: pointer; } +.iframe_foreground:focus, +.iframe_close_gadget:focus { + outline: none; +} +.iframe_foreground:focus-visible, +.iframe_close_gadget:focus-visible { + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 1px; +} +.iframe_close_gadget svg, .iframe_close_gadget img { + fill: currentColor; width: 1.5rem; height: 1.5rem; } @@ -1153,11 +1203,11 @@ input.toolbar.hidden::file-selector-button { background-size: 30px 30px; background-image: linear-gradient( -45deg, - #efefef 25%, + var(--chyrp-english-grey) 25%, transparent 25%, transparent 50%, - #efefef 50%, - #efefef 75%, + var(--chyrp-english-grey) 50%, + var(--chyrp-english-grey) 75%, transparent 75%, transparent ) !important; @@ -1231,12 +1281,6 @@ input.toolbar.hidden::file-selector-button { textarea { width: 100% !important; } - input.text + a.help.emblem { - float: right; - position: relative; - top: -2.25rem; - left: -0.5rem; - } #content table tbody tr td { padding: 1rem 0.5rem; } @@ -1262,8 +1306,8 @@ input.toolbar.hidden::file-selector-button { margin: 0rem 0rem 1rem 0rem !important; } } - button:not(.toolbar):has(img), - a.button:not(.toolbar):has(img) { + button:not(.toolbar):has(img, svg), + a.button:not(.toolbar):has(img, svg) { padding-right: calc(16px + 1rem) !important; } div.more_options { @@ -1320,61 +1364,61 @@ input.toolbar.hidden::file-selector-button { @media (prefers-color-scheme: dark) { body { - color: #ffffff; - background-color: #1f1f23; + color: var(--chyrp-pure-white); + background-color: var(--chyrp-inky-black); } #header { - background-color: #656565; + background-color: var(--chyrp-winter-grey); } #header #navigation li a:link, #header #navigation li a:visited { - color: #ffffff; + color: var(--chyrp-pure-white); background-color: #2f2f2f; } #header #navigation li.selected a:link, #header #navigation li.selected a:visited, #header #navigation li a:hover, #header #navigation li a:focus { - background-color: #1f1f23; + background-color: var(--chyrp-inky-black); } #sub_nav { - border-bottom-color: #ffffff; + border-bottom-color: var(--chyrp-pure-white); } #sub_nav li a { - border-color: #ffffff; + border-color: var(--chyrp-pure-white); } #sub_nav li.selected a:link, #sub_nav li.selected a:visited, #sub_nav li a:hover, #sub_nav li a:focus { - background-color: #efefef; + background-color: var(--chyrp-english-grey); } #content { - color: #1f1f23; - background-color: #efefef; - border-color: #ffffff; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-english-grey); + border-color: var(--chyrp-pure-white); } hr { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } aside { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } pre { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } code { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } #content ul.extend > li { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } li.module div.controls, li.feather div.controls, li.theme div.controls { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } select, textarea, @@ -1390,56 +1434,53 @@ input.toolbar.hidden::file-selector-button { input[type="range"], input[type="password"], input[type="file"] { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } input:invalid { - border-color: #ff7f00; + border-color: var(--chyrp-strong-orange); } table tbody tr td { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } table tbody tr:nth-child(even) td { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } span.options_toolbar { background-color: transparent; - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } span.options_tray { background-color: transparent; - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } span.options_extra { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } *.tag { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } *.tag_added { - border-color: #1e57ba; + border-color: var(--chyrp-strong-blue); } table.interactive + div.controls { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } div.confirmation { background-color: transparent; - border-color: #afafaf; - } - .iframe_background { - background-color: rgba(159, 159, 159, 0.75); + border-color: var(--chyrp-scottish-grey); } .iframe_foreground { - background-color: #efefef; + background-color: var(--chyrp-english-grey); } .ajax_loading { background-image: linear-gradient( -45deg, - #dfdfdf 25%, + var(--chyrp-welsh-grey) 25%, transparent 25%, transparent 50%, - #dfdfdf 50%, - #dfdfdf 75%, + var(--chyrp-welsh-grey) 50%, + var(--chyrp-welsh-grey) 75%, transparent 75%, transparent ) !important; diff --git a/admin/stylesheets/monospace.css b/admin/stylesheets/monospace.css index 239a972..fa3d2a8 100644 --- a/admin/stylesheets/monospace.css +++ b/admin/stylesheets/monospace.css @@ -1,5 +1,5 @@ /* Setting: monospace_font */ textarea { - font-family: "Intel One Mono", "Cousine webfont", monospace; + font-family: "Cousine webfont", monospace; } diff --git a/feathers/audio/audio.php b/feathers/audio/audio.php index 57667b8..5353430 100644 --- a/feathers/audio/audio.php +++ b/feathers/audio/audio.php @@ -51,7 +51,8 @@ $this->respondTo("filter_post", "filter_post"); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filename']) and upload_tester($_FILES['filename'])) $filename = upload( $_FILES['filename'], @@ -95,7 +96,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { fallback($_POST['title'], ""); fallback($_POST['description'], ""); fallback($_POST['slug'], ""); @@ -132,22 +135,31 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof( $post->title, $post->title_from_excerpt() ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->description; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->description; } - public function enclose_audio($post, $feed) { + public function enclose_audio( + $post, + $feed + ) { if ($post->feather != "audio") return; @@ -173,14 +185,18 @@ ); } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "audio") return; $post->audio_player = $this->audio_player($post); } - private function audio_player($post): string { + private function audio_player( + $post + ): string { $config = Config::current(); $trigger = Trigger::current(); @@ -212,7 +228,9 @@ return $player; } - private function audio_type($filename): string { + private function audio_type( + $filename + ): string { $extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) ); @@ -237,7 +255,8 @@ } } - private function audio_extensions(): array { + private function audio_extensions( + ): array { return array("mp3", "m4a", "mp4", "oga", "ogg", "webm", "mka"); } } diff --git a/feathers/audio/locale/de_DE/LC_MESSAGES/audio.mo b/feathers/audio/locale/de_DE/LC_MESSAGES/audio.mo index 4033af084880dd4ecd6921551a4bdd3380b17523..873547c7dd8eb08f36aad5baa1474bfdf4088e86 100644 GIT binary patch delta 86 zcmX@ic93mCitA?v28JF+1_p5;-N3}azzU>i0BLR@Jr76=0qIphng>Ylh031-()vLD V1t9GJq!~7@yu!$6I=O-AFaS>-4g~-J delta 88 zcmX@ec9?BKitASf28JF+1_p5;-NeMezzU>i0cma^y#PoH0qHeBng>YlhsvJ;()vLD XB_Qnpq?tCZyu!$AqGvL>j_EJ}Y`_k9 diff --git a/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po b/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po index 49335d6..db82f8e 100644 --- a/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/de_DE/LC_MESSAGES/audio.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -28,11 +28,11 @@ msgstr "Bildunterschriften" msgid "Description" msgstr "Beschreibung" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "Sie haben kein Audio zum Hochladen ausgewählt." -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "Ihr Webbrowser unterstützt das Audioelement nicht." diff --git a/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot b/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot index 3c4d3c8..92ee354 100644 --- a/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot +++ b/feathers/audio/locale/en_US/LC_MESSAGES/audio.pot @@ -16,11 +16,11 @@ msgstr "" msgid "Description" msgstr "" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "" -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "" diff --git a/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.mo b/feathers/audio/locale/fr_FR/LC_MESSAGES/audio.mo index 4edfbc9f9c7a6ed8efe39c5e531e2ed7e6173bf0..eb036c18300c88eaa4b1cd27c7d80cfa040b977a 100644 GIT binary patch delta 86 zcmey&_K|HuimL=8149oGi!(4VEM;O~U 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -29,11 +29,11 @@ msgstr "Légendes" msgid "Description" msgstr "Description" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "Vous n'avez sélectionné aucun fichier audio à télécharger." -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "Votre navigateur ne supporte pas cet élément audio." diff --git a/feathers/audio/locale/it_IT/LC_MESSAGES/audio.mo b/feathers/audio/locale/it_IT/LC_MESSAGES/audio.mo index 8f5f5222646cf1f39f8c8ab492ad64ae77eadea4..af592ce3c5768f509aef54bb02803b892105df81 100644 GIT binary patch delta 86 zcmX@fcARZOiYqH4149oGOE54nOk!eSU}kb V1*ENjG|$GB&lnj^Cr@J94gegC4Wj@6 delta 88 zcmX@kc9LyEiYq%K149oGOE54nOkrYRU}kb X1Ej5hG~dRR&ls6a^h_pCVA>7audio element." msgstr "Il browser web non supporta l'elemento audio." diff --git a/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.mo b/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.mo index 5e01ee9e5fe541b29e53402a8c80f1b9e0ba571d..0452613566dba2f62c48ff2301af2bcbf8c03e33 100644 GIT binary patch delta 86 zcmbQiHjQmUit8B$28JF+1_p5;9m&MNzzU=bfiy3WE(g+lK)Mx3^8o27Q2B*GS|7+? V4y5gX^!1G^*D^AiPL5>S4*>sg4D`fiy3Wt_0G2K)M}B^8o2-Q2E6`S|7+? X38d|S^v#Vc*D^Aj=$T9oXW9<{8&(Zx diff --git a/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po b/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po index bb904c6..cf1c482 100644 --- a/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/nl_NL/LC_MESSAGES/audio.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -28,11 +28,11 @@ msgstr "Onderschriften" msgid "Description" msgstr "Beschrijving" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "Je hebt geen audio geselecteerd om te uploaden." -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "Je webbrowser ondersteunt het audio element niet." diff --git a/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.mo b/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.mo index 73787558d219850a483718eb6814a19646f8e410..41985071405eac6790e3f79e3e47e6ff1f686ebf 100644 GIT binary patch delta 78 zcmeyx`h#^sjO_;o28KLF1_mJ@9nZwTzyqXjK560BKVoeQ4v% N!;FlkljE6Y0|4%046gtH delta 80 zcmeyt`ipf!jO`}|28KLF1_mJ@oyf$%zyqX9fHWJBZiLbuP`V#T>jK560clepePrXz P!;H)(dM1-&nPvk331JN& diff --git a/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po b/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po index 3755c43..00a99e4 100644 --- a/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po +++ b/feathers/audio/locale/zh_CN/LC_MESSAGES/audio.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/audio/audio.php:10 @@ -29,11 +29,11 @@ msgstr "字幕" msgid "Description" msgstr "描述" -#: feathers/audio/audio.php:64 +#: feathers/audio/audio.php:65 msgid "You did not select any audio to upload." msgstr "你灭有选择任何上传的音频文件。" -#: feathers/audio/audio.php:192 +#: feathers/audio/audio.php:208 msgid "Your web browser does not support the audio element." msgstr "你的浏览器不支持 audio 元素。" diff --git a/feathers/link/link.php b/feathers/link/link.php index 22154c9..62752cf 100644 --- a/feathers/link/link.php +++ b/feathers/link/link.php @@ -36,7 +36,8 @@ $this->respondTo("feed_item", "link_related"); } - public function submit(): Post { + public function submit( + ): Post { if (empty($_POST['source'])) error( __("Error"), @@ -75,7 +76,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { if (empty($_POST['source'])) error( __("Error"), @@ -112,7 +115,9 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof( $post->name, $post->title_from_excerpt(), @@ -120,11 +125,15 @@ ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->description; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { $content = ''. oneof($post->name, $post->source).''; @@ -137,7 +146,10 @@ return '

    '.$content.'
    '; } - public function link_related($post, $feed): void { + public function link_related( + $post, + $feed + ): void { if ($post->feather != "link") return; diff --git a/feathers/link/locale/de_DE/LC_MESSAGES/link.mo b/feathers/link/locale/de_DE/LC_MESSAGES/link.mo index 7d7801131edf535692d6adadb6ca3f7d92d62b88..ce699b9c4073fab6bcd75eb86f7c3aeedd3ebb7b 100644 GIT binary patch delta 13 UcmdnTx{q~(HWQ=iWF4kS03KEY?EnA( delta 13 UcmdnTx{q~(HWQ=CWF4kS03J~T>;M1& diff --git a/feathers/link/locale/de_DE/LC_MESSAGES/link.po b/feathers/link/locale/de_DE/LC_MESSAGES/link.po index e4c50ed..5918fab 100644 --- a/feathers/link/locale/de_DE/LC_MESSAGES/link.po +++ b/feathers/link/locale/de_DE/LC_MESSAGES/link.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -32,10 +32,10 @@ msgstr "URL" msgid "Description" msgstr "Beschreibung" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "URL darf nicht leer sein." -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "Ungültige URL." diff --git a/feathers/link/locale/en_US/LC_MESSAGES/link.pot b/feathers/link/locale/en_US/LC_MESSAGES/link.pot index 0cd5f24..ebe720e 100644 --- a/feathers/link/locale/en_US/LC_MESSAGES/link.pot +++ b/feathers/link/locale/en_US/LC_MESSAGES/link.pot @@ -20,13 +20,13 @@ msgstr "" msgid "Description" msgstr "" -#: feathers/link/link.php:43 -#: feathers/link/link.php:82 +#: feathers/link/link.php:44 +#: feathers/link/link.php:85 msgid "URL can't be empty." msgstr "" -#: feathers/link/link.php:50 -#: feathers/link/link.php:89 +#: feathers/link/link.php:51 +#: feathers/link/link.php:92 msgid "Invalid URL." msgstr "" diff --git a/feathers/link/locale/fr_FR/LC_MESSAGES/link.mo b/feathers/link/locale/fr_FR/LC_MESSAGES/link.mo index 838399ab79fa60020d9b7df4a5bde8c7eb711803..ceb622f34d1b62ee831e704db7089d3d3a925fd0 100644 GIT binary patch delta 78 zcmcc1dYg4ZjI9JC1A`S1b2Bh71T!%(@B-<0Ak6}#bAhx2kS+q!tU!7*kY)zbJAt$; Rklwp-=5|I#)5*b1T>y^)3o!ry delta 80 zcmcc3dY5%VjI9(S1A`S1b2Bh7gfcNO@B-;XAk6}#^MSMjkS+nztU!7zkY)zbyMeSU Tklw#>=5|JA13kmZflOThrvwX| diff --git a/feathers/link/locale/fr_FR/LC_MESSAGES/link.po b/feathers/link/locale/fr_FR/LC_MESSAGES/link.po index 7bef903..8146abe 100644 --- a/feathers/link/locale/fr_FR/LC_MESSAGES/link.po +++ b/feathers/link/locale/fr_FR/LC_MESSAGES/link.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -33,10 +33,10 @@ msgstr "URL" msgid "Description" msgstr "Description" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "L'URL ne peut pas être vide." -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "URL invalide." diff --git a/feathers/link/locale/it_IT/LC_MESSAGES/link.mo b/feathers/link/locale/it_IT/LC_MESSAGES/link.mo index 7b1e49f67bb96c917f05573f0ee455d161e35fa8..efc6521130f9d29ee7e577d668a872b29f405a35 100644 GIT binary patch delta 78 zcmX@fdYpAaj4dl81A`S1b2Bh7I506V@B?WdAk6}#V}P_RkWK{BY(RQGkY)zb%Yd{D RkY2TM<`PCm)5#7@od9b-3QPb1 delta 80 zcmX@kdXjZQj4eAO1A`S1b2Bh7I59CW@B?W-Ak6}#i+o`4eL~0F{pm4FCWD delta 72 zcmaFP@{(mji0L^71_o6|1_mA={RK$#0cl1i1_m=AEdZohfwVi2W(Lx}Kw2C~2X5?4 OV`MhgGn)K?u^a$??+SVV diff --git a/feathers/link/locale/nl_NL/LC_MESSAGES/link.po b/feathers/link/locale/nl_NL/LC_MESSAGES/link.po index a6a1ddd..b60f2e5 100644 --- a/feathers/link/locale/nl_NL/LC_MESSAGES/link.po +++ b/feathers/link/locale/nl_NL/LC_MESSAGES/link.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/link/info.php:3 @@ -32,10 +32,10 @@ msgstr "URL" msgid "Description" msgstr "Beschrijving" -#: feathers/link/link.php:43 feathers/link/link.php:82 +#: feathers/link/link.php:44 feathers/link/link.php:85 msgid "URL can't be empty." msgstr "URL kan niet leeg zijn." -#: feathers/link/link.php:50 feathers/link/link.php:89 +#: feathers/link/link.php:51 feathers/link/link.php:92 msgid "Invalid URL." msgstr "Ongeldige URL." diff --git a/feathers/link/locale/zh_CN/LC_MESSAGES/link.mo b/feathers/link/locale/zh_CN/LC_MESSAGES/link.mo index 3a4c2fa7003e5387d88823e1e707b8de36ed97cc..3738e95e8d8a46f3ab16f4b814a07023689ff8aa 100644 GIT binary patch delta 78 zcmbQrI+=AsjO_;o1_moe1_m}DtXgXGJBG&7K{1JXi3 Sx@qIgenw^^J)_B*Oj!VdmGweT kBapTPDq;oF+Cah%NE-raJs@4M@#IS;M$^q(ncpx10CQ&%W&i*H delta 105 zcmbQwy^woCN$6Jw28M%73=D!mdOI@%g8+~|38Yzo^erIG1*Go-X*MAJ3P^hb>5oAA mBapTRDq;oFxEqs-(r5l2mlvd4|V_m delta 105 zcmX@YeT;iTNvISf1H(Zk1_l8J28KJ#3=AAV`Yn)V1=8Puv=ET~1Ekr2G(QUigBy?* n1JYlBbS#htsS5%UCO|p@NLv8u-i;^un3+xVOg7(Oe!~a=ICBr} diff --git a/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po b/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po index 9bd649b..b07af41 100644 --- a/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/fr_FR/LC_MESSAGES/photo.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "Texte alternatif" @@ -55,10 +55,10 @@ msgstr "Titre" msgid "Caption" msgstr "Légende" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "Vous n'avez pas sélectionné de photo à télécharger." -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "Source" diff --git a/feathers/photo/locale/it_IT/LC_MESSAGES/photo.mo b/feathers/photo/locale/it_IT/LC_MESSAGES/photo.mo index 786d956909402e58e7c43d42efd89ec9c58043d5..3cac54e6e9a8738d5f873d7527aa70b1b3e15b47 100644 GIT binary patch delta 103 zcmZ3)y?}c{Nhm8L1H(Zk1_nU}28QFz3=CXA`X-QO0n$%^G%t{T38XoI^micb1f)Td j?}3yvkY)qY#;iaLq^*FoA&}17c=9(Bqv_`3%(oc<2U!pE delta 105 zcmZ3$y@-24Nhmub1H(Zk1_nU}28NT&3=CXA`Zkbe0n*QaG%t{T4Wv1M^iLq|1f-dO olJ9}EE0AUb(x$8o48}m(21pwM>4J?Xe={+g=$ULj%6yv<04cE$Y5)KL diff --git a/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po b/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po index 46d578e..f32c8a9 100644 --- a/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/it_IT/LC_MESSAGES/photo.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "Testo Alternative" @@ -55,10 +55,10 @@ msgstr "Titolo" msgid "Caption" msgstr "Didascalia" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "Non é stata selezionata alcuna foto da caricare." -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "Sorgente" diff --git a/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.mo b/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.mo index 4991bbd67f45acd67d125f4248dae6c476b80026..21eac73db422951212a0022c42d64d8873306151 100644 GIT binary patch delta 103 zcmcb@b%|?2N$42{28M%73=Bd*x{sNGfg4CK1kx-(dM%LV1k#(J{5?S07RWycq+bB( h|3I1*NWTCo)(6t>fV44?mfLvp5EG;6=04_Qi~xXT5%&N9 delta 105 zcmcb_b%kp}N$5ES28M%73=Bd*dIB>812>Rf45V3r^m-u838c3``TKyhEs%d0NWTEm jj6g-KK>8Js)(6rbfV44?R@iv*5EHYBp2_AO=3|Tifrb%p diff --git a/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po b/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po index f180210..4308fa4 100644 --- a/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/nl_NL/LC_MESSAGES/photo.po @@ -9,11 +9,11 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "Alternatieve tekst" @@ -54,10 +54,10 @@ msgstr "Titel" msgid "Caption" msgstr "Toelichting" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "Je hebt geen afbeelding geslecteerd om te uploaden." -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "Bron" diff --git a/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.mo b/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.mo index d458ae1a71e3e524377dc0d19ffd4176a9cfda17..c4ea706cedb3239ec85a79309b6a21d6a0ecddd5 100644 GIT binary patch delta 95 zcmeyv`HOQxj_(Hs28P*83=BL#x`&y8felE{1kxb>0w{kikTwDGw*cw=K>8(Ad?gD5 agF2AE0Z1zX=^Gn&USMK0-Q2@mzz6^syb!|x delta 97 zcmeyx`G<2tj_)T128P*83=BL#x{sNGfepk5(jfjKD1SYWHUaXt0qOlf`ZZL1H46iS bI*`8!NGk&ATN`&?U}84WGuhn5T)+qbJwy>W diff --git a/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po b/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po index a9afc46..3c3814e 100644 --- a/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po +++ b/feathers/photo/locale/zh_CN/LC_MESSAGES/photo.po @@ -10,11 +10,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/photo/admin/help/photo_alt_text.twig:3 -#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:156 +#: feathers/photo/admin/help/photo_alt_text.twig:6 feathers/photo/photo.php:167 msgid "Alternative Text" msgstr "替代文本" @@ -53,10 +53,10 @@ msgstr "标题" msgid "Caption" msgstr "标题" -#: feathers/photo/photo.php:54 +#: feathers/photo/photo.php:55 msgid "You did not select a photo to upload." msgstr "您没有选择上传的照片。" -#: feathers/photo/photo.php:164 +#: feathers/photo/photo.php:175 msgid "Source" msgstr "来源" diff --git a/feathers/photo/photo.php b/feathers/photo/photo.php index 060e431..b4fab58 100644 --- a/feathers/photo/photo.php +++ b/feathers/photo/photo.php @@ -41,7 +41,8 @@ $this->respondTo("post_options", "add_option"); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filename']) and upload_tester($_FILES['filename'])) $filename = upload( $_FILES['filename'], @@ -115,14 +116,18 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof( $post->title, $post->title_from_excerpt() ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->caption; } @@ -140,14 +145,20 @@ return '
    '.$content.'
    '; } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "photo") return; $post->image = $post->filename; } - public function add_option($options, $post = null, $feather = null): array { + public function add_option( + $options, + $post = null, + $feather = null + ): array { if ($feather != "photo") return $options; @@ -170,7 +181,8 @@ return $options; } - private function image_extensions(): array { + private function image_extensions( + ): array { return array("jpg", "jpeg", "png", "gif", "webp", "avif"); } } diff --git a/feathers/quote/locale/de_DE/LC_MESSAGES/quote.mo b/feathers/quote/locale/de_DE/LC_MESSAGES/quote.mo index 0da4a78f4e7a25f4c9bc2ff7e2738ff72a45f84e..04842c9c4be7a394fb021f9937c7ed26642cb84f 100644 GIT binary patch delta 13 UcmbQlGKpowZbnAa$$J>X03ZtlbpQYW delta 13 UcmbQlGKpowZbn9v$$J>X03ZegbN~PV diff --git a/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po b/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po index ac3949b..58f7458 100644 --- a/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/de_DE/LC_MESSAGES/quote.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -24,6 +24,6 @@ msgstr "Stelle Zitate ein und gebe Quellen an." msgid "Source" msgstr "Quelle" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "Das Zitat kann nicht leer sein." diff --git a/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot b/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot index eb6c6b4..0a838cc 100644 --- a/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot +++ b/feathers/quote/locale/en_US/LC_MESSAGES/quote.pot @@ -13,8 +13,8 @@ msgstr "" msgid "Source" msgstr "" -#: feathers/quote/quote.php:35 -#: feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 +#: feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "" diff --git a/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.mo b/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.mo index f47c6f25d09c85278adadb4060d5e3ae7010b431..61fe8baf3a1fba8eacfd3ab7aa9c4ebef263ef02 100644 GIT binary patch delta 54 zcmX@Ya)@Pui>d@81H&l>1_mu4ehg%D0BJrZ1_osyEe@pFfVB0-%yLFX)5(t+69MiA B2(ADC delta 56 zcmX@aa)f1qi>eeO1H&l>1_mu4ehOrB0BHdx1_osyEeWLAfVAz#%yLF%13kmZ4;d2y D{>cdv diff --git a/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po b/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po index 4163b2f..cdb5568 100644 --- a/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/fr_FR/LC_MESSAGES/quote.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -25,6 +25,6 @@ msgstr "Poster une citation et donner ses sources." msgid "Source" msgstr "Source" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "La citation ne peut pas être vide." diff --git a/feathers/quote/locale/it_IT/LC_MESSAGES/quote.mo b/feathers/quote/locale/it_IT/LC_MESSAGES/quote.mo index e890b77a189d98134b69355d9a8f1413fb374258..5baaef8bdda80a6c4f468813c657cfbeafe0608c 100644 GIT binary patch delta 54 zcmdnQvVmoSiz+K41H&l>1_livz5rx%0_mSXS{X<)Gcho50BQA&nJJ8nrjsu)CIJBT C^9cd~ delta 56 zcmdnMvWaDaiz+)K1H&l>1_livz64}*0_opCS{X>QGBGf40BOyQnJJ9SMtVk*&oL$e E00*N9X#fBK diff --git a/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po b/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po index 509300f..cecd7d8 100644 --- a/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/it_IT/LC_MESSAGES/quote.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -25,6 +25,6 @@ msgstr "Pubblicare una citazione e citare fonti." msgid "Source" msgstr "Sorgente" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "La citazione non può essere vuota." diff --git a/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.mo b/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.mo index 7081651454e2f677de6a724af9c600b0a2b7a35c..ffeccc2f3dafcdaa36195bb519c7a40c615d96d4 100644 GIT binary patch delta 54 zcmaFJe4lxOi|QE$28L5WtOUf<85tN@f%GmQEeWI#0BIH=eQRT;HY20yn+a delta 56 zcmcc5{E&Hqi|RQB28L5WtOUd}85tN@f%G0AEeWI#0cjQ>eP?5)HY2mKp3&r~j9vgl C#tPv8 diff --git a/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po b/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po index ea428f2..6eba482 100644 --- a/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po +++ b/feathers/quote/locale/nl_NL/LC_MESSAGES/quote.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/quote/info.php:3 feathers/quote/quote.php:8 @@ -24,6 +24,6 @@ msgstr "Blogpost quotes en citeer-bronnen." msgid "Source" msgstr "Bron" -#: feathers/quote/quote.php:35 feathers/quote/quote.php:64 +#: feathers/quote/quote.php:36 feathers/quote/quote.php:67 msgid "Quote can't be empty." msgstr "Quote kan niet leeg zijn." diff --git a/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.mo b/feathers/quote/locale/zh_CN/LC_MESSAGES/quote.mo index 06c1e2af9249e3432670ebccbf7efd06da472c6e..a068f23baad3f4e048667e9694aefda67deb9d30 100644 GIT binary patch delta 54 zcmey*{Fixxi|Pjk28L5WEC{*h($ delta 56 zcmey%{GWM(i|Qu^28L5WECtitle_from_excerpt(); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->quote; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { $content = '
    '. $post->quote. '
    '; diff --git a/feathers/text/locale/de_DE/LC_MESSAGES/text.mo b/feathers/text/locale/de_DE/LC_MESSAGES/text.mo index 11e034ae8c9a9c8758b9a2713944a3202bd31247..faabd2ff54b7c8dfc926544cd00ec93f6d42e1cd 100644 GIT binary patch delta 13 UcmbQoGLL1$RYpeB$=4V?03tgCvj6}9 delta 13 UcmbQoGLL1$RYpdW$=4V?03tR7vH$=8 diff --git a/feathers/text/locale/de_DE/LC_MESSAGES/text.po b/feathers/text/locale/de_DE/LC_MESSAGES/text.po index a887657..e66c26f 100644 --- a/feathers/text/locale/de_DE/LC_MESSAGES/text.po +++ b/feathers/text/locale/de_DE/LC_MESSAGES/text.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -28,6 +28,6 @@ msgstr "Titel" msgid "Body" msgstr "Body" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Body darf nicht leer sein." diff --git a/feathers/text/locale/en_US/LC_MESSAGES/text.pot b/feathers/text/locale/en_US/LC_MESSAGES/text.pot index 44080be..4662fa1 100644 --- a/feathers/text/locale/en_US/LC_MESSAGES/text.pot +++ b/feathers/text/locale/en_US/LC_MESSAGES/text.pot @@ -16,8 +16,8 @@ msgstr "" msgid "Body" msgstr "" -#: feathers/text/text.php:34 -#: feathers/text/text.php:63 +#: feathers/text/text.php:35 +#: feathers/text/text.php:66 msgid "Body can't be blank." msgstr "" diff --git a/feathers/text/locale/fr_FR/LC_MESSAGES/text.mo b/feathers/text/locale/fr_FR/LC_MESSAGES/text.mo index 389061c2fe1f785f6ac162b92f572a05dafb7488..fe56bf468c0e9e73795d9125e5bd688a7f60383b 100644 GIT binary patch delta 62 zcmcb>a*kz!kFEqG1H%&r1_o&${tINY0%=Jm1_lKnEf1vGfwTjV28nxYtZZatG@bmH GF&F?XH3@?N delta 64 zcmX@da)D)nkFFFW1H%&r1_o&${tslcg4j$93<^M65lFKGX(u2J68G9z*~rLjpl3Mw HH)AjWKl2Ic diff --git a/feathers/text/locale/fr_FR/LC_MESSAGES/text.po b/feathers/text/locale/fr_FR/LC_MESSAGES/text.po index 213cf39..a20a2f5 100644 --- a/feathers/text/locale/fr_FR/LC_MESSAGES/text.po +++ b/feathers/text/locale/fr_FR/LC_MESSAGES/text.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -29,6 +29,6 @@ msgstr "Titre" msgid "Body" msgstr "Corps" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Le corps ne peut pas être vide." diff --git a/feathers/text/locale/it_IT/LC_MESSAGES/text.mo b/feathers/text/locale/it_IT/LC_MESSAGES/text.mo index 196ca13a439d32e37994ad1bdc6a8b8f17e9a2f5..4ef2ac475f0e50f4563f474994836f17e8c03287 100644 GIT binary patch delta 62 zcmcb@a*1Vvk1i`C1H%&r1_mi0eg$L;0clny1_m7nCq)Tb delta 64 zcmcb_a)o7rk1jhS1H%&r1_mi0egk9+0cmz71_m9F7?5TK((XW-4M_WLtjuF%HqtYi I{DLtH06Dw~!vFvP diff --git a/feathers/text/locale/it_IT/LC_MESSAGES/text.po b/feathers/text/locale/it_IT/LC_MESSAGES/text.po index 9da0f7c..6686097 100644 --- a/feathers/text/locale/it_IT/LC_MESSAGES/text.po +++ b/feathers/text/locale/it_IT/LC_MESSAGES/text.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -29,6 +29,6 @@ msgstr "Titolo" msgid "Body" msgstr "Contenuto di testo" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Il contenuto di testo non può essere vuoto." diff --git a/feathers/text/locale/nl_NL/LC_MESSAGES/text.mo b/feathers/text/locale/nl_NL/LC_MESSAGES/text.mo index f1189680e3b94c9ba01ecaa893b1f49d18d4441b..07a24610617c3d782b89a366725477609ba0596d 100644 GIT binary patch delta 62 zcmeyy{DpafkM0=;28Jg0(RA`gMppol CZVW5{ delta 64 zcmeyu{Ec~nkM21J28Jg0*;vnL@_I&B E0IEz3mH+?% diff --git a/feathers/text/locale/nl_NL/LC_MESSAGES/text.po b/feathers/text/locale/nl_NL/LC_MESSAGES/text.po index 66bd7e2..888c9a6 100644 --- a/feathers/text/locale/nl_NL/LC_MESSAGES/text.po +++ b/feathers/text/locale/nl_NL/LC_MESSAGES/text.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/text/info.php:3 @@ -28,6 +28,6 @@ msgstr "Titel" msgid "Body" msgstr "Body" -#: feathers/text/text.php:34 feathers/text/text.php:63 +#: feathers/text/text.php:35 feathers/text/text.php:66 msgid "Body can't be blank." msgstr "Body kan niet leeg zijn." diff --git a/feathers/text/locale/zh_CN/LC_MESSAGES/text.mo b/feathers/text/locale/zh_CN/LC_MESSAGES/text.mo index 24bae09bb698c582ddb4fd0f99bd5d5ee6a9fc74..9780ddcdc40b07f921c6edf6d8eb667f4353d95a 100644 GIT binary patch delta 54 ycmey${F!-zi|Pjk28R7WEC<9J7#SGYfb@AFEefQsLHTbsX1Xvknoi!p=n4Qt_6s-w delta 56 zcmey&{FQlvi|Qu^28R7WECNmEefP>K>6=BX1Xvk8|fKMUdQMP09$title, $post->title_from_excerpt() ); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->body; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->body; } } diff --git a/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.mo index 5880464b71630b2090fe30e584f15ad212b5ff1f..52960d4be113e3118ac43d8426ae49a0ace3e9b9 100644 GIT binary patch delta 95 zcmX@Yeu#ZSj_+p%28L6N3=BL#dLI)513QpD4W!wC^kpFJ45V)XX;vUD$IQSW3Zzwl fv^S8p0@9p7x(!Gh0_h1GcQP?Cnr`05#Ks5!&O;56 delta 97 zcmX@aeuRBOj_+3n28L6N3=BL#`T!FH13QpD3#8eA^i?4345aS>X;vVuz|6oP3Z&J5 hv^S8p0n(g6x&ufX0_jN`cQP?Co9LNr-owPk2mtKa4h8@K diff --git a/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po b/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po index 37eeae4..5577c74 100644 --- a/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po +++ b/feathers/uploader/locale/de_DE/LC_MESSAGES/uploader.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -41,10 +41,10 @@ msgstr "Dateien" msgid "Caption" msgstr "Unterschrift" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "Sie haben keine Dateien zum hochladen selektiert." -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "Quelle" diff --git a/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot b/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot index 0919cd0..33d6aca 100644 --- a/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot +++ b/feathers/uploader/locale/en_US/LC_MESSAGES/uploader.pot @@ -29,11 +29,11 @@ msgstr "" msgid "Caption" msgstr "" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "" -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "" diff --git a/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/fr_FR/LC_MESSAGES/uploader.mo index 58715e7a6705434b355b98830e35ff20e4f82bb0..d914b9d6e207704482d1f0d83847b1dcbbd3c29e 100644 GIT binary patch delta 95 zcmeyt{*8S?j;{nG1H&mG=3ro8c+3Q$-vDVgApa|nb_LRZfHW(Rc4B5=kOI;kK-vRH cCj)6dAiV}iTLJ0a8+WQRF`90E%p}SP0OP?9(*OVf delta 97 zcmeyy{)2r&j;|CW1H&mG=3ro8c*+E!-vMbhApbj%b_LS^fHW(Rc41~ 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -42,10 +42,10 @@ msgstr "Fichiers" msgid "Caption" msgstr "Légende" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "Vous n'avez pas sélectionné de fichier à télécharger." -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "Source" diff --git a/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/it_IT/LC_MESSAGES/uploader.mo index 8db354d53d938c63627005ab65b421a9a0335e3e..14452986d44fe9af0ca407e56f33e4c077034028 100644 GIT binary patch delta 94 zcmX@ceuRBOjxQ@C1H&mG=3-!AxWL4~zyhRi18EK*{QyWi0qK`Onhi+nFf%al0BK_& e?FghDfV2RRZUWK8by<^a<6%nS_1K-y#D&fAQPrjw^LJqG~(R}e=4 delta 96 zcmeyv_K$5sj_)}J28L6N3=G^rdL|PC11FGP3Zz+p^m-s|2&A_FX;vWp3`m32y#dl5 gK>7!e<^a-;%nS_1K-z2L&fAR4CVD25r!qYU03g8-yZ`_I diff --git a/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po b/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po index 8a2b8da..a632b03 100644 --- a/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po +++ b/feathers/uploader/locale/nl_NL/LC_MESSAGES/uploader.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/uploader/admin/help/uploader_source.twig:3 @@ -41,10 +41,10 @@ msgstr "Bestanden" msgid "Caption" msgstr "Toelichting" -#: feathers/uploader/uploader.php:77 +#: feathers/uploader/uploader.php:82 msgid "You did not select any files to upload." msgstr "Je hebt geen bestanden geselecteerd om te uploaden." -#: feathers/uploader/uploader.php:216 +#: feathers/uploader/uploader.php:240 msgid "Source" msgstr "Bron" diff --git a/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.mo b/feathers/uploader/locale/zh_CN/LC_MESSAGES/uploader.mo index b10131c205299eb3c6725fdbb8bf333873ea9300..23b1e6063642152386ea2266ccce5e3a4410d8e2 100644 GIT binary patch delta 86 zcmcc0cA0HLit7gk28NA{3=C{QdJz+ZUJ0c)0BIAT_;x7&4Upym@;?JrespondTo("post_options", "add_option"); } - private function filenames_serialize($files) { + private function filenames_serialize( + $files + ) { return json_set($files, JSON_UNESCAPED_SLASHES); } - private function filenames_unserialize($filenames) { + private function filenames_unserialize( + $filenames + ) { return json_get($filenames, true); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filenames']) and upload_tester($_FILES['filenames'])) { $filenames = array(); @@ -105,7 +110,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { fallback($_POST['title'], ""); fallback($_POST['caption'], ""); fallback($_POST['slug'], ""); @@ -151,19 +158,28 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof($post->title, $post->title_from_excerpt()); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->caption; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->caption; } - public function enclose_uploaded($post, $feed): void { + public function enclose_uploaded( + $post, + $feed + ): void { $config = Config::current(); if ($post->feather != "uploader") @@ -182,14 +198,18 @@ } } - public function post($post): void { + public function post( + $post + ): void { if ($post->feather != "uploader") return; $post->filenames = $this->filenames_unserialize($post->filenames); } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "uploader") return; @@ -207,7 +227,11 @@ } } - public function add_option($options, $post = null, $feather = null): array { + public function add_option( + $options, + $post = null, + $feather = null + ): array { if ($feather != "uploader") return $options; @@ -222,7 +246,9 @@ return $options; } - private function list_files($filenames): array { + private function list_files( + $filenames + ): array { $list = array(); foreach ($filenames as $filename) { diff --git a/feathers/video/locale/de_DE/LC_MESSAGES/video.mo b/feathers/video/locale/de_DE/LC_MESSAGES/video.mo index d704b43e4959c8ea04a7ecdca6ad6241931b7a32..e7d0b1f83d4383f24b28cd5c91112ad1dec682b7 100644 GIT binary patch delta 94 zcmaFM_L^-%j_+p%28QK~3=HBxdNvaSgAkD345WF0^f4gK4WusvX;vV8A4)%kioXWZ YhCuP}K-v*VYi`_mpOMjY@@%F{01Jc=*Z=?k delta 96 zcmaFO_Lglzj_+3n28QK~3=HBxdM*Yrb_@X84*hW diff --git a/feathers/video/locale/de_DE/LC_MESSAGES/video.po b/feathers/video/locale/de_DE/LC_MESSAGES/video.po index 7084e4a..af4aa1b 100644 --- a/feathers/video/locale/de_DE/LC_MESSAGES/video.po +++ b/feathers/video/locale/de_DE/LC_MESSAGES/video.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -40,10 +40,10 @@ msgstr "Plakat-Bild" msgid "Description" msgstr "Beschreibung" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "Sie haben keine Dateien zum hochladen selektiert." -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "Ihr Webbrowser unterstützt das video-Element nicht." diff --git a/feathers/video/locale/en_US/LC_MESSAGES/video.pot b/feathers/video/locale/en_US/LC_MESSAGES/video.pot index e582de5..92638e5 100644 --- a/feathers/video/locale/en_US/LC_MESSAGES/video.pot +++ b/feathers/video/locale/en_US/LC_MESSAGES/video.pot @@ -28,11 +28,11 @@ msgstr "" msgid "Description" msgstr "" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "" -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "" diff --git a/feathers/video/locale/fr_FR/LC_MESSAGES/video.mo b/feathers/video/locale/fr_FR/LC_MESSAGES/video.mo index 8443575d4cafbf65e61392dfca0920c506baf6f5..781a09372cc38c0c64c5b44055fb227d09666919 100644 GIT binary patch delta 94 zcmZ3+zJz^3j;{nG1H*D4mS$jJIKaffzzwADK 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -41,10 +41,10 @@ msgstr "Image de remplacement" msgid "Description" msgstr "Description" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "Vous n'avez pas sélectionné de vidéo à télécharger." -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "Votre navigateur ne supporte pas cet élément vidéo." diff --git a/feathers/video/locale/it_IT/LC_MESSAGES/video.mo b/feathers/video/locale/it_IT/LC_MESSAGES/video.mo index 20edc7bffa016607d2150ee3487751ece96a60f9..e5c2a24b856d38955094db65bd9dd226718177a1 100644 GIT binary patch delta 94 zcmey$_L*%$jxQ@C1H*D4mSkXHSj)t~zy+j_18Hs`eF;eO1L=D}nhi+51JbNO`YVtI dsrwD24S_TpGXsMakha*k^CKgp>EyLcCji9H50(G` delta 96 zcmey&_LXfyjxReS1H*D4mSkXHSkJ`3zy+jF0%>j_eFaGK1L+4qnhi*Q0Me{L`a6&Y fsrw704S_TVGXsMakha>m^CKg(iJsBq)l4S<<video element." msgstr "Il browser web non supporta l'elemento video." diff --git a/feathers/video/locale/nl_NL/LC_MESSAGES/video.mo b/feathers/video/locale/nl_NL/LC_MESSAGES/video.mo index 2f57cea92f3c1765a2bc63e79706ab4208ec99ec..558b5294ce421deba704200f036696d83f6de714 100644 GIT binary patch delta 94 zcmX@gc9?BKj_(-;28QK~3=HBxx`c^=fe%Rc0BIf|JsU_10_hb%niWXzg31#mR4oI_Y+_{61*+kE1auL%-0K=~jDF6Tf diff --git a/feathers/video/locale/nl_NL/LC_MESSAGES/video.po b/feathers/video/locale/nl_NL/LC_MESSAGES/video.po index 83e779c..0ceb5f7 100644 --- a/feathers/video/locale/nl_NL/LC_MESSAGES/video.po +++ b/feathers/video/locale/nl_NL/LC_MESSAGES/video.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: feathers/video/info.php:3 @@ -40,10 +40,10 @@ msgstr "Poster afbeelding" msgid "Description" msgstr "Beschrijving" -#: feathers/video/video.php:74 +#: feathers/video/video.php:75 msgid "You did not select a video to upload." msgstr "Je hebt geen video geselecteerd om te uploaden." -#: feathers/video/video.php:227 +#: feathers/video/video.php:243 msgid "Your web browser does not support the video element." msgstr "Je webbrowser ondersteunt het video element niet." diff --git a/feathers/video/locale/zh_CN/LC_MESSAGES/video.mo b/feathers/video/locale/zh_CN/LC_MESSAGES/video.mo index f7d9fb04d91d438795bdf3dfb8a53a5627eea38a..f13749f5b850387cef80e00b067ab09685bdc869 100644 GIT binary patch delta 86 zcmbQoHivCOit7gk28M}@3=Bd*x`~N_felDch0=3?G!Kx!7|P!OfelDchtl(aG!Kx!6w2QOvideo element." msgstr "您的浏览器不支持 video 元素。" diff --git a/feathers/video/video.php b/feathers/video/video.php index 39dbead..5d497b8 100644 --- a/feathers/video/video.php +++ b/feathers/video/video.php @@ -61,7 +61,8 @@ $this->respondTo("filter_post", "filter_post"); } - public function submit(): Post { + public function submit( + ): Post { if (isset($_FILES['filename']) and upload_tester($_FILES['filename'])) $filename = upload( $_FILES['filename'], @@ -112,7 +113,9 @@ ); } - public function update($post): Post|false { + public function update( + $post + ): Post|false { fallback($_POST['title'], ""); fallback($_POST['description'], ""); fallback($_POST['slug'], ""); @@ -157,19 +160,28 @@ ); } - public function title($post): string { + public function title( + $post + ): string { return oneof($post->title, $post->title_from_excerpt()); } - public function excerpt($post): string { + public function excerpt( + $post + ): string { return $post->description; } - public function feed_content($post): string { + public function feed_content( + $post + ): string { return $post->description; } - public function enclose_video($post, $feed): void { + public function enclose_video( + $post, + $feed + ): void { if ($post->feather != "video") return; @@ -195,7 +207,9 @@ ); } - public function filter_post($post): void { + public function filter_post( + $post + ): void { if ($post->feather != "video") return; @@ -207,7 +221,9 @@ $post->image = $post->poster_image; } - private function video_player($post): string { + private function video_player( + $post + ): string { $config = Config::current(); $trigger = Trigger::current(); @@ -247,7 +263,9 @@ return $player; } - private function video_type($filename): string { + private function video_type( + $filename + ): string { $extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) ); @@ -270,11 +288,13 @@ } } - private function video_extensions(): array { + private function video_extensions( + ): array { return array("mp4", "ogv", "webm", "3gp", "mkv", "mov"); } - private function image_extensions(): array { + private function image_extensions( + ): array { return array("jpg", "jpeg", "png", "gif", "webp", "avif"); } } diff --git a/fonts/Cousine-Bold.woff b/fonts/Cousine-Bold.woff index 0f49fd466466f04815798e24579eb077bb13e36d..0c4fc8f6f37a86e3d9fdefb2c4aca36cd07bdec3 100644 GIT binary patch delta 150523 zcmZU3WmMi=(>2A5yA-$L?oM%ccXxMBDK`|SxVyW%7x&`Mg*#lh%g6Kn{j%1cOeTBJ zBx`=0oLPCyN9fH*0KAkWB_X~*KtMpoi9ld{o}sM-AfO;%KE40%kP?@W{3QPTyb=0| z+_c^-Eh%LsH3$g8C;wPke0+n*Jy?^K}0dLcxC~ z?EOqq9WLh2ZRu>~00Dv2`KkTX!!>dt;viX>xP5BBBz_h^`#<17P*~afSVBO!EJHw& zSU^Dem+Ve^O2&&Hl zh>f2idkp@nVtXgEPadlP1OzVQXUrXq_UD0viTD2s7k=tU{|Dp-=)aC84i*p)u>XtC ze?BCd&3V|Avy+=U1cbCb1O)9Tw8CwvU-loJT`fLI@SkrB?F9h=^NdPe82;H3CirhE^D3~M3Qf$aSP zNW}9qh^wH5ezZMYZ1UPwHC4C#CyGT*o{y$dwm=u+JwQQ8j*uiPUZhN`j({!t_q+H% zWwftX@G8<+K1KcW)vo~#Gsu3D$%Z3WK7M&EzaH&39|4Gcw^02+*s!)w2X;#OaZKXu9p9x~17v2;|xX`Ke(wYR+5RjMZY*6*AOOfmD}ONB+>e4fKx9B_qhU z6pmrj+tjbSYZ}*I-@cUl^Wr9&k@tWDDLN}hYxC`iDU$1-bL1!h5wSq015T2Uf_mBP1oHzM8WAR~nZndT5S6r2mP-$5YUK+vT+ETM751 zCZ!<$8UL$91YYHaGEv~mbT9YP(g=@oUeZNooABZLr0mI2ZG*V#6W;7p1M{;R$?j)NU>xVyT@ zGq|VMID*#yMc~Y_DC(6AxMI<>>RD%}0+B+wjF~UsJK{8@UbcR&?+5S~U#+6g{u2H> zJ7SFrl2!aC-U^qz+jOW%M8wyhy+NOEcZ2_j_m3U4Q~4!uf@e&Uz zoFTiKcFtI`fGjN5@Y25T2>0|9CJ*_`Wmw*JHI>k9EE-&>y=rp%6M=+Wn;Jqs{susc>%veK3tc5fo&;NhxCPRAy$SAg9fUSzdB=C;0%9&U%C~&mZ3%Azs#gvWdG~O zCi@SqK#t5r*3VzHrWW06^pKKjI-kA|Hf?f(W;R`vV z4%C+~K{IJ@e~VT1^yHHCnhfrM8^ec(uCy|v9xi6u)ylL?VF-RYQb{nGNOJ;mC@*fOhUvVr-MPO6kE zs?wI=Q-weR>YUObMOf{uhz(HKnn)pAfyH zxK6KV@F)HXUKZaY5usA_G=Wccn5xJv zewN)M@!79|s)#|x#vItelPQy#*^Qr#B84&NfiF^bFFOc{$`Xi_Wx zkKCHzLXB0BUZ?8oTBH7YzQrtTqKfR#&5&5vLDI1}J8Icz?5d(k1YG6sJ)~XPxBO|y zc|mz!X73YD=#yv{5L*fzLL&2$wZGYt;ZFAHw^_y9ZYF)3elY?3OSy+aeT^HV;BFQ> z`CmddOcs)qG(4;Qi(EzbBd7edeEAcqiK@an^bOEYIXrfpm;6s>u~l^{h_`KntuuMONoHo%``}vW1@zW&GhfZKZ`=0fR~3HYZwQ8J!^m7 zQmyIDtgzUZ*pCEWBi|}s*@6KBh2(4R4|sqCpXw>+j`{`DfBI!Mpy#gWiSIc+;M|`v zptvTjCJxmz$-su+GbEtQGR43W-14wOHA~;Lw3>0|-chkJs93A8R%;Ms;p*_O+sdd- z89eF!HIMEzqMrF#`*!AtV&-?jc)naydHPMPCX_u)F9lH8`M7{<^|4CfpuW-d_D^s93rMqUvWn=o0L;4hjXo3db<=$Ik8KrLK5e4ssH zltrIv#{fNJ>8;@;bqF~-@ME=K0(b<{IEiWm*=cpoON+}%DkOjtUyqb_y^Vs4B=*0k46zCpbIa~JLB*L^ z>zry~`ShV@E;tX@I1y#uiO@y7PNRCGn6=1CdrH^MomsPrGODZeqXOYAhohar?MfRp zNUHTsSXBkd<$^^;HcAy0bufB5LLR+b_QSa9L8ktpVkh4^e?z5CCD&WnQ|V1<{VP2>_KD2twzv@>gzXFSazWAMFfNfd{Kg$A;;9jw)lv4y}{qZ9b-mZq6a z3$WYd?c_!TA{ca9-$PERiJiar3#&96;Q#_*%?zgIM1#I!1--LpMIGDEjxa`o&e zR9$pgp}}5SVwP%BHdXW+C345wR(qbbomtM!L{=;TXY;;uw%_Jq=EJ%l$Zsr3}zYUlXT7k|Y+yxM?K`>^X*{odTQ42GSwl9?8fFbXy)`6<~ZDNUMe)uHIJRAhz%}ntv6^Stmo-sFpF(| zalmG-|GG5N13s`QYua*aH_G%wpWbO1uc^ukS^$0vFjJdbl=0{{Qe~lmry6`8-?%jG zU!8WclTnrYQ3_g#SHB2u8_6xSHe0N-T1VCpDa~NU?z`o=$Uq*3L*3trRtbHV8>%Wk zp{tCF*0b=l@XMbbsO;3HfBr#>c`L{?cr>7{m_s>xbK5zaz>~p4ZzI#NFPfl9eL+|& zN(ro9wvI78;n;U+Hb?W;0*sP9*C?FHQ%D ziaapq#xx~Y{OuBbjw;QA)YxD$Sti1xUVwEPy?(Zd(jUg5@kvjn9A?kvfB2kKNBm*p zc3q277g~JH33;ro1+YBC)6BNS$TYL?g^@X=mp)`csU!TPB$Vrvh3OkJv3YM-ANU{v$Ag#dL& z$?Vz`85TA65|-x9I!mE-Kp!}VLoxmWtu+GDYK3Wr{rqyV9xv>|S?^!^SLYXfPTdw+ z-lhFBA6Te$nLXE8g3b;B@l*Y+3#Z3y-^Nv_Z0=*9@T%gUhkSylS5!o=ef&td8YE#C zd56vGV)QyY;YT_FVt%*rhKm`5DnOD_p;3D+ESH(aBhJvKuV>!(td>!58;(A_kzE#2 zP!&V1XUW4cKco?=qz~&>#}AO>qhg;I_15^m7JLvB3`luP@l=_p+05YUZL5qCXXn}$ zKjvkZod0yTpnv)ev&N253CU?{%qhuT^SjJPB``DX@dJF^bDPI>T#y9CZL1o z`}InBLhsj@QRi?ZNz}vY0i?#*%&w11w&N=*&=ho~JPY5ms(VHr7;H9WJYWEl)l1TO z8wr<&+1x?{8Am5Eai;%VK&cTHY}&5_I^`bq%fEhxJa?Fxn>QB~o0 zOu=UzuPfSv3;Wfl0PK?TSX)@X?midnPN+W4dO2i^K!+PBIQzFHUR`KfyUVOcbw9W% z)CI>au|krynuv9Zh-P5Fo`l{q1rVu{BA}ofophb_%!Cp;Z2s$bAe*t9NqK9~RopWd z7@)-NYv6SB!dJ@e!O<+#Om>fKsr$W+Qoj>rtn$GwPb}rSJYVfpBni(ZH)q7=~iA`LHfStrza5hQ5 zRQ@A5<$Vj!USfJHdzS~Qoorg(Wou5H8e`ebr9Uja!iNg9D{d(Uy-%#3iv)}^xi{@f zji&``eRdCkPD^g6G|xFh_A?o78?Durn`97iaFmEMqqEq*FC&D7B-bc~xU=U>@xow3 zuM&fjr{I<47fSFssDXpq*ZrFB&=B#+Wxd}WHo^*a=~%UOwJXCQfq&~hZ;4o(i+oA3 zh3IeQ)`32hGb)(<5HUN}t9gB7TL)#_?rlO?^G_B~{FF6))%fd)OdxLcIWUP!NuStj zdOdAqcavaslzC0e@>gjTe%=FCnpvX{lZ#xVFlkRP(zK`{Ze838PrsWLl#FCm$_WF6!#?Z0LM=_ad-jmcXOIN1I^+X6IqV@3>$?|oUc}QGT7KQE zd(u~e$uwQ14~FwcGK>CD3)yhCcX-E5315MSS*nIEy8QUG9Yu~Gowl8)MGr__6y}mg z8=`@T=fMM#Y|)K+Hg3R!tFs8d--Vw%L5E#|m&cCkli+aMdGrV1?A zr0+p2-Uciy5%irUo~L4F6yfZ2+Fh7!Sxi{^qfRIuR-0(_5ErY?Sp8d;G{q-bGH{LBCV_ z16?Y1a3{=+sqZMvjJdZ<`#%!$m<}ul@)%*%#cXGTf$$_2KzOH+44oSE^N?JzO>k%4 zH#I^Gy=290bunzNLNarEnVo;jctFQVGIIlOO5jklGK!~#xjTkt$0yDL{jknwb0q9W zZnrKB5wEp(8qsdMAuMva^#~jm+0pkd*V%DvDiC8t5uvN)jwF}fq;$f=zYm0~H zJA00HhN)Trm!je}E-98ZQC1e+ku+;iJM_c9U9(e|qe@Awu!Uk;qo%P}Dj!t`_5%%> zw6rd7B817S{WDO8}6=AxIOJm`s0q8=}tvU=In-QgJXc-iaHs4gh{+C_d%LF_vKjzkj(5zc197QGsX^SpjX92S_jbC ziYVv;bK)6pWDgFRD+kWvYk}Ud{%0U$&sCfm2_%Ei zUCy(pBVUZ8HajPI$S(J!NJsaXDk|&ZHG6;JnJn0jaXBx}i@Z%iT`_yX&Qsc+uKBK% z^xODp!m9%T!Zq=(-g>X9;MMycl+_D zJJ1^9=+(rIM04r)-91lF>?yR5?*KR!a1UA+vVALfzEEicxC98@{ix`veSN`DTbZsae~e9RDLw zJO02A;4tuKe-sjXx2)wCd$&3YUXl~ZHu@kp{ocWTo@F7_V{@)|{k908JB`l){HEEH z(<{$b%?+ClXspBSymAzq>^TQx$NJL;=^!vTGL@U&v^y}f=HP}T=w08qm>KQmm)CY@ zh->G+2_5SL2KC?&lAqZ)X?2n5y-0?X!jVS-b=lhXLyVSYtOSuO+W8l9m<<2Fm~^ALK~lF0s^H$L3FGwjK@O;F!!$K4_*fiS(VbrM?OwcT%C5Qd->^VGy*u!A zvwD+E#U_}DK%OLfN4Dz)ML*jVJaV6uL?7HpwyhRsXE=TVah+B$`ucp1o0mn|^(OPG zPTCjjSK5V53H;VN*Df|!r&3UB1|QH#j_ZgT+xr<-$l&;!#m^E`vRvEMkUi5Y`0s`l zyU)~r8=SP9+FzQbbhs=T);45BZ|tm|Z?0E??pq5Ujt09L8@0ga`yj&`OYlWl?EZ-v z`*nhwaUi%LF2MIe%?sEoIVEMzsk>_v3{c=U9+yRv%?k|Q48kuXEden3Z?11)vo)Wyu((d8*>RzgW+fahr-_PwNb{~Fo zCb&IDJ?M|Myo|k=$XO>5o|&7ze-#kgQFf{I3)>JoBhF9iUj&G_a!@;RP{+4TScx`c zm?;9$cbN|cYi{2v*58Ufdq(HL_peNw!h6@#uBF5-1Ns7@JyO=k%yTN<lnJj_6pTp7_*1tq!p_p^WrjRh2qs> z2mRtQhknnkZp*w9jUHEBT2WfPqK&2nlk-MaH7pBvkbIYNoqBRU;9Von zlhzOj6^qMUf+Ha3{h*oe+m>eX=88vr3!I@n3cq_4j0Ym8#TfUtp5UdvhwDF-1HqVRCK^`va^4BuAtl2g5ui^#ppo@f6BKC8s*Kp^(|S-HR3xS zpUR>*j{kMvz8G7$HuGo65hOYL#t{Yd+4_^n#10wP3}eRKo)OD1v)-luK_NOg z3L@m4$V(vn{2ZoeOA!O_zZ1xSSK@A2NuEoka){z?i=w-)Ps zu#V`EMdMUQo42k<<-&o=My0=f8~nX?PT+tN>v>NUE9rW8DSeTj)v@s6*l{r2iB0!$Lm`=OSPYugQ#_ldb*qD>0gXU8VgxJ(5Obo$QwdnQrF zjvjiil1%3eKRx{CFL-4{se}UIAkQ*RUHT-hn@y7}vt+D7nJ~z=FUjLoPN;ZyLF+X( zmy{biJ+ji^4`{{;QFBkvEZ$h;Dl!uWW5>zwf+H8|DC3WP-TBVDfI^UA{#D8ynBH=Q z{;d0?QtRn9J+r&m$|_Z^hTpIFf&K2L5|i9VtWm}>6{>D?j?bZLJucrGz6dPTNK)&E!RpYdI;)9BibQtquw9n4hp zX5p_t)UuxX=GtUX{gKRX7ouPNrvuw*t3_JKc@wV1l=tWo>c**P(`fWv_N{rg zUE^X(!(W#wRO2E|qecu=ncT5pd3w^8d&)VbXO>(w(_=Rect-oy2*NE^?f2_~Fzp^B z>lL$?Mi2RTb)~pZZ&!SM3~QK9_e})#2-XD&bblptl}^Gw+)CK9LpC+>2+XQnW zUl6}N{uOwM54|6M2n2w^rJA#kbXb(5Q>fby@n}FZCW@&~rBf+If=-c<-Q_^`@9DL>CI@$Re=e;+!pr*rhs)xjj<56e}FA zi~(+!J17J%4y0pqu#dkQiTmzgABFuU7c7H6<82cd+Afh+GWkf%i_7*Uot>i=_mxyE zv@#6tip%CCpKXwn@SQ627M^wMkkTDky}1a#^?#ZA;F(2)mGIr3!Hel3@3OWm#BGVZ zjX#Jp)TNlsA2tmr94y~DmX0*~IU1Kt6ACO*Fpk!!c9Anq4zsoF0K$Uw6jSw6^oM7z za}Z=0YNVQ_IP)V0T8Nt~e%Y^Iw9m3v5PjXtD{)^%t6 zUDAN6jbfozlem&VkOdExjfEXuWI;V=(vzA_OnGK(D4J7}7O9ek(l70bgIx*xSfKG6 zP_7Zer>;kMybuy+IL9-4g1g-yU9Gt0I0(S10u2*>0m2vEjMQM7>!MdPlslpb62)-k@yEcUYN45ST z+ybz zszBeYC-^(*QD}CNW3`>{sNwD{cVqE(PB(j1UBsx=i=cVUdr?!k8QWRiA{D)@ZadivoWm~sFS+qYPCynSRh%>6Lr(*~K~9km8$dK9k2Jh$y8c%%AV z8Wm<86{{KC_EC7_H_q9>1x7VC_X9G4mSMU+qj zz9-X$R-&C<6YYittjHCY28F!%%Of*tyvVu2u8(OHi-f%6Gm&lANfoiKclywyI&rI%u*7a!2{E7+>~_NE#n9CyzgiNm7x zoN@EEaylLBe?wu^bI?(6J($j%^R#&w=^+9MhHdNvx||mw9)?63{7C(vp176mp-6t> zvpXYqhr9oI2<{}I1cD!h!zO=Nu8`It?~EJQA#?G=Ht=f`2A`8mOq2O~gc0MB{}$W# zpve$R`85g2g*c$OHSvpyB>{23$as>)1$7Sep7RH1@joBcqi!0G2gEzcyl&!Zt584g zPR2}DK%bD}_FtG21(6Tr?Wy#`h;)~*>U0c;m1H3PF%4MKhkL9NZ$Ad#;vmX(Ddw4R zcFpF@)1xDRY{0W)Suz7uu(4e*xjAD>!gxP(!m^q^^L&od-VrQxQGZe0L(!!-b&+?@ zYC+yL?cWJ{3+(CG`H@agF-^QEylWkpnT>A+e2*>&k~+Fo@f*hd+D|ZQiaM^#$Al3a3vh4*l5$4l56D2XC%{ z+t*cTBNnTYvR#fYVFe?_f*aho_xzV53EtG|hvJG|ch+w6w{b-B00}|E?ePlt$MTiC z^w+LpF7{0R{xvJb2B4T7l*D(Z%LyW|yNx!6vbIVU0PW4*;5 zsvf5f?oC6iWBym~VeVD?hcWwxCj$^b1XlcoFZlc7U}T06LF^#%e9 zZ;m{P1E#qf4(B%gef3C<5Ur%zrOzVwo$LIWS=m!&XH^@l(_WmPcv%uOKljP=FHj(K zl2$j(Ym*{yx<>b;X1D|PM&-RjOFCe;Zeh1+^oZm;+W^4$$Hx55{xz=h4J+xa13n8Bco?Sfuhx&5%qTVgM z|8RJ)jO%+X_wW+va-nrva|E2(HSy*;b-UmO^k1}Gbc6lf0uMJ|44DJLhd;dbPz%W4 z;(CNf`=>9C#4LNsPEl`;aaSKD90HRvK=Y?wzOViEk7Cj9>XE_$P9$-2J-5Rk+gnt@ z54+@7ZnAp3Up?e=stW|OQBlAdQOtpHT4q~|&-UUW;H zaQ*J-ma#eY`cIojfqG1%*t0^tD+6=t*ul6FMIV}awJO1L`*qxvW2(ylbE{5_l{D(D zFZQu#mDiVNXO@p_^=^{JHs*)KvBQ@-=H1{1@&_}7Obv5%E-BB=^^qxnwH^^i+;iL8 z|J#bhIeEvUC1K22Jb)xD;d$H=hwWilcY5h(KBy(GneSyz72D4rm-G#amyVIyg6Xft zGP;gVU19}FU{XpXf<~`r2+ku#{do3YzOWWkoyMWLKMCXGc~k?QAv`smgsz_ZK_hhG zSLNhrR{Q)E739g~_Zk%;0dWQ!M6Uh{ew9&`&lHc0^>(Mb%7FQjM!&)3#WQp?3-*VE z=B~OvLfiL#3rsCy7o~!ao?Wq~;p9>C{xw zoEx`4BW}Sa%qMPv5!ues2J+>^AR>jl!U!smiw9=M<_H`bd_^~(8>h>iUne^=Cqkx%*f|2VfIE8~5x9me7hdj9J<*5cPC8zx^Slx>f$G5$_kA;82PmSpyLfafC zO{9O3P&&!IU?>~YTp_$x_WB=<9M+_ZQe4{h!C9=2_^)Uye~PtQylMKuzxHckrcpPkp^P@pFSW)cv^H@iu56!XaVol z&Nnz?^}z=gB&9YB@V((IR|Wz!yt$01$Os(~mMG>T8iuZjuTws$gb3}g>jtvi{GZW= z617^j^brVj%MvPeac7fWmKPV6m^6+Jxy$MaVE)1^9WlhXy7MW z8-wSr@-H%yBnxtQzQJF0L8eIHL52NaS<33V=~fK|7*2uvmk6+{ID5G+-;s?WloWx4 z7`OR39wK2ylGaxwu8N+%ET%cTC)>s9>j%p)joA zlrfcF7+5Te$r_?xCK$W6*$iYgspyU5%*^4q7T$BL$aBr?=K7-V!^s8T$H%|Ec6QqM zV9(`ZRton$(vv_d{qdTzT!J02d`P4e%AMmlLii^S=Vy)syN&J)P3u<+hC=bJU4yx6 z=|;U(1D*L9fl5Fpfhco<4|jv-TgT4k)?WI{S)MAfj>;dw!wti*>%g6(fR4d5u~&tZ zix%EbM~~nTiJe0lxF*r_f6dB)u9ANczB|$5nazaUM$E47E6LeK>zCG!>^!{Oyd?$p z?LEjz$EuaRD{r{v2^4gd7=n`!CaNYH{^D2Zayp$SLAGtKuWXywOdlo%e;?(bV2Dt^ z{`(L11|Pk%sLx-|Jr$6{gUNU5dh&@%k-g>&oy8-Sq>*GtHG?am>|jH5b9HUlaExW7 zrf%S*wbxSD$8+zqVx?X>pha8PcIDlsaD+Rzm-w3x0U zUUe;=fNW5|sk&S|k7NhiXlZP1>TFmB#%Nst8Y@qQ7iot#CBR1M@OXHt;6YGX?75a> zhr*^m&4Wxzdx*NAm?LM6lg2EA!nv~YDno8{11Wl5yWC$rQy{kr|4A8VOsZc@0v zjFpO+f`WgLT!zU^R?jS>&=T(NdtvbY`{Lz^S|{A!U#@81aXQDuMMW4=jeLAY#gMpP}u9C#GI4JR-7nYW_*>H#h-+SI{s5ja>Jc$$ydwlPnHBzyfos4Gl zyfH={U!#}hN-kFKZxi^N&y~Ft@C=1~Oa~8!j6}G*JaGR@89Y^nwGCe_D9fv`_WZ7Z zX<)NBA=-dtZvh{X-#3G_LNuZ>OU5{7fj!$W>C>oe)dG~93iurRy!F!_I~ruXn`Hfz z)$uw_`{FzLzML3_P`&IPK8XPr#eZs2+j|b#?Ccj2A$WzLgFrKjl-a24z{dOc~@ai1;VyIwq1)Kz20 z-CjwR-3(mrGTAwHzr?-ZY6%-WEk_{pCop%;j^D@I4Jp*5obk=uTRz089hdJoLUo`J z#eufJ{da|rrrhI9dx(rLGW3-k(@DO4-zHuG({3+1l_l6Nv|Q}yZRe}GC_Wh?TNn$sff~c2 z_saMD4XYhvd@5ei-HT zTI+Cr>O|=T)%NfPzF>N!<5ufR!T4=VIozDwvTMb>UOU_{7I}ncymdmll>7+i+v2yd zAJhP?WUw_xTqaXXT*+AE9>2v=ZTRTNYXoVOV;~H{Nd(WhR9yr6w)R<^plfxeUZ&nz z-jD0Qu?EZ}yp4hVai3%TcT-_1LgEM464b+m#m(Eml9XW+{w*$8LCPphPYS3LG+8y4 zWO($u{7q|&ktr4o@$Ir&@`&rH+SU|gbOgW_b;|3$mAu|!6*AWR7oLP^IuK%)HJuW_l(WwlM%? z_nPKzIXqGj_Bt%I1i^2&=lplv3xQSiUli5=2KgD&2s+VQsr=OzDazd6nk_?q7uS*a9VMNNdft8Su{GNG@Zv&ciMlBy zdbYbMB()r_hSSNA!i2dUZu7rLd{z=b8h%s?6pZKhMw4RKufz;AW3Z!4NM&Lv?~jLG z^2{H_fpexuKTm&iPIs8}PRyJ%l#EcEsGUd(AfW!$@D6L&2ykB--R@Vq@O`e@F420u zL3Mxi%$>4lL7ym98*yTj)sBs3p=H#hJGQWq#QUCZJ^()r&)!Bbr%Y&|D67N*&^ee~ zQqeZl=9c0~pRWE)*$?bFikV)8>SO}XX28n7S-=06t^xi_p%TNNfIup9vD_I^iU;$K+_^3T0wuJh@!;ggn;-i6d_fc&hY7NW<63 zT`-x@neIKC*}P=3{DJF3@?#v)Y~BcXl6>0;p7RH9@c3<9$MqjDr>O_Nsb@V`5zIY+ z-_3`HJWwzC-EsoJcV^uMW}!&d_;bDnz>iWZ>Ggv5qO3cal$xy1V>>>8dU$U^G)=I*6Ff4U*(Sq%rP5#NmM?u{} z-C?AbLb?1du=Pu$^w7xZC#W@g!*~IeK-uMZr^qw34{io_`f~mO2q$V)eoE6J{MPj~ z-@D->WGYdk&PZbfd!1zRk@2o@(Pw5dwCZo-o1{=eOv59OP8e+goWeqFroguVs$#UX z6)cKMLTBjSO!G5}sP?D7$*3o@wbOzgmjh1?!_y~K@9W9;k!RQHpoiz0$0UuC140nE z&7?P9XV;O5niE_u<@ksw?agj%h!VB?Bh6a6v`LUrfek;}a4W6S9_@oki*14~Wg+Pz zAHkz9!F1b|>|Y|FAJ#2rj+SA0ZDC28f&C@hc$<}RO2@F0+dkqy*SiMcd84`_Pw<-0 zi4m_{3A1gJ#l$xAyi;*htI5#WHa6x}ozi=snlrZm2I|JG_B~Nf=UU0xOUw5Sjw1in zAqf^(xu5v$u9nvLt}2&4=J>~d`oi2J95uD$N>e%nuIdgGJ`j-ryAA%6k{)BMW7!F-SMI0HwNq#D?N#^4TA>D>cprmMKAcxUBNFm0JEAP031JMNxE6iKZ- zdC+n-?Z(b(HHv*22-IW~y)DE_j6Zh&nWpRhKDXD!z#1KwSKyan9k z+f;l!ovj<$6*Gf?Qer{>TsD6e7K_=`(VQ5PSSQ}+88|82bC<8(!{40(wvQ5aTl}CO z<{m2q{l+ThWy~Bi*-p;HjsH9T*YV{p3ZkB7((%^U#L~iIyxz19+VVd}oE|C=WR!7T zYbm{t=Xz7+8xhjmHU!gw$av<`=wH+Yz4`9aUIEWQpPxIRvD-DA4a@6k>oFt z&+%?bpBERAN)-`9(IhXX}QyU>ss;CIxvWlbWSHFI(L092<%gkPe4OM!IuFf{;OHzwjS z&wnjjhnM`M>e~l%KW**(OZKTYGw``Ce`YL+L(BT*2ogN)-AohQ)~M02FAB?0{#T5+ zOm6%oC7;%saWy=qpamV#O&zP2nCrs8g={EfnJYBZHV5-)^00UL#M3aVggAKWF4TtP zpn(lr0|;3SLQhXm+~Xiq{xZe!p^mR--Xo8so-8OMGnz4$a7G5#%+veJnMZ)w&SIHD z9GmM@TLKbOi&FmI@}FNwu>9N*Cmp3hj+o2Fh})XMV1w`Ffb_1EJOK+ZpPD3jr_XjD zctzwX=^G@=8*n!;Hmb2ZEHt~{u0m8(kt+E25jfBS&rigJYU-97A;$g+So(S=8Y$M5 zj_twemyp2kHvoYq$$=Z*^-}1;?f${C-p*O-7A$ycvb@`@hZHDQWD;SL_k)9!-+kPe zdl`|>edL*C{R{S903MUb)79u`BH}F)QoJ=!F#mbF{H^u35<^=(8B0kM6BkSO{M9su zYXCYjSUsccUUX4}oT(y9!3xz$5~0eo_~hJ_-w{%G+sJc!MoO!SN_CO3YiJt3&f$zR zc*4~9snl|6eiNJIY}MIvYKa*I@Rg6nCz^dHd`e|i4ti|AxZw19JILl6HU1;w`m>UT#v)ma7}M@snut0sRxf?RGU>@SE}V$zFR4_DOm!txHDC=@ zO}KA*D^Ka<+H%XzigUPY0m`%mim|zD_iE_3$@gk#f8qnKDmgQKvw8^?=sgI;zG!Hc zZ&5LnQnO)~L@{uL1AEdT)P37%;xj_z460;4;@Y*`I33t78QgRpZ84GGP}4}a^8>l& zsM5F;5`HSFlM1{(l*CaCxId2<(E~Zl6`RfH8xJJs!hsVOQAYhO7s6zoYi%Aw!DaX7 zkB>NaJ|1KLWbZsvH!N~lFGAA}MFYgD{`6TkMa2Jb^^>0(t0gfno21nKVH>7-rFcc8 z!lJA)e{5}`eJGvkJeS&&nqtk$Vy*)(LK)=F@(ps`a%5C~7*TWM%GtzridBOnNIrS@ZsRv?Q%V(MkKpf{5^M!4g*? zDeC9Jm^kE+1afI91R5QYiDHIvyE8k>5^obBD9mri@uZA8#-n_Q>^jj`BtZGBm{{E_ z$FIfn>!0B0BmdT{FVXNxBkBM%9fIgqenk72b9dNuL{Hd%LR3QZ@rvY*jHZ3$rolA7 z)_#YKu@p;}AyK>}d3wPJVC*rrV5A}vgb8WRE|DjhyPH$^h(VWm-*!GjyB)TC;e&!8 zf-xYlos2S7iFfyf>PUe}*$HgLU>>lmGcV-XlQ|EsgTGg`&@RsJ65;?dOOCG}tJ+k} zyh5yAani8b7aYUh{Yf8hoX*)20o%11E$%Gozlm;=6Fb88N7%d< z2MSXIR);iZjKxLVOzKX4qN-55cqEzabcM{35et{C!(knqvheMW!=?-DANTCGJ-d(S zq^HAE74pn3BkYf1KhzDFKg3x@8ooa+HS}sgZ@%Pdjk6hqRks}iYkkOIc$R* zH*EKs-T4%5d(q*kN=}qE3^^(n6Kl{KG7?)`qFD`!4TAokuP_@xmQAeDHnR=)o9mLa zOD}*3cS&(z@Z^*Qwn=U(r-Zvdy8JXSpVOIwfDWDtao)JtvZLR;5-Fn>trV#Q(E*wq zp1~hNw&h9y?Nkt%n8QW3a6?YGXj}dexu~mJ3q%bCxMd5)ar+&djhe5uG~FnEAbaVf zW7osZQze!SBWM6fY}@~Frqg}xMq$8XIPDvQ2(lBge})OZwECQL(5!jOll`<%l&c+N z$to7=_=D+ALY&{+ZzWT~c>w@x&sYQEN(e$0FM~xh(wKm_pAV&b;NuR()@ox%H!K zUVEfanfuqW?fG$+ee>?@0{2A-8boUZmp{`r7V*9RI zLL(8e+gmTJd@eWg4Bat2tgZmg%>jN|4fJe=%0hW2l#(29fzjkjMna3`rU3PN(?*6- z3TE*~uR!%9!i$*XWlR>-1XM8YTb9IUTWp|(01rMzVc=f`f2wEw!letRPB^uDdJ_V7uA!q=21 zwY#qB*0P-^b{|PS*spint6OEap0)+L(4%tM(lXMps8}jEDIJbZGxZybWFDEu)FD zLnmu^6lj>_msAAnA@Aokc z8wE?VQ7?`%IXpzt55g21p51rXZuK?LBfY8~zjiwws6N$d$kgPA`jUguu4wA4PbgQD zhZr7zDD?zAO+-mcVlxTH|L8sHyXrgYYcPX{cDgm1YkP7B2mN^bIk^OPlUjb(@{ZVKo5*weqOMl`CyCMaa^$m z$Uo|77|cQtC-6*KMm``dsW0*dDT130ftyZ$=SE~MlzB0V6|yX4rV1-EZE-I zQi(=Z8PgQ9z?usOgy}V3lg*K*=wp!)TgfhP65+*mO6yK4NfnQ)QE`4NY*J> z_#+JD7yk&erL8M8Ow{njv&aqVE?lM#k!KydtUC_)mculf8CxPjl)w;+!j(%TA`W7I zx~lf=^R!S~Bf&@oJcc&LLj*iTplH*0I12f6wyA)^E znHO>Z0$2jdNmPP?0cgS=zLH+hc!nt?6GnvIuO3m4p2N%WHFzZ^qOSNK`nKDJ0DM=35On9`j5FdPS*SqhW?cTRnH=X)v5nlJkspf6c(|paEwMrX5 zMlY2<^x|zd^lveD#A4?Y4{YB_h2pW}dzG2-)vr9K&MogI-7D!OVceK$qlrRDpjYX= z_c1?l74&!_47~?sq4uFvuR{=jsNY0Q**VsfvarMI)@PK3CA}5K&c&AXgVAN~1T6_R zB^SeTkOj8wHYee@gQ|2m>%;ZZDjoI_()`gWM_&8j;J61{35sMY98p?zz(* ze4)w?qlIYhYmjb9I(}7Ky)w+jTdzfM;>=Qxllxh!loS>-@~S(wUhPR3x|R!THeL1g6Q6!MT0TTSEC|&mM~xnPV^!yog_e2ECWJwtQLNx*BZlw6t83CnuOJyu z9ed{Bp@ZSa0Nc@k?TtW77fL~cL#=#9Begq{3mW z?jM$|$Py*$zeKweO%g`jc8nd6%@xp`RZ$WsusL**Os`dczV+uvE?_B=v1EGh=}xQ^ z*P&fw=L`6Re3KJ5$EJOMFH&DpKiA#$Wa%}Y)%Vfecic304Y0v1?&$mgs0Twy4!#&} zbbIuGnjSOr19(<{v|x?Ku~`@!^|%qjmlixOPE!|{B&*f$>HzkqZ*JcHpG6}p@H2El z?NYkn*ubZErW|tgA5+3&tqat?!VN+nl!02KexYUprOoY`UcEluo}S+(#p22-3wvEw zL9if8%d)W1;zDwNu;}86A)HKC4!VX{y~D|3jtS!r0wN%PfmD!a0t=9FM}A1gKFjc{ z$BZMS;>W$Oy!G6Tn_7yBi1kvPd+LbMH%_dqo}~7@e`Vn6YuByqIOA390fvyUf5h<2 zxsHizYQH>pk)GLlWdF{mcN~STuLZJ}0sp$eHu5;FR+~3*<=?oQsaOywZ>PM zOB=cw+6pdzP*%f`yRA+cZ!LLp&i3uWL2`1IVO%=ImS?~F#>+es%h`8?6Le?7*QzT!oDQw66xV-6#`X6-x8i!ET}1X(m%vw%cL_jcd1mTJ-^D zy0~fb6&hEYKU`{HK6=Gbt=kTyE*H8~%j1a>^=h5^ZPa%8X#YDS1tYCDU4#xRM%O6# zVK82B4mQ={wlBAwV~U(fuw7mO1}lL9cB1AXr&*F@+39kd?RGK%&@@;iZdo;8E|w&h z$XFWBdxVmyqcn2;C|~1Uh}@qvN%B_A>jqMi3eR9$_A4|BPoADG(;guG?NA$ zZWoVGc-j>?f`V{qt&d>m#@`Q~ALwvC`1~r1**WYhe5%Z?^ie&G6!-S-jek~43Q9Xa zOhy2PZ2`jv07C;>7piDFDsf512jp*LvO&hP<=bR3K*rr=+)l=B8P{NZ7=Mq+{TR=~ zD>3Pa%Yk=T7(>xX-Nk?F#cGj?76T=*o>f5CSb#p^=YNWAI9S#L9j{(i|5iW5|50zo z`M+MoZQ=Dkyh5Ez@`-_kd?SBH-eO@vkYkTQhg_&U!kGGhjY|W*)es9={1q&482jvkNi66%WRxY95t)odN{gx z1TtESipT<1h=e6QTP&tvFj=sS!WUWn$D0$X{ME0v$B0USttJy)`2x>vHuaaAQWg2p12~4>xqYa z*lYtSRagXb5ad+A#l@?ZUBtcapo_e9+e4G*%$xY&?YPI$^8Pc1RZi_+epDUu;2PX> z`ZV&QIBgp4x&FRm<8D;nue{wMxK~!F?~fmQ9ASJ;Eg^s3^Vo~?Aiq`mdJPgJqdbw2zqJYz3d&zQM@M6n=I0FJ3{GM+4|&^7iLfXpxkk*Xn=6LHVt{!#-`9Rad9QDWydu2Rv^C z+_wh4_zHPKCXk6@4$NeSO+?u^udooYNBoL4@heWls4YR)?4iWYCY#=!+H;p3FS29p zqt)KCjUA^)KeFTqI|yEvB?i@&2O1Lo3JU>tnc9V=1pw?E4*OF)5^iTWfE~$hgTyXi z81R49a_KQ>)r_}Vjmps_UhV7jqR>V3hYCR*>0xBl>F-a5!zzrU}2K@+Vv z#apkrh>-69Wxy%4|8QSXJFR^q%#Xyc_~`EhY(Cr9vB#D0B}2UR>AyAjg&O?N;`qej zPloXyEcAsdx<|*qzc&8%G#_=v#-GPuI8AzL^qZp5FBQ<3otjP)N565~F1tC#sT_af zNB5-#nrOX0-ugpXgPaD<<;>J3+HQ)sT?3Pu^GPb}o-W|mTF3jQd5;W}4>YXDaoAXI z%fS_T6U7Oz8@KK9EW?^NJyf@OpTXQj>;3W8AL@B)18@EJKC8Zo)|=w3*EB~Ow*qv6 zJ!YfUI*vDY@A#Pa*T!70;q3$PLPmdUlP3W-cf~l~1GGMl(dg#^&=WmL+RXWvwq1_! zk@4`6d3v8Wxrx^MTI(SwpC{|`gmfM=DGDX&k&cQwD$7QbK@f%GVZA7eFOCE~!TJ;nMH-~pF7mqj0k`@%zCNWc1rMRm)l3jJB%esdbJZ28ClJ9oG?{J_ z*C8W#8zmt+gg8V3?tfx5*KCp5b(wBu%0h{TVIN$3)QDfYFpTtQzR$2 z=ycmNw=F$7_^zSLk8G;w-lKA4*Dh7U^@|T5Sa$vTfrl4&uNu*<+o+My>5+9W2{Xje zVEfMsUG326tO{sHstBnj!IU1D>cJN91Zaqs(Jgcr1^o+-9kt5Vq}hL9G*~fMOjet$ zmt{0NEXz8SU%!Dds($0k6LG87uBG-xd%&Z%+KxqV?(FexiqXE1n}*IY<7D?2dmcV@ z@yE{|-f=ob{l+qN=z>MdaPg$k#{1rM9e>t^tv`N;lYEB`Ii9)4Tt4d1)~63Z-+IBM z+$i1vYH~v;J;jmi_Zxq8pfa5fog=py%CY9O$qD6@ksgZ>as z3N;TWmm2U?=OX8GPHJ)bo%v3xP=nLp6s%Sc%RLt}gp3(sq2Z2{cz-#A*ss{3Qol_L zyu$!977M{|Z0Oj!z=vds00AJ6u+jhCJ&{m#pQC#|`e4TkEx&(v4Y;Pf45z7I4H%7Y z8#lp*Cp>xlWQRL%9Ps!nufKi!efigQpKtcJ`v{Zp+dGu}Drh2H5*Uny&muD{xb!z4+Hn(=Q4xpq!|1e6krahPTPTCh~ zqMoLuC9!bxOksbiK=K7F2r!>mW)t(`^Aj@%qJBcmJ*fBS>-`v<=)<$j0iHJL;_O`S z?}N?8m#=c7yEJpP)@aw_wz8Wv4chI*$Fl6rsuh?j!j9Cnd zu_rB4utmWNOB+8~zwQ^Cl`x?6j;H6%dGd+5^PeI+<~{w?{P|Bj0h~EQJt~xo-N2F0 z54nN;^#p%33%1&jAXwR2K9w-rCw;P_-rtSwrm$u5Uk!f1ML*v7;sZNgc=>5EOE_>@ z5-(qt=&{3(?>N2|ZnKD6A}7G6>lw-x(^}a)Ikp_X5vBQ&zaVIA!^bCZsGpdkF1|ruspwi?`tb|6qj@= zs2DnSqWW#!#kYPA6m%>IG+($Kw}1HYyth1A-AdYpJ59Q;Xm~+U|5jJ`UAVf|K!5q+ z_k9l(4enahs=3qGYWU4a07;c2JO!Pypj4C%UArUHKgDKq_^hd^X}%1H!|8LPmN3tC zs33o6b*9)e?5~Agf!D%p0{3%PI;S|rei@Y+gl)PZ3Uy|&(e3mcJ;|5{jh zx84u(u-U9l=e%enx$$P(*d8rD@`UX!VSpN=#z`&pL6Qr z9Z%ryUwwtUKk>NwOk_Upr5>cEw@j&C>`-@*vW4n*eMjMRT&g~=exZJ@zKGeTiWtq@ zh?(pQL)R%fht6rHPU>mp&-M5{?SkL}+FlP!hS$T2WPuBQL3Kdvkjd5)Nmgm9v`ByY zLb@nP;DAX;O3ut|@fxsAa+}w}$qCeo$-cY_TQILde9E2}!;MZ3kN`1-#j@KQ6HiVc z6PdaF@Sg3TTz`Ap>6N1=R7~q|YxV>9WMk6Z5~CBo?%bPioOw5I;eG4ZY`wq5w43mg zjR<$X5se5!w6}0Td=tqi1&s_9I_!Tso!6A)@p!$&WH6geG8Ql~k+f8{1o(PbXLfjn zbP^(Egc7UE;B!$Cl2aR~(`*v5Cxr6h%djAiOVT={30?co%fIamNQY z;m`3B;$3!dIZawIVnq^NesGOh?4eQ|S-Mm`Y3+-{k%f4~(4p#PJYvWYbu)jtRb7<@ z(rSvZg-(hkCV;yv$s$=*E;dL^C@c=RL_DPy6ZJ`9i~sk$Z^0x92rtqn#ZB?b69~zy zu!V>bUR^Gr4bh~7MDqibbpRgZ^>dL~UkERL3O_7K1Z4};#XRIdlR`ZNox`HDI9*nq zqI)WAQVa&9lqpkzkCb$!jj~}#*`n-HE-JEtDmIbrn86q&Y?>+M+h#<8`Sr2t2t2L5 zzCuEMI9tvvW_2I}h4DHNE`o3U@YZ*6r^nP(Qnu{RI)` z=h6KO$GJ#$qM4!YlQA$If2zZ!x_-Ljy0>*gk`7ag4x2sl+=YgT`2ee0*fv{c_uPxK+h+mjj7(}D@C#7&e2 zyL9T+c&?emmAR)gf#>WDIi~)^#08uqTNaPFy+`}OV>&I{f4q6wuseEo7+Bfi&Q0no z)z$gKJ9p^PMIGK@aKTl*dUg($lOEeYow{=5u(t0Wc;e$(Yi_J8ct7WpF*D{?RnK^P z(G53OjGD=|41!}Qj1&F@!^46qLLO~jzQHJ141&RGGn$?X8@&QJBq-?QIfiLc46`)sQj`REIE3SRdGUe9)%kr&k`@Zhs}kox4=NT;)B z0kv{KtwOYeGSH*Gq1M1(3fp~VFv>8?Wv{l!&La7xh02xNWT~HLSM>ZG@bHaj=TCA2iVJEUqwPK^yXw^AfZfciw z-e@u*f5?g0-Z5Jv2a`(+_MBi123*nK!sstw9-w*HsXmPds86dGc>>=q_`C@Im4S0` zfb3oW@LfOsbl1b{$@<85#LKc{)heN{&;cx}Vzv-qw~0Pqk}WCC@3UDf$vW47utC&C z(~39?l?EH{&1g-v^`_iREd`$EI%!K$^cpM*f0Xv!-foCT5Lo)ap%L@3PiJgdSmZj< zrbS*)b+vdp@`!qV+nwZ^+Cz({!r)$4_caXe%P?Rqfx&W?qtJdk6=FI+K zo7pU-CMBh&ddkA7NNQ0Qmf~yJY-$6I@`H^Q$)X#*35o8x;}hBwjBPb6W(&(WUR{CN ze`nJ=%-HhQf@5#@zvIaCv0JhwdBfdZ{?o42v`ydqrT*ZU+c$jIu*&OieVy)Dq`s!A zPY-+Z@a(_#jVSMZUD9K_3v%A+rT!54uJ?#}-_0C$BX$9)-D-*O9M5^}AIjAcqQ^3& z3YPR(4~_*DWI?VB!}p3nK@%!GKN;o6e^PtwTu?RK`&(~*a=ry-02Xk$$?(Vlp(5fY z*2rhHSS{H?ejq>GdoD62ay?6k9tU`g;>pz+AuAO?*Ry;~QpL7z!3_%`A#*)Hm8*-FkiA2x-I)}AKW#1bdeF z%H+wsyr#0HqKT7?FLI;VAixsQfBglSQZ7rRV(Ilx{Or^vTOZyrr&A~SQ|Ey@H$Lsk zY2T$=|KSoHSl)f~_%S`mlKGQo-b_fFm4(HIDf3q@Q-3LLFW&4L)cwJGCSB{Nw7A0v z=+`;u*N@OI1IUxSkjc)sgLu4(<=e0VUD!{Z--hXTO{8fg_?vS5-gWxpf4hhFo;Z2% z$Q$2uzkcv__Yb*Fa2)yQ)Zu5|f9tuq(`U^2WhM+>0Z6d>#T!s2uw$NV^ri}Kg_;A& zZnHZpJB^wC#7e>Jx7$%=*e)b1I$+3DogF3QzD2Y2f(@+%Mnk?r4~hjwIm@PPaJ9Rv zVo?x`GaL6BN%h<{L&mGNf0?1l>curR_uX5&M!h&aG*z{YAF@W6^VY%J-kPkwbKdX? zp11>xYu2cjx2t!5VmOc6Og^#V;9G1l44m9ULSNJZ6{1dPd8mg!Jw4BvWiIG|khehA z={mM(QQ)MVOJ%ur0qTJIhrJytJ51?7EPiaD{to^Q8MdO7jFkT2f1IogtI*okx_{Vg zu(`SIrp2=2rMRMz9a}uIQ@;x(8r6yOcy#-mwre*xDsJjCadYipGVwGPm#D4UGhPCU zY1xa!)jX%~lxR#he+^Gvdv&W-D<;pMJ^iT-PadQ~amB>my==Js9e1c-tDof^4)uC+ zN)e?M#CY|r0n3&E1-0CuGHy3!qHw6d?f0ZzVK-)F$L+>4&2FStla=~F?DA|5ZZrN* z7GtJnF&46EMd2S$l|)_45Np7nSPllQHlZJXkDY_EE8fbCn4?U@uM=EyRk zxuDhH`<9B>e;|z;72U9oQ&ZIM&VHxkXTlT0Dh;Z? zk;_6ccgXTW;2jH81|bc88I`3?<+6otuiuxIC|`pPUSSYl`X*gHjdRp5$m-fLVmA&J zqd{o3FogQ}K0YfF3ERhqc7_G~R9Iluo$})Q__Dc8e@N%lelF0}_{lFKOk!MB_pPv1 z8iaH#cEz$pbRv;;M5pLQ@>Ce?PgZ82AipF(uW^cqn2DKthJ)ns?dorbaPg;j;}IYE z?Xk!*u?!&ZR)_FP10K{R6fjwhdRaDD4MwBK>(iU8rrBZHYBe~WbavP&8uz@9)>-Pi->Khz_fGaZ$;mJ6?77Y-+@_d{ zdQCW1GfH^y*z*6};nM>fRbsm^35LN1mdKG%s$Xg0P#mpVyK{Gi(~uiabuV(?>89{b zp>7r!EU~8abi11e0?E6={Q}q$$PbhTDg$c+f13k417`zu0mVWC(S>b16)i${vb`s4 zCmFjs1Fo)L$8jaFDM} zf8MZ9TV<+gEt6WY<@44_=_a;*4ivP5k~zwEj+#;TkeRTAR5Ow&0&7^$$^keOOHaLk z%@l#JP!$&J1XGr2#CyXe?-jgM4A!hGkWF)PLAJ`&j-Ld_@zI*=>C&?;lN4O+`RprU zRLz55T_WRepPQ@yxL4#}Kx8SfelPkYfAFpi4G1+;Y~Vzh^kAk_L69)E==FAokxKMJ zxdN*9Lb=7DCs_Igbz;dc!C-?$pLp${`tmE;;57tY6cCHOp<$Nv{j-Wuq?4**@)NvU zjc@FMr(~<^)q64%-ZnySP^h`VVo}T{lMTEYMM9z=0K?cFHkfM{%FQruFO*v?e+F41 z|BhecQ?$+pEewKh6^y-Eijn#=Ms?_Gc=HpBhpYyq@Z@ZDT@Q|5>@Dypt0ejWuc#)2 zjnX#ckwGFEbcpJx(Zu6K50vYo`yCT%dDdqVC+^?A50gk4kfjV0RXYoC(SYQcnQA|8N;;o-Qe6paxbljyV3H-BILm2KSu66^zuDH-LW zR%lMBQ-;lLOlg5oN{THnFBxQJvMsrFz9gBQEx=r|wD7k8Bd|pav$L7s=`Ra=-A*gb zHfNWGje2uacGAC;D2hfvf9)kD@gfva11UGY9l^s=n_bxnOPM%>TSTAr?H+7r-ji|f zgaiEt9(-{7;}1X6Z}8K&G%}=T-(IDqT?X{VRm&x;(-q~WcC1{w*$~F^*{*%c`4`=;4u1NIm-vT5~zdaWdhK_J8(Dk^~f#! zg$~z1M%J@{F&$1Te>hNY$beWaPKF|FP>U1Lq7@1Fz-80mvdY+H(L#<7mg5GOu{6bL z33r6XW6g&bZL%=P zV?_M*=bs}h1sb{SXZrm2->Y-K_(Glb{r5ny$$(d-_!wv&e+6}AMH(c`ZzdD)bw#}a zo+YZ2WlX`r+Re9gvY=E6D`VGa@gln6G85yVB9QyWsh#kPR0XfXAm?z>yoD*4AasN#Ay0~o2MTndG+=N2^M_+DNm8Qs&R^x!c(M720_;#VS!a3 zX~8Q|v(1>ie~PXkMr-3HD1JaWhQBv2rFxp0nj{;9Sz(<)2D|2fV(ba#f1Hm;mup@BSq5Rr3fTte&FUS=w^a38(sjwucb1=0f6Bgl z38hQ!0^9t|AKR96T6$f@TrZxk&ZPogj^CcQq*KwM{{8>?_Rj8NzcpX}vF44op#`&6 zyGmN5e*?phMyu%{uASS4ym6aB(KB-atORB+a8rS+zPyIzV&j$pscy;)0O)f8`Zx|f z81fM*rtcL!)All}#|n380(`W1OH7~RxlQSDV3A~CmaF-uHs%iX3pF=-_|~>0k0;el z+-d&gq=DthC~=pY*CARwv6Syd8=@MgGJr~te{NAzS z26irPdlo;)Vu0)s-2*pm<0C1D9Nh*EIaa$==%DSNO2qe?P{8Qs*t&hhmz3;5jW*-C zqgd7>nHbRdcLW{GOKOPR(k8JIPh4)tQ-oRx0g!nvG$NF0log9iMNx1NWF^22ZjaGn ze|H=Yo9tHmGdO_Ckriiz^g6I`j)!H!BK3hil6N4Sk#eX!!>9Kh2n+f{<$?oVKSK$n#~aA6cro%| zgI#nyY9HIx&cty+G}i_A(UD;5IR54Pe`~*W3kg3QxiD+WoM|&>PJb<w0_x`)?f4*D&xU$#af&GUJReN9Y6`p&=S4|k*ED?{V7ZWQp zqhqPdC@~p%M?4u>Ywg+xwlYie`+A?<*dQHQgZ@|?`f5}Wh0aX+(H46X&=(MKqXpqB zTJMOrj#Gzs7(s8ZY`rMnIzjXE4j{n3VY+E!Y`WC#OvL_ShCRN*>3J;f^sGiBqx57> z&y8-M^xs^h`myz}u}yI|(YhXXm%7I}E*$isx=s5UrL=0P;E%;q!B?Z}qqMOD@)dTM zmI&UU^^SP!dP+JNCB610e_GeW?ozi|ql=x><*t1WcYXWVW>vn?r154|%l}`SRmm~7 zS@ln0Gd(5l2dH2fgJGaI5M@<4X^?^8%FNA_GYhkW^wj1zh4;5$^0n|x%5Ar$Tm}GN z0DzywBYd-{Pp3Ftip!VeG#bUVVPw3s9NE@}b*$1vL0(?t6o`!0f2?MtoXKKcX@uEH zK{KJImf=Bt(pt4tRvM>Nx4L0auhjgOy5+idmBQxCyv+P-HZFvh!mFlC?*LM>ov@eQ zE0#z7A`I>TS{tSt5(=%eC8l<)BA!^jomJNZbYFx18raTKfhu~cH<}d6>tRUi!n`KN z6?o?42Dup*BxLkMfBOuNSauB^YTlY5Y+ko)UWZck2Y`E8_?`SNzK~GC9ixHah8_m9 zE>2^g@H;aa@JwL=9V!_B6Av05y2gl*U6Q;$#j-wZQT$52QmIT)7Alg3Dj_gP6-r&} z!}+uyB^H`bOX1Bzx|VLH$El8n+`gWaX~Ste^EU6_Qg0h)f8GvVGG*%GWs{~Xxubo4 z>kb`Sw=NO84w*J>NO}SswmlKajSH`2W)}uoB~=&s z{A*R+^1krqW?}O`skhyh8m&4sk=O9LE|g1U8R_+k*{S;b3ezqe-2ZhCgW&ohg zaiLqp#ps#1&}|NK)Rfn@fk5XQfq72;_1w`teso*E`~nJ4GSuqmcCg z*=V%m#MXQtActI`LB{pFL3Bnt($z=mqPydsj)q38G9kdzIzU`<{ zMy$q=vCJqa)Mzu>GF?c@tk0i_rK@Qxe_-|obs_8}obCB~95k;6_EE6o+1t_~`;3ujm*FLSST= zoroeut06{DuxePNsJFu%xq!o3z;`SN1t;>ee-b}Q*x>->?^MzQj$~tMS=eH9OCGRFBrD6kZ>q$P zmcPUcB_-5IU@1AQ5@J+Gtp$ZCOnGnbo9{n6YI7?|Qokk7zB6XVj8T)uh$qz1+h0{r ztADG1svnLiPrFwgLEpd=Ufi|w*t4wSI4KdvQD0)v^r#2dABIGvfz6qNT;k<*`jojZR;BaL<^f)^e zYN_?0*`o<4PVEE}>?(b;azNE6<9W;ewHu$@x2(*DcK~iH7hZKkfBu9S((F}>XWcbp z@YOjF1CBb9OJ5LIgJ@U~x+=qOHjBvX^GRTAh$tu5>oupOxV{Nzn9MBMBVD3wRh*j5 zrffE&Zc)M+ z4D^Lv537d*XN>dbe?D@}RegFF1>1HKPeU*7e&YIy%JI}cbLl0^NDO!4C7$7GsEVv*p1|pJJn}lg5;nhr$I)LbvP8+hf+dTV(}779?nBm2(txe zTSY~ot)dW>vTe1@{C_lh^-=BW@7dLNVRz&JN)Op7v3V(3f9SxDM%Oa{41$3NBl-h` z_3A4cghCBMCxFm0ltf8BgOHD{`8Xf%Yk@bnz%9^J4yjNB7KH|1Wk<~v8w!VPB32YC zTg`f_-tN%x^Y{#*q_Akh!pN}2gpJgMO<1v55PYPHJ<(o?3i1Rc#3oxb2|b!VXp5>M zR&@I2$P(N^e|<$gw`vuAMwq4Udgs^%7PQ;}F$uV}?pcyBI&KmLnvV9e(m7=PPWP-0KL!V?}A_iH}^D&8OWvXRl;z^lzsyRdSn zaWmype66+-*44Us)aqd73A8E``bEtX*6Mn#l{2vwf3LO9^-4}uuPlxB3fx${$nA^n ztkzodLUCNLbl3Dsb^UhF>AsZcF5E=OJK~Vfz=+mE7QJarK;9pRe5SS@GENTELyp$; zISksu4RFITz(RtHpN{%H3r&?0;T4G<4uYWi#DaoFK?4aJ=$ZoZ#+jrTYv%h1P ztdwsye>a04WVafdfzNAn3-Q8ndE9Q%W_hFh3T9vO8J)??jKr$R6~?N`X^E(=Ag;Fo zgu}~p>P4-j-2M|Mk83q~zQIY@w@j^`FmCMV*T+m1HrAGnUZIti3#eGa$s>lpSFvOH z^4gQz_wL-QK6Iq6uC7LWQg~M~5*b~CkhG$%e=Zi+BocZaHMJc4aXfm#mxJxT2K?E0 zGx*0B5;kkUyRY!72Aj2!I+7JEjl=#NZ-rTJ4e5#1g-cy7%-FMn$%65q$?xZzw7W)I zg6V(Q!D9v+(d?L2K9+tq-UZ+$#oAaM3WgI?IR zxXKstv*uaA;$G_<>slUUnZ z{&{DO!0L1Rva%eGXsgDd$1^Zs38Au!`^--C-*&g3`6pp7{6G8r*$wu$^P1?=HfWu% ziH*8V=nn>6;?Sq>lN2N*Oj+*rNjt!KwV-aH3==q*q5wt|E5<5XZN^0wk%ymXe^Zs{ zv|(cdmJfgSl7jq373tWno(47PKH@ukjvYHjUq3d0ZS#qt%*o49#y{bZxD7e?VjabY zuvm{V*NUw0+HUa#wC?vd(`BoHf1<{UQQT^_H7G`*ZN1+U-FnYjuSE4S^A2B1gU$Di z3tgP4tJT=S%m=J?pVi$2^!@RT{md1H);_*Hy=Gr>paFCi3tgKKIsFW`0_gRHG3I#E zo7h(WaD2-?yCT$JBmV8)K%*;o335)I!f1bcYSiHYSEJh}m=ZAJWx+Uge+FxsDy-4Q z1s&+&@){b)(ck3Q7e;AwAu*Es_&#r16R`KkVV`kw+PI>$@uW6@t_2mg#kKWnG&ee` zEU2)mdCMk(3VY%~h1J*B2NfzCwe6&KWOc%!Z82+$fBHBoF5cUxGYC?YLmz@x25}Iy z8ltrlxfNjXrC@7}^LWK^e@=noMu86855Y|pg>l7;!XWsD)W^CDncZ1m4u+RG-~~jqG6$z)We$>9o`Dc6iqN1G z%lHH=KEpbVN28@!1~^h0m11Fc7#lCTz^)J*lu{Vv4K%uk7UtO&e-HDl21oFZc$jC3 z-qb{xXHPuLvwCoSm}ivUgmhN~kcPz}e**sc{c*?^y|D?%FT^2#5~+tQ=#2>hB#d?= zEX?Ieim4$p6|f*nB4I_iY1EpICdFcIEemraRq7{VxAQeyM0QqmXEyW28=?!5y+XO* zAY0wQFnS>+m68!*eVt$; zp8r$*L;VV;Vdxl6Q_tRh^UZhMaq~^9sN8F4H z4u~pse+Vy&{lFvlgKoS&l;;xt{w$}WSP%kRGRe}Sd73^;e?KxTX1N{Nj*(#@I}3gl zr=U1u5s)kMHR4-bqaH>q2!acFCA@a_V6ZUg3KrO1PL!GHVp(888+3`jG<}34seGE+ z(!1=#S&=iwpN(fCYUG4hZ8@zx$x$_f99_0K^3;yV@po_i{?4zkxP7}?^VJ#k{JZ4U z<=e@?O`u)7f5RZ0;PsocP}fj~+vPAKzs2ge`XrZ>lkIj{EJ{XM*r-@(N?91yr>%3V zD2jhc{Fp9wCQf3VT$bfcWINcrxzXe`ZW_@6ou9npx>T@&He>eY{I}5jd>G3zV?K!#!@V^%D zpU*3hq@ms+PZ9+?E;-GHY?9ZT?oUojO)Cp0(L>l2GKOiAl8RhPS=dz{w9BiH+Vi8K zV@Dpgi=XjaL~}7eCX^i*SqQ?3m6RP?K5_Mb7EE2Rc-Do0i-7Z(X-K%PzSfmMQDoE zYV>C+RLRXT`O^`x5~5H-P`W?8e;B#3fx6v3zu$ozK31$%LWw)K_(W(Tv=ASigmhcB zZM?y0j#Vcc0w@`gOYwMujq5n1<;@@j3(Fj6cojw2m#3o&uDl?D(V7>`1%8(aVU8K&=zkE&x;FP*Yt zBPrQO4tTr1+~(;2+EiB-biF~>Y3{f(DKU|G{l)$*?*)I=#G8D>um@M`1F3!W{2u7) zIvy4!yzX!kdw-iOj+XDBy(zfE<1yi!0kzfNMzD?VPVj8ld3{z)3%q zVpsOeokbyq+_1B=-Icfw&CEP>hKGB)o~&>Vnm2MO${f$*dHk(J4$m)4sXCusJLlFr zXW>OMQXEFPu&Y~^>ze3Xef&M?)%QX0;HtvIK6?qRV8IL#%)4!`w$%Rewu@!gD0<^QhdzC5QLo^@Q z%=e!Y>SWnMVjt=HPXz97f;g?IO57ilsBxg~`p@P_2=N#@B-(Cnt16%<=z>C}rj7s5 zn2Ln3ETb>rDt(LyB1mNMfsdz~8@{OTV&t31A0!;M;8$!@wfut!=PXc$c`S>cIC!>^gKVuX3fX7VXAutR_$2gvF*t>5ylTR4~j#05MkD(x3g1lS|QLf);B*lab z>R?yTHLRVS0IP7$y7q7rA7vus{-;8Kblq@_^-IzBhSnzB(JL7z+nM~r>5jWA1uue-JhjZ?YleX zj?MfFm{>|_5_lt6(*JxmTb|jx&_E>}ngH$t{)vULPg5F&Dq+nlZpSK9lLX44u%=_I zlSU#1VM-1Jz}P?j7KQG!9>&ZL;NH!8vVDWc8f9rR6sAhG{}yp^W9L$5+IKy8#+r~_ zEYgt|sep*949X(Y=_#QQ;X_U7N7hRRUzZMX(V2*Da> z{8N69mOEb)jkI0P#k@X$Vt>;<2cN5&_^NznTsd3O)Y-6zdbIshcuMtufc>fuv#>ED z1;A0U@o&Ml{e;u8pnZqzXi#wr)$o;k4`b>8q<({YlCB3I^Qsgfk!3BC%gvBI!b+@w zf+wM|)e!nD?Kj{(!Q?~^oqE({&igFR@cfESjyTh8b`^hQg-mPxRXTEEsJ|z~d+t?n zXO*+cMbCUn= zX zdd)D*h_5K0Y8A(YKBjIOPz0@ivW3)yh_>8(h_(RiZh&W=xnm>*h=|mF~!!+HD9!xATLkD8p;?9tVD)_+VQ>=Mi^+sZsJJo%+$**899IeJ~$*L z#VBU(X2+<^(u1Z1&Sa>8`ZL%ASugW%Uy4nvAH5Zo^;Ev;LN0240tjB`SpLc-=|#T66zx_-1PlP>sV6iJXNQxux?y9bSXl;2t>n6YkEh)(%ad6SC16PU zqM+ajB2L+JSdQi!rcCiL#F1xO&Pz%v2<&bj@$O<}|89d!fz~NC5=n7xe5@o0yWTWD zMI<7hdMvN67zJ09)rmX070usPnx-oJEY(aHmy-GqutiZFz zltL1$<+cBNWpr8XdowF1dW4VVJ#?_@37y~H;-T!ir&?L6oZB_mIVH-l_7@@nc*>A;Q7ZIX=_*5>pXRk|>vb z0ZS1od8}Fk!K{IjLYYFGTh^L;wRqD2vt%Dy7^%)a)J16z;;o?+OoPJp@iFg3TxxNYoRkYR44ox*G zJEVyvm~tKlW_-2SA`ZJ`aW~lPW-j=yI)x{keG9CpOQTBS>n)x`JeTCQ;4gc^Y;CW_ zHdWmj*ycGt9BRq9=$X(^5XGMy$F!Ws2n2e1h(lgLszg4wMZDA-*Yx4_>G01+_g{==6WC#-M;pz~y;nza;%3MKI>_jI%=9TlYbsVPZnMWu}BIQ+JWfHzqtDYJWU1 zT%#V(EC*b>;M4n&q|6}B)GJwO&=Yn}bL0F-{i!{i5PZsn2@nU=8nnN7^n?hf))d=L zXGC#8j>8$3f9~J!jqY)i3#B)0-w?B5J5h+r7=NVXjw1ji>@Hvfb-f_Y_)-$pAKdy@ z6d8C|s=DKYYU}0cLE+(ORjNx0&Jjcisv{)0r6VZwIV@L=Z7=>Ys+Im|`&6*I%qWC% z-=&jiu^Tvik^iNbcm>&*D>snZC}R{LomOxa1iSy$>fg8f2HIOroq}2Dw0O zi2zojw_CE|`jV}%**T;yClO?qHzuyVhhkQ&o9Otk$ zWw3(zxTqv1X1-wQka7eGad-$+gyax-0|;^u|$~ z=4cr>@IzpyVablWl&zjJs40DpVW=sC$|IrCU;ab(Pt5u6S2uNwNX2n}yp_bM*U(JAw5OgTYRG#|NXQ8rFW3X3@8dChqlBtCQP-0GsfjA>@b8#XL zwy)AKMGV7=%>bQ_kG>Vxt8VxXrk)*kF{b09RzofPale$$09EM&&u>^$YmV?J$D*)$ zN}MDq8#zVFvGk*-o7zrqi3~wqp;`u2w!r;j|Ih|vku8seQQ!@Om_U7?$FjsCl%_DX0}Jf_u; z>F;BJe;BcZ9Fa*A9uV@+)~dVu)5`tD;JwO+bRI&aJ6)j~wU%%`BrD)9mtU+C-My3j zsgT8EmJhfMX5y+YY}9%mJ3TcpcUTS1jMf@6csmAm*IHwa6$m#i>ArQ}|I->o7X%+g zpK}ryq^xb0?`*K`=V~*RCf@nH>3n0}^!g~0-+6p8*oYyFxLhQPdo3%!eqSm0a{+vO z6h5e*hn-llxt(b>{_x7Iu=lAOv0sLi??umuG6jUm%T53(y=PyDS6trA_sG4=#_E0e zH{;9^;o3XN)UUeGW=6mflMAvZh^V-In<28oUtg;wSvV;nH<(l8P+}j6z=Eb)Q@0cky2{J+ zuL%^!WajmwPWvtMb%mPR`xU8;5J}f#wywZKocI!0)W#%^!)W&Cj;4Vbl5R`0)K@&3 z#dns}Mwq1QJ~?kUXgs6_9IrFW`F#hx>}j04RXmxX0==8lJ=^<}^z7@V>)%B#|G-0P zes({ZN8sD>JHaG??;s2BB{2gBD1TlD0pjyTxz9<`OcxRFeN5>T+(&}Gk=H>@9pvu! zB~k`L6ySrm`zCrfq=w)oqWkUUB*xzN^`Z4~GJ6JiF;=;Jj`^g@7Rp*X{6p=F{bgxH zQP?~^W<9JDU+OmSo?iEPcoFBZt$x~pXC~Ir| zklii>pT-=o!_E~gHicTPH}eX19@;N{8QzlbG*zxP*k5+MZbaz}RKlk)bemM-U}800 z1xU(jR-he5XR(<5C2&-mr#WAp-lbB=qSd&^=PB$^Ih(DIc{p!03;d0Q?uF&fa6Tg* z3CF0@qW4-ZrZ>p-F}Bv>%}Q4V*lZ`>RhTnMR@>C@2pFp=;r0bgSh$8CRj0T0+c-Ri zcN@HA4IMJS>v`djTkN7T`_}lJu9aomb{y?U?%B@PTU{)i6CWWP>3w@Xi@4o*4c&p^1!I3eQ@KP~FnGxcZg)g^maUBDyRow(~bX z47}bqWm`UPv6~)t|1sF@kbVGHK5hk<#%!F;VIgnK4g#N}4^P0eU_u7srnAmjgxSY1Jq0k|ZSlpi^_6&!`9t`d`Y03? zHa*|J3n#6Fvw=7n7p@5)nk8IUVs;@siGeC$DH9=|!f_!_5Big*Z9&wAyB?mLmt?{D zBZMpWbt>?P^p0l5KU=JQ+Sdg~Fd|!;xnOZx=8owF#V0^W+91Dr`tb4#sWJ7A4t7+`epS#5r&(;9=?~dIqm3P<0kA8pF=!K{R z|9-k|1|kc3!el%|pwUEBhSWG#moR8Pbyu~S5L!_F>Tc=SJ$Db#h<^xgKDOWeO!u1Y zqtrz_IUMUYV?FxYnQvJkqY7~@T0a+N5;3HhT@^lmV0FHl*Iy>J7;dh_Two=kgRG;L zba%{s#as(W*SK$j0^#fD>%3Pnq9??Cw6Bt{rHYf;;Dc?NE_zPaK;!d8aYQbQIPDH) zo&1j~V(SZ|ZkLgbegTbc-4&_3i>h2kQOiqAgTd-POz1wXap)q@f0$}9ukKY+@iS~r zKSJ#=X5l&-W7J%-0ZmjyEz07^-YFSZ zvH0%>L6_m^!u{kR$gM21Nr=@*9^-Nz99cfKo}2|q0?;M+ct<|DlizC> z-hke0^2hB+)HCLKIB2PxZiw2~w{Q10NiVGr+yvQ0*R_D)qL#1#w%4uk`~Ar>{Q&T; zd95)sk~%yY+U4KghbZNc%WP#RWtCzzo=4iZ1wV#Xg$>1e2?%4wiD==8aj0#9Tmnd6 z9#Ryjc_mAy>GwM0Z3cM5)ls#4?NU8zED_Hl)>wTCNzy>Y@J~x zCm;WsTyxsdveMTd9;zN_E8sR3>mXd^`p$~uQGE$<@^R2O4i;|}EM#y5D3%bqqUaoxffY>o; z0lLKDN6j=146T5Uq{y^)|G*1twAR09RetiW)Et~i>z&(OYNE8)i;m~Z@r=g{`P>qV%SgIR&XWbjNi@hvQL)0mZTbe zK`7X6KYE>{o~dsY|C*dKXj2*X15tMAj0~li=H0wMA4Znz6?<+OjAX{g_fD3n&HKHc zoRH`r(>!A2=EzL3Gyh`zgj=J<|9L!9I}iW(^2YdN-SBVVa;apsRo-w4*xMzS63KbG zb=AyA|0EWm&Zi1+mknC)`}*~}>1jXzjTMy1d&~&`9e$=A7DlQB8bSGS0ysyW_ixyG8rmwMWVCGUd{}Ls@#4Xi#~e_jZPzE_xDxE79NI1(~qS2l+ZUOP4yt{e(QMY zF}fQN=lZ)MV_tPMVjeZr!sDq$R3PEj=S5KNFhZO7M$%-r62zE6q{eKwQmF4;<1&9) zuKC_&HE(~_@lt$HTFUs9E&jtb=SXOGq0^LG*gx0oHHI^juG88RUz26T&ER?+d94hlLf|1!e$Bz9IYOonfID2P`$A5=_?FhMTV_ zz*lPcrCt%$%M}}+8wS(M1l^{S$ewD5|9SNEvVzW4=+2O>B7tZ6o(t}!p5lJK;_a>@ zg_8P1#ZP)aOYYJTpM(PSw)8tKTaX3 zh9d1vn+JYh6JmK<8u(R9qql)MIDm^PAo)h3<|_f_TuZS`erQ!(Xr->9)jPYRD-9;v zwZvy?GkHQ914VpZ<^9>&h2MdzvhI8qTiIK=ez)mU?6TQ*J>BX|yw2tIz~wnq@O21O zyC_=B>OEiZ`*3>{h$lGpvDjI*}~MLBSa=1xg6`loSZ1uFos406;dt5g`$U!H7v;jVUgXqI9BVX?md4Bf|j(x{bd_myJ-vy`Z zuE_{<6ssQqv6GyI^zRDMrSYTs-C<`M@4{EmYlx*Bj;YPgCdux~*e zLn(fmQd_Udl$Bid8c&a@n|o8|q)5LyiMB5OE&K?HQNcw&XmvL_tNmZo7z7+>@slMb zN!f5dX9Ct{i}9SgY`uF`L}B%6T7ARr(SCu3+z)aA$M=v$&COZ+ot^j&v&RN|V6v_w zeh?j~))BV6D(&@~hv~5bGn@}FGLvO%iC;T5)|YiIW26mBf?<*`DlM)0Q#*qZq^o;X zT>>eXDINapehX5s9U>yd-hj1iHk>A0dsJ4Md9$m7XQ}8EY&%RLK};{%Y&vO{is@oW zSG?iZ&>(tob*}bkTM(72F-Ao>I9#;2%rGXPl1WuSLs3kld&{1<(uBIYzZZYRIy%jW z?1#&Vj@{}uF+)lkmashUTxr^5~!RE6j zUfXRA*=-HM-ZfShaB;Tuy8t)*O1J2B)CPXtAoKX5&rJ60*AT(DUX0?aaDu~9PkkQ% zvYyOGW?0r8W}XJpESSMfn@c%oBqg1S_ii}+CXo6z5V6_Tp(w$+ocYILEo6Z>v+7Ut z+Y#=HmM)#=fBu9&_HYgnTdP_Sn-0cWJl6^=$lW*E=A`T6#=`!d_ZH-2skStd>Aq)U`9kDGO>KP zMhZi0OBq*4{KtfG>`-YC7g0+TuTDRQG=SH-6z`63c~1PywlKm}U_IIvO$IyyIjh8N z%jFl;M!cJSyApb0+I-qgMiIg1!;*F><3Dhvxae@``r%!zT}h51ppCpFMZ2uq;qcG) zBbU3#YMh(g{7Cpg=FHE7Rp)N^=8N4{YbIhht6Y=6s|?ts^vx*0=Od#w4_XkTa8cE-4A(|R z|4kY;4uv#MO6RPPT*NRfZoavA1vWfAOykcx zBViMQxPIK5YXt3**7D!vbIg$^re(&*AKcOopQ_t1qYp z#j5YV)Y=?Vd#2r+@F$Cxk0~#u{x9|QI=w>&9|zCl+a|XM%XP+l0E$$&x@AERHeAsI zxY5aOn$Sw=&2_-pwaJ0WkjY>7zf?H4XAqB4W-PO%|AEIR(JKhN(lsH5Q+C#`4E2q0 zMqpLyHi4Zs$5b$lO)^(>HWu0{B!7_J?x2opR{zlF-Fy!1&E9Fdu3a6u-haASRLt^x ze}9~F%FN5wZu}qu>RiuX{1@qEiFjXc@QJGp%xSC-%V~pXzfVb}Rvh@k{o>oQ_4drsUmf`&Kc0AFUlaeLxUd5vZ? zjRE&JQD5IPFohXW1RH+8Z)a&_QNoS)SCn~^OdJ6d{+YHg@NK=@MHc zSdtD^43p4IhvXpuk&I&rE-qGQtPp`-N+xL0I=mWlr4D=hAiWuKO4x%y|C{t|M(U%R zU*&UzL(W?Q;3yR$du*ZJ)96831qol()jH;_i(9Wtl@(xmu}g+Vh9(^-(M*|T;jo7i z_!r4*8>L#En=RK0m#EYZj7G5_DIiB*ifSszv)3k086z$}71D2s%B*US8er2?M)K*txpo+UXT}uCKS=Ih2aOOBqtO zYv!*2ssW`RAEY8S?MzSiut0eB~OBJ?D}hhKq)GuEl#UgoLyq9)pM#`c&lh zqxl9%1iS>F{FM5liC^L*x*eqCt{)PFDhB9VF#-%_$U}rrC1%VhR1(!D&bzvBAQ|3IHUg z0X%ckWsVlZ;YTGGOMgcx7inzViGlisEav$fReNk49&}JCXSS4H8LnZr1b%7;Jgl2U z&q3m;tmAGarQ*bLm)?8TXU$1Qnri|1VC~MD%U(b!wNNMmNy0^1y|dY#wp;o}q2nH3 zrD-!&#U=>nfD^;-pm;&3@2+)Q8~~YVBM(H#;vuQJQL|n=W%8LJk`BVww3lguSR;7- z_rM>#QHJl=M75Ef9y{4?PFVbd0gK){_@Tc*Loi$eUq-?)d9W3GT1QjLb4u{P9S+0a z6`!|n|MaR%z#`xcShB3ENS%gFJ?s}h_ii(-mKt+OnKi#HrsmI#{xGUem8DFiMxejfO@4X! zlDDd(#bab0n7*o?<@81=Lx54vjN_6N(rbi|XJFx5N3p=P`#y{}d>W&`INH*o-;kFmk1-{%OnG7BHBGbjJPzLcD=z zR(0w-J;Fk>QTgFcr5})Eyx$*$w8ifZ_gt$ljmTCM5P%Q>N??hL-lX%r0SDsWdl*=% zx~R^Mb|Kff;R;Cdvzl>;*(}}tnE==Fwei{yz3|I^Vnh{tRK60%YiO&-VKR+XgxKwB|?`Qle&*YW(yhV-QOMhydL zovaP)>Yu--IrJZRBiWR5l$`xlIw!XsPQWKbG@6(>=f5~(m}_&E(l?ff+eU<}a$ z{pc8{-c-let&~>Mu#*ne5jZ}pv)s_Q*tfyP){W~|%)#BI(*eN#qJ3d4@@?&+|2y`h zx-hCko2Z4m)4vUBcm6|$%ay#r4zKHqb9k%{Hrg5GscnT@tjX8OORKClg?CxAMvWA3 zcu{0!kVfPpNC6G)g<}C)4t8={TSFe&KN#L(R6pvn!qq4UA3j zr`d-^L}GX6HGmQ#FK~3B5_es2shu#b#`E}M|6XA`pwvqJyxsazQy;a82vvAKpHF|J za-;B;En(u^QprCuCwCOG&kqVJG6t80=n@drE9erU6!x1+*?`#lieVC4LlM#=Nh_)3 zimoR0aN0X<(9N|_p;hvwK8EkgY#f zWOmZ8Hv(akAX86~%aDnpJ^DIFkE@tl5>!K>1z(N|UPCVWn#;71tljt@UZcS0Y_UN zjw-}f~=7Xc45BtESe|ZBNy7>)7gncUf{gy6lpR{r3o_}ZX^pv!I$8|WL zL%G8j=zy$IU5$C=#O=LSHCmx$T$<*BBPx!Ovq801*L3m`|yjK82y*?h&G%!DLP|e5S)ajWA6HoCnW5zYc-enT9zSII(nKki~y1 z@$@WNdGWkQf3whW6B(^`a$x9cYunGf)JmE|J8wyTd+3Aj47bW2tb2)ZkiTlX+M_+8 zw~Q&Lc68u%d{Nx*e73&BNJ*uigvQYQl^CJ0_^!?!w#c6u_8~Sd&Xw2PPEILUA*OzL z+EZD)h3wN-?c;y2jeSD~lm{;euMVDI5g&4*Uq&v-y#=PkQ!;7zpsU7?bJV_22|s3Q z%CA+Z%V&-)2f8)wPc3IvyKyO6thQZ<8u?Mg za1LvO{1Vfs5)w@|a4gHDd9zncikNJ%y~bTEvTN3motj&8@4sON3{g>F$3Yk27igM-*N( z44%Hbh8Ec!Afdk}%^lQH%48D0%zzUt!sqlOOCnF9cqG}FFGwD`kCv7zYXaK-G1yhZ zG?3e?uf!;AU;r#E>=5vSCDy5IXa{Su;0jBdLO6Kbi#^Wp)oHuS@w#}o{RPq7(YpGU zwHS5Y>aseJRB&~;3+8UrcC76B?s*?WJx7T9jE?OBq;r+CcY0L5P%qq@9a7A_Q+6y} zWd;RSyqp6LA;Y3`REcCtGi&gQ$p9`mIEGrn(`4}d z4h$;M+I+FIAmk>e;Kw>Mx<(Uk$rDv0?nYUK7J)DWrud(^;QQYO7J^il8mxsG`<@t$ z-0yybfB0JqCzd^h4N<8P+|Z%Hpf*kFu%$5qQrhvFDH#;es382yHEn>;2(Ipk%v)t+Y_hvx%HWXb=~~3<y~TTC zS}M;b$7!Cq=?i|1aCQXV>AwF&Jib>h912W9 zZ5y&m)jm7Un^#KCfa9Xgnq1$fgW>C4>FAEyCiu%uF8w(V1|o>=q?7&=^r!La?&pI( zNHhx;0cs-;m*L1NcEu5;;g%<-&ScXXlXg;ux6wZ zmD{0|XuTTmk(kqkkA}OZjG>US`L{CA2rF(UQTD^VJlA5W^5RK+s@=VU7!#v$tHy`0 zf|JDr#6!o4qnHI^4=?dA5HoKNr)(izym*HI$@T4}Aw@_>q9J^_ZOo;MQ91mZ(AqSR z#4xNJJsX+xVq*9_f}%~+By`L2nHjaT;zuY%yieIaUUCJJ?`hR|loqkA#2|PNcEuSF zQA)?K1pBAfQz}#8*YrTPF+oq22-oYH5d(5N$@qMTdF|UM#Xzz%hr}f2 zImfUkrS?Y(Jnr1-x15=XF0&F7nHEodAz8RbY!)xFMg1A!8-iV6Ov&Y27OhUghj}Tv z%fPs1Oi9T)!XqAJ&Csn^qv$m_%F|&}s5)pSXpViTX6ZS~jVdl|K*bSc!gMZBjnGd3 z+8#TNQb0##j*m;ilih;L7%3@g#!x(Dtut-ED9H!+&a79q{OcIa*6qWa;fZns#GQFd zFh&LLA`7?9e*oK5bUKWLVb_V(v6hSKsR0t%Q|ri}KEajy`^<8Ojwlk2E>;UFe`mEl zjpo8B>$EZhE&`vNy!m%C(JDBAo=?oL1?M!b>-#LB?nCm;abc(8op2+?f!LTQtW6+z z)$|i$BeajO6MUC)mVDO}C=ku<4aj`W5Bcs@&Uiqh)mX!IZr^UzOGp9ty>H;$Fd3l7 zrgOY|i=$kT;{*HmXlZ{6$*lg6_i;`6+C?x?6{8^?UMEugXsyT=gQ5k36g#^3R7oV? z&_^hK`c4DBFDXU|i3W)>{l2{Ky!w?BJ>|7R0q*5KTpJ2PQKp++sAqA$sP~E@a8Tb{ zi1)A}*qU<>{P>s8<&&b!vzWeMgITyz6>9Mq?Sv3XdfyHL=O39g$9*0bs+5@(kmc2FcS9;r4?0}0nwqJ~FEhEl1E?>0 zcG5Xd_Rmk&bNmRb*q;Z&1MN9$@9Lnk5kK!u_x~bk_F=+x_nA%+R6SvK9Chqb@U~!L zJ7HJNkTonDT5wO=QBh`t^ja6)Hm!W`3uYT{9RvNWuvc&nrfLAP@{us1YMTbua~a_o zqOOZ@&mfYum%_&w9br;*9;LG2nU0mM9}|rlO=Gf^nQ9`lPvbV zoiw=2d3RV!?>d=Wy~yEze(|4`I;?K-{O8iKJ zT$`0bM%eVVrx2w7)Y!UY$h|G-=y>JKBVgf-%C~4(eWL+#hM2hu3}RiVInYHsmRv>{ zxaaaAD>=$@jenehh*uuiE3;}rZSiCITRFC@n^q)Rf8rdL&F>$dq={%Y3fnnOWI8w8 zACNhz%AdEUPYR>mkVpKeF}_%xr|pBtb%f%7Rpz2BBG+uAou@Q4FDm|1lpJi^=T|fS zM^W4czYz<-n6zejEx_%p?U>N*nkH%Hw0NH=Y*8}LbHurEzmXEWJ1HP!N5*Q-c6i;^ z+t#=4{y0K+#b;DE&@dQ?alKgPVz)nEV`^V{B+^JchX@n z45p%PWi&HtUd^TX8tp(Ti+{d^zahfU{&h4yG`YDYoMCMl_UG6cHdIe=4$}X8bLu*{ zgnt6)=ea%E)ahlEpVE~RXnj+osdLKROX0831aKAmn)QX$Z_mMr6;c0uUO)eo)4eH$ zIWslKe2${Zl8`q{s+k9et+2WpfU?r>_+xp4hKz!xjq9KR5uy(H_>E(?hp0Eq3sf(GUB#SQ@^(cH1FYg)$+?FmD8R#G5kx3$> zC{Isy73bxdQ7;j}U`2fXM>@;dvhl5xll_9#?S#e4;nOQeFISTH<$BB1-QcfE?gunb z(}5T?ERu`JFHNd__Z-jQ*3LL`pm@8?kZhV|E%N20&M!`~{OJUNkEoT)$vBp{^E17# zT3uGHkyo$*8VWx9f6=^4@fZIWnzz)0>Hk3Ura>b^WjZhtS5?HSGe^LLX+$vKP)-B+ zguk&P2?dRqx9cN@4L!EWyhu%qw^w4^N`aCD2WOicwtU71tf?-q`G-q*LaRsnKADVU zMRWc`E~!ITA-IsQ9OAd@{r%^9)jB;YZ7C+~QNxKb8hEeU9|w(dRKKzrC;v=VqAK=Dc4LrIcFY4(VG|7azxA3?Jq5cZ*!k>gGlBoT_+`ARRPp&- z`k1p)l3kr&+70+_rOevL^sn+g(mNDywtq{2Scc@)_Q%(V0d|HEmcIteJ(8Au&r3$D zOGe;O8PUb}=>&o?4tOw-f-D~Ov9naTu|fZphiNDC;Gd#j?bsQ5?f}bN|37`$z5BhY z(lV9JfOedF_G;_t(`~zZ-#GU5?AD7vj-pg>o+-Xlpq$uutMCzJEH3RN)8?3$syV4J zuyA$diSauY(BM=~vbvy!lDgLG!=Fux>^O6ZHP5g2hjto@-Pii7&zkqd@<33|e2m70 z%HnJeFqF-CQe^9q*QVOJR6FX3^E}RSBko6Llf+M}jc@NKlSc4(>|<%Rorsac$v4pp zwO{{?BJFNb7$>#+uYxjW4EykU;WJi8o@+D@mt@@&F@_-(uQ9zI!*znc2P zj$0AbCEt}0{i_n^pQ%N_ z|LSX^vIV-Ps~1MBChRe-MnQKzMqEm~m2!abJG|~|OU9)|lTmnKyZmak#yHdbK-fY5 zD~jILsB9&~?ZwB~6>vVi<~aJ!Y}i$_qfX*mjZ{P)*lWx215`5vlYlKJB%BN0DPzsd zsB^^jo4{vb!*rU=TF_C&@;RC?D5Z4$_A)3K@%?ei^C^Fh&-F2MHxeFTj(y>B3Za7e z<*sm+$nxW!vS*GfjSIQZCWmtek$PsS(lO-Q%NNZ%&=7Qm2E2vpS1TW1>+hGx)4c?c zRC{dL9+7{hR?s4)WsL`zx>tB7a&KeALk-naP=!e#N9<8INVMj%l#FkPS=+H9vrS!_ zV7*Fg?yy=n5d(98dvV`ed_CoJaMs0xu%~ys^I*p>`kK$1>K2OkV}bhzTScOl&#|;u zB%xNs$q6q$Ah+vd)$D#W)pZn0p5qj&k~gMD&*hc|tk<3IiVPZw*P*LlgIFR|`!KWn zxzYcru?u`{!R*h4*K2%-eC9BB)ar~S;@PicN5@L)QqhG#b6Nh~CYP}b^HWAzJA=R` zZwZf8hDzJog(lpF^9=^Y93M%tlY9>{IuFt#`Y)dkprb`s#+e>owmlx+3i=k(^9v!j zG!NxSG^2Oxah2VNC}Z5R`KRfhROuk)f5{jDDiyR_^+kolOx3gd6$tGm@0$rhJKjA_ zU=(&54U72au(aZ95{Jv`9l1s3JFOLWRM{+vyOVAyy8Q17_ssWT=jC1VuRX3Y8%6u@ z@|h`}fSU(Rof3}YN5_k!ehB(c&+CdZqjNg*_VbG0UdcHL z=OaqlU*9tQHRB%?2|MN#2*ZcA@=PCPCk@zrlV6^mwf-U^M`Li}a?NxsONMPQI1B=} z=H>sUKrZWzz*^K=yu#w5hU7+FuW01~7m4>T+T4<`tl9tfv15}xfRcjhepIBWgx zGLv-P=9*3d3duj>hg}4mQwOx=eL6@0ynt@Sv3%2otBmmJ=KqDaV{+o5& z{fo0Vn@NFAOpU|U3^j4)>p_O|X6okK$=TfZgk9H;udj}&@tz&yFj4E(buFsuJgW`T zjjiH(&&M&^KR1(d^=m#Gu9%4k0tIO^EtV*lX4F4$5la-ayroelLvJnN9Ui5CE0wWH zv9q)w#ko?DK-_zIMK~;aCzE3d3$}t)sv@qskFFmc6d9W-d=KPv<_lc0x6M?5+=Gl$(E0K`vy| zs0qq{)D%OtFsa-wp#Fyc7~=X1SRHy%RvEwL+D)^i%!ka8dW3vcZ;PisZ`e;_|DtXk z(UKxx)nrHT0%$5{ZoNSedk-{C|7!A=B%63BRC?0~hMDSIO8Dq3aW+mmRm?2k%b=7rCRQhA1$B*D(srEi3gQ z*me+2_N^82M42$z+O*g~unO7{2swrXTZttJJrUmZ&>D*r*k4e-mqu#Y51xx=eV=>mILs$~SAsNt^x{r2IZos$vy*J< zdHZ7SXoG&O@JL0FSp*J%evWnUQqk4altde)LL;cKp+PNXF(W!?@&`{NgRz7dSKE)veuM!B^yP(j}=n>6p-biyQUXos85$l9k;}4bx3aw?qapb^m zJ@glhRuqMt?M~%i!*=(8+spnx0nvUOE11W1a&CKLy7MBGi9pC;F-Q2vZw zft>2B>6Z zqKT!)iNmFKxBd0il+R;8) z(2=FEdYJ!WF(iMIL7dhMX4;&YFmS6B1eNY!w1)>u(B0$#<%TAj)58df{y_g$DCG#E`T5KZmpC8ygQSFuI_zN%KlzL`lSU@PU(uW!2bB8j1YK zpVI4Mpq(S8BwQKm7a&3j2vEfv5`OJ;{Xt8JZm82oY?dy?f(zfjEuFzewB}mDEj55N zfl?E?#C|#M`6pVRH}qQ0WBvzcK$yQRW~Aa*)&1%Ydmo>A8j%0A4(F&VuUYAe*h#t3 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

      V`JZqc4u~HXJ>Y&pcAfN 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°+rW#nmrqTC#w}xt580GIr%-aQ#8i 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 P4?c~){{~wG&(#0`S&*?a delta 123321 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 z

      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

      FZ376B1anyfNZott=*#Sqe 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

      I}D3czmHY{7)mfh?$bo3-^z`tYmtn_Hyx` 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�Y?jM$wM8?kh-HqyW{
      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 delta 51507 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%0Dla;f#LLW;CtX#0q29C0Q_6v8q{e{;HALNG0C$% zs>CC#TA=!@CT{?)M~`*ru^ts>9qtJA=)DfT*Q573^j;6kb+BB|e{(GC)L}ez4Aax6 zgPnH_Q$HMm2X+8|47`D1*j&SGQq24($$gbsrkd=`O2YCQSY88bmFRI0CsZXY55jUK zZa|f=Fo^NvyfZ4X&Xuq;h;<%>9UaU&z)sj{#|pf|&pY&s94A|emf2&sDGW5OyeU+iF4Ond+?`6yy5m}ete-SUuxJ4pH3{*<`8gU;n zu|BxzAb!{I3Lm}H!Fz}JjhUNUcm-{*z>AvLTG6*` z^>Fvs|BSgb@qCM!Hel9ueAZ+9p6G(_;VuvU9bnXKCa>f-!=pAM3N|C3%*P5RQTby> z%sSvEK61>fiG4HCIW8geK2CDLRB?&1?b839%Fh_1eFnxu?*ST#Kqt;6_!*4X+o1mf ztEMzmL?l!He+9)2uz<)VLB^0`v~A;(XJb8qIWndl%&(zop>2>$STKxcD!&2E0GAlU zx0t^E447xY%!h>uU}9W?uK*tg^Gnt*aRc{riQaz$oqY70dkti`Cdqm>{0b}sSu`v&`RH3iJ;T!LR^e20A>e+0wVsu+ARR_RqRucF^s+F;eb3xV@oMc5v+1a&`X|xqB&?0;@3DU+h56!! zOOWlg67Hoq2U(Qq+D@%mTd%cKv_)I3?b0?52QG7ugMYTHm8Ixa* zITlmggUndxoXUD(5jc8>NumR1Lg1N^chkf-RZ?o7Y_}Vhs1dQA? z`jL~Kj-$Wll6_Mf{R?aBSb;c4rDF2CRxKFZ@XacQO~iKEQhuMu+lBCenRtuaX<7rr zX*6R05BiO#Yk1n7S9@@kM-@N2=iHk#DM=vV(Ll>BjR7$&Auke&kCYJdB*{$(kEVq{ ze-fZvl9&fgAgzd)=}?N$VnjrQh!`UxV#Qb$tA>Y+&M^MbaatTH9cP$MCqvbCkfGvl z&;4?z%rKQWclLL7&z{{qdmj6pONNMIXg0k^zJkKC8k4cMyDemL*0nWmG==LM*R+|E zP<=$rE3@P>~_J1nwX=rZQWDYj9)vq=Ep$+Tm&GArk z=O%M1)Uq~Yh7`{z4l7<%yrlSs;$_9Fir28T&5X3T9sbqQ*3fKjwxVyT9hz8wdwcp^ z#S9w<%(O|sESuckxu)F)+B;j@ZEA;;PutSi)?zbgrrB(sH@#*Le*4W~Ghj}dA^cu9 z7k|tp^A~dkziaqiH#cm8B^wQ#VrSqt+h*AXw!oIz8e3-@Y{+)l9-BpE)5(^X76fcv zb?}LR-DwBFyM%UwqVg*%i#TOreocUb#jd}tJijQwC(0|z0(^N%er-Tvf)(Wf$%PLr zno(-W2kKWk+K5=GKhldrPd+wpXp+uNrhh5)fR1M#rqVa6=M{~ zD^65=SaF)-bk#70KBc1+#c)4WF;Ou|F`)Q}-pX(tbaQk>?_i}&o(|8*dfda&HjnP` zXs9+ob=>QMX0%h4teynN3VGFmPc=T^oFO=hrZ}A$CnW1_~Lv4kAE}E zqmOws&7(n&c7=8D9rDJb^q@yQ-F<&1x_#TTk{>>dhV2t!uZi$p*mKD=6}Em5ew(hc zNq5M`jY)dK|Bz19h`BdC5;flLUDo%1-7n@Iq-{hxc1(NUKc>CMjY&FwOwtKsk{H0Pp1=@E#uIpYSREAs^=-@o%I>TKNRO z&d2!s(rz9xDcmoqGE-*Br)9Q$M$+U_c}(VziSkoAZ{uFxg`NAM(HZ_DzkkWs_(Kty zAOWmOlMKm~FGwL?gP<&zr=>xjkyhC(J+fV1klnIR4#;6SCdcKJ49OW8mWy&p-jK_3 zRj$cM_)Wo!VB~;i7<-)k$mbq;L3wy3@uv8lRiw@7FYVCo0>$8rUfHRq?3aT$=cwB$ z>Kx?v2{JfpnC_E9(vR~8<$nY;I4!Tq8O#n+bi|T$4Evks&ALY z9Zq7;-mtz=J3xIVuh@fC#6oFf^AmGYN?ksvJoCu z@ABEOcd_CS#lv<@vYwx%t<*uCcAm}UE}LiPbGK};ld<=(B)Zqsihp|>WhN|TWRE-3 z`|>0!$LY1(<4i@r=k|Nbhb?8B$A3^coA2OQjDx-pGilszK;s0_-uSA^RCDx@vDy0e$QY|&IRBC0JEQj<0?0uJ+yY6lL z$Ea^*3KXwGJnO(0*nJR#br<=Pr`X|#LJ8U*X1W;%AX_>5yImyRE?cvK4td7i%kFc|Ua^hcmEG zl{|@2C-ONHdj_SB{B|C4I}7_)%TpNTBG0pNRt>)4e(pjZ=iuC>vI=u~$p3lJp;lI7 zG#_t4F7#O@^?#7;mO1eKLilJ6blM;r$=b<$7Oz+z9{~=b24LRKU*R2i{}QDDm?VpU z6QvM1NfrYqOA&C26aycS5@52F0;ftDaGFL^x>Nw?N+mEus(_gi1ZGJ!Fk5PXIkFTu zPild=vJ9A~ah2}Q#o9%>wounD*0n{twpiDe=-N_UTYsi&5oIJcTjC^M5?md}9o&KE z$H+L$xbKjQi}#%eIh%}4MMGU-XTu6_GPWQ=8H=y!-D{Bm;y)bwRbK47iu04?tJFFZ9O6r6kyoksevtO& zBa%sVOCc8xuELz=aWW{VH%QUE3#xnpyb!LTRSt2!95sbiujXOw=3_oK@3=AK^ZpH- zFt4gEcqdW6lti-BKwp>Nqgfoz+Uw!GMV>YxM}IXxBbnK!w#vsjF?x5x?c=;t8Fvn# zzNo@4&iRGnO{|Hf@v6-P)p43?o=WaplmP!ZyzY>{NGu7aj9c8uWa`X$#kUmSSE)8n zs#T@3l=mEoM2lZ6_joN+ zDSv*X_#egF4%Iu|u+AL)Zp1~#6*?YgoM*d@a``3Ls+h`nx6%sU32rgJ2rT1WzzY4p zl0viKoeauF6ci!Hg0$Slhxw}6>;BvDANWtGJ1+BI`3k?ySNR?FafRX>#p3@0C1Wo> z004N}9g9H{~Kj{qo*)TJB*zVeqskU0002W@7lls diff --git a/fonts/OpenSans-BoldItalic.woff b/fonts/OpenSans-BoldItalic.woff index b62b33971e9c0f98c64fee78a58b1ad6e8d3dee6..f1ca291ee1549a28edd438ac4fc0db75fea3d7e4 100644 GIT binary patch delta 66563 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 E0Q329vj6}9 delta 66542 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 TIo#jqv~Oe!q~82qUI!WgHTp|k diff --git a/fonts/OpenSans-Italic.woff b/fonts/OpenSans-Italic.woff index 38e020c6cef2ba8f5ca44b5d713bf21cc526a5f0..c42fa05eac00fe938a34b2b20991de3dab92ff75 100644 GIT binary patch delta 38934 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 RbPV_wvJ%7oKe<4~QUJo|_80&F delta 38839 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 diff --git a/fonts/OpenSans-Regular.woff b/fonts/OpenSans-Regular.woff index 251168963bc1a4a9352a41d21cc6c582a800f12a..e62e31fbae0e4a69a574dc959f273a0db7c20463 100644 GIT binary patch delta 67153 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%0D)i-+x{-r*#>|@Y`rj73I-V z4I%9>4OKsN&3GLQ96JU~x>-9bZFb)?T50aEDLm`-J$`5+1LAMIF3WHimr1M5{nRHF zn~+ovdH!cf$Gf$7(dT~SXnM0;-SZeL*cRM(;w@wxF8p54{%^~1FDJ_9(z1G_x^FNf zr_sW0D~YO}cB*P9n;mWLv4P})$Uj0a8>0MvNQvkoOIe_S%ZY5{w@Z`Qf(MfO=oyaY z%^iMG#>ky728v-r?}C`-!W(G&!4q+K->0vT!pREAcA3A3CQhgXhj-O&Ca*Ht)El3# zZLWJxoM-WyJ)AMJpisCK)h8O#CNDO+dGa*Ecy^S_^;A}PH58Tc4>8?0BHk*#gT3Z16o0Vm)IGEOg?1)@!oHRzI8?0%Hf z#*wnQU(%#gov`HcjuXU*a&g!lznst6+ZRPfcj2&SYMati|^b>^gqf z>OyV8c16eQo%;g5?X4JzV4AhHEu^4LFFPuW-4)ksf|UVReXX2|3fI^WUY|!yv^X#WV$S znt1S@7jcg0>?|)GBIj5FHfd^Jks9bU0MmiSoDtVY$wWeI2svt)ni2}tC2)GJIy-{D zpQTwn><9+yz0?SL$ToUZ>a~ujKO5SV?WOMp+7OGdK?d`q4c z(5gGiF7s=rCDJT;Pdd2IlZ(8U_kf^p_JrZe;gOVR3sb&8>lW)IUt(vd6B%bCUg!XD z0LJoAM-r+=7WaI;bUH~k69TRoxXDBIR~=M3$u{FJMv?YH9AtgS1(V{hGrZKIg;?Vc zX82ZQ^zyyyvn!{5wn{7>XWue;q%S&f0U1bF1_C?$7nw=mG;!O-7|Jvfy0M!>5!YHz z+yjQi!S52bQ|Y%4=334*br=FafpVa)ljZXAi+ZfY_iOhftJp~}t9=XohO>TdHKQ|x z`w9+%d8M+$AFZ6`d7Kt?m2;ThVrs{hI(dn$vdO2tng#Qkd35!vr(;a72Nu&Z2 z7C5IqQ3cBuEbf1Coi7&sQ=c?*f;98{HUA(uTgvT4*^@3$R2e0Ah zYQ0X=h>U~uJ2BI!1vi=5K1SQqhr$DVX%Y0=0Hx;lGIQr!pGTXv#6yV}`TJ3Ur&N5` z&fO^do%L7iIUT78uf$B4#?{pQDDKI3uYe~yzASwo8MdwigJ3z%v1NTANfw_Y$;@c@ zqV5XkDTt4*i+w`tmT}Nw&HQWSj%8moAhsVx)2~Ewh5r6J6#D1OUBF_1jUm>&p)i&OeEzlr39UF9=@>0Oz*19K;n`uqI#c+(r<#ia%CnxUS|qFLO|~tr)ANo{>?m8rISQa*fNz>9UQ}#(4S`N%P6a zzjV?L77E(dS`&^J3QB(I7>kz6D6h2+4UVq8S62=d?af}}JZ=X<`}I1c@Y$AT1fP$$ zVsvg)x>wuK&|334ypWCuMPU?2*gVqByH_{hJJ(`lC>&`oy&|6+NQ^Pey%@X%6z7Fv z+xkuP5GLgSl>*R2NXOnwqY%Y)r&nCXbu~q-bL)~Api%J=M(eMc|(#kPx zx(MkWP6*XnTwuHnbhL~}iijtQRi{DP<60^-{T%yzcJqwO&OW*c|KS$B9!23r@ri4IpM@dS+qe4f@?NKOg! ziNI!dY9F>mATo1Y>hNp!F!{~65VE?Q20Xr4ID3$kBgjv@FBFypIuv~w799eSrXT%x z0DFNHcLM1TX)@A%JLKOczez)W^s$?uptC5785`6-ymdb4TH7txQ5~+o9z3kOZg#z# zw_S_|T13`-S%^tw8QjVR$RyY%yT;2hCioOo1+Lg{WIYWXC~jo4RX76NQ@*E_cVr&l z${0Pf#nWb+a!>NTjm?%Lu<*QLKaOXoNmNu?84cIQn@k^mp-o$eu*u(iQKvi|P_6N3 zOqj2IDo-0X#;}G@?;fcA!Re1^0NB3IfQeWXvM0Ocboj#~&7oZ~g4B?TXQ(Pz#$dvTt}8ZH%uRJC7T@Pdq*GxGpFAwC zSLCJ;AS!YQ9FeC5R*S6*YyG4#8cybXilYiu-B)>5IHwxJ8ZS6>3L~7=>V^;91jb_} z*b=|f%|<*Y1!X7|#HmO%F#!j;aWWL?(pXpAnegLAS8^|oEaN8jc(dVx1rA9gIM1?$xWhc4KnNJd#Wbe`9IW+v zv0vyOa6z!YfVm`R0B2gyI@+n$rqLT_8ihXGKnu-sg7)ZxV=c>aY&nExf_7{Mf=X&e zRz_NeR52en4>#&s^;v{g$(;FL(&Kq)v^ZU+Vzdt~{}-6U691 zcqOI|>XBFNG3Q+Altqv{wUbJ&sQ8Obg0@P%q+MHFo~`IA#>$_mfj@WP72mDV0rQ`R z^ESo0xdrg^wCr8QnmMUq0!_K_L50-pJ+0JJOMPB`(h(A{>~lPBc(}z=prB`Jm3+nK zAuBQ~M2nZbXElAOr>q-ph{||n#&9!hATGk%s9tqL?`WBGI)XnYM*ku z>@Al;s*PY5+IqR%arW8m&*rBLFKJj+yPd>@-9=?4&=K%b0&m1F>bVf8 z8pBJvJsg8Bu=O1FKRx32Ym|1ptmBJ+p;NLNcM{y8om7YsS>eiQ;xuIim91qe5H!WZUE}W1d^s$bxrm( zK?vhY)~}HIm;cTHZKaAm8GJB2d$qo=kT-ldB>d<%m94}>RbeKax(L0P8{ zoB|@*8(k$Hu4E-7paEV@v4<;d>2r%?VA{F#A;Eh%lk`E!$yudOOe5K&ny*#NuHjlt zRyLIJ>`acY43)$34{7vGhK#zZ_OzEpi_y~+9Em%CSsSg(}z(G^y#5=xjp2RJ~d&X@@P=}qjTZvGEfdP{? zK^BdoxLddo+Fv6mTEtP#;9wYdc4B%`(`G3Navv%bZ9qLM&cIfEFM2zpI+S}mvYO@w zF;y$@2MLO!h?I`5%QNDXDtQ6)H1^dae6{-a%1b(N##vCbZP) zkyqM!ZgS)<1K3|W<_%j%?~LP3a=g~s{umK=9{ zkCnq-Pvce*cqXEBM|_VFI6+d8-lZ?!TW8{GS+nV|^O|z!Z_hIPiB?ihD1`G^Pm*Si z4ax@-MN>CPe>n$W=!T(|qggd;Y1)U?0Sb?I6Ik&_bU<=h)A4tnsq&BTH+jHx1TF3br|FQ;W3DJxl0&zooKq=mUkj7zAPJ=*v}ORI z20{82Y63>=7B1s!#!-6_uc7rIzSEj7xTHxtJU)DAIdQe5eH(fcf34M06W6A@i3*7& z3MmoO$8r&qN)c1VQYd5y1#ii^`#dVoWXJEb4m?+l5(X-~1jRftl@=YovUZ-`M_Bg( zYe2pu{T0z|#PZ$6eZ<*7*Eql=5AgwgEIKUy?#$Zxs5bg|rbj~-1w09w5vsU`0oxxF zP|?pp+0SLKJ3hzR2if$KdR?JR@2vlsZ66e}R|?jVmzSsbCVLh@kvK+B&EBx`Rp*uT z=JNDfp30@YYM9EUsY)qpq7(Wq`p;*P;}Ni37Qb9=`+F?d8^IX;ay-#bcUq;$(yE6<4$Yw1N&X=`rqBs^;@ss>F&Qq2rg|h4%2p4&>u>6CTPziCB^h7 zStbo|BKTp9P4`fy7iQ@<-Q8SUSih8I?|OC^wA<=e?0@l$!Y7nd0APNnVSdhto%EKCkE$unYL*JTvG3g#CR=LtxPSGs~22r6>xq0 z4;D?p(AO@%|ErSV|EZbBh^Vc%{SsZ>pA}nTa1ePIu$@z9x@b7(Ab4x5Sm$;4&DjD& zX2W{uTII0l>f^a__1?1k&vtN?>*0rM#~W8cbnCfh&;gywzpUfRqq#B~K94r4=D}8( zr?6eZZNd}6qr&#t^$^A1>9ulAi|eDAy?~>MD`xH&u6`G_k@ZpMb#bLh=V|8&pA$=x z^Mr_6xkVHan02T7=KB_xHka$0#fI^Q<%S;d)Euh@s{*T*h+h|#L6x{_i4hXVX$NU% zxQDc4?BOS0U9WH{RPwSTYT4DsFr3^U+lbW|=f_=sU$o8~mrOV=w5Pi-UawqJ9|9x1 zr<$p*!JFVW@~E!#G578pU?QIGmC1`|=ZQ^Zwsg62?sD!{y{9+0H@Md)*O*sYk{kZ* zEt`#mzZ=`7gZgw$(vo^U;1%LNbOa{xC)nS(o-N~;?8gM0BF)lJrr!J52Ze6FT}k%1 z?*G8c>yl=L;-#4*D5)ahMpU?%=>$k$LGMX#pcDiTUm0_G_Ri1S5k7BxPEX&DEG2md z%uBb*s+f=oH)e%v%)64Qi?8Xsw+-YEIY^$}%=Lyb(YXuwb7>H~j*1Tgmk0&`$z#yg zMM%(vfwoQc6m%!vBaQhf>*MH_V^0hW03rL;IQR;6*vi}lLsKtM71PiCH_$Z7H`NZ~ zTxY4hH&mtKg?Q8gc^DK~Wn^$t}IJ20xRXEhIvc7r`Q zK>O|u;ezO*y0eN9b7NZ&`wDr=8o5XQZiDz{|IUEvjeVBfV>UALKC#Gi2YyL?NzrZ8 z>_iCV19`1Sa!R5Wn-Pim0b~L)5_EMo4&?yo9byZ~PZ09`+Z|tWcipUy^fOQL!8b3f z9my?*4Xxe)fp$NEhu}GUqTgPj4`PcMf)EG%Kxm8zu%1-B8eo(MQ{FLQg~P9S>Z}{V zTy@9eamVw)88aPVv|}OWfkCeqIHA7u3RydoRDBWb&2^^sw-fIkpflKvYE7&@3pU}R zSIaj+aVbzZSbD;^?CoZ<%eV)-ob>&O#@Q;{4V;@UBU$qoK)?*PLkJ{-_VF`P$M)Aq z3wr+|T%mC^Nq+kQH}r0SLylDx1K|Q5v%l1W)QtB?zcswo1@42L($s)$a~JZ~U%g3` zghvd-ru9>_pMSdq?8oMfVyk=w{hkEDOu0=lHuqWZGgy4aac+LO^{?w^{hck!aVLD_ zJK4y7hD)w~5-ClRIeG||w>|0te}#YiIbqG%Q|=%1qWGY+1%B&7n5@ZW$Cxa^HOLaD z(EXAA4|96qt@w@}C?(obxN}!Ob?;6yLLFQZ=E|ufACI{MC`y|?xsmVvv=)m zRC@P&7I^z<8s#|RJn#B-A#{!pqzqpeqQgvQlT5VLoZm;4H z)uVc(-m=kmh6B`vulkWy!Z%MUl$%&I8w*H18GmP$i|3j8`7MdE&LJFAo5VZzz4f&> z_03Q7=0rSzm1u#c)h`P>WOHfIK56SbDcnbs_{ ztp;WPU{qjyo)`!LZr0OX!P>zBw<1IyJ))&g>XDXiTg(Eaj@V~41O&`CZft{-{zlDYn-5xO*KmKlCh7o{XQaFU9Xl3x?mLs zxY}>Oc&dI5H^fXJJWG^k7*CGKr3`7Iy0EaLkSX^Z=$QZvA}sgSZCq$ zZf82g(aC50%{Y~ z3HDmIMHNoa^Dxb~6|)6Fbmh{Zx?~IW!FQVtqYH2Ga%gwi>(>U}70JQ~p=%^byYxio z6svKZ4G|;OM)vPYt&ZE2j0m;CGNClD&9Iq`z*SP&lGT-iunh*d*&j;}#)>+yl+|?GJEnG)JXZ>aJ z432mGpJRMg;kMn6U<*o?Y;pBX(ybW4PjKKhyVolVqBD@~9Mvhy|LcV6h=BWP)yne} zH_Qh;NDq{Wd$b68>3M0PQidOOy?whpfr}Lk$(%GebX-b>e=C{5pXm$B*+jIuGh5J^0-DllTp`UGK`%iMzph?@W@R|8~)Ztzcww$)Cms+~J$SO8R3s~^3 za-r!q1Z~hBfciFe8-z`(lz7g;7Zrpy1y8h1>UZpAPa4+CnBUvUq(&dubvp1?NXsoS z>_j_h=skR)`gcPXGO@Es#Mc15c%^5Q(Hc7Abw)Pxq!#0~bs%=u6IHcK$MiWKwzw^$ zh1fDSN(?#H)DH5Iwh$0ZY})9XJ?id)(4cwg#7O$@B_;b|d)OAdi$?Vj%~;yV*WG1L z1SsA52Yo-0oWjzF*4uql%G?ypFx?uxAurM9u|g5ol2V}ka@#knb_vw;()Sq%W==Bf zZ@fk>xGPA>`{$o&()C$u_qV24WIIN>`+)u>U1E@ML)Q|vxWYMHpza-342?^G0pNVl zDU(n1ktm({f+4D!`r9bFqeEg9lGSOcoJdR~^&PPHc*Iz|E{@RmSiL^LlHQjW+}gqA z68tlowTiQNSTBr)G5}r{%Hs!ECpcFGJYNO!b4Jg@;T=_`drG#^5)I)yqsSSq8#w)! z8h*$z;xV?Jq8enYX`+oKqO>=I7Qx#WQ2#jns6Ply3woo$yQm zOWqFa!65D~mTn90)hEz1@Yg1pY0m`xQYzG_US0@C^*z=RJLdrAtJX6JBxF$ zIb<&)`eVzME%Kb4%FbG4g$23J@0)eTPTZTHnRaV%b8;|FGt%4e_EK2n=#cQ~<Y_N04ShcD{_$=en!f9YWB!26_c7{BefuS3obS5l`+AJXZhO z*E=ul&X&Lr(3r9OJWm0N@rxB~FWWf+{p?@e7vPf(9sCV`DT_T@o#l%wd`-LUSW5u{ z%~Lx#%xzm3FP`s2bx{?(|SMl2Yvu z(`QW-YCsD|hz=G`o(~59a-hpq^fWbC=hsZnTs9mAfiKW4*#ZcUeC2Pr*r|yd;Nx9> zPq+)L26`|zq)xawMrN=>Ni>@0#ym32g1cqkQliXSta;vU4Q`H$Qs!&3Ydftew8o)p zIIOWeQ#k6_tZ}V!v$JbepG(Zlj?JKW2N|oO?*W{*a>MM|$m z_3tT-5+A>HD=KDza;7Pl(}rhGo0v|WkBSE)>)w*qpsu?__24WA48Bhl}< z)ZMQi4H){-A7Ip9;bcJZ31Gwkil-!&XMcDohUdkfB~Qb%!W8wHo4EGdjhi33x_{30 z(^EZNHKy7(UjP2H<_;OeMgF;<4NY${I^vtZi-5cs;+d#9 zlBwQ@2x&GoNUGQg(%yle8U#Owqz>WLo?Dj1Q|CYt6GIIXEB<*(KtO;?a~0-b#LXk6aEpgBg+_1_agq~{LzGp?sQ@-gZE1IBQS#>LQT8e{cxe3n*}X+?4RHODu>4c zo^kAjpRYP9ADVWXWnT(n!P)Sxin>sQYiQ`HEn&N{^{M;#i+*^!i;%R>pFyjfurS8z zd<-hIFD!*OFr2ACi{ub2L|<2GHL{=T&te6qob+*-N>eynTkf8mfXEo7jhM;E(5{$? zSz&ZLykH?r5z8=1Ul<6qsn_wz?p6lgrZerX4ricK@l;8txqEXu14a zYBWf{v^m(Ayy*H^wf!_Vk4%Zi4WQc34(&UcU{D9QfZvZnvAj3A?~hY?#VVF^}oBXvWA z{ej|3Wni$~MOo(`Xcw|ow;dxD5Cis$7-y>j`|>IFF5X2AUkkjE{LmdA5nBh=U$Db` z-L2E$t{1R?ScnOyQNW%#;LZ`SnXFCZs%`NWElk8@OySIOp91cND6rt0Qx}ZLlD$Bo32oBPJ@(SyCZZ&Ew*Wat8O5^guiNr-mH{+@D)UEi9wKkW1WNAuU1rr+{??G1dWx?iYC|_7LOcvSJUk1lb?zI?8XUxkE|FQ#<_? zk8j=mWRk$X>a*{@sp=>Pdj_ZDI0m}dL>Xozf#5vfh0bwh@4gIca43Ww%b`!#y1(=EDA=mjQBcm5t!vu&&M+ptSw*~ zVhD1YrMpa`)9hmp*}|AH_XX_fXla7z2-XcNK@61Jes(&rQO{D}X@ajUlolaa8^zRb^zv0*_>nl|lfT zP$=_zP$g!&6)9VFY!x90eLow0g%h@1SA2Aq_8A&R3`b2C!rrcOT9Gn^SnrzRi)yOM z_)`0KA|hYPfG?Z=oGNCrkT`Z+ux`J(1L`jyaCD6`e{(wDg2}~mAuWCLeDwpuOLfQF z%F?p3)gAM*+T?sT!53t?r#UU(XI=%Acj3uGGSm3q3V7pNcu52Q;f9JbHUDDYwskf$ zCn6dG1(4#TOEBuAvLaLaAxHgbaC%Kct_rQY$zbd=mJZCOxXKY;ibL)!Awp1F$l&2W z-Q+6lQsm#uRC1k+@^blpI-mhaLfdGv=h$0HKXq4W3O)r^;??+sYL<6RwH`e^Z-we8 zC3TcpnvqwHYq1ym$O}nVGvqxB@EuEqW_}-YmMZXoq$&$>`U)z+oaT&^{05HpgP+tB zjnV_u#afC=43~}^ef0fzr*j^ErydXYKYV-i< zfc~jt{oc!^Yf)mZ36US5Gg7v8hkrtP+24v?p8Gq^mEP3OMaJ%=U@WqUsI2*5xj(#D zVxz5B1Ah+i1X5yV{rEh8L+-0ogMyCl%7-V%4+dEI*xQrzh0mA*{2#fFM3_?}=ymc9 z;Ug)9+jn!EGzA?zF1Kv5FQRa?jp;+;T{aRIynMY;{y`mc=~0v=EsZccf9bM_Na0x3BMY#MV5+3#8YZW%cZLM`>^+s|0>og#;$7~O+>qpAFwhV-I$xH% zE?juoYVNOG`#1v6@}ArGS>CJB=#`a-r5YI!9+PV`w%fjcQ@KA&4+vNJGEIRQe3laD zx%QjhkgO~&kDL6hDVA~36W1iZU+Jv|y<5jZm7xEv1^t z4z|d|m-&iP4JR9~UMnj~9rcYEWhTLPm)VqYip#Cy&QabCL3R~Nor{A`q9gf%q`oLm z`@01svt+_oENrin+u*zcgqK^5xQtUm`>mPf3b-`JY@I_D1Px z9+iWj;&)}p2mql%4f@jGh~^<$Z_6J?ALTh^XT;XYO0jTSJ86r5aGKJSca#Oc}%WT7=>>=UZ`?`JN z{yPvlIvyo+1kp(T#Tq*?jw7GaO53~LLR@SnsxeoFs;Eds#RR*BOZzM>HPd@}bPS3# zf|~Mgd74j9kcXTdv`PHl!82=QI|~oW`Shtkf-SOiKEW;?q6HR8*>WFz8Z-EWP>l|` z40I~EMS1+RRL5MdpRhV7jK+=y$5w+p;sKyR@5ya=Ia8XeY#bLGh2~0-?q=pbKkddq z91&L+(s#b)!|j;%vfr|e=X*%!C|HL3`aYxAd@oZc0Hwk70dd=P|5yaqTd06J>OJ~r zfbm4UQ_s_0bU)vJr=}`P{py5Xkb{eRi9US}cwPR^mY6aHh3_}y3+;Ae>NW&WON5yOpmcW)Q_Er;hHAF_TAiw0 z)xTH5nE9c*VO>v@#k&4=&PhUQ2?oTkg1`I!nBIu-d+T=e=yMxw?(|itKqP)D=LNDifkxY>rzV*NUXA zx9L=nG@|>>tOxyt=Ott{IbnP(aIO>NaNwC@n3xQwAcZ6yraTKTrV622=>cTWao!it zaW|!1<8|_}>=+++vpEVJY;5q|^65v<3(}7cTN$B_x&U+6Umiv&^A0HmH_e2P)g*ln z&i96@@4#4)FOczM;rfCTrv4@-(pxCA7-A8`aN=xpS~S2~I8!E4fWCHh6MRHjfhK*v zJZA`W&G|fSR{5JFi~76}odbq=j>p8Vr^#4b!GsFX+ed`G7}Um5qp%8P8HrM$1T{_? zWY-$Ae9w|t)+oVZL7t7AKmTrqHD7!ja2zcV%r=Za)|@HfT4$qEFU2O@Wux7FD+m-= z=X{Xm4L(fSVvH!Ec9uekS^h>@ty8BXk=X~4j}|-pS@JU=KOlesZ38k;nTTCBPyU|A z-R_F_vunWDQQ8)^b1$>mF-fLK?bQfgd53#;#~}*E>+!>!+m_;Lxxz=ewW>+o1D|C> zMgR1_^4LT$@_p$2L&Q5^vjkLjOp3F$-CYck3T>I@wnd>X*X149D`t2@9tMQ^y{+x9 zq`vtP_9%FZAmH>DFEFzUH}yXNP(ZK0S;H*?6R_1KzW}W+5n|eKOtyWpokZ+L6A}0)GPCcq^zEH)lMt=ooQXtKNBE<@tadU+mo56J^Ai`in z<_hmA{ng9%Uv{;(r_N3T$6vBvAzxZ;e*td5oVBAXpFFBzACU{>F91sSJiZ>KYfa=fb z#57Cq=>V^az&nqQ(kvzB+!;mK%$EF)QOu>sR{G|n0_tei(istteiu$E6RxL0G)KxM z8X4TM#IfO2e#2dBLH!7So>u1b9iNLSF|+3mb&Zo!&<9nZi8QcR0CTd86s z3lKeCh4z(-x33hGP0vVr+E*b0CDL66mXbsi$y}{G_ULfCy{&8$i2D3J5VrmC^a=kw z*8bkOA0M}WFp>Q5829~4lP28-`eUDf(yLdv(_dcU{LJI46dwo$F)i};W~6Al_YtRcY*_^D(7^v= z-y?3V2ZMj(zI5|{cKa{ezrcO)N;J0>6p;T54jw`rxDy_PuT>#dtL1Wq${lhkh1k_d zb5V;Sltw2u5HiXxd_TQ>Wf9o$BDaHktsN}>$2aGXoo6mpU0O4J=Ws83JvqX@hq<)T z{%Y&m&GQi@kB1x|KyDNRDOsr`w2`5nEFI)a+2pjufNe;%|1BZJHm`|J|8WwiWl;zHI2);c>IxY@YE_Sz__oVZ#>ZWUZUI_`)!-e97hE zNF|T2JHN`1%&)To$4sM@=D$52I>Nw75+!RfO!yvMM6S0WFvW4@c96w z8~Bk1W@4{@XcFsWW;>rCxzLP|o`{I?{W8O&Ad!J#u0ibra6%M-ZZ1IA<8t zJQQL>5ak}`r-bvm3#TubL~!nC%B-N!;afC*lp%vc91eX#CTm2w+??awM{WivR7jc1 z;KqG*oST34d$~@fU>T*x;08pefm-3Aac4zZZ{_z06zbjZilQ`k_g;mSksV1%oT&Hqo|gSDKRyJicN8oW@b{GAe>O&rnh0K0r@Y<$iy^|BK}MF;J*+)q#;4( zyX_V?gR8#?zUI=dfyto$0@s^d2BqR7@~Zt=vah|bfYCW{Rx!N)a+V_C@rp)Jq*dP+^Vqo^6efkzeu%ca@xoDNS(^33nDiZ5UIGpd64Bxis(s z_aQKGSJ_7^A9*-DTK^QJAmyMv7pAb>lqlsNfgN)dJ zk7u;Ni9ZA{a=orF->m$LMY9higXtXR7Q{Y;i6(#wc}wH54Prr<9tbWE2OnrPzvlQF}`E3u5+J?1Wp{vi_vKtQcE(yz9JNeKVu{e8wtt~!q zVMvnwwn#j4(y;0S2Oxx}A*X9#wUGM<5y4iip0MepHnqmz-(6;7XoEp4a=PKrUlBZm z5Lpn1Q>z5Gk4Xe65OKP$7k~;8DT!)d_VC|R@3$;zi*gH`4ZfPSI(^lp?c2AqT5ewU zLQ}yQ?sM+zXSpSHc^g@+{p!$v=hjJH{pTmIz4Z>nz71lom9Bx9Q(kt5Ko|(8C7$c_ z40L0$f(lNK+4R}M<=<^C-5wVozckghwST`2lLxI%O>WZ8eRTaL`&^@Ei#A}y^_JyV zM+SRt^6^9G1XrUIAr=fg7F1H3lCa67{{F1UrqOzM@Qb@*AvcgzDb>h-xn!_FaNzOb zV>83u^Ct#DA`@Tx?azmUmJAD!)8Zp5JVpMsOEb^3wp`x6ZL1de01qhVjL}7L{*wa1 z<-dN|6*n+u)!i5TUjO9#d#`*TK&62=FhI)#-dt~%B_v9j%|oCYYzPT*PiNG3*&ql# zYV;r@GDeeR#p=5g>@w+XorDj@s1xaV zH-T9o5$ragg9TA-5=ckma0|lE!Kd$jw{&_$dUkH*#1U7P`KBdl!R%N3LO;449UEsc z7bM&|e}j9M`*G!e`KsR2%dZzqN!xO1*6g{nZ1d)G+Wi~Gwt8p>CiET>ZfdKa**2Jw zuoFGaQ?d`;5_|WF2nbPaS%2yFlH{>{`(zuUtFxum3ceuXby}R6k<%d~q$Gf2o zkzQl`!7?t=zM2%x|iE-5YyamTXBuQ84nrpAyHM9k144(^)(#~c zbOoV*(;>QYXKjoEvUrt5LUgCA9spq|$V+$bLQ=Z439W0Iw1Td=@g`4351+T+rt|ke z$`Ux$aJT|*E%_-#&{~ppSxZQq@!n}fw2Zb(TZU`V!}FFsH*?D6<^AS2H3z*Rk%hWX1WNn5jC z98j}7!`5OY)7Q)zvod=tUBi9Fefb=>Bzi!!c}f_U!NwnmFN<3}`1G=XmYbudywG@Q z`%4JnGzeh=gwP>f6*e7Yp=u~yMet@r=_-3txErJ-H5|>%zEZcg(K36&`0Zt%ULJX}e@f1dferIg7mgjfr36HdUzZ17TnX+V1q==^~^&gAhHr9$nd(<$8{@em>bvIkHX zLl(*}lT`U?s<|xU3 z8psIual_C3;+Y^7$x{r!oa1WgeEayEL-Fy4v&pTGpMmpv5G3nO7r@hlaO(nDN)hG@ z$s}AM6=X0zzR?s^flbitqOjRTLJFba{QPGmT8WOh<7UvfGa_1{(JSsh$Gvf4kJ4Ai zh*@`yUiQlQJMO+7jF{H@D)$}ZUMIw5Wn1oxAz?N~Ms0-4L44mqp{szovM)%OxF&BU8D5#g zy*X~7R<2n%o_ml}5ef+ufFC#|Ig8a{s|zy681&Es^=9xxOAD*}&tnLGaW;hbt^;DJ z#K*_imrz59K@W(_1W1z;(S<==BN4gz5Chj?Aqv?_cEPyhiIeNcCynbr|6FZKeMw1u z%BXYP)m3CzMGlA=zfdFBE*uA9b1TEZN|3i^68Bm@+(l?*9{0+GwaEG&OP0`KR2kt3 zp^b#ZCZu}d7f5auSO$3}(#SNI2|^@t6WJi9(1|aI z!31a0I5aZ2*jx3{_dd#vM{#=bx#Y3OpEAYhJu8QgCV3We;18L9dxVM5UiR`(8Un>a zs9KEW0RmfyNb6xhiFBq!N6;GiTG1LyZ1VDyhHd=|HclD5G9!7`z{UlaMvS^NkGXf4 z3NW|?2==do?IWK8cIUx=(P<}|5-o@}$y4=b@_MIlE}OFuak0>>5Xz&2 zNFSE?(o3VCVP1|2T;UtjxR(2L(MRR=+4^m36gjhpe6k3{%|A61VR#N;X#>3zV|D){jH3~dP zN;W4OcnU~1@OFpDATsmfO=O04Npg3+hrJvY*j%$JZgwB*^!S#VCS!y-czJb8>`ZH) zxiPDTtPBim?6;tBz`}xpg+)aR`jKyD&Wc-8y~1QRn^sh>j-8cdofEgJYDJ*g9Mn|R z5;w~V2Nj@yU+CX|A;P^s#Qjuwm-IxWRYz!{Q46U_2{)%w$$^fx$>Gi%p%c#i@VpYC z-WfoJ{s0S^59XZaYJiw~0iENW^U(ysCBG=ACW}lLZ0g$W3>47&ZZ3F$RMQz z@V+3-a~(F`6Dk72xM1&Le$b^*Aj}&Kf`67}SC7dqtbFz6v_1VTxod_mn3OPQ^tdf0 zwHf_NzJ7h$F>BQHM(fU5kuxTb-&VS=*Ww9D2^DE;7i0{l!bUIjH`iCpU2FDh^fBjT zgk|)93JxALy?opXQ}E=0Ejxq!*Xzt4H5uU<>7nNGS(6e6=7wr~Yx9!I3qq8`A@zYI zMoCR%-oOzCiVN;K9VKx_thv}j!LAS7NeOT_iRO?5(3lV$l9U90%GlzgqvPY?f5N}W zf*#fR1DgYHyM~A+`k;5(K<`v3Wee3d#t_(lyX$p7o)78F4Gao#K0oW#IxWf4RA3LE ziVzEl7(zUHh>s?*9;k(?SouNj$9wft?*Yw$-9Ytl`qX>ek4s*;U-#^?K1)(l;zz_R zTD_<_z9AuQ+}P#co*7kp;``OBzdu|?#EZAf{?#| zUR(ZPMu6{hFYmKE_MPz3&DHzd9De%8H7mZmFdF~+{rS<5LUJe#IfZ!%T9{_SA4=t* zAhj>SFp`^kKI9WU&8t#V<6S&yF5xjQo-|FDCk>2SvTTUKY%8+XTJqLUo?4NSJT^Ka zVaZz~=2vGVjvLCnG-Vc-F(@K6vN}6|rzW1JV{%h`J!-v-+*X>l_DYN!Sq331CgxJd zsTT+q>R&-twM;H&Bw{h^Mo9?~O9C8HaX;RW>bzxTzyN><1oQtCgYsG2r@(&}cLJ;h zRWrEHfZq(Rjf@1_bGW_S-dwQNyX#XVnSh86qV(uh?g9Wbo}Uk#z;~7oTG8=;GNrfw z0-9EKb~>UJSr%I7kSRDR#SQX?a3TYFCgoxUMd(4Ik+MmN#t4He!SEh-l@U{`6IbnWO7b<~gnYifqBDK1_! zv}Vl!+hn-U$u)x~qev)-^l;$kNalen9`U&ePhC^;(ITinq!;Z?+}tC!Bj4}2CjtOVC1aG z*VoHS>o(g&z~$n&HorsHEIT^!kE>sqTaN@|av>%TNTXH~|ev9l)4 znl-Mj!fLHg&dFHKzPWHj`2-EC9A7qTlb7F|fS^JB3v(xwW@lL=OjS`yJ-zclEbrl+ z*Flp6X|u`TYi(|MMNoY}VZH}z)cTfG4fOR0nK&&P+rXTb&c-@_zR?PWqKu|IJb2Sg zE2#O{K(h!JOR&()ju+)FGcCKxOAedXfch-y7R;GFcQ%u&Cng-}z>oWEI;i66x%L_8^BJI$RCD8U!3Z!sha2aU?I%$+tnb*6 z*M-_<^55JPu(_qNksAwSBqd8Xpa(Xxz=3aV;jm{qHrX#d7(wRP@7o@L%vU3)#FKL< zCx15Zkixsx1?k_g9^GqH{ko0~A%LQQ-h$y>1s+0X6gV&|V@zV7v^5n=Hl<8J%*X+> zcU*Loz6qdfLL!q5PLAXuiF`%5sT=+5?u{TvIK=y)|i{-;IPUYvwv>A z)w{kRJJ;)MRw4?kOw1xrBot3~gjHGsyN6YRXd$c;@+2HRC|b{k5J8Y>h=^jv zc~1tt@IH)aV)>Ej}BxdF#V3c+>Yb@DQVX91K|_n3PS zo)82NF_+X6h~wk9JB+zd0lPZ9V>Q{e zkzJVU{2l(R8Lt+}L)3Wy&m;w1GhKizzn{yPnZ$^mV>%zgG4&XtNFJij`A^Kl!ZB$W zB7U9;+-n#jH&5Vz2;PidLL8+6a%6w2yBx9styZE`kT#t}+%2C0X)!d?Vo_)%ayT%2 z(4r-PP$iHdJ&_UQ{;`+x7;lASw2>$hM!xB3o<0ny9sIJokA6lO^_Zzi{Gu>ZB0 zlYnqwM)8)yNimt2Hsg5O1ikTow9>Bq;HWcRRIKQSiDxz+^YKE`iSI6nyC7ZA&#T#(XRpnp{xWYvfyfD+3{ zMl6MgBbBl=jUvNikeVAKcw@26BS_d2!?-=5u9n-y9UKYjxIH7maC!^;m)lbZhI9Ms zkZ2vr?Shl|a?*%#q4#wW&P zIp>)`?8N69<}2yW1L-+IR zW7FeeN6adl+S=C?uvHi0F|s^yK>z5Z!Br_)RXNt;lz+jc5o3ouuA1QB;sc0g>G>G^^2X!6=a`vb`rnKRaEyWcdIuhp*mDf?p)iI8C6m#JUQdj8 z!!d%G@C^Z}AS0e1;=0mG=Ssyu3RiNwOp##(0F9MIL_z}cKf!VA0=forw{#+xuvon$ zN~K2@8-E-rvKiyqc$P@@klA7~G8|8g_+cuBS5CSz$wWOOSzPmUle_6(2G@wFq(p$i zU6MjV=r@<&7z6BS^pRboc9fLv9zA^ToY1KHZ4*cBuCD*M?aIPQCA;$y3SJtu_^>(g z6nAX*t$mY+RIeTg?#^kIkt&chm9ClpQS10u?tkEznB<8A`b|p9TRVC3)-p!iw`E$K zX`wl>di0Pn_M3bdRsQ-(r0=o)BR7|#TWsUBC~gU2E034cU>KIuIF<*WX})mo-{JEL zaXF2iV`hTIe={b)F$SLdQ9LHH=NNpd`TVK=flf6s%;i)&|AaqTgVv%><1yJs&@57t zb$`x+f`fxxM$Am_F{1M#98rm2!6T4_9*JR5x{Uc6j`2aT@MEBaK1(2IJl*&~JQtY; zAs)i|LR~8X+TxmEnhBzetY3h?M6V~J6!3DRHxM<-=SFm*7kup4-(+%e)EJT>#W2X( zZq{_YY9MD6xSX@3*Z2ANYu6Re{%mjSr+*7){$oS`xwQe3faWUh-+jN17#{cUhE09@ zZnPagU>>-D_4O}^XdW}G>RaxM!`HcvWwSrtw*7-y-brE9oQEYl#x3_t^|Ws;KQLq5 zzN*(=%%~p}4>5-0Ebx6R5wy<}7$4>yXEPk1ajC%N<@^}M-;bFI4*kuT0LK_e2Y;{N zF;P9oV0cOec=q5i@lT9-Ll^^T#RHvAc#^_FD=0IOu+!o6Vcvg5XfM-JLa*e#SIURz ze<4@QVLU*#OSycG+*p3m85z-$85xnnzvSALE4ljA^sI!0tn^g!dTP2gA;FrS3fHi8 zUZaQ8%b`38gw|Z5)yp>|M6VAB(0^%_BAeOAM=BMG!owwE97pg}Dc==VfZtsbm4x$E zhH;8@#wqKQ=;8A|-(B34I(TwjdNy$Xe!!}fim7$Ib2_ej`hd5Bhxa*8_u1Xz6&Cve!OTzh_OQ#NTvK{Z7&>fC$} zE?LBJ7XJ~xaV2rwXWaL1z4^lJpw~VgeUrp7A%8ljbSosTU~ELV+*#fhtaQ#(1ZX^u z;fZ;^cFt2oT;}hi>pWZr%A<4Ilmn@$ST+pfGANF&=6@G`pRB{*$9ZR1{|XVby==U0 zh$rQGf2me{nt9!1Mvz$Ks>Q>3);Z>Z8sT_6Ph^jIc3|qt6R4{V&lCQ{JSEO~29T9c zhku9p%sI~h(E5ME(;tk%^91ymXNwCw{fUD-wY$uN^W*S5W?`NT{(M=|bslCatA%6w zqA_Fw`54Y4yF|vh!+(+Tf-o&uh%8GWX!&@y*C74-L%TBEii*>CK-Jbusv&G|JF;`KO+Lm&T3zO8}+w6<|Ka&s5mC zpPz|^Gi`Fr^bQ;qg*X*&b%4TUXdbqIhec6=X_TL*sB<$vj~F;k432sej>u1FK`}$1p`?`RdMjU^D#{p^56X!efJuiV>zZ~e$4^IM1D;vT=SNL zQtxt$s3XiJnx9cbM3KEQrS5|^;bi7Bnx9id6p;-2KFaHGrcXbAc^7@I z=d^;2b*7t*1U;T zW4x0+!JBaHHk3Dvb(a{y!&||Bb2b<6Ew(U4Kfy7@!kBb;_oU}#PyoB^4doy6^PoLU zMLS!{rGW)_XT|)EJKde$aOY?w?ZMK{1L&O8z(v|a43OI$zYSP2Aqa6Dpd?+!beoAl z{HxqPMfhDCtEGjNAifRfT8iC9cP?jRGm14e6qg9@4?5UIfi z24zoA%s$l)j5*v+vY8|^rcIy>_M#KBU+3acK6U4>a4iGm0w||YiRYAv(42%2+1qVK zXx^v}P02ZTq$%$KS)Mz!feN(u8#=Ycp5^pCuXp&Kp(e>|N?tC$XFmJH=&)X)CV7sh zv~Dsv4P{*O^I%@AbW&P>7WR6S2o$)O=<<25bNamdgSsbt-u$`&POG`UVAtqf)`cfS z--b8K496h-7V?8{aK<^e2xovBQIxVwFQ+uVI?|>Q3z_teAaj>=`kwjVC{mPqF}~O* zU|>|rh|G=~&fIW{rT5hw;}$90)=6aH-|>LC^ms^r)Y2{al;KguiZhkY zID#6e)k9m!;NhWA_=r%TzgFr@f#LH$EUvI5y6|X6#)lq9u2R8qIbPmrK^evK8|SoU z9a-TmF^yl|fBBiJ%!SUZ7|PbXqUPKZ`%OLxqx{V3j;2xT3LUcdD(1BDg59$hW8I{n zdf5GSPTxSG;EytYDMUTI|CP>pioh;BPw*4-eC?d4i1?bfCZCwc`C@zU%%9heyAFaN^{jyQzPR~>-kiI&#^9NBl zT@9(jLZqS0He+ybGRx|rV&NyUX(A&fN~K<~sDYA*jk<+Z}+25ADXzktZdJu)^{>`zqxwDM+;_uvSa1LULn(3?bah(v)4?m zU!9$^hCI@^&5evsnL$_2`)KpnS8ic_b?&U0^Hy|TJm0Z={`A6$sjJ?5ef6!8Bd)Dl zdus&QwtwWN65)>15Ao?H3Vh=-Z_T-PyW>;{KHCa^VT_UIE$-c=*h9=)5(OU8MhN;J z%2eTh7xQ`v(Y5Y6$GVVjywATGyR5qzuA78;O9j>f`e$R#;<75v^vBRA36L$pvn2a= z(Kyaz!O&LPU^o+tf@c>;uapax!mW=VFP1#%LAb=@SvdmMxJ zIu>d_5YsUZDuwTh@b`PJ+MhU#SB?EItM<>s{tcH^)e!S#81u=zjJ2Y<1GqGlB?G@Z zi2v?2^j%zU0I!%VthfP_u{slfwF=xJpHxa&7Fwt>iXudg;wXY0&A*rPIp2wn8w)(H+c@{t_FAN&J92s`6m?@&D?L5+YK?{fjXFJRqh{3X&d?XAE$qErE{)gkcZ!iNZ?@*6!V0qymLZ6zYj|T?@-sb zM>Jbumq!$i3dPdEKhn*A<=x;}E(6!G&=Fzi^)bw!w5e69pdd;r^_K84<5=$EwDG6e z|KKUrE~s;sC}XS&8vPSSWetm%*}F6xjO$haY}<`@lq9^Y9+u0Ee#>6pY|~Ha%y_a=!FV===eniJw~JawfQr1U|WRfe)_1YpGoP zpg400pW9Gjj2DJk#dNL4&r{-<2kOwgexmF-54OXG3S*-9x1}fMS?8RmKXICm5P1Tg z0AU`;{rFcb$1J>mJw(38`V&e*afy%u8^dSKAyv)gffz-_lj^FGZG-nsPOmeE2b3|J zrY(D1NAGJsR%B2tlW7o#yAJuc0%|A0&~8@-7>zPNg+d0^ca6KCk-E5~x@EiYY^Pf; zq$8)E%E}mL4ht-e96AW-xSxwQO$hDh?VlAmxb*F}i+3=8_q-KLWV$g+TbFdiFWQwS z7qy6GwR5QZ15;XB4)!Hz6tTppMJFKl^&`R|*AB62G@iiCpH``$-RCZjjZIDt7V#-f zF`1c;N4Ak5r0WSs1W-|LjS&}iqeQL=^ArlRwV;4olGMldnqOD9v{yW-JA2B$|L7Os zmvd52FPT`Azdaj&=my*9?BSk|LqRJyg$xI$J+cZ+-YH2jDv)jMm70-}nwkZg)PaMl z%}S3xeX~8F0ffEnqNBL3MgoyV6cGtlFE%(>TyADsp_Dkdv8zn$RaF-a0yMQQe67^TA$2 z{i2xJemNQX|Djq3J;9osoRyWFY^_bG?K7sqHfEF!gvz~&ioD!?`u6kh?Bt`<@C{wb z-#*HNj}KwHy;QIZ@C`jG*n<3vM^U7!#(rDS*mnqHs_{H2YFEwwnxL;=>Gn#QsC3n5 z(p>Zzs6+UF^4d(Ai#7wl`)?tloBWLpfOKlG$|SUcQa7^hav&#ShFZKH7@S2{a0-tQ z-TiOR>QUyINw%b<`XpOOU6mIb5H)R*S#KJXoIE;6A3AAjRJWPEt#S#WplLbV=#G+R zQNTD~P6B5^niDO06jy-gnS@f+tGX`Omeddr7no^(9#!p0zZX4aqS-TeY)Z=5U{CYJ zDbaZLf0DVa;Q&hBa_{Oc`acunHjO4*7BIfIoIXSKKQ+nwPX^ChyMhv`|&j=Y@lMq7R zkxJu#Qm^5XP^^LZ%vq*^giyRsD%q7n{*ju!DaS>xg?tC+b?=tz5K}jQ-iX>Ijdh9H zxt93c4ElXUc(xH^8-^oVL^O%3k!OJ2ki%%_6k9k%aBV zyVYy*`nx*LYyADJQ+bN`fJ$XP#QB$QdN((JM%C!)DRox?722*P1|?wP(%Y!$FUB1z z?v6?gpetO;2Bs9nM3)!#HO3|?Mz~F_jVvwfXNpTu&>!?3*2fea6P#w9(SrWL)j#10 zQ9(GPz!PN`0fj>D*(ioQz+D40ctMqgrxw=)1C#SJDoB-4R2(?mFUP7oEqt17)w4!_ ztxri+iLZxw;?!uDPYFPZ;fkK@G`OPTf|wNwkmIvR%%FH0B*h9}Pc3_1mXa4pzvmq? zeB9`8eax!$sZgwe07glzXD{H>G{IXV@$mCg%Nkj^8Y2G#uls_Oaq=jU3wan_KBxS& znFYZmN>hO3rx1%J1b%?egOZYhLgV6p*bCZ-iS@CD@Co%XpLNSQga10;SZU{*W*MjH z+=wy}sG+EqE}w}&&Ea_yy`80LGvwI^`LXst&{!;?Zs4CpJoyvS6aORZ0F7uXQ69BUDO<=jR1 zdrGT>B0-E2fYVrWO>pd$xyrI=uYv`76~7t=6OLMmcA-`x$vEqDVO{_g3CeDt(av1j z_UJQQ!5#h%y#S9^qAYJ2s;CNRrIIhIih|NHR|1faNJze*Dj*MocOM@G{{Sy=KWT&f zWO5&)hWn1W^yti(am;{6pHKmRy=@a>V#ZHN?ReMuzJwtR#SjaXz~I;EPXC+_{yGA` ztvRY5Qc$A~LQqj8DKSE(?7=?eQA>iz#(2$720w5k06u7$`$imGWs zNF$xN{|bK{jd71O*w-Dk=R~A}w2^L(>a;?AI39&2K;9%(=eg6mkN`J-sb7eWJ9mL} z#|7UmrrX9tpHUd6@-}mI!C%*9KgB z)Tp{kXC1YxaQ(D^N1q6PI2nWCv*0=M;n&r;ny%TZp=2_VNKO){K%kqOQh2k%#u217 zK_hKQ1PDlDAe2S`#3xydx_s~*7f9W+f8{@Pum|`Dr|rL`m<(A>P9>w(Yy-glk$nrf z#pxNqt0!Y@3AO9s*S#^e#={-{8+-1III2V$2!N--gR+^VQlp!HT!KrtAqSX~$LeW4 zs%?oA(y2t0Vv;EIN-=0uIK?D{TKWx8&$h1ryO#R&Q)scf7%jduINe({%(N zQI6{PL8#L(4(s86Is621=!@)251o#cNW{JdcSm$5fGzo8}G1_@0QGlEygC3#F z|L}Vg`tDj}zXWDgZ>-z{BHsK5h}>1tIt0wLUs}AY@1%b+$qT;OzxJ0`hpgO^bGvib zD}?;So#u5q+>{#pM;@DCYFjoSeRlTiMGt?jB?4EIaS8u0 zI6_5m`49`Px4|n)LXx3^B#RqbtS#qvZrQl>{vUsTd^q=Df?OP+U*>Lbiw{-?OQk^( z`oda`n}5~Pnbps(QNHo+M{m9H&MI72P6y0`D?`cyqSx;0&z0n*i0HYjOk6lBc3>=y z?$Xjna9y`pBFw52i^9Uf!wIdsP3>niy31^y1aQ=1PmNH!DsK1cF#DJ+qU3?RfE=7^xHH3d|TClsZ)mR-?oqSA9Ql@#?zi+ z-Q8zf?u-dF**{WlEx+IHb@}cGF(eXXO*g?tU<=w zSof|PH(3Cp(UgE|eK||e&@ygPK$OP??-)OSF8k!Kx=52qEHZ|wKBMy=zgK?!Lf_t} zua(lh?8hwgrv(|O&x<6nKXEEN;i0S^d+mK7uTuC0$Az)D#}KsST`L$pr3^ujo(z0v zA!lu=mX$A-<_~BeTQ@Xm?x?vZYZiRIqxI9qDR&kYH)OtcsrusV0j*;uZXU3X)n|u) zEsg9oI3uB?JUM&Q8f|#^bGIED zD~dmC>}3j?IBDtGs^RUQG|Go8?87}Ke|@8Kd35RSspA^cst51NiWpuK6krK|*BB;V zUa^(?{Qc>GqE;<9$9?nJ^+D4YW*D@YRgPTXEL>~R+v=`jQ6nkF-KLRBo#E<2MXVmt z6+)G?C1AO8!)fjI6B?miR5ea?Lebt+%DU(5^PT|! zi?MFOP%2PZToEzM%V&b6des0rzvHj5W8B4y-Bf8Cmr^p}{WgfshZ6IDFC;NLe}_9P zfIEyL{H!Wc1wv^zy`Rj+xB*8&D&gjg1ZJUd4*&LP0K5&ybHETYt}TU9Ddph3)WG7( zpk$poJjP@6{E9FzUf~;La5qU6CbJ zEF{(-qUN(QHXy$jcsZzlth~@Cdq<&tuOKtBG3>LPS|os2Q3+MFR8nWfCtPW=L@4;A zRwr6;Z>$sFsUpl0@uE%EL&Z0ao}=^a&5`qFhAaXBpyZYJxEAhY8=7}2r2D;)?t2r# zRux10K|UJ`4O*27o+;tb!&H_SXMH1FeMhLmgOX+-?epan^cIVM&ZVfduG>|aTC#jV z?x>{l)n(qrLu0bZ8!3a2uPWR9%#q^@PY)TiZ_4=j$%RpSjL89}$y1h{9|GFO?HXs0 zY4WEQk61LoKrz&+#pdEUrIT%qW$TBIpOR$IXASN(Xm?grZB4L$T!hvz=7=MgVK`j_ zu~v$)<_W+4H^dr$s;8!ut8|o7sm2xM92M12;~I-=J+(xYP&5>73(_0C$S2xenG-W< z8W(iv<1KXFdr8yXM9aj=#f!+-JF=;3{jDwb-u-$*zI+It*f1RZ7YJ8#*Q-S~H+P%J z%gfi-5tfYZYJ67=xKQU$$Pfq)bdgo`u<7q^8MG%&!q7*5XS}z0&090Mz};JW@2)(w zc>@{zEVm>sDtJv5_cm>O_V>9Xc>nEp-WGV-AqYtbp|wiA)P4$DCzQ{N z`8&DLbyO4zG9(w3>`YBaUXXM7VA{^L;};|sMZ&`g44O1)(5A_~m;FH37(H6F{$IU6 zcYUcpJc_h`!TZu9YimLR;v=-G+?i(=+y|mYK^r-bsWt%l&V1ed{N$`n?_?+zml$nG zQ9)3vH#*BOVt7y)#-Rt`}buFpU=%8G7>$W<6RO`l8jETwA zdaiuZkf_=K-$`k;yM}V_ZK3nm*f-7@8|!W4W)qjNTEXJ!%0v z-fob0)&dc&B*>{}UoJbcX-po_dNFo z!XBr8WeRYm;V@JOLho)98w`P387eyFC&veh)wp=9#bp_UyT|tc(qjc1k{4FF(Nnx& zn1JlYqG7`ik3PC-{@L0skG34x`BT$O^4&hwQ%;QPHHI#$8ujspEzeX*$ogk)H2rqq z4#zE*aAxqHWX_+@w*if2!eaY6$@mvGEV(d$4D!@}L8>1>4}`Q9XjQvuwVq-hh9bsRmepM&PGHbUp=bU&>jk?2NUvx9=8^d6pY=$1~O%>lLlm z_X-;{wIE;zx9uEwc-A-DqA@9Sz3G9;RWR9Pfx-_tJRSLpeon#FTn}_~%B)56hUlfonX4MQ&i>50aFm&8`c^e?TqPQ?m_9AL_E#&^*`C&j?Oahx1w-H1L*u# z6b4Ts1l|gNtJ3T(w#BN|gs+lx9tGYfVyc5&>R2X0T_@S7;#nPSgomM^MG7+5Y3waE z<#-!X12XzWs1$)AVLGyZt>v|UPv|7LpSe@q2Dzt?kGI0Ra1pg^6;GwSX~0u1G(0J=_3m58rmyB^ zwsWVLOWU|%S1#NC4gNE4y4{QM+vf0NeuAm$zdZ}bv>NceFc_eAOxhGZyqkQ51l~JfG0e&N2gfB)j) zfhSf!L`5w^$6cBC%BKQ~dwS6w_Z5AO?kj{s4tG|7qlOHGmsO5?f4=~|o))oUBJ)AK z#aTkvq7u3?C3%s_jFFYX>q>9AaIiysaBBahW3wdSSMHD`qi$9o@*3K+{X4LbTSDp^ zK_(aqh9B5IpL>ARY8 zSX6w;SyXV`L{{3Lf4@d193m60*`Fs%p0{5=WWV-2`7iQCdvEf2{E=pNC%?3NqYvcy zgJ+)R=uJvf-rinbGE)R))5s)G_9hj4GIY0G_imj@9Zged-)DAQxVo6*Zq9nQI%ECj zoEIPb_|6;m)?cq}ThVf7s|>j}M?0n;mc zNtz+WRP=LuX@&)oj@KaxbexZ!HfgX2{mP>PDm!u3)GCk1vFI%DDwzJy3iSUDAH7Vt z&_B9IxL2B|f7Oi?Nhw;wJf-~#j%Y{SS3Y@YAKuM)htF^w)}Yz1xYc-7q;rgaYuRZz)-ltZrp5Plo+ zG`~CIe`n8NeujDiqcD1rh(FEyg2#Jw7eiAq&m4Sw9`Um+_8%M!?a?P_9%z2kcN`pC zrBILzL!gdFgxIxpEZU-O zb?>%YekRxbq7SkB;9s@vWWfotf4l3p`K^<1HiFT1ac=|MI7vOhz4Fe1Y2QsQ@f>=n@$MUs3doVY~HL^(wVmuNRs8WHvXkm=*!2MXyd>5aUw8Sq<5E zP_hB@_NR1?cJ}zz`jIoMuWfDw;sw5$t5(g8shHPSB=;M)zIyHT;qyL%e+RcH8$7CQ z?!UZs$fhv{zk;P?>vy34%fTj#rd49_^i~*bceh1Wrq26l^ZDQBRiEnMRt!AZa_WVm z3E^XI?x==$3i(viut&!W(je9V0s{1UIjRR>kW2qo17LASP`#eQS|}uY=O?s&cJ0{B z)i-x=q2R5V7ssvKxSIPKfB3H2V6-jaJ_KyjDk^bogI27VHFwzhQaV3zw*7EjCAYqU z%o|X|y)eMhGa?^C#m6_WsE1Xz_=bE=(MIR5>Bxm+NW#o5$6gx+?mHq^Dp)Dd=|prR zBPBAuc*QN#(p_@7rGTHWa{)U!<8|;emwXxA+zD>e`S$Pa56DRSTlm95>g+#|TJ(Wx*F#Edq-%&6 zbY3EHV4%@RcqnDIe=yf}P2FG8x*m&MI|x2eF7@Sk7e-8~&7Pb!>i({xRa3+Bu1+pr zQJmK@VdI=NN0-d0UNtbS@+w`E-B>enrk7ZqJ-MW2W4S6ozcnzyJg9G0McB%LwWTG& zfy+Zeg#5ozIR6jzlw_4+HEWY9rLK}6>ub)|oB(2`h@>f!f2_Q}lca(D!~=+kVr^#M zEFHD~@iXMUfKhec9mDB-;Wc0sD}%b)>o~X0G7xzV4C-$2w)hnfYif*?q(ndrX{lTG zVU|O4wy3D+%bXc>-hs3QiOc@8{bhuE_}LF|F1OC#s4wAMdaSGISerZQs3PsAtC6Hj zSZxLg)imnMe`DNvZTgVKRo<~GH(zB`|Mb{k1-XK{#@V@b-%e&l3u(Ilwr>IUZk~d4 zlmOSzq8u{~E2WgE(~N{vN?n_p^5ssEY6~2VWdL9jwlFlyZCbkts zuS5=s?pRDMiXIYg?+uB%k!ln$Q;WMLHC72=7?yRk2IET*^9~$p2exo5&iU%HAxO?Hj;!CWS%TcWPwe8UFYZY7&_&~nq_qMj* z*0_PI_A9apmliF$JV8#CcbssWbZNo$e?W+Ze@-J1;vqanA$NP8-n}6(CNCq>>Iy%-WG{?*MaLXC{%A!f3Iyz}l)30GXSDwW(x1sXx9;&?N$+(B_*A0qGlW z4y(SklMCdIP)Xb?Af>Uj86u>2-l{QUf3}oDy0f3*)>VxeHGtsdD>Dw;b*?EWk|rY(5~tfhq-)Kl!DB}kb1cFl+9A4w z{e(5)IjA6Cgx6awTyIB*>#prtfJ1hJN-%Ksm7znfZRRv>WZ}9-?heS9y@g!Hf3E`( z$-#xz;CJjSct=qO5!^A*O)e)?9wM8F==Qek;%P;iYKTiwHM}?&F|;`?W9{In`-h02 zm z(p41_32oAdY;x8H&(T|Wkc#O3f5r`kpP;JpDp!y8U@RNk@XqFzS7%AM504xH!HU`U zSFL}0M#rz2O_L@zWm;EEoY-U~L(X>+O|!o`jQAgyu zS1$od?#;$&;GuiJ#@aoH;iY>96pp9`bH@_@OBFWsa)#cYA>WHZaX216K004tvq_;a zdlKD}hq0FG(QM%kAThGM4FNWPG~}% z0yE~JoZ@DwtZ)Q1pm_yffBoUZ`OiH!|Ax8P)T=nW{A^3d$AhOCv;Vqvmzy2n)ok!B+&Zm!UR!yP=LR1?DZ-KOh^15|Uwwh^ zatOaJ#8nsmhl+H3-38&dim+V)H4PTsUVkDK`OlNSUKW2$O&tKzHJ7WZZtUPja=&TP zhcpiIi&4ptLXr_1qM)L`|7pRNwXRGI>L=^Jf%?gOis`@oJE)&HnHuIV>TGqpn%vGDwjaKeM<55#7BkCNhR=gk16n*L;8%F^`|&ngkD_oc$c@KqTP| z&%Q4xRY+XXa{HKe@-X{3mxhA0QOX%__4H?&9lw9)Fne5okLu6K+Q1{GnM?2JMdyR8 zt_;8RjtoB{o8&8C#6FSXXLMxv5!pa^Y4hpAPS1H}l0W{R^UNd%@$vR?~-Tn?;;&Ts!}RhID?K9x|;BMGlB|j%jEckJgW-}l%9We zSEptN{((L{BUdN)31lu6oj=uAk0y710@r~1CC}hB^k@wrm#dgYsot>$&s+Gd!!;Z@ zAopV&EYO7qN^dGuseO#I-Tl1{B8ZNHw!{4j&z4h=`XHu=n3%2z>|l*a!z414g$jSB)^Yn{u10a^K~dDz7%-gr&iC!Nm5cfMVf_3$#|n;R;5W!*P|NL)x*o~3 zfhw~Z{T+Ed3VkmGeCNH-i(3p9dF}HCp}^B;zYl2S8sR_O*ARl^;4wLf`T&1w)8ezV z9QUXxbLlvPRHNf5b?NDKDg58$4}-?X#!jd#pBNuM0p-|qe!(0hzNJG@jt#U>RHO=5 z2T;-e_}?*|KZsF(8hveFXf-p}v9|J!fxzyI^BW5;!+e2>z~z<9FdNLXJf_e^-YJrQZgXLiZ8sg|3z(1WyB08Ll}+ z<1?qhtH?g(mO*x~81H{Zc7ase;Qlfrc)u&TxMRawY6{L9xrFpJvXFe9{tilRPpcHQ z1y<06Qi*%fDDic+JheA)QWChcXvxHq@|nXY4N|g!bLsCI7IEd^NNMT(ncPvbwKf6W z+F?*qnDD!4fYlu+m9(1#8YN43n(w>Et zdL&+>KQ5gHkt&ToP_w~vQ_tk2SvQq6EJb~o;Kzud%m~zQFneg+UHD(cCFbQQ<5FMq z!nNn-pIulpzes<-ZH-&e%25l?&Tm`n>hHx*h zXoI^%B2&mwl_<>Y#V)1l%O;2?1OEqUSVJFJHv zRU|!s{Uo{Z^UqWI_!sLvD%1Nk(6k|@8=A~{MIAF=BJPr8M{urSD9&%ZR@kbkq_gFKw z*B$(Joo|2JHUP+NhdtMS&%6>9v(i64e$4hU^R;1mU9^7woc8JvpUvLE3x7B=-!sVD z5TlrX?5~yZRy1|~!P3kvp?Yx=stywCV+yAz6K(T!6KUYxlsntO2>Er8GoZ&R(bwex5hSz_U+h5uI!q5Yw6UT%Yg9n+XPMI`0 zaYU$j9DffVZ##Vc+>yiQ&$dlmzHHLuB}+i%q0{qr*p1ioV+6M(3c0li>FtRu4*W|NLScE|nO3h6ZZ)L# znT3DjC8L8h*55{rdOqxqa4zC+m#SO@Q4`TiW$dGOcRTG1WI3mQVj`R=l(CXYM zLLxy=c90Vgneh-<)VD9j@)4Ff4PC{#OniU2E+b!E+R*{3M~3nXSIJW%Qbcck#@=5{ zi5NPTWVw#PD~k@TAG~tFk(MFlWi>-8D#~ zXB2STR{E&ur7~x3-A{#pp!sI7mZEA;&t#;VhIClbL%*e+)Cqs2i zqv9PtDss-rALk6+b#>U*pI3Lh5V^l*^Vv7t{MgwiPK4~9FnVK*X&)drZhB``pH=qL z+^(3ydG%q1iwemWpbIVT8_hxUjv+ESe_?(Xx?PiuXc~WJSLl-A>UB@{x#Ht^&DfJ` z5K_inOHttSr;@tP|6AN?DGFMs`gq?deSo}~{MX>hA!XjNSpk(*8~23wi|&(q*fwon zMONAHqsy|22IS-vl|QX57N;&u?_KI8)mgH_dKXPxIxV%*Y6z_!Flol*DTSi~0;iTw zYbG@weS3eUWMrhIUpzUP){z0!l4 zFPy2vTsnq@vaZGZsr;MUJ-E0z;7C~9(xP}%>&uhqc6MqUu{yRcm$N1O=hI2{e zAZ{}Q>ejtAxp?yjD$&)0)Kip`TUaJsy}ufUb^Q9om8+a=`fqzBiP2Cm ziD&K-sHTX&)jh$(Y}V)BZqEyc}dfr?4ZKAC#DVE5Ji$8W8Tp8HHm>k#s&>*u8J5swybGPj=O#? zbGKsai?(^(fBt-F#+38p2b?~-vZT5|AE#b^zBMx{~RK6`xDt31)Pe0 zAA1~pt!|V^B<8caB@(`$sE|pA93^}E5%~T@GR^k03QDouK9G6-uPXHNG6QU6qG&h5i$K*N%~p+{S}lt5*3oph zhX)-bmB!L)B9p($kUu)4s`hEM5AolOiv||VUvYfhnW%#0RYP`UWo#cjxT$}ze^XWE z4r|)3+GPjrBNC?cEgN1lIAxO0s2YUTGcqTIGhy3DYM`9k_Pb;I-xB8^%pL z)jWDgeQEL3p~K52*Nhr5Yzm))O8$pMK32s=y*uG3>jbgo>Xzr>(+R!RRa&++xWLPh z6*#E8;L6%8*d6GFw&fut<%DQM${dQfOMS?tDXOh&;YaxdnTq4M-WM z(1#g4`DlF@A~KvH?9;k^-`MqictEKR3aGT2r0)4pa+)eUh@-w@i-S`sJvpnrzBl>%fevi7%%AgjnzU(e}Y6Tsf zPJ+}N>b9h8--5-v`-^{e$%aoFK1IgLMz74xUO9Hk!14(M0L}CRat1s_RCxue|BcX8 zcXp1&#Zstba)u;2&3}kYr*)@Ut;$?)i#GTcR+Jdg8^Tg9jabmRlorv`IMhb~fW`E? zBm_hX+Ti9EKAF6NT>*M3;NwKU(KAZI88wb0r;vynVPfAd71h-6sgx!S`hq6~k zr>sh@ojQ4RQlWo;ZzFqa!ncfgEfixuNVrv2msBamApn({B6`7Hw!-yULV1Y+fSpaD zX0bv)Y%F{Zf;uQg26KDh$VX5-`~o>f0+mZ{Vqb&WF7jX*ta7uLmW^hN^4Xz62Vz54 z_hCnEE*C+rarC=HVok#*-(&FwMhil@sjj&%FQ&_p(5`<(;u}CAZH2;`eXUCnrA_JY z6vdo3FR`HXD)9y@kZ|(EVv5ic<=kRu_xuE@Uk3GJY~{k!wV$sfme3BTx~Uf-fMmD@;uV4GCRvA~Gp}3RRXj zqL)8DQ^tQ$XT*e`-z|>M(Z3eq^F;JD{9yjZwhiv4W137FhbF4i37>&LC!a&rlgmNO zP39qpo%|P3f0I$%nQZR|RF6Le3hq~+pf68`|2@79lpV44_2f;UoCQ>mj@HBfSPuSR z@1mxrMd*WT=#$&mYVDib2Yh;BN_})>RL10Cug-t#6CD&DlU5KH9FhQr#Rez?w83!; z>gnqsw*JO_T@2I4{56?~;V7_)RbHK|s0!&PHwm88A{}541iLEy;>5!qmpu1Z< z9>s<0OnfFE4wpo??}-k;{4G?YYZwxQFQ`FCj*X_soGB+3mZ;Y)BgsBZudNxswlaU% zT@hmRv?zm2wFz}43imP7=C@UlWCwSDb-~W*L#xMqbHgpY%ElT8ZvS9)i$29~Kljrs zQ+thGoR?ZZ(i9t_lFU?jj2jp;aYn|_70p2V&?8k(O}jOxqIqER(9(em`;n8|XY>|w zz8jf4P@;QV-95Ys%FBned5LXGz5#!=P-Z;~iUe#+3sPOApitluu#l;y{sn!!eA0^& zd?S_e0EKUAu*ZPv>fn={@e28{1jI4qETJmW$H&9N%bSIEb5M{iz=M8s5AAgJC@FG zDL!(nV%OV~QTpPKzf>GQQdE%D()Zx;iaR^D&$@ee&>ZXTn-#|nI5HRTTVSm4_Q+>v z_)EIge`asvx4?lyT|$=cXlQ?Q>5gQ7)3rMiSq2jL?nw4GafGkXS&1woUPAS`E>dKS z41i}kx18Zi%aX(l`WkN2~}GFJ#cEycpDR)##ElfuDa0dQ`W|_$5Ps@5h zDrnPudo&CtR8^h`z`=jr(ON%S1l+%$d@(DnxAu%enK8OBFu3D-?#71ct+~0aGfwQm zP0^Yo= znXcdBv3W}SYG*~>{?EKpcgjXxBKT}_W*z-25r|@L0O8}~$0{_eO(K==_t6brpZ|P#s2JZitkG3cVMJ zOC)KconNTc8jBPv)zOq0fN#pT%n;{2-x&)5?QHA>XnRH$fZ$_qMZHy59yNG0d84fCA$i60RMyQDtlH`6O&wwKCTEBX z=N3ung1g)*ZclsuiSwnLXw0ARs>knpf!o7uN4YcHi%l~?1Q>E1 z@&FWt(;;Ne23e&dsgwr3G8w@<)7g2!rgd~AfeQbF_^xv6d;r-~QaQmO?i$EG0S<9B z4_^Om++W=H-~Z$GnToT`SLm{JZ@smS`?n)cXGB9hA*{cbF~jwJP^C8=!vMWPYE#m* zMg?%af(L&VM=+AmzevSbq-6QV+g+iZ-~<@T9Ryh)yfftXPR{uI@8BKoA+R*=+Q^tc zZsA_owGBl^U2FNc<8?=TC%`!~!OT4(9O~6NnU4?c?@t(%lub<9L}FVI;Y^xQceQTo zN|}M8zWXbdGv%9^{So*6W)aSqnWz|h_OHEDUoL;i>3eX*v8$Vqx;a+cR197U=AGMTiOO8!$Oq;Z+ zL`Hx5**{^6H%}Sd)H`LFw*HG#oQBTlEJxlRWAtn``1ap2ZSCB{LO31Y`Kku{nmkZc z87&gYWoorVM%tj9lQ=TnAbe_p`cVKpibsV1BBm)anxiR-AZspgKWyK*gZuV0SyRI5 zJiX-u!QjC%gIx zJ_XlD5iSS-lH3g*w7+cIGW&(&;Qn~ARPX7Y3G|unJ~|Yg3qI$3(FdJB-I&=YX#d{O zewjj^nWzrmq5vY+YVcC2eQ~{-Y$p`j;jkH3`>6w zxx)RpX~$OXyNke!D~I&-J)lZN8l9(m2`Da?8+00sm=pGL#|NaO)#UVJerf4hL2rBz zke-$%MExmn^teCN+w}sBIt(I@BZ)%l1QFi1ZV)<9r4b<1bfJvy1MVNYXWL@C-~Nz$ z|KLF|^3HgX#KT*e4zwBW-dc>f?>K+G;{(!AGJuGwO#) z$g>HR%b))OG%^(gszk7hdUMrHyN8%sjl1=>6bF^qq9(aY-7wF^{# zG{D;%YF;*e3r-4kBK!Y!18gWle&2v4M=GgZ;8qNm}CM=`=S#_sPN?6a6s!AcnmKfIb!9C>16hGqMAsz`UV9A#Hf^3 zYqDoddb%_s2C}Bo^2UEb0|xY!QbJCl7cMf7-t|!Q7<%68ii!~IMwcRr@Txg1HCKPJ z(|winlr(-^Q;@Gyo`KmFu7 z>y&wwD|Yo6{QQAeuKo7f8xPi9uRYo{|JIX#SEJaXH00&mnO!3)c2) zSeDfH@amD9O7hlB*f3{Z+tS%3n+B#?=j8h4<@(NvpORu8JccO}GgBC5V20=Fi6duu ziB(w>2G*=Cqes|^(>n`AuV@uHcf?;=VgDDnVSa=D=i5!E%y!*2NxH3 zc?OM2iL35~Y+a$+EX#uF1m8UbS5$&uZ|YW`8RdoIw|{?wf$@fBsG5=VtRC3CHZ#D< z9)6?-YYHJGbG2t-X8VYJZ%q+(M2aWBeQ3{{HW~GX>ieFi=N0aB$F-&ZK6dQ)W%M%( zzTWp6P~m@$-8kC}XI9|66K}1S_JAg*d(WDNt`?`>1tipK)y2--^63IjGHFc#YoEmS zUpHa*9tF8kQncFD##~{y?;dn?_UxmBsOmFE>$eZ&JvmGs_T(6>a>78_+*lE5V{w?b zI@M7n7nOjKSUER&Qr zf7IhInM)nnIa5c*hYYM7W+DAIohwnWtHm9hEqTa#Bc~y&ihlxI8l#Eycx(ggWuyvjlhxJfiViUtJnJi zP9xccDa=S@Lb<5V3=N|Kds*D0SX&@#^MkaechFiyM5cvzj{SWpa3S41SSXwbH*4up zS0b4yD&G0kwq4(B@81NpuipjA)sH_Nc4vR<_M1b7+}yJ5`C8g``cGYuw?r&U^84&G zXAT*&eso;Ew@11uV@S3~@2AkHvw-+D;I_V%`|XUqF=@=O$oT!`vTHew_!wP7jkAut#)3=W3Q_Lm@S#pm$1RkY7*`MR-eWanTVG?s9+J z2?Lrj$_JK+2S`vUAMlw~P}@XUNaned9u)_GjGjer=7OIkf#e@D`8Rewm7CO8w&owL z12WFA`F8-Z z^%ao%f_F-Ebc)Xl+)MYi+HWt=rNn;$5EWvM^xplS{l9~FbF|qU<+09(E$Uji!Voh+MzrR*x5ZR*RBI4qtB79+m?FhT$@2!Z37?-&dw&q8Q5<-MGSu-oV ztMKo#^sUi1np@F6_zqd}Ee%CL|7#QOJE~L_h z(7rn+wi0?GjF?DdTTO*yB({ng$|iSn)3A+ty~)GS%R<@4_sh%6?%OvzJ6s~f#R-+) zP^4K5AFVE=!SbO}(11eqHF1A@fKHQ$eERmy9~K z;1x$WB2NbNu1xMd)z(;~)K<1MjEG9@RhyRKYxcE-Cub#2;6A$gctL*itvSV8)3ahG z_O5Ii8e4m{C3||p@x)oVEzi})4P8;0J~1XMeQWXDTPySP*1WN1(wTq0`KLt%K1n6X zK0&cTvjU?7(|dEz^;IYMXf;q(3=YmoOB|f_*ITzi^=C(c^47Sx@J3Tu>CO*Zp5uPp z5*G%pbA2LWwgAm@Eg$YI4Kp={$Bnzi{p)Bu_x1hy%yeXjQN*myAJ}K0LK zTbLzp-$G3Dol?3zF{pLUAOUJ|QlF#=1JcrcLww^>Ai5V7s&#`}Y$Kvldd>CkJ!t3T zQ?sq(?=*`%4r-efKD9CzA$=-z6 z#Ff2g>>5zA+m>D$a%9QfRehU(qHBzvE!u#g*Vk{nQe{xu8^F8S&2MkG%gsh>PVVIB zDX5y0%!3$zPP+mEvbfLR0DhU=r_b7+#@D$|tiYdPtlae@laFv)j>5lgWrFM@ zlaGQ)N9vCfgqVon?uc$M>j*a}*TaZpB9|y5>Y$$HVU_n&4T_@DSpP|*L;Q&tK3WB? z&oc)TueXB#`76!;&z~{Fn9-x_CW;D0g$e1|qQ}X9-M$2WFr!C}n8@}Q6(ywi5qG@o z_-T;^{&YgOv2<#;FK02M#tfe%3>9}=W=4%3F+n6uL|v#FGod2Iyz0>nF#7->XKWasIt2x@z<|{5_26MWRK_n}h^=4TFgo zD0lmR5QPZSF;dU0M4AoED+~^F!8CeRF++VH7*NF)R4D`XKY(;*2Ixm7s9Xd?DP_Rl zfj<(N(I=>h6e_p@&=8dV#Lnu||6uPLGHP!Sp|oo5ZRig?m@u$CkvNX&{thiCY8Fiu3B{H{=Xajv9D+>Nt z>7AU=0fwl&k}W!G)Fd)qZi|K?ZSrjl@DQma8X0NR5hTg`;*<}u$0GG3p^=b( zhA-h^0(>WL7FS`jP{1Wt#-bqUi@OgqVp`Ji@VUJVi^{THd48*XW84S<&3DU*+Ue6Fmze< zgWrdiPaD~2D$TRCSjqG?v%F&Uv&SurkK3w^9uOUA3*a)?_yh4}aoktjm&gB=w`;%& zH+Slb!KarRTW*e$i1!RQoOE*bTW>DwiY2$xt}A zUqwspW`di&8f{?no`57cEX=8XGV=P_O2yg)wG%XTK$U);` z-toQ|(h}Ve&`uTEhnna2I`qfE(&F_m%^tEiEptKNVe9MSW_(JnlQH&x#c*HtU&U@U z$A8&!o-RJ+B>F2Y_ z)AZ__AHF7$aAvqZAZW;ciT}h^FGH<*nM$lx07ydUNkBr2NRh}*cotEj(yNXNQx^Od z(5=c8yU+eS_~)|+Mhn$IOC2>rnM?LGdmE}x>Zl0nS}7Dm(8T)Uit7*ppis%QVhjOm zqa_jqf$%V5iMjt@A;5L68gA?#{| zZhF~|V%#|Ec4F#SL1*IX9{yG(C6-YPyahHn6gP~ExDhHfIm>`TAw%sOj7m#^cTt(C zrDwPmV6LOU6x{58&s?SbF9)yu1V`8_5dE<-1tlQ?3B+y^bSuQp(2AHCT=X;x$Jsd- zBI{?&Ag6WJ90exo=;Oq0l}AZuWh`M0iGro%6iJaXMh-8tO!~wcaQ5J?N?ByTd0==~ zu`KG3j`7si(ry*ANXY5C_Tg)FNBa;HpxY)M@^~u45rfWu9r%;Jc z2H+{EaJ2_5vJ$O&HDQx6VoD^HLUIHul|n(|TJ;Zwrd6m`ZiGX$Icw!&!Bz<-a~t_1 z!JFB$ht)ne-#!SPh_Iax=i`b*ZUn(h$Jv$MRs}5s6e~v^*eF)mOt%7WsMIB3svtcb zcwirXoI4AD9ti}c#5?iZCQwrd+{Zs~tsXe54A6L17S1aDyIJY82-aJi{27r7 z-9OszAxNnk%|eAZbO-L@I-iiMN@$vui%@MulEA<|bbS$bRK(+pN2!?LvmIP}J4GHn zfwVC4ti2e5y@9MpRg8uD7@fE-lXGU4pIQ2U%uH8*@3-%6Ya>S<*@rYIzJeI4CWbU7 zzG?=lOUug^3a9R(a>r6<6;X>zog_iJ7*%)MDFXb-oolxfJe=DeeTIM*>S-{~I;53j zM%2_n`rl?e4M8Lc4wXCO;cM>5Lcj{rN*n@V3_~x(f&Ttbj|vS5BW*#UVkjDj7>mON zEoA6_{f(gFy*7?=X#X(JNZ$41{?Y;KUYtE_LGO%(c|+IL#ih?W-4Ht~;HW(tl_#wg ziE2*#y7k~6N6Nem+YDaWORmkGf3-17EVeIYd>?&|^Q)oUVvpljuwbjk$I}x+7Z_k- zZGM4Ln?~;LS~|uBzQ31S7&<>wVNmNA%O*X4JG0-E=*WqE<}EpTI-tn^i2Wl}3@(I~ z%&f`GT zZPiI5SC)-BzcD##(-rIyeUZKobxdS`+ecV+DIOj~CSq2RF*2KfU|^V|sf$JB5`byx z+293j*O{3jgraw4JUbItps^arc7>pako{9j{DSm-Ll3RW*)%ICNt#hyvUbSero!nZ zx;_EEy?i`!O#PaBMU3me|07%4th3-qOdn%Wa(202I$fiXtYqE3dUN)*Niw>B&olGp z?H^FMZ{eC(QspX0|R@c?x4ux){3LF9mTrtt;vL&jMs{o$dmq)nIfj3uq@`pf+n^>6?h|Bmja+|=U zMktgvR&UG7+Fe7AformV@Jv6!@+iQnf+9{rlQJZc2$E!6ya^7aiB}tWt%>eEnw!DZ zUj$!sY1hDHP=A5z4VE3p!fBa(KKY2eYJZmOYwv5{$)CF!>StN_gwR@YRzfo}B%{z; z(*M2|wYQvmz}>qF)^N+O10x8y$}I;`JCUXaZg5#-9BJUH!4dm^w_FX<)u0vv_45;W zUr@q8T9rd$b(1*B)un=@(a~W9Uu#zO_!Kvoj^#|`kH^k+Q7$T~?WA628{P#xB{>5p z#aBUUL-o&yn1~2m;aX*R+U)edJ8ax-sz0}l?9+A-30p|ZEgi3+I*|4bT&o=F2lWtc z1Daj0(Ll|KH7KBeG6Q&R=6*LR!QYXdMa$_sCk~unodA0G;)mLA8Bv`paYX=b&+dpRrKQ|e!KatWizIKot%-@-n?^0+16|vHC62s zDdk=P(a|+6L(!h+&IPsHQE|8z`9P?+=?C}iL&R7O9w-z;2MJOl7mMX`;G=|mqswr1 zg~bVp&Xnka4TA#~zqZ~pa;HI6@!0tznIS# zeJoE2gQx)jX+W00e*`=T`pX{m>7^Qo3(|=WKJUlEs|C(7ED#+pADjN+%m*JIZ`?TV z&a7ilA2|?VxqjaM92q%xUUZl}$x(leugBIOziOs*{=jBJ*&jy4BaY_h7Zel|V}L)F zswK8?*92OA*GSIMYMl^T=k!lmW*|CXm$ke{TbJ&f|BavpzdIWcR9! ziVyd_$Gx}LEqdx|m290zk(L&q9)0kWmT^aB=ZUEq&od7$aM%7Z;>0hD3_-e`{t;~; z@$E$u!m{n|cL;q{=MVG;bTwfnVi5Gcz9v&d1O$nYC}p-# z*Fwu((4*ruf4T_cXcE6-y1-5vPy_;MkL$bkr3rQ^eevk@ot0&Wrp&z2Tu2X^ovxIv z6uG4&>(tBc&0ee0eE|t1Ae$>Xp5W@yUB1j#_zi z|Hw_H7~@)S391&{O$mJSM zR21#&YX}P<%(8HUh_AO}dEmO0+^1mN(&Jd*?li(7kZ&!xINBBK+NH0|cR81S8)^>Z z3a22^e=PfGyDR2*J{;#fmq34#+sgFE2l13XO1Ps7?kaMc?4r``pGK$5PXS*EUNkz?;YEWo#@o-&!`G9wc}Q(C+TlfWa-GrLY!F9A zh{)j+@FVHax%cPxtB;AEl3ls9V93e&!9&9i9|oU3%O!6Ac4_*Zzh?RQZ14!Gxw5wP zf0;@*8J7lC5Iae6{^ZnOQLhy!@peGm8Bvz7D1fw~J_{tlIK&<9^I@S(n*Y{w<@T1_ zd(Qp0zAM|10Q}qLE7*$w>3S!`iWjo?MGzetxy(j3^1h>ZuO5&*rK0%f&omude1W|^BP8lk>CSH_f3xf&it4}Z8<6(0V7a0$FN6n@ziC2R=mBQ6r-KTgx_NnX9wc{?>`c00Em|&eX-@do4jjV$b?xUMOe@^!E z+N2M<^agm@;XZKq{CNEmX-guJ#2pngWEip$KUN8KviUU~xOKQD7@z02-`;yh@Ot1A z?DBf>9uLODp@~rn1;GN=CX&k~jfAx4+|IsW!V<`raOByh_Qj_i&IIJ_;GG|W9)`6Q z0}*Id>eOne8vwl!>1yO#GQYFAqV#cl*C;|+SIy6 zrA|liuZSp;)#;6`113L;FKEv{9wH?2ZJeMos}s`$e}4ZNl7bc; z=guh1wIiyG9p%iW$5#3#uZB|31P&QK*#FV*Xy>Qk8UBFj5%MCPTuiAAkRUy1S_T@` z!YOw7ZAbG9_pGsRQ87O>wJ+KGM4|nU@Wp#tsr`=Jr}fpt-OrFbK>3H5*JogPU~q}U zz}-f0rP>_6QtdCe3%yGQe-uAUmSYxT0+E1Y@j`tVmsmVJ53aJB!`FuX21Vj!#5-$4 zcXoDiP(Cfj@U7(YAfe{A0M|7>>g<#D2ZlFPfHw@ot0a5oY{?uos7VXQS6~(3g%W*s z=MT&&lE%^CK{tj3P*8jfAxBDfA#*g*0kk^ z#vKRDndI+V0AjiYFZ42Q@|?zEnL~Tfye5{ zJt}THrGAz}>Jt-ye>RJc9ADk&pxRYw&()917!#>KIS~+nh(%oIomp=V8TQHe<>#u#y|iHk_|jg=e_UF@DJA#rHNIFM9I-pv zlDDFE*qpQ$@Xx0hbu_?`ucf8I6S3(tW70#cY>jEO^47uMMdDDn88^# zeZ6Ao&j)8;&CYp#=A;AF<8Lf&0Qc;x==?c$yLjSD8#jEoAjG&mAhCS+#OWJzr<24Q zXTLZ0HAglge<%d|FlBoXWcN%%rp}RR2*-F~%}l3edt^0cIkOrk5D)PAMEDafXU)&_ zhNEK%F(IG8_f_q3(m3uK-|Bc_ru%rNq;Lh*qxUMl)usGQ9%!cUB!#HQOsJL{lw#d_ zX_HgC`n-vPAf?wkS1N_Gq(nY-CG=ZpB|T5+GMANbe-A4(6L?Xe&NuK(sZk=AnQ*@V zy!)?&Q9}rRE)SQvaJM*oB3A`$^SW|?sz<$NbRvAcXHbYL_M$Na+oO|ZmSY~cyBv&1 zi&^DzBK%BmIO>5D6HXI&48it*2xqMF5S4;{c&6a^CuZuZK@InR5$`TI-gPeQoxo7t z6rdV`f9DGGmAK4>`*dJTeZoVfAn+Is+jWnjY{hT;5>%(0M2~8X6#uN|b>Gn_iT9?U z_x$$#=b1~}9?!+<=_R4R29*czpYZ!E{(b4wexJ(YlzR{Fclt%)F9}@%AK{%mFK{;x zyptFc=uYv>OuUmXg#BK_Sb?KluoBHpLwkWVf3^~Pf+rEJf+u(yjyCW|`ie@S(0h8i zp<5>+yxdS8&;58;eZ{q@ugSH*D<9?qnBWYpD$(CR($KbN54npEN!S`chMT4mwTR?~ zxZqYCm4E{j_Huue&q&9f%W3p$m|q52HCls8LA&eJsFSUmhnt(b^F7(ofwDUk-JFZ4 ze?!6#AsHG~g1>)+VdRre%@y0@M!Nvh)4R!i%tK^`5T)U4GN{WaR0b`Ah;=~3=Qm-1 z)c*rO6;7m7Kk505Umx!ZP!AXAKpsU9B8Km%h$8u|N+{6WBq|jtSBPy4Np@vr2;L&7sR86T`(?79ecKj$KE}v11fL^~ zdgQ4Sq*HiG^_0=&o*n3bB}wbaeyd^_RK;{%HmYu3(F!-yGS>efG!1UtapWf1O+W z_B%_DmtA=M_MDeylM^2mw35Nr`9sz=3cNNEd(ip{c>zDLlW|sK1UhSfUorfn@gr@a z8kvoDw7riIs)sxK_VCqmy1xZMcvLPiv57P>d&=0^M_;(TU~gpHk!71+8JE@a{`MU^ zmz}G!HrB424>jq_^KJ8IfsZ)Pf1_^?DJiV2eQwpr{WCJiDIFbYjpM54q_@-(e3e*s z8LK5i2n!KmHG~j0quJ~$78`s;HceEN0Rrm&|8@2q;7uM$!|%RLvLwsu#a)(FjJsvI zfeXgQ#<&|BgA3pW*fh(4!88L$@4bYO&X$3@q=v-$KyyFimMDQhf9X-zSVJMYv-X# z0D@8{Wp&RzdFRFYy|Xev+N{HEZ@s?e*~yQsSbVXxI(7S5=4QjOfA)P(8O6%FovlUf zW5SlL2RAtDo3F<=ADUe@ufVi1fBA&2rG-w{i2NwNdM|UGu7})5GXYVqf&U0akkl3H ziBc+g1sP5|=_>&oI~!IJ?$W|%nr2QK(>#))|8!B8M71dlUqjzf6|koK8K^)dPXCpOX07Q zgcG7)r3<>IT7j;I)YQAS_(Jon`rMA}6UUC^ZEWASbnEHW^C#>t%B+5go;+q{LsM6v zM3pVeQF7^EN(WDUbkg#$NY{Ha7j(3rN|?H(p>an`e=>J%c*JV~SiWZEnsp!z&Ge?k zgr+^MWd88*7oVk}4)QP%ReTF1T?Vxn{?qD6msad$q{om(Kb)7I$kadQxjNwlzC8cg zmVVorGvqzUrd#WJJoB{dsqG-u8$ROmF0e=NdJX#qfin0nID~ZtOI%`T#wnIBA?Rzx zO+HCqf4nSm3U&C#pX^vT15Lv%jSV|nlKU?SHTn9})~#H-o;P|;iHS{nTDnn$3{ikQ z{R5sFvu5aF=>jNMsK{^7zT3n{h$9EzuwXqmEK-~%Y6_WAu=lUWKIU#6dlHoWwCJ1q z(dF;Xy!hYV`Cp%X{FNGR5&6@kWA3NxE`y41fBy_BUrHFUGt#k}`{}tW+&}g%{%{My z*KDHCL3_pLlg6}&Tp=Rq!)QTEmoF{CVgN}Y&jWYXifg}nj$6421iZ2MmGbn_PquD- zwds}HJqHT8C&=8fE8bX_zn**QJOGrPb;r zf06*G3T%LP|Le_7_z*pCLVhPL=;~Z>>Vqo_E>Gujn9B$Hn%DI#Uk7e^=E;cz_zV~A zi*WXA)Q`bnlt`3D*2OBNztxX-N;s)a+>zM}I_8{6oVK;GerKzbJ4P37=zne9%HC_&GmJiPVh`A>$6uJCGR zUE9fxqw1=jUAE<9-PMhE-v02X8&|6iY#KG`qqUd+clnKrZTqUaK4xx4W=HinbCxWa zuxRv_joY?u){h82Y`3+&(7XR-y+|=}Tl1`wQ=peK3GM?oqkSk?iM@Qlbu#mye>CEW z;2e2?opgm6{Gd16JHj8`O%J@4Bs}FB?BD-dke+w;=}i`oqy6M>#_JP(-Tz+=-2d_= z?|kFA(?Fk-IH?%LE z_rp;{kUQd=*Nm3af9KwF2e`Xkd&?gRg-y4UlrT-W1TO}6^!{U%TygAWo>BsP1 zJ8oDc@?8%es+qnI@%Ue%$RGxQxqQ+z9v7X(uJGW3?RLPgqIPgc3s!jB4aL_&e8#w#f#559G`fc7hfy=v4Agp7=1?eKVE#T^nL+f%0uuqdGWP*f5&SaijTS} zQh4#T(c1-l@q_Upxrw$3a%}*d ze*8D^)qC-^(_j4tK8Y7!fBUb|hvib^kqamRG?)v7c{Ma%kL1F9hzwhwmOoMG+$NgG- z`^9*QJ$OI`aT4p7Y$zV)Q%@WpR4m~mYlE=R?Ra+Dg<1R(j`rC#eoG+GxLW8}vBXGVAOTq5mBctax&dr0^f@1iE%UZRv}NL%ZWm_oivm95 zAbg0rNIcUEg?7gTe6d6EQ9t9EZWm_oa{@lqFnnq}(+h=mCj@-f!T6Bm@l3Z1GyM%= zrr*Vqu=q*>X#<|=e}%$KKP_m~o5M6}EBs3z){q!p`qT!jA$~qL47%Z8zD63tSEGb& zTo{iZIS@6y${hhKv1Z2b8b~eYD_cVNOy)}nFBaf!d<+@R5ENs^(P{)|dcB%F6>D9q18=Yfbb*5pb-lkf7`|KtPX^v=K%-Z7Q!!lw*jg|)PrCsbV|-W#d3>$RA^~6AAbk8d z|Kr8i>ctoL5PVHud~Hm(fX_A@AJ)N2K?ko1_-upmA(>$vOyYGA$qeZrSb=pg!&eqa zj#vjPhv@4Ke=L)X!7^c+aBh$ZLUz_#jL$Jxwu}L12B{WmbROrcM@oMkk0(Q9(r@4y z17sLa!Z1AdJ$Rt5ZN$2kI1JAY4<4_s#Sg<%?7;&nKqaOpb0{8UHF-SHvL42GM*8C6 zj-b4*JRUq(dOULlWl`n7i|5MkG5k3Q55#jZO=w>ze`M-8LZ{J%5MC>^zsk3VGz8+g zl_re043F37lO6XM)R8niw`vECH^hIy2H?D@nEy3`9Ibe~Htirh%r?ybiGm!T!gxlg ze;v;lunps}{sx{gz<}{Y4a0Nag9nal5+0Xj7@i#-JaAlp!g%b%@DzLSKsknEdJ>1? z!E&4^f5`DP#*^%e2g-2~mSc?|mkN(uP_|e8yI3w)2*HcMH^^}XQw)EE@U2XbPmD00 z7WbFlil_HI6;I(F77sc2aT5CtLo+wKk_pKKZC_5`+f81e|zq8> z5Wz2@+6lMy>4BdF-opD&Gfw8h*D7#?l6sUi%Yp9ZnYp`-j@b@phhvJlv^ea^u<@nl zvZ(a%Q_(Y>Q|Wu=n#9B!v%y+Z9~)a=W4)F%IY*l@GnydC2Z!i;+&wQ13Z0=hNSzY^ zemg1@7rvD-eTT?Bldu+P?V_r6pnK!^fAHrzW>MlV>Hjr%#VL z5uRbE@98{!>v&qON6*aA=F~Z~gusWD?0+B)b|N-MV~L0eHd@uM2Icsv*j`#Lm&sV1 zQvlt0xsADzl%CGt5BDJia|Q5e+=t}if9?M-Vu&w?z{0wg@hNPX->B@=IGxR3K7#of zk!SE>6#)4K8KYzsEB(SPk-;=oM$?GenUG`Oh!l|8Xu^`Ch>i|6>+NA-dOww{mt|3r zP{^@Q)89n3du}Hs#XpQnK30LKGxJZKP^`ZHm+<0JbG@^}nLO7~A5m5k2KKV?e`P6_ zvANkHQL+BD(y8Uv!ZBIFQ86;+pRx7TkeL$_6DOE;)@n#?NKSKVs4XqN2b?=$aOl21a=8~#9w%K~!< z3TI+bN+dL%P6>$W@k zCgD3MonSGsA7YbV6cMlb%X!)QR@gz&8z+v`>_QPGCyFQ;&JQ{k-OtB{psiGK8uW4r z+R9X%->V1kD?>P^AI z&%39;dedUv6&cY#e{I^Hs`GGUp1kBNOV;9%0=QQHm$^;bh$MhlFKQvT!+j9v;!l#3 z#8r2nCl^1MN54&NX5$G7wEQ7CvS6u{Fe;TS-HVG$@fjbLd~G5pUT09=*?~G^P+K)R zJ-Jw)5^zP6U1aT@H#0RpIztg`)j3DgpBqOV&)1G^j98>%`SLcuQ3Igq(L;NWJ^I+*ll3(<^^>b7PbKIM3 z1)qhDHRubhe{)x6u;P%;>cxAb8*`p zJiWvxe*3o-7;ZK^bxzhkr%H`s74G2f0u$sMX0O!Qo|bDbq5KKey}2qBCnl{46UT zn{e=prKxS3xg~P{?S8VTmRjoFH_pzvv7v7xe{=b*(Jkp6AD`*7H1C=k&qq{NFxfbd zsT7|kJP*h6FMO_yawq8ZL~xKw6;8Q~sPM6$=kmD&y{vtk&)4Epy2L}Nb}*&TEZsTx z!;&)-PW4?zfay0ZGr2l5m%^%9#?o^pgh`Y6-j8g0oQ2c_#rf2>yzSNS9&isd6E*bEaPKT zOg_H@?8_p%2DWeB8_+Iqtu2|Yn4>t#y<|;>lMCADiI(JK3mhuLS1CVGB?_w}Z%f4nG-r6@1>A+$&5r~|{pH3`<75iv2?BcSAR z4Ntz1m>4<+!UzWW2EeCayUFKw3VW8wZz69gj&2+n1h*JcZ-t`(#~}4qIEuG4QL%xI zk>kdMu-E2o;)lR};7dLF3H}|Gmu1oi=M`Bra0DH21h2sn@RgZu$fHp}_sV9Xe<+fq zX^B9);6`S(&He~}aug+(m9qlV6>S@^$``ldKM?s}Xl?$x;PBIbDb z$u{`k$#6JVLkWU;g$<*v#5n8+jU%7It38C%Mjv>w4_xE}FB^cfH@t8gj|Y8^Y4ZO4 z>O=lshW?Ii#P`fZXd|KtYmV9`4rZ7Tng|ReH2!`rlh0`>U)?fWI4~V{e*>9MnGLY3 zi>(_vEB$!wt4qVVk5=BC-~Rd29nY7RU8{TgvC9`0f-FPDqN-)b%1$r(iMd&^vxR$u zYPq_4hghqY=U0U|8N>6fVmB=ZD@|dU!yTX zV(CDZbcG9K#_Q9uYg2_Nf5Zhb2bVvmfEiF;SMBxu>QSMefTfo?BZ!D}q*#=RfuTj# zimBrgKH|dBH9K=^iaIeYB%8S%*Hqg7E%{krM}JY(BooUnm-^@JTtI63j?rqewYFX? zT_IJYe4W>!*Lw!nuMUB{Mz?wVwA#>6B229khv4haN!k31LwxvLe`N~ib8-qPwo!&L zwMpQnQb;pqHD3p3fzh3}ymtE5aliZSF!%16GeC3k=;bT@z<%NB$`dP?%U3T?TvMYE zD<*82vGs*|$f=m+OP4R~-`Ib5_qN)FqxjW9Lp{JAc|49@^Z<0yBfSjt=pj5>)r3}f z4Y3l5d@C}6Z)E{Kf2|1UefylQLQi@he>%fu`JU!Lcn5~p!oA8dPb?jX=mzA>O=I~HG#1m4Rr2<8yhc9g0vSS8c}?Y+Rw-C+`sVEe%OKd5*kOh zPn(6rcHBno)5Z_BIfLTSd>c^YzJl8recEKeHgnN!V*yXQo5r_|OX~dX zpDR$zkjGEfQZMi)goE%O@uirSQx_3_^!kSy!_u@3f5LylW2x%@*}cny75P@^8~;}+ z{C|E+&`kKP0|YS?3!lpeRO5_QvP-1r-8_C1=K$3wPoivTs2U+|qk!5iMK_`Y1nu^% zn2VJ=+EE-FmSfMGa5Cq2oF+iBP9iOCq5t=Rv}Ic{e#;JR+DSGH&H{Y?<^B*Q& zA~4Dc;wq=XTUZ|SfKZmGeGMDg`fC)3ymd5T2g&(e=UkUx2>Gyv>C01vs3Cbt79E85ebT* z^qkjUUK}otYgs*|<&jB%29lS0=GGh<>nM5^6rQ?$+SR!8c`mDE^0*E2ZJ}vxt?BWJ zVrG^|$_79ETEG72sEVkuTW24CS}Y#3)s+;n+?vvVO(b48t8wztqn_x8&nY;xiL)`! ze-oiSUFto9gfr`NvOYqQoBuX-9)UhCPBgGQP$x7j95te+I` z8L8yKRZkJNxBIg;tgFAUiX4qH03p4>f4AQpaDSo>95Et9>QYGqP*xAhY~}+lh|VM- zLk-;FJ5n7(Udf`nS$H3fZcFPu_u{fhC(iSe(s^#ARJUfvho=|4UQ+VT!o9~BAWl8E z;E#X*;rpg_V-N0`xU|HQw~el^uHO6L=)re8BFzWwac6cXgw*M3CjvW=K_lbbf86%k z#ycM;Oxrmvan}ozhU+}CLoee<(r6#8$8FFp2%$|0-bqR>qz!BHrMFEfI71AYJ#Z#} z4tOU zpoLAe`cX!-m88ZxGV`xruQ)U>e|x4qI-)ve%4DG6e#~4Fwr!CvULP(o$n)~5rjw7C zr;giru2LsoEmbdBUB0Tnb^7iy{^mQ~z@myn@#sx?gwc;8qLfk>Ab{XO3aNu>zVxWq zedP6zzgrhc`P2-y(l*U|+?`{idZ({>v3c43gFC+Lt$S*DL04YG>%e(;fAW#m^ZSpS zE8fV4?leZ{<-}y>CXL?n%E|-xx@Nz3V9CpCEtcZuf{M;EXMc^Z@x9w4U~shIU!s#@l+rFtNLm>U=Klt{2)c9`djWBZXHM+_k#yN@fpNV zLERyj0f_Ybgv5z(J@{#T_iRy(>Pu6&M>H7^18T+6r$aHhO`ZU?s= z{Y-5y;f|9#8zSP2Y3b={UhYG>G$^*GQu;xv0w7J8ElKeYr^SJ~2G>`tf^1(n6?GcX z1MYRL;F-R3A$OYGe>o*N726ms`4z;jg;vI#qmcN8gs^IrPDc=mrE(T_^7dCrLdrF7 zPki8fAaN}&m@D!sCU|Yl;m6lj&khvb(B~St zpQx)%v7;w+FVrksvt$1JjcBZ6-0@^Kq$UdG%kn3bR&4|ue`Z)Jp_brCDN=&`A(g-R z+7E-W@#E=3X767;es)xJPgX;fsVpzQIb~<}=y{2eu`S6(<(A4ZxlK-GW0Ou@uL)00 z2#T`l4GDRvRg(>xGNmET7G^i=b&2_iCapUjyhye}?GMTEmufUhf4N+tTuO)#P5-*> zeRZ1e-AG}3f0Bx7V4LCM0BVC$Rq8R})!nUa(WCF&$y_03OT^Ne`Cx5=ZQK4*Zdn$- zE7}S7uepqrFr&=kfzl8$O{n}9yMp;;8b8nKQu5`OQYi=E>o8#lMa0)_LB%k%%1(ci zDY!1jeHC1j8zgD*CjvtZjiUki95*U*lEDbx%$nI4e>);006gArU}WNmd9C12oV|Kw z(ui>?ZZi2jnUa+|m%~{zD498nOT)ag-X1810`EHFMwf0qD>-^Ql~FW3(6WB)%PR1 zlbq=Oe=m6u_Gd-!rNShpaHYOS#HU}(cBH4nt@XqRd~}1>VQ;7qcFp&U{S#afU4k}xfmp=uXGP=lKWh5-M*($mzQ1(2_-%zrb(QVgRB3@p#K*Est+ zf2gp&FFZc+L^vLbkX{6f`EL0f6i=OIq`&+dwaG$HNMIWsp}ZoDS)h(rKF^?W;TYuf zDX&C?7!r)!H{dm`#pJKhix`HyS92gGCRev%sUj{V#4>3_aCSt$ji&%}0M$W~sw61q zq{uV=Bpf>FQVt!pd4MCzr~K2R8y?T?f7;3q`plf!`uy0q<>icsq-l{zV+<_Iu}w^Y zL*BE2XOGyHtE)?r5QOB|6XdcyoHMf;~jLbwa^( z_&@UC*xuxnN#Qoj6V7DI{PCp=EhFt#=ZIy6nka2>YT($V$thLA;UX1wq(-Sc zAl3Ruh6ESe>~pi8ne+5WXNpqEuwc7X#IBwJI*o*y9Qi z27(VS9NB30s(F2mBW--?0-T(2uz}(2Ie!?BiWxRfCV@yyDgsE_e~&(1Fo(P|YZf))Wz{OASxk zQQP;_2J#Oj-L^oR)@n42H1(N~6k0d~D8qJEazV@+S)|{|m`9jWw4$8yHz+BVK12I4 zVx5vRFbz2?7NY7!RA#xUhq0 z0XQy`8Vu^haQlQ<>!jq2n()xr0F7267x`^SZBHh95=x9pjh}d{Sftaa)56V@o&9T* zI;Wc)NDt79nnu{SnHYuao4+hE5mFFIc;B<)orhp(&^n&Ve`hWkVpeQPLa9LSMA2fC zM7C~j9oJzp7%k(|r~~z<9~oP@CEZyGjfz?wHoLfe2Q)vHXk}5BxhW;N#9mX8kZ4(; zNwck;I`+xdg|F;RrbJsA5p9n$&&)4+zO(kg==OavnOoA55;hzzed(SvEP|wKA6(dd zH!CR(a&naWe+E4tO2vpgF+Cs|KMhOBSz!^x-pE9!1?2*Bs8OX+wSz*70uAXM1!Tb^ zL%8=&9$3`4v)(`D@f2}%K|&Sx)0N4Or);t_GCz8L|4SSdci>hJ>F9rN!u}1Jiw+0L z^+e+vkW*$Z-aim{Pk(m#$4ostC2(V9%~S?`1k2iAm9OMwKs&)P;(fWuPD@ zW#{CE$5Mil6-J}U99o}M`cChIt->3s3P@`ax(8v8iXwv2dt83Rpx0@*#)IIkrlt(6 zDi0Zff7R+$j?{;)H#M1EO_r$1&(s#VEVg(*hE`~`1?ge=wvz71gtU0OsT_?hby}1) zM;~q~8(sM9w5rW%vEzfR_Sh)XBc!PMbWC(aSMd_abtCy%f0|e!R&DD7ySW*S zyOM3AMzoBda+%Wp0LVz<30-()YcBuun$ zT`dHz^r4|wbkKPpLm%WDQ1h*vIt=OIw)u6Af``vE!qMS3xFHgWR;^J{4DvH{c-!Hr9p6Pc)cno^&U2oz5iCB4N%aB2f6dP; zvyWts>9NPh`vpH5>^~|q?brg61_q$t_+3e{(s?*Vn(Iv2+LW`Sl#%v_DbnN9k2ipL z?!C3I6y%j_0QcuT>o%Mt6Z>y>y*06R?FdsaqSEf}qi0~7pw00Ml|)9WdR#2OEy9T$ zC*u7e4&->!LFtA#kl24jS_p|;f2)ZLwni5gMHWW3KDj-kerer^jPZJZ+37j6;z})b zDFLd$n8;>YEMCPnHc^=*OKuiR8Hqt1RGMY3PU@RZ?dk3efc`??^QraLjELYMx0~lA zD`&0Lm-yXv`Z_LDGN*b6}TZ5~c8MR51a{4NE;-$rp; z+QcE~@A-WRgucT=MJRKof8f_c=(_@rEf~jj-fM>N_XJufkOSKb9x{aA6=<1AAUuKx z3*mnh;EfnA_=gbwz5pMEX&1aM2>(#%w-dt!?*qc`3GHhz9>Ft!@Q;M{Q*nD?t%LAS z1b8M;2<s=^+4ZnZ8Fv>$ zScvCOh#pYM;j=96DF`XY^o-{kP!5#`U(@%vE3Ao-p}Q+NN?NH@LywT~SNF1PfEuXL z-SqfCbivu1YmC2(LfM>V?{6H?W#@%VjVLS0Ql8Ug<%LW!f0q|$DOpq8ybhZoq+(J< zu*T$oi9BoPY7Snl@2m~-e4xp+2>P!X~Va;i4~T^L5# zy*C_@N1}}*fBSRtQe%=rt)U|`OFL4StLX)HYhYl2S{t0CD%517ClCF35LcprOVP{F z_)4r$k6}=eQZ6xNX6eXGh|Lk5n#){GotUjDR3!y#)d7KlR(k;f`X74N5(}Gr293_pD1>p#dkRaF3MCYD59nD4!kv==p!b| z=Xb_re>R)Uk&$NM=Z|m=x7(q|$MxIMZx)-KV7SLQ2`F)&CQu9}f`}tBi0~Z$c&C#! zM@8vFLI@@9NT?+y1Ri}laYQ_{Z_}^P#C;uMHb+E6M!NIyj|&mzNJJZ$i-|Ow&BD)r z*?D5^rTh<$v%&w+Z#Ekb0i>r1^bX&HqX>hef8cLW8FKt+iA14*&OE@>dnt$BlKR(3 zdk;*143QIIi8Kp8->$6W{^aQxb;$ol`1B|u)I=D%gD;lLHPG21dMVgtpy8Ic(=kpn z>=wFZztZvXji7BK7=ajrq$T|1X56T(ywUiO(E|7LZhyFjJOTHbe$NmL8eu|W!GIvh ze>}4(GBWa?0_&iiaYwjS#5?YDg8mRJD^m%K8LU6Pa$Ao@WwCHCLJ5UKnfzeGr zQaA=mIH7?{0i(FreK_%(Sm|$lc=tT~#@NBU^HmixA_6P35AT4xiu;7v=6(T6Q+0_Y zN#7|qAk~y^FlrI^$@a3c?dXg#f6DzMd6-(xil}aa=zEg)j=>kyY*s`p5g=Fge_Hdn?lXgu zlc|(KrFl9vW&YKbOD=V1Ou75i$@gdU-QV%V6Fajuc6DvcBtLzY`^&Y~*4KdH!rwso zr3>6s-@z^G9S{$a-vR*}HgNwy`ydo%8i#9MX>%kJKR-rFyZmK1BM@GBrs3luw9&Q! zhZ3A5DJm@0esUt%w279Df2=OBgvXlJc7nuTiaa}O8FQ15#``H5S0D%qB4onGmXDbM z9ElQAW_gM~iBJKVGO%v;p3+_2?Z+le%2rc$%u91J+1h&k1@>I*x)rGn9 z5{qLR&o7$)`|Gp0>mpneaw6oR7WNv8_VY9q5)v3Fjf`egQhy@be~~?K@o%({!t0?~ zT!+=zrv7qj!}+JW|NYARHzwD8(6Z)KY4h`|cI@gtIdS)jh3Bd!l>g7pKmVDYw(FT7 zvF_r|6|c{=L?4QE6t1bCvLJQq*cB7!F3wMLWlg?`cKivDFY}m};hfPT8d*vz^;6IQ z&@^-lv$N4fPoJ7Pe<<^`)~uxXa<+&$9NK%mj6(}fX)I5db35D##~<7*~8j3Jl{YLnJP zrKFItdp}vU>Yr!2ULP~=PSe~|4HsU`-W^|^M*gY)a-?N3f3>{z)eU>^EwI}U$0Qf* zn6vXSjVzTszn?1F z+RA#!&foRje>>jbC)wsNJHq|#d{RZij5oLJ`=q<_=s&nq=bzqw3V^B=qjT5KAIsPD zqfi!imQY+~WeiDDG(Mz9$4CIhVZaAuZQp(Bo&G18(EYu?+<=y{2aYfUjxY>LISa+E z>``JvB9o?I!r`pSPRe%RBj&-kF1&ir-^s8EdT6upe`Ukeo;iX(kd2T0sk3@(b$KT2Y5&)cMb9x?S`uD(e+nxL zowl)l#Y;1~?riC}xMm!uUVCEOuC~1uw(=gTU`^k>6ZI15HvfPlKyyB!B5}r>oA-aR zsPfp4p!VF;+fRauWx2WQy9$sMCNs#x%pZ7*f6x7lEIwHTzF@BK79T^B$Re_fd5gFB z7-Atul3OrjfdJ9MHkX)}c#DrAS!5cy3E@E&A45=IN0{I979T@0;J0?-Ht7N+8Diee zyvbX93^BuR9b#_s7N7fBxV4i>H)1bVaYZKJ?L1}x55zzFs!JhmH z)fK5k!piur6EC#!0wf4+LjGgAvU zws0Skkl#PziQVH=k_+7IlAK8$9u1q7hUf-_x#k0%X?QfpJ?9K*?zFLxaQufe;2+d zx%$oZT2}MK!F8`rkG1Wwra!uMQfJEMl*KJ`yE8_)3JRY`c0Gdd*#WT&3PrM*+mnW0MkuQW= zoWi^fX-PoY-V{o^T?@BAA^t8I!wei&@E5tD^OB?sK(Ss zKI!q3j+nc4{DxOs=e)CP`SVLM!FSsZ@7XeOUjrCX(M`_&1dRP)CXh-t$)p>&@7~L* zjq7-8%brhrrk?vNx98H?T_*uq-di|kg9}-A6L*gK9`X-ccVygI-Z6=XB=Xk%?__S@ zkJPRHtK2!pZ)f{2??C%Le;tlA3fuR1B9jQrk;fRssWcI(@OLE;jPFIe!8U!!Jv&M> z;BG)G4}?oac-D}Gz1QcKtSW2VSKIx;_DAk@)@+?HZgD~98`s8eZExK=e%yh@^(*th zsD*pSEiWxvICc+nbFft(Yyn^dpZoD2oPvfO+4(sQvCzy@tFdtp=M6oSU4IjIkhVar z4TmFwHePA7LD89lMM5bSq5AoN`#HqO|B8*b)Sm4-p4Ji_Ju~j`S1ToATgT@5-+w;u z&h`b*t<2*T+aKMxb>iN7TiIf8?;iK&jV767v%h>bP`o>4a_qP7?fST<>exR(-Id4p z9R&r;%k$RF%_RixM??RZB7ZbQB;q~+D3bOwLEqBoCpgOd;gAjJ)dIl-?lPY`QsopJ zW)Rv=KGoicyyj!?&z$nd^Cv!lPIK0#&dyEQyxR;WcaZ1Xxj$m(`B_l$!(TxK_MLBW zKdxH~6t_LTGqml6$nT^ZX}Ib66Z*UlnuNRfbN+1fc?$IUNc?%M1b=-V5AE5<^c48H zK!HAsp!FDy|6X_x=l9_bPg9^ya|0ShJTkc zH{s{vuhHkRP_BL$U&&W^Kg9hHd6=BfuZ|CnqHl0NgD=Qtes#oL$ zz9F|@$N~YPg>5d8Gk^Kj5ks=LugFaZ4_X~D1od@F{EQTC z^IyjXCe?uxh3d^#vb?FTcUntxQ*Ui6#XSk+GiGz&9NN!)J%6tWXweA=*8;YXPp~4C zv7`^(5zB-amk1cqOT0I+>Wj=+Z)^^o3M^@vw6dkSwP|Ht6AjLBKhB&BLiaribaQ5K ze?^?mggBRAoNWTmLUKD?d!K`QUe#q0gC6*yU;yFxOw|4TBIy5HRVMN13TL?hV-a$)~7 zQ2!XRiEJa@fsmO3M2k-nP>mH8&h34kAef_kg=Q3&Rw(3hBcNSku}T#d=Gn8MoDbMx zSQd|No|uw6$6r>nNvU?A$5Ngb4QA7MaBKU^4g2#~H-B({e*YlQ&Dc_Kpy3b4xG~J- z&RgsHSCdO;ZY%obHl5oydi>5A)DL~CmG3Nqlys6GG9NH+!5N-OIC6riu#AWlhc!Uz z7bOzOnfrs4Z6mCP4 z_bwjDi1H^Y*Z-_{$|ND$NmZ*7|71a}}l3K@X?;bTHHq_dfJhrH6Lcui0*j41$ z_P%wD$>#*Fc1g?###bG|F3+31VMb3|IZ;KDfP)kH25Tme&Sd2XoHE2 zs)_~(3@HZ$!mkB^_}nY1ijQP8w8TMRw2B}QEI0^+0?k9+i=(2!!VUtRbbWTK^$C+S z(NIPWO))_8)3EAih1w^Kj9w(T%)gpCgFvU4AQ1Q*2n2CIz)KQj?&(en0^Q?&az;M! zDkQ=$sQ&{Nh{D>z$LiDB6cA{!9t5Vs z+sa>6Y-4F^0RnA*@&FL`Cy|>Vm$Sp>v-Z=&jL&PbPf#L_!rt3_b@%=xhJiqEXdn>U zw8lRP9S0}#Pu}m(4q%Ty@#nj;XvkMn?@yQ02SeSk)v749}3cg0))3^ML#wQd~y8SuaE|?Lr9{fI7pi2=stfzDMzABT+7M0#0 z)Q7Z7s)h*^w#tK{MsHYfe{V)ZL%X7%=+9VbW5lp5ME}ls<(r$v1r-srK{v+&WSB?K zOvSYx1Yz^<%(ZtlH+OAJ0*WD|(a@Etf)Uo3XyXcqKg#Ji^}Cisy?Jpgi()S!O2QRk zsUbpXAUV?ieUPV~K)gGGi_HSP+jrEj(VA5}mse`2@9%m1xq4^HF+=Q`;$&PlvfA|2 z>`a;19(J)(P#=P^GQfV1CU$d_8Vt_dPJ$%Gd%fzT1k6tQqP}h~klkrKr`p%8*U^~a z2l?96ej%!faF}uj?c>sjt4bIj6^~7iQGAwL6jt>4WoeY+*!_= z;;YG$Br2L5C3>NDjhDN-P01k5cpQ{o3;h>HZnU5%ACq9`zMiEBO+*t%GubFUwK|?3 zMPq|uB_#)vG01^bK*+Y%QxfU~c`iL29UEBSS8ci-o?GAVxmUjV8(uWkyt;gQlmDKQ zr*Bn8R|TAxhO)dInKE!VTt;8t&6(89kGjO5pNJ8osQNhiTI{9cH#Nue1eL>~IDI0c z+TM@)CWg84m%C8P#_eHB4rqM4pz$+Kz!mgd*!xh;1pt#|Ak!}_mR0mM8x8@@Ml1YT z5~gFd>%cDU@;(g%k$?0N_wem;GV1Z=M36`ltko3Of~+LX8`7JV6>Mtz716Mx<76p_N~{2PcbTj959-`UZe4d}d5Z$tM}oO1}` zhWmhQgR}ze0iyogA4||0uyScuHTa!Q8g9Sm*M!VE2-p?=;UgY6-niqr0TSj=c`lq?-7l&maI>s0`|47 zlG3=(kspR~s7O&MFGL`HLkp-7+7jCJVfz7kS1cyWmave^pY(XqQEB6}Jfh>4)oppC zW~80H))G(zxN%WMlUX|!5#-t8qRBX|e;z_{^b_94Ywp1qrmEAj+4h?={c7Q3k34mP z4Q@{HOo$9j39qn-52a5uv}eb~%fL8>IOZ?SRN`~Bwn zu6v9=K51<^SIX1yutXMh7rRaAhCzS~3Mq!<2&fMKDeo>TExc%L6Apx7}~ zMF$JJZmc6PUtn|0IN!f&Z?Hj}`DX zq_%g0X!k2mNs*_ypvNIG4itWc_0cC+;$`!k?nBI4B<||ZMo8mgh(T{4fg4#&lQO*q zMBwOJmnabhhz_LGKyc6GIs^4Zl{))*l@Z4@OU=JsTE{N3dpjy<)}&bs^0uw@3``H| zHQcO!xm&|~$%NG#Lb#kjEyq#6)|?}r?L*+1s8X6Qj6x}jLxWSH7O6F-#T#SnVYztb zEre$%Mqf5j5_7`pqxbXNneYC|(kMTEeHos_sf_I6cs_4en_;%!5(LUUX49x3{*;%d zpuAQ-C99mEQSczE#oXa!r3)J45H<*mH##YuRUh2>C_pbwA;`l0wA9>=q#=T9;K*!8 zuFy=_vA9c|1|wY}Uz5Iul`#>ol(BH?mqgjok=6pIG{xvg6MD*rIXgYzp!pbMqOpaK z;&RC|;HTYJ4ry#z907>Xc8U)wi@JJe>5~KK1}EU7aE!fwO7~l6`S|$$xqF8syT2*> zdTxd@$!p=_uhK=yhb$jj;;xQvyZYSMW!clZo;P#;ur}K9v+&r-(jl5jh3vz$hmepx zT~F}H%6!7FNnGMVn)-H=v&AQ0J5MohZTb$YYUkZr+{SE|4hlebvH7sm`jTNZll8jc z;K(>2F<=jeJ^0Q}8wG?iLngP6&P&mk_1d5h3Lwju-%(gYqinrD{rYhg+}F~evqen( z{Rzd1P#rMuZ`R>a?5J-9z1BZF-yF^9%TGZZCokx@cX@gLknHGF3QT-?xA2$y_lUFn z^~FT_w9mNhrv_lnP0Xa9vt)fYDHzpVc-cixcK=1(Je8GFj*kVp|2Hhi=R0zcsH^kH z@nY3IM(pFL$+4T3g%-=%T2qo}c|Vw@Zj;oI8~HhmhH$oQ{>>aA4=F6+%o*;Wr# z1cV3J?C#tx{?CK`aBmRc->9(_bEHj>?}UgpJRIp;oE;Gbd2s0WPPMBFI!In@c|yHlDp;J?Cz2;TxESLg=(Is zlrZ?5blo^@Xo11&rLtAyi%)VfHd9gcWNZ7xhld9^A2HI}{@I;8L9Sx4$08>%`BN$j zSyt4Zi(a0MZd9yVZUM#kJ3Ol-kIyBVk1yJVPXzCJeeD@5Uno`OeJ_J}qHp_z_1RF? z?au@y1Z|dClBRDI)IZ!rSkj?6QzE>@vv^~=A*X_F>~T6r2ruG(ZitPdfC`lcZWa*~ zSp0Dy@Q2e4I#O=}o~EA+)snIn52y1!KE7}529a7+l!!TO{8aX`O1~dFyca5? zN(jD6q^roORQwocb#-c6;c60iX-v;Vki=F~4AbR$gGac_+Cdzr9-F$e#PtbqC*LSu z4xrs8O_3EC=E0w5Cf9C?#^N-E%n3H@lubiqhnoLFQ=H^mApsFu?||GmxM0_7pNkJn zHhsBw9o#w8k|-aiB+I5b6Xrgh9<@~;q@%cHb#K=h@AH06npf^_DT0#*YS8fyqp^(y~pj!Gl=k- z;9_1Y{;VpYG(8okE>Sz2$c;udY#mX@CisXpdI^CI`eB29O^ham(rwb?{tmh72b0;a z#5?W#B3lC8{fOxu7h_o~JWe(e4D)BcZ_AXboj3kaj9KdDONw;v>VO8I*d-DQGm(Id|-RH|6OQCGwJ`OwBY9?<=_1D~}_z_r3Y-@$J*${lrHgmSiaI_4)_kjI*Ah5ZR{R z(*@$W^@fL)dBCj|C9^k>_SQSBmIN>8YLp9ZixHyOR0vP8eHD9~yMo60YApME4JDBw zLxCyBC+5viYz;ezz zwz@D$mM%KRlOH;NT-5(FW3Sb@N7yg(rF5tOk|#WuRTw!ZitbyI*dRoifbxz}L78PR zppTpHDKNLCjCOXQ>&MnS!=2>OFW4L5;qxQ~lEc|2=XQjCt?2~LWD{sat&v(G6$iD` zU%{I@B%^Ex*jAY#)@ZJ6Rc_oh3ga3w= zBNxmG^9_^1W_SwA(E&Pv6$}lUfL+I1<+RS|=SO2_w~&V;KJWYYH~6P{y%z*$h@qhx1Au?FPdG2Cg7TYGEJGTuM>>77UY(Xdx{ku+wnAQzZK7+SF9DY(9d}u z5-e4jrnH%F-nX63>Y2_$NJV_=%yXkV5mfO=<<|t~dI*02nagJO{EJ5e#puj#FIpC~ zG4_|!7nhjdcYnR1nG?=flM*#?$3R{ zhJUDI(hs@@;G0J{vfH;|-`^L^ci#_G?Sll|(`7B-`D~Nhw<;M2!3#m+-$Wo<$LzN) zh;t(3jNf+O-Ofz@+`Rl2=J^Njb~+F#v7UC@v~9-xwK4x>leNYNVvEiT_d*kekGbSg zls3vXsg;L9YP~ywx5j*e+$IwGo#chs$DRWBmEfTi$ZlN+R^Oq{Lv@PUzZL|&8arR2 z?)BzglKR)cH|Q~?GiaVCD$otqN@vCBAr^A-Hv}iDdG5Ys9#+Nlmf^JLZrGohoQnM7 z1O5rRRs5On$n1>pTm3tlbl*K$I(4s;z3gNdMe758@Cb4(#+4nDrz(s?yt6nZH6Euf zr(%8p=oD0Y4FBb!x^W)Pf_dK$GVBCWBBcd3l{;vK z)5p=LSoC8`Ly#n&j>Z|8d*;Q1l=Ku(f_;55~&t^qp6?0iVIm+Yp|;}I>3 zJ!Of~uK0S?W(GLyq&Fn?pf}T>w&}P20H4?JV;!Q%2@k}TJ9`Y+r%?VSHTT0*v~p`z zoSo`Rk!PsMP*O&8^hPp*v4M~o7}Cw&1WwW!__vU^*8ThK>0tTXIR*MV_{Ct?t=73D zV9S1Q^yEY>dHzSXv$9AC>R~_MK*3QVDnSVC1FHyC&axqIKp$m@n~a7PR5(N!@b z9_F6&2?o0^#rWY7(Xp^AhiIYrxF$5udDZ?#f7AAa2R+mTEf+KoDL>L8JW8AZ!@Ms; zk4%B;MT8D!X?y1beRb?V*w7%QZ?*I!0Ipdrt^tu0mxp3p1)iqEw`@Uy%mb%w>j0h>izG?sZ038w zSpZb*bZFDJ-M926Ot1tU$u%3Wiq~l-5V}Bp;;G4@<#bc-O`G^HnZT8X#dmf*K*IEE z04RqFXTr+6M~ZW*zzyw2otUmMLp?US%hImIO@K0Gn7Pd8&tourRr!Ns9T5Bay=Ftp z6}^meNQ!bp7t~^^$QI%%s=PPfi?9*dJ7{Q0QWJQvduj8gkr4xHv4wQKaQqu;;jnFV`FI1#bTEkhsm1(iAr zM1Q~(H^LnSW$H`XCP?Vtma0FHOB!0SNmM*`@z0mmOP~#AaeUf;3y?wYa!s-+(e|7y z#BYZ|s82`;MDd@(CwtH`PMeeL7CvfIUl$_n?+_jqV*Nc4}||d{w1<;v=}E zRq`?Sb_MDy2X$iFmg}cUe)zd_?J9(!Q&;I>5;EQ_*uZ8^N-KPY79SL-BuXIcYBIEB z7ns^E*g0UvfQ=&LmLgxhc=~$-J~&sLz8t@$1w~q8m~E`nE-<6+jB(H^#A`?J+dsTk z*log*ccqh((djK^zg7v3H0}?tY#8>fhKvB?@sEYFYc)g~7 zA^LBf^eF2TKZ@_r(hD{$*jaC{U3o^72bNNeeZA&lR4sIH*@}NIX1+P# z*F?hfv@u}2Ldd16193SD&y<-I{s|ExfjM;l+QYr`P)rCAuRL9-N1QUFq{4Pubqcyn(b}BLkKW>q`_b?J>ttF z-zG*fwQ&bx@J$m5*+f77;$IWcVkc_FFnCF9S(FUFw{mUL0X3cYxNT!y&mWE#4--dS zt+t0oUhFU>Q>FIUfn6ROH9F!U*`W~W!X4h&s`fhhYeKH}cr$)fidu;PWrdO1fr7y)%4ZBU?SO&}J0uegje&kxmQXSkipC-IbL2dy z-SGDq)kg~0`qf;*`8zLkVccTnlH*NCt6<6c^&n(y$rd?MqPPJjSP_`~UoV^2nP{i0 z?WxJqM!LJ%X(do@##ab$C!X#OIYS1C&VOH#&JE8;fTiOq-x`-kr2*>s+dLCU5}}6_mlt1Sv)7(ab9rq4i~RfB6Pz8f(wSv zN`g}U0xSVTtCa&WY17*&tMGMtiZ*g4b$j*K9QJ2&2XVto5-f~O+rd?dgMp(*!yNg$ z>86L4dh!k2=p<(n)i4>FwHJN`MJ?ovOiYaAT&dH*D`GB+Cv_R6#FP*f+E&4ITn_e3 zDW!kn?XvIK7n|uzn220CLnF7XqPaF+7jnjMK=}RlY|gdzU-*Yb*g!nxzsz3~$Khob z0HL(FEmd0lr0-EWn5>r(@}p z21v7u8f&K5BD#^BDl=hQ@csQmLu})QX@egYX&ZeSRJ*TJuCY;nPiR8ZR2{1%d<^=; zV?zL4(6HPZE?1cY9Ay{l-h=FAHsjwoN2Mu;=MZkNi4c+~4NL87yB!l~j1AhaGjHw< z4`Q^M7Aj|$TZ~I@yh@Q_iS+aZQk-Y8fH39AlkwaZHu%v!Ep)iK+*)5ySRpCPW;=r1 z={$CGt?e~^$I)=MAfAx_R$%t@HUgc(j^@BFd{@gsIjWew+;2-JGM8b$ah{yB@duK!6 zdKUi;i4lC*d9Z!>ji|>qX{;=_hJUvgl$DD2lbRv(m*e!x((3vN{yD?>#BrPD97NHS z#y}e)_q&O|?#5bQxeg@fCZW(>IPkn~EDl>P0gFKzhJ0FCe@cp=C2>k0!b2dhvzk1Q zbB{3qJ>gllazP}l{W*kh4{Ol`%7gykbhs`;$t7X;s$lh=k^u5{pxi(4Ov<3+LxSk+E;1mlt$+~Rr5Xw>G%X-roSY1cyF|&p`-GdN(3glM6y+s@zV255b8M) z%r`GN7@QL5t&GfqTTDSWNmBU{-#~E+i>GBc=apuu;{jZ#n64+4n=O~Afn&Wx-y>GfE`H2YS_xH zfS5eA{+)<&h8Ks#b)250+f^#+(eH8TR~En#5e`7V4rQU_FAPv2` ziYqLDcL=e<37=v{SBHfTBAHpC2N*s%^_e}1^g-iCcGBxX#5wc>3m1ml7+V=^25>NkY2mh z738^?vJ@?)DkyL#<$zE-vW9t-(0o<`Wih)CMMqL$!MJFLKHWo)B zgBBuX#voNvmc)T}iIY4yl0Ya)Rsu}tyTk5E@UQq3}qCQQ0^$%eL~ zka*2R9^xB25Z&NSM{?PKtec@0jqc-lRvDGN8z3`W!rU;(a+1zw@7%MiW*f6_evEUQ zr^F58eMIS?qd^)N2Cl9Tu++?ceT%LM8mQ`Bqngh|Cla$iu$TJF*f7SRVdZdPT<`N|X9;i24f;1r2dC?8Db!>)g=SEp+_A{( zaKzmVGTiOj0g>o0cjNApPK0#8s8TqZbTs&ZBhm*?9MwUKfD^wvU-76)71ftd6Zwhf zYYWA9K(rnpav*uatQSCek5LwwOR*7amdmRYNM05QuwU&Oii!!h3Rfj2l6bP4`2s>~CQXn{iKqW^|GvUH}dlmN} zCN3=8@(m^H-Cj3jPAL7t&8=PJ>{g5yJ*ck?Sm>D%4Gi}f(i5+^RjWFJFSwwbm5%VdHshlPj9 zmw+Cra0qN1Oh#sUy~Tu2yPGg2V{&NRmKIX%%DT`LO3{TH@ zrz6#B9Di#%k0htF*iHRTBa9SisHrqdYK&9Za^MM?R<;dv*nsZUx~-9%WVEz7fPvS0 zcJlhFO0iD^n)?j?diw{5-=amBbxCB_#Id3>VFp3vRn3$FJqxTFa^xb+cU&s2Xdeg} zTw3O~zwRl6cnwEpC{Ufk&NNiLo0M4+=%NAQ&a&$0uXN@y3Gwj>p&xJ`ZlQ~wi)(8r`3RkOe@||~-Dke{(UKtock(B>eGQeN#Q$| zh1SG@t28-wlVeH>Y6E328P>x-QpL2sHZ&qAN|g0Og^f0UAOQaL*qNr+SCuQ~1@Uoe zZ*5ezo+5I6N{N238{R7(IGQPbpPq87tY`Mv_OjpVA1e>VJR^6ur8<2 zOR_BVK+X(FR^K3Xf~8?kv{q-l4B*-0u+RXz2*t;19SMC20*ch!{S&D!j zU#Ifr%A=>Tu6IH=qCJAa?{q7z;3CdN9&& zcTl)4De|mOrYHHB>TM`x3wRz5(;9j(;%6G+ZrV1blnbdaa3wN;>+T!XO{%L)PyhY3 zHacix2td047Rh~{XFVEBB9%r)WIK2pC%8FvEK?SVMV0{{-|4K_vHc^(JPzyEDEO)t zW-|ohgf1BVBt^1)oOqB)wyPuDJ6~o-2hAe4Q!ho8dLurBsr2*bZx+KgVWL&L_2h5;-;0EvwW(aKS0Vi_ zQsX3MSi+$R3<89c6@!Ur{JgS0f_9{4Vl$ujMNgv8nQfzfPpM{!2cAYX= z5PuO%P7J2ga9TacFPgu-|109GuB&CJ?k~squo^{2?h8I8O-(tXFs+yzaa>4*seZVl zagTjKVOJ$d9UcMCw~T~7gd;fM91TK-&gV|VtWdbjorf7+(I?7IMhs!5IVxK?)0eI$ zFuAD46Y#W|T45VF=@^*F5&7-=%i?&^CkA^eTL55AHVvUB%VzFVIxt6(I-MRIY78kgh0m6YZ1Pi1_2L$ki6;#VF4j0Gi?0#5-9cVlm`)7Ra4 zYyO`rEJC<)M=KZW#6gof6y?LobfGlB^bT3LR}I2^kEu|{@{bNAqHJ-H6j(RZKqs_d z*d(p9iT3cyps?*<`n0cdnNb-@5H=TWC$s@Liz@r7Zlu5CAp0W31wuod%TaYD%a%lH zb?U;xGGY%79&NsTOIx2TRE5$Wvnj>_Njvxs4l-OIZ2YY_`EX*K+#COw=gV0P%o$~0 zU{}k|*oF`~)`ku!DUFSN;c*DK*@+DvP*LqBD(51Wr5mr|0ra}N-j48;Qp1(YczF43 z$3`2Y@snKrS95Caaqd&5)ibRgiPy zU#Je`czsoylaRT(dKXR5Pf$8a0wn#*qZvLdhnY1*q|{{jrZB!RbuJf z727QXZSkcdMo77Mq%VifvSkwMX(C+w`l9q4dAw{e zar@4QpduESE{z>8U|Dn4MZlwft8F-ruHtxXS=F+C1V1y6e<-v(hf%awE=Wn?6_~U< zMTU=An7Nn~XoiGl5)TV(a@6K~L0y=Z$8w}#J~@28VShk^2}6;6sp0_%ccq{lWd}5w z{F|(hs8o|&FJX9-na<#KUwlfj@cSx%llZAMd1YXrk9N!1(|7d0Fs8+YcgjF~xY2e^ zp>Jw-SyDcnmTFyKd16LL7qYfmI$^7oi;Jt35Dap~kM$pCk>|WY`x6^|XMR56v*N}J z8Sw^0*sMa$5d~k!1&1I1n#$j+7;=WMB%qo6S$U^kD@|NJo^Xq?bBmsc9Oo z@ZY4CDmW<@0T%+EqWRUTA1k+QD@ktSWn2$jP!0>>-m&y5gtH?2w$57e+FJ1~ynv;% z?O+>OLeuCFk3PuG?A#piToJn@)=6PlCuY(13!tDhzf0njqv9EQEQ^QhE?EPiIhB935C1ZI5OO--&b$X#}v-=n}EL&8FTrZ+oVJNt0?tVhVnieza6rY(a3j6E$4y(us_^U0f1K z1QBTYlP1WJ;e|MoLARt+)IG9lmc{$bzCWdIqWM3oBAjFBMqdo-I9tT}0ocfkUjiaM_ilqEH~Cx4D` z|4SY0*=I)jB(>{7{t5Ms<=`7%EX=4UUHVKC!2}CG1qDAl1%>)!x^#cbjDF zK5QQSVP`-5Wv4>XcjsT@tjZ13yp{pzLjHZne%}bxVN~#v@{l%qNb0Fe&DNr}_=uK; z0($lP2KJe#0ZEQw!0vVpW8%vtmf~z0y zU;a5>(Z>Wt1FbWI>nBJ1ups}e&~S{0-twK}-yX}p|AngmMN>HE*kGFX`-S7aa=r`^ zB@F&4+G2wBp_!`*ZlfycFAPXC7>f1E74a1IUzirt2X+HACI0zEtIC#i_EWQE+mhK) ziAS+}Mf7?342QvTaSgdS1j{XOly%SZdJlaHKZ0ZPU%ztF!Q*xmJ@;LVw4Mt$WEud0 z1`^!1(qddvY=1WVQJ8fHU9dlrez{P&Y*=qRICVeupA{?%6T2n*#F7DM%BR}027N10 z&h1TIOkYlO%3)`{i3c!l{LgaAquM67WtM%~5L0B1o9STG7wR2whb>hJ4W~YspN09r z0g~ff(>Dgm+55(;4zj$Izi*{kSGGqU$#`OBNmbY=$E!OTFm_=Wmx4(`N2}2l3@Qb+ z+=42P7&j@r$9SUJ!bAY^5y!D0gy_u&oC?5-J%cf8o`;R&{frUmZReEg(@QyXFAR?2)7@|rD2#xpwBE%Jl>5Xw}q9#uC@boTnnp-$}iA=1;b4GXLM zDyXt1T~lIZQeFFi2o)5Ut0?=LiLD@6w&48_4KsFInTbDU`c~VkuMY*9sR}8PgPa*h zaJj>N*$$=QqyF&Jn!C2W%UnMO+grkXi{w!fCF(Apu-Shul_7>W+d1VDVFsq_s!!*^ z_^Et=engX)UiI<<7XkkJze2QF=j8J^PB4*Vig*>$Ft%=J8ApOImK|5y{S`oTbnw1!*e#Fw>)_Ogh z8>TSAfBclN`-$Ohwx565Gd%L3`cAv_Kx4CS7cP4#ddqEpdjr9FhAq3o`Aa>!Pbo^& zO>&yFm6?R$=Jtm(015R2G~*iJ;_fZ6d(9Dla%tH4<;*RnE*u-?o*uc5xAV7=(z%_1 z(CsVxi_WbGjtES{h7YpSz-&HCMsvmE{v2L zLlrdt1kakkXHEZ4uyKSS z8fckrI2lVadaNTly>CZoohv+{?TF5>H#oc~eIdb&MU}jdo8cMM2u~M*vA_I~rW?>T zIC_piX6QX-n6*9=VijKPRGJKK(MO-#Mbs>u6f0f|m3YISVvmk7(WEFte;`cpN1}}F`k?e_2KC{eag{$dqwkBv>`fNSN%3kFn8+`a~ZE0ZFU@2NZ z2HoT(ZIs2M&d#_gIGr^k%a3yGzmEEerX4G1i$SfuAm#qHm~r*Z=i%>~QB6Papkl$f z;K&Ee+*j&U(*;Ks^mrQL1Q{m$$ zuCA34#%Ybdh}7{_d8D=ua++Fxq*_<9;|ScC(dzG4X1PuL<9XtY{nUsB@THw--DS6{ zGM0xC(q@EXJ(5HIm_8*q`@+COC8Wra0e^Ns>fEO_AU*eeLh>_??T-be2A8{po(2V{ zc@R|Lw|d{L+(K@McIA3t2oGZdq?}WJOz1TKxS_fCJ0hNbj%xIUgn_Q48%1rg^0r9;Vt6hNhPCJ1|4Bd7HwXA9yF? zW8ZZkL~LlW2}m-49_1ei;hj9P4(?7!|v})qDHIp_4UkG zP$jsww@6eZ{rkNW9X-}v=aI$S9`Fqe*-Q`)@Se|WZ0t_X-X1%7J6cmBVaj?Ln_fck z3s-ddsjuH^S(mNd$}M0`w5r#$85gUZDW${mX!EyC$I&#-<2`2;LEFPfaJ#{Ecd}ou z!hXvy;H*ZCqOL|4u%}%8{QgWs-;G~DxjLnW_uprCnrZjy+}DH^UWYf01(J@L&NmNN zBqsIIp@`?DVev`FwRQoV8(+A&mUHNljzp)fnI8Pk>Q1cM>@Xh%sNWFJ*5=cDjr7xZ zBeOJciA)1clrNrhywjF_vpVqRA>JxkWwAt%~)4# zOHn&S8)pg)M2|q!$2r%np@9piE`zbU4X%#1th1gNq$3!7$ndO089vu#xCFmJmai$V zi@o-P{TsPt{55R|)l^T$jqY}IJOP66VBtu#JGM1g#fHK`aLZ0QaJJ6(&~mR=QY_Hu zON;4cuEiiEbY~YA0lMQCvM;uLg_wh=doeT;KWHv_XC9$Rt2TVKNJGhNuz*XyZPp|? zuF@;KIjn)ataH;#Pv_Z^cqm+m(GkxXOgY%y8ydJVInO0`zM%6ae#5wlb)MFceGNXo z`oo8Ev_%L0kT<#xh^S27w7BJw@9_vG%wXKSj_|3lwLu@dbSi=~aV~P-u!t(79NHZl z43VPrU?%krkp4J=Q}H@1kpEsAXb=xy#*2y?j@%{(vWomqeB z!^I}Bqc;?am>T@vyL$igkB(vmO@-lG@O_`<>}O`T2j$-gZ?qG0twZpI8cUvWqFvqv zZKpDfwdroQKGT=_n9Ebj&P$f}RL{`;RP5{A?k*g~MJ|+!8zg6M1+hNaE&BzxG{$57 zi@|A<%go0LK#JKqgh6g6Spny9hrcUrdq{Q^Rf`l-Vy45=)wB6; z5vng4!`TDi3KWsZ;QZ&uMNAkHFFr5U zP{_;yFK2tXlR{3PyDT05T_0HzT`71Tk4Y(+>7EJxdGAdrE0YL-!yjT~vzvn(4S0)k z9&M43sm70^alR?nqPKZ!k1;n-P7amwSJzOqD%;QeiV1t_JBS9R`CH$7uym6)$$nfg z9Q-R2?Livl-BmYsJZ?jmj$nm=-+16ovV8^>kb(D;ZFNA1Br?Rxksc3O+0Oziqf6tv znI`G_8Uq&v1s4|r=MM-Nt?X3dfM+W|Q3%+VbtxGa%Q#5#7+P}lY9j~d`r#Rr)Mb;B zRVk^r=X)fD*i)v()kj#Ye*=3|9Q|6|&-w6t{6~hG9-8YJJ!T+k)T74Y}^uLxz88;A+Gj z%c*tRy)Q!syvetEjZ2nR2`3*F&4?291L@0F^9Id$kDCAj+vb6j1E@qJRExS0E2SgP zBOQVdjbm}|u6KvAGbGtN?C~7%(@x-?QEsH7TB2GNm)7)Y08?9_$-XOV7#lMWxh+gC zm-5J7U8he+h0jWBx;v-+iX9$%14ZRbT*5b3B$EUcl_y85)mKyD!qb8PF*rm^$Bxn^WqT3=Lv`c-% zb-?~-Lf)l&BNv);3vZfxM`D7BSCxt`vx|;iPssm<`^uX;&{_I=2NUhaW2`IZD4ed_ zJ)&8XlYj!+Xwo_iu~rVY??Sc|aH&{vmZM$n^*>@<6cwl4qDlQ{M+PA`wUx5pxGX*# zdeh-G;TeV3;M_O5W_d?}-sHw~)sA=j5_Rc7F*1c4Z-X{RSu2wVb}x!t9DbudpKXU_ z%*es*IE!Jn+}rpOn;?z;6X)Vf-PqrYKm2u94^7JZbbAo=sZXfZCLO1nzy_{XcX|1u zA(W;~XBuuwNOX)-abpjz*N-j%dhVcFXF7rmbxaIHqm^ac>>s$N+%?>d&Gq?o%wl4| ztlt+B4QEB?EDvprXPD)WFd9jy-5hY06k|wC_;%}V+-r~*((DeD7IvPVfd-=D^vn-Z zEon8E9p@gxs`KVc+n-u90Dg-wl@`@6;v>0*B12&+5M2a=Z{x!5w{Hk$+O%TvGvsWc zd$x&~4E{nb|9o`ijY!|}yhbmt%=_=y?77Rt8=%2)sale{gH#qEo#F-uW>lD}tPky? zUQxQv5!8priY1v3Ox>Syt{1GZA=7DA;nN#M*F)mdQQDoQQ&kW9$aIAEToK`lKXic&=vi2cr-VoLi z44_{fsK~0kCd*kf_l-{U6%g`P(ZK0sHQ5Ql}f&>Dhf-- zTnRuvA|d&bs(?HK-hF%&`~$qe{iF@@lgWLI8tyyh(xWqD$1?*SeL{Z)^tMfmiJ34p zwc}mq3loMg6hkc30)teC7p z;&>FA0C|&Co##&LLIQu>q<$ef?%V~^9hZE&m~NW@kvF|}M?dBgzXqyk3D=12@@C?% z<1n_ekuP27go5jZGBiz~*hfHgs~0*$D5Z=(vZ+ryc9P$B+@UtKw2kM3d)Tp{kXC1Yxa0Ru1N1uNPI2nuKv*0=M;n&r; zp03%dp=2_VNKO){M4+3SQh2q(#u217K_i`!2oR9QKq!p>h)=Q@b@|{sE|9us|H^;p zU=Q#QPTRkwm<(Aqk-dd%ae4;u>d6>eLiIZMb#IKV32=x1#-2MPjw?|H z0^n)zpll|o)aZXEm*C=U$N}c$v3gpMs$1febSe=gnIsC`QVbduPBIChmVX1(bFCYH zIeYZtuj|wMZ2s5D)|Up4czM^+{db2Aeu=qvf!_G*j`7d$sii*slp4AB_UO7hTL)1W zxU2N2GjkVT9>Y-49d9t>pIJEX^az5FDMyw3Ak=9XhjoAO9Dag0^hNfihfc>zBw}BK zyCc3eKECT6PK5$o;mHIFj%C#U#e(2eF+Zhm_}BT?^FOcc-9GHa-L3mxtYI#3{!?#n zuHdr4waP8GCV|g6m%yCr&6RsW#GC&Bk-ICJhk)7k zOG|h6o%~NGdC@lq*8lSAkku_Yw>x*g0>Ta*;NHErr<1so-Lks+wcpkr{AMBXzeV5w z&z2?f{l3Ibhdg)@w$jQ>NRv#^c4?ATP~%^VM=XEkN4$dLYh2!YkrzG-k66x+=z~2g zF0TkjF{hvIqBD?ZkfC; zXWhHbN5J_Tx;xu@|Ls>oc+WSCW zrSJ=m3uAGYA!y0FK9xSD5J8Ww418}PXLYHj)i0Lj4`?4ZVrbI*(eqE%Ec$$B^QZMw z?<_8!k@?!C>Wgy+G>@IMb-)HzpB;a;JhIo|jD(W%8P`_2+QU9dt_|T}C2)Vep8IBuP~WydzSTtY=RXU5~;ayef!G zsytB%fPC0Iaa~@~s)}hRb282>{Q9E}qlZnMban2`qa_*H8-^{ZKi*8%ua18l+$X0z zBq3mPK-k6A^XK_UeHM%uwlv!uywX3keBjU$RM(N4P90>md@ixh)6>f`c|+h0Eq{%5qjpD?hvLaRGh2adpl4 z<<44Z6pnT72dxY@XeoIkoxww`rgbu4Q_!+*8WxUiCRMnFj~c|QHAa86S`$c8Mv|oa zjeh^^qn}5=d-Cz`oa*pyk$o=H(z<_}lw2jbM8y1Q~AREVqOUE67qT}yFBDrjCBi#Qh~zaiilxeJ`*j~YX;Ey9e<4*>n>jE zrb^qqoRSIew?TA1l$d{iA&J@fJKSLb++h^qXH}6Z5K6o0{bV-A4LC|t2{&gHFbkz~ z__t33;B7db1BRG!bt#lgDF^SR1{PNaCF|7TF&<+UR)m2G3f~}uyGg1rnGLad7TrO) zuaBM;sZ#^EKk1YMLq>|321dl>HQPF5A+ZJ#wUCvu0r|ba%Rzr-<%K@kI}7dm1euYI zVV~pFA_2sTN~oiyk~(WX;aZa=Ldhq!I?;l=W1aX;6=9Z$mu#^fF1~T}9G!1(j9f4~ zWC;iWC9k~4HE}1~(7e+i-S2~R-4-LA^Cl9dB;M<d%QuW$)8p{a>)P##ZYUOnv3U^PO;UOZ5%pbYLY>p zHMrNHJy}t;HNpOI5n998R!26&aJmL!trTO;6Mp?~h&6vyQB5gV=_sXAjcdv|YO0~u zH5S*3YKbbLY$)6oq&IqrPqe!-CuZ_=F6i*bEp*;{Ni*FEeCFdY9E2v>90t3@_9cbmw|%h%Ttn2hdfd{-2>Q0Y&|5eN=+kyZ4tneVm? z+M6a}=%atL-rKtFt=U}Qo^8GNR36^Ci41<0TNW1;ysnCSn>IfC`}}40-(G*nov5e$Zu?~Z1|WL|{LKA1 zaAe1=oaUJ)_l6cFXTS3r_^aio#>Ky$x@Vu=RQ$<`*_X!u<5=~<_31C8c(u;&sEu%a z9a?`~OKLPaD3{&3t&Shny0H~wVluUnE1x_hsy4uPa$4=~q1<~dbpAT~=6R#tB#Y$Q zUYl2vONy*Q6}>tv_m!8?JA$-FHDJfv4f4)fAflB7IqmGrWvyHGw;eM2x9NP{IZnIk z+bv|3{p7{_KR;Uc#r%@(M@Dncb8jH*aaw<-0M{B0LzN)(?l!T(5U7=*vSWU7e4tp3 zi^p1AmO;3Cd>0@+R~YiV!a7La+C8+6Ar)*9;-t=9Jn8#JvTU?;cz9C&!vH`}5yDRjN*fyon!xRvB^ zJHe@~Wnm1pl$BZMRe)yua4HYHG;n_q%Ptp5(K$g(u3^=LKZ=79i#=GI%H8It(Eue% z;o;3Cd^vGN4U8wVr5g$zW)oGl;M|D7fFl6`o9zbvUiVW| z!!N5}*Coa7RbzAIJcIdMv7tIZ~QS55M;ZWa5Gm{;j`4%LLj|=kaT2h?kP>{w7+7M{VM>9*lf`2gCM^qM7c< z=mBL~WZ@WHqH%Z&XS&nEDf7j4lFPdq#vdNBmA8|Ko7hf@GqC?J+2H8KAI_8ot>*xA zvy`5mgojqEBW-FFpe1qESm8CET$d; z(lv>An&<0(vb!C4no-24zVlpbcGI14 z$C}oUni`D7OqOMjd<@zn=bWA-j7Hj%hXEdtop@?U=MFdU!Ya8VS62z-aEm zH#Njw{P~+djrfK8*8csAM+Tl)`w*422pxZA!7HB%DDLS+cidO>HM*}53OU?a0gf6n z5MEX}?*4xQ^m3a=~Oa^X;i_|UZe%g1F&z^~k4 zNydmdeaLHQ&-U-YVs06!uLqf6C>VZl$3pH^?k4xX?Fr90#4k+{>_yzGDbT7RB$T@x z0;o{PRAQT$!51$c*QW1k%VAORMQ2gTaT8f-fBt_OnQ)j)xMqKzEP393{jmMo^W?wC z7wx^t=kZ6H-JSf>?u|Z>=MSEFnxi`@O?i8JdC5!>luaX(JlUO8@X65KvfaD&CUvw; zrG1~-dEx3(j=MSM-Rg{uTXSA~@Z&pg+}n7)wry3@rOMJ?TP}>>_109ncI!zmk=KRh zrFVZO2S@Dji!|(L+OT{>_JZ;m3;U+b49^W4ifec8^IL;LXdc5=fV z`#kb1cpER_Gw20pf}E0m7khklRvG0(+BC>FEfy?SzN?Oc5_K>5%d<)P-F7ZS5fB)t z@+w*~-jwSF8DnO@2&Efjj9N;~1Wfz=*LTYyi^Du{%@Bf>(2ItF6&-Z@; z;pY;3OQtyAL!7>UN0uFyA|b>R-g&r7%v10#q0VklGQNU82JK=DGM(1*x#DBAS#@EnWs9@90!y#5mbG|G~Lx&hv&N%2biKcf0ciyUEZPvZpZuyy9_lrKn@9Sn`OP6IEKgerx5WGI#qY-chx?Q3{MW_fWo=9TL4DMY z#4=uM)7tf;X2jVC;I?^!TskVO2=R{AgUbo4MRcuY6!d^#M>k00-FBdV@#je#2lw)47mS?q|Z=u@=`(hM4p7^%WUV(?=22t@Dbb76o7Vl6HUI6?j9?8w>^B zA9Fl6ui_osX+X7?@8(|me#zPLinF6v-CNU-vPY4xO9res&m=|%YzT{-^gQ>+z8|^6 z*M0rA7)%8lUt85O^KyMQ-fia(qR*jjY9P$Wu5y=3nIJ9HPT`Kl&K`*ou6{$TnVN+b zg-Jc$W`!Q$qR&eX{<44XHSWu;Vs2-9JD8x@2DC4~3H-M_ZX5M*|KZn0j(B+J;H#r? zHJiJWPJ_&M>;oa9Ha-tb`=8@ZeexXl^H%gmdj%+(H}T!tqT#vp6{^9&+eSfsfgqJq z62jWETN{3lO-u+fA}CdYL(5_zr*kV_0y_paRR9%GfKBb6&TD_GeCFC`=9WyZYMJdLUlpo4IDq{FsUbeMNG= z@f)kxUmw2UBY1ysOR~YE+Q$AXn}=)}Yw#;rPBwoB`oA1(vS^wm22XE=!FG3hWM%4t zkG7uweL?l94sO-JlTD{yD4G~P_U6uNc&Ct0H4S@oydVu?4Im&uua~2W00z1AZ#4iG z_XO4JDXfJ;vUh$$>*v;v+gg2dCl?CdntgHn>dkApuYrH>noUOAGVVjbHmso%$IZ}+ z6?5hf+gM8HC(gAW8Bxh?tRV9S6mc&MaCD8xhfwkH4J_(n)h)gupHsBa`Rh7z;TV!I zb1SjeMu9tz$dw9K3UoRVUC&5~OfOz>%d~V?+@KJJiW>$K$dtui$$W>##=Osa#jI)|Rl132 zmQ}f26q01A^wpoaa)&&)2ztU7Ybc_?b(-3~ufMx9NQQ_x1;5r2Q@Y zVIg()A4o0wKr3cLTCAsQh!}KYB5`1#(MWhGWww7X*OpD)-_p9Ci(I=1K2b9DiZ&pRv>VdVTCBcC!Lqdccz|lAd5cQR0m0~q(lPaaIvL9<~&i0%DqNa$X zDUyGzyuXX2f&Ih-h>2otX5TCwb>Q(cwiWbv!|Lxxb?B6^EDJcQ2p+#9{8dgdvQMVZhsg$}lHswp6BIOo1n#%ydB(yLz z%WYZ5?O`cu+s9xe7>6pulCMM#iSAfREr}iyZ|@Dsx}K^RFjI>=T0pr2#9}Fp$W?zT z?dFHT(x1OEppqQb+G^he@xmp5`;U?5R)tTYr;i@ZjP50hCxNDujbx==Jse-II{8{oncHk^!jyguTz7dP-8v!B=a)h0DR*h8x7=~pX?ZNmm#JmfK+R1G@ z%ryW&@Zc&{(54`;o^aZ7w=hosQ41A<#H73 zer-Ga`+5Zz1U`_j`@OC0w{>pds{M*=;-w`^E>DzGmPD(@r>ZB%BHB zs3Mw{ySqyz8aSb}yN;UW)J#=QZ53FjPafYssI|4`+`?neLNb^=ZlpCCd;m$|`?Q=h zEucj>eRc|l73ryB3Q{k_kWzmaJvGZkw`8Y0>eC9oYy)5My}mG{@PprVg9!CpaYwMa z%ONGX0f~gFXPx_Y%xCGQud4y(SkiwophsU+?dkW$~=2ocgdZ_U`TEv0{u?(Ao{4OL@D z4+R@r-L*Xna7b@Z2?nmcGIYqbt(>Nf zEZk7f-2oYMTgVmsIuL)699(D}e#y>)cNBFI!CeF0KqC8VQVW0R?NM>X5-tlI)2S;m^`T=)4FQXqy{S)a=w#jnETZc#Q(U2?eEwc z?B~|p8Z-JeaHQ|b{SA|Z`Mx-58eCK*X}(6FWobsaAYl*KaTicDzTxrGxP!t z`Cbf)#PRU)(fRtCO$vqCljxQ{jP+C}A9!jGu~2WKM=c1HP8=Q8$J0AGpjZEe_477a zkM7#l3bt~SXi5?|u>o}p%vgZ3iW{Y}!jaT~##MX;h!1}kKKIGcE!_H5&co$HPlD{|h> z@0K_IyuEBsuej9JX;WItWMsJgEp|Z5wCauNy_&Rh|GIUTn;YQOXz(rEHob8{TX~S@ zCLce-k@0_srBo$ffr0OI2){1Gl^6bps&stq1>v`fuw?-?4Hn&AecJP#q{6t9n?>pObzoF_5{{bu)lvCK)c7y&0VX6HiJy&E`7pZ-W^Jz zqrDS0ngQ&_XQ~EW-^tZ*M0-2b`?me|+v2TF5S(7QjR+j@E2n^8C4pBQP(W-8)k`4W zz9oce3s8$e6!WG)F_SUHpsEwyGt^{`3^mg7EMK3jPXyD=TU&n7xznhu7~utf zHw*it;O{c^GUxAR8Bpp4YDOOKj(^$R-^UZ_K;}}>`BQ!M zXmaN#a1FR$@(f->kJbQkxr(Wm>K$wFyoKL7T*H9_@&LxcB3*c(^rk|U+Q)x5*WKUS zAcE*9Xgkuc@Z6cc_!AerkpIAVkqUTO2JhhpTo1)yg|{D|vJYa4h>7Wn!4B4#G)y8x zS*T!Y1GhisY7}=K6h&Q)0mG^9d>{Wsi+qpxfCF5u51elvoUaAj9A>LZ0+}Zz(`pqe z3jSf-89XnpUd-1J*Zz(^@$F2vw6wYEaB}f=UcL&UI_7-sPhlsE-K3~FpgHni+&*|l*;^R|-0!jkgR5~^Rv+s#zOq^-MKc5T|eX}j=ka>~|STk$ta3kyrj zN=uk~KfnL}Z@<0&{?C7NjvYI8;>59|?ITg+csu<5d%ykm-upk#J$mfe@ngr29-I5b zcTh(~>KIAmObzLI62I0xz%B+8sBY(;tAi8$2I(4(qQ(mO9Eyt~$Okb=W6pv4qM`S^ zvq09)UEyMZ6#gQd)y@7J`oOXJ^GPq#{W7p}H-T~?9o}O9b?Yw+xql(vn+Ipl zV_qi0khfPB9IOab`}w&WjhJqs)KNWFhXe_Xl^B2^lFpoW9zrk%-2 zvu-Jyu^jbcf*&J;G9ysa!R(=Ncj12(mzbBMjLUt^i`So9cy@8k!Xo|lb#6tgM=w6R zuxZ`hNf7^gJAYt4h8RG0Uo@%!;}0G_fJ4CTx8%jI@3bCyRFU-j^^@f0&p%J;<6o@zs7&ua zsn@;(y_icMKCEr4&$r)UE;ZXvY&g7mJ=ghmJ=d?KOfFg|)1=QI3LX|^zW{NY0PUAq z%qv6^>UCj>jdeGBc!cZZ?(T$-$<5iq(NXvAiL8HiK3oQS_6@G8Jzp#~(Si*Cgy#&B zQj9%anwPqL;DBYL^EBX3`(uFqd&p%OCLEnnyw{qsW5l6vH~6+~2Y}pu#B<~K%qvkb ztNr8S$L<)rP#dP#Me7&NYp)LR+3Fp<_=nboo|y(H&YQ{$;k~XPaof~ z>I|nTA2GDDZ1{+B`zu>t7^U0c7`1!k;?TcjAsCkTooV$N;Z{RxpItaXGMeeTVpRFs@|cma3B#k( zmW-LbX7uUlrRS{HqU8D&Q%B66va2L_=hA{z~v;9*Oo5_>VdnawVfNdW7^U4)8@{YX|v6ofqF*y zlV36`A?&CQGNgZRgMo6FQywCPf*^Dr3`u&BeBdRd7EJqwRKcpUXfzhV8BD=H$P7pQ zL{O|V*?j)R`={p9K=kI=m&GJy|KWAg_f6D8(|(^!u*ZPChLOJLQ&WYO8%z>T7(d>= z4f1#)4~%8OENqL8?UT^L8Gm~MW6a1$JtsqTOrzo*J}PqF$sgwp-FH3oypjCZ;L0Io-mzH$l~tSfhWCr^lY7KAeSbw( z+3=$)vWf=e>E==!T>Lt}#vch^7OhZlkLMBf9xM_2O5tN33!RdIp;Z^&ebe27aurlvq5mgq-R z5b4%{u<(?e0%l-FoQb01+-zE%PNnkl^_9_jPXP3^D>enO`Cssf(5QjZNaVoffBz38 zhGQho%w8Xv(wI_PH+4)xkzcwIe9x`WdZh<7UOY*5AOw2FLIhTCegc65ik%2d_Vuba zhExnGsZxo}pl!l;jATRo`aN9m|1%X1gP0RET%6a}8&$_ssr@73nB-tj8AW-z*(5A2 zg0jwW4K0?Q*O2ch{uGS-cZ9r-fAO&$4Cj)_LEJuSaaBcinGd>q)y?~Aa`EO5R-&s1 zsi!C>x3EmOdVkFr*755TSFUo3>A&rjB*s9!B%ZlTpsFJNR`&!CvstGjVq_YdKj9Lh zA?U5>jfiwqctMpSP=${~zD5L8_B29T4GP-`2_c*29U2iHIds#@%Nq7(e+L!LKQVpi zrYMpG84HG{uS*OZGA?LXV^ze^ab*o-bKLdwnY$I+UbHRX{`2Qcv!INr^y`q5$YJHnn3NP5+=5E*gMv=;C|=p>2ONl)6X)Fx`Wy^;7*{O zztY#)9Z+IJtDmG8lA>5b0}&pR3Z*yB+yhX|q0|HL3-|3s;QJHFe>B?9Dk#ND`#|RT zzpBv7%Pg>&iK5*IF9OwrG+Q-(YPBfJTSwF39v*a%R2oaGiA??~L;mQHs@kVjKg54C zE*e-cf5q{2XQB#LRt?#im9b;+;D*Bf4ONvpt!cY!R~)jBOqklYY00CsN{cG z&`cohREYPm0Pe!+JKaC3VoQ-laB_u!Kejwz>{lV4&JkWvts@f z?i*0Kgo_}x44L{(1NTz{_eJuT4M5$1ed?WbIE^aT`9p3aBEt#7KE2!bja}b|cXTqO z@?KEqW(Wy-f90nokna#;lC-f{;d4Y}qIe5nmXKr&mk#dq1Gl-1Akc@q&fO$GCO@dWqur`FKH2_;C)p>9jc_Agqxr@v^oZ208iQ)R4d z%Z^h zvPWbwS;1_8A#m!fNKHuHj3~s@bW}Nck$nkrZ}bZ6#>!+8^{x{GjMUx#o*Z^}B8 z&~nnze{PZ@FV?T;dr5M?QmF0cS=#u3ZxboBh~zpE1~aHWWD|Rf@Iw`De0_X8Jt>ye z$mf!NeDh$JRa``*=}8Gnj^tKokg&UO;&Arb=#(|dwbQ1INhGxQCfiZ$m zZWz(nmlxCJNN86g@eQDmwnAaezSbp((x&!ziek>2msn7Gm3V_yNH}?7F-7Q!a&9TK ze|vs{)Gvd2G4j3nLwgO?w~2u}NQQc1CXr3_CCZ3eqK=qLEG0I=o2*uQctl3}_{cS) z)YQa8qYjF-<0oLlf2MgwH^rlh2|0SIOld<|gwH#7_B(sJqE1?o6@w1FFZL0tNRg zP|%mB!2cfK2Fi}ux;pYEP|g9WM@Q@6e=G-ouy092!xHqt&FGWc*J|yX+XsAlVrpG< zWK_nKVXrRelhMi(e~aqq>mau7)~!13wOfCYAm;XzDYv=T(LyX&SNG^BP(X?8{wQtA z6wnGmC_t-q!~o?y;BFrel>Hi7TN@e=A8xFfFrlVq{P>r%%i{Wo#gf$Afz@DSU_hYn z=Q|^U1H!pS(yfye$3Cz%r8t& z7wX2BxzvsCf8RNruXN#3H(q$PU|Evo^DLlN^^i3}+UyH$IGw+bPk@QZ&K4(_;2$DN zDY5nDB^@%<7j<`w$D_z_or%xo!vT}%_C3)Bn7@T;bPYp-@C7vp>9NrinKSjo;u7_S z6(rfG;k9)W)>j6*D?*H(7G;pBHep1G!hP)Yg>4lif7!v^Ut6$i=FsZ#-`sFZud=bm zfjd4}+oVtNJHY+)%Cuf%mgc3_jWWfCs3fyh9^(hbOq!K3bX6nJKJ-Y{Q`2wFt7sh9 zIJ9)&;(p|m_F27!tnYf}4wUHLR(B6?g7WeqZC+xVl5avS6k5-MA_3ddf>akNC=_@E zEM%&we}6$AFQ4?H1m8%dJV4=_8tgHkx;pqIXS_l_EIEC&DJrf{pjf<;qJpx*w_ba7 zwEYt@hH5}q*LVKFE`*l6Hvw@BIZLRD^zrfV@bYG%-5eC8lG&oAU755(>Y@tgE$U1? zGZ!(-GbSc8MkmKhwCK9>eA$J6nJhkoj@M7$e_#{^Zm7HRlCf7X_d_$C(($7))wE#p z=+Ot_sxv3e^^T?Un~GbHRqTFy3QA!7@t2C@twjY{O??j?ueh^w$DF%&2hFqYxmj`S zpd)tyzXiq$Z;yO_hQFj+1!(p*ehVBZR3>Eku7*aJ4oUVmT{|R^Wgvm?kYs-o$M_1} zf0f8G;w4m}>mo(Q$N+ezv*iq5T$Ute+214+JD1`24&?X6MBxWT)HTw2c`(bLPl#w&B*~)XdD(WGk*b{sTJ_cg2c8@j?cj%8Nl=SB)-N z6Zom1M_nvbqdU=JU|HONtXqXF=1Rq}f4`0#x3`sU0g+#{*(*|d>CY*2GZ)3gJf1z_ zpY6xr9s6C!@ed{nEk&I*vTS3O#j^`^i(ZTw{N560u`DlOZRURE^T8Pp`d?7PMs+sa zv}%P1ZI+2_{V=)wJgN$oG&A@GQjR zT-;p=MY}Qn{y?tM!TYA-(TGf!7z~|`2MFG>Cu{UFURk-`rxo(3;)T_-e!t0m&wY6O z<-4nn4qz_bl@%^5)Ad_AE>CG+f9tHt+y9wYMx3%ymk2(eoY_GCN(7>q8$kH@_^}EN zYm-Q&9v%vrP2`AR6bz{tOgtEnu3DkaoO39FA)L%og)C~oyuqtIB!LrG^gd8H zm$tT9`*_g5>ho7j%#(Js?@S$FEt+g8?eg@dTA92l8REkEMN+!p zF1Lo;+n#^od?_ay`zO5W@%vxk_HrLgF!k*h41ZF_{B!hC?hN;0!z>U1hFpg{07c<+ z2)VOCR;frTrGc+ZMljEGc3!Y)9X&~)!v7$?tKd2xK=zbmPB4hO2C`3p!(7dS*MA%T z7x(@5|G0go;%ws;x@^N+Z*AcI?a0&_IU}AB*5AjN;rc$P)|-xDfL6k+P8Hj%|KD# z{T0iZ^v%ruhgPsx(3o$h*hh17umd|QeTD< ziCM^rjJ!ub)6wq9QS+i(z~oZ{=;(&cpRSZ}ueY^BY*wu zpRmPSrw(rDow7n(_r)nrL+5jr*0;wRJsSpG({0)%?0j<9lLgN-<~FGN?4tzw|pQN zJXmJXYq2-5)n1K0m`leDS^4>X4}U-M?VXP6vWg%jP2^*jyRFaS^`%c+pTg@?aD5cv zf&d`NJ>Wt6%eI!eFB}K=Cy1qbPxnlq&vf_Eq3B%jIp>Q$==_<+%sxQ}_J#J#6f(_3 zBk(N>AY!csFO^D8i^W=Zxm=-f#|V&06=K0i!?dJM?JDo>f(YTbx)8#!cv! zZsWeY2)wv*NKfAbszjvGdAgT?;&Qn`r@@FhVJ~-lKuTIm&OGLqmYx;##s>lEX=y^# zp8`jZ`$N55FTkk7Ao4hpD5Oph;eG1{p#xPK0YXg|%IH4e{;_+u7Tf*yhur&z4uMg3 zCWs^+-pX{K&2abDV#IyN>3S^y<~4xe?TLy8_H(E-mI{;vt7-a7o~Wky9e$jKwQH1JBr zs^KXt`1j%+Tq?47AaoSOoG(0G2web4dV3@2{C!yrom7BM{eMD7^3c(XxHHoh<_9cm ztM^VDR<^TpShDZ3BTJ3>i>7jCC~x~^5JcyX=C(_VmQ--3K|y}0$^I893M|X#E`gG= zB?Dw&{OCsRhCq2JZ-3Q9gb8bDO+V&0I!%JNXVbj=Eu2^4OJ# zh8)D$9XHWz&nB-$O|FI5eSOdre|sUM(JkO7h~Z>`HcvtfqkmoWvifxG0#zUl@b-q9 zmyO?olR}-y{(s#78;X$MH(*&SM*fcS;i*2$T9;{~yto^O4v{I`Id}q>KrlLi7HQ#P zd;)z-O!mhl6Ij|8oj^i`C+CI(TF1g;cmc@~D_2Y>v#%4?M7q^CC?Ft4rLeg_rs?zO&UfJG}q6@+GsfE64fir;M;pT~N7d zcb~z}AAIH7Z?C=aV8iv=qYVph4Js=_0z#et$yf;4$p$5@rg+R^=FOuibju zOXPKW^YC4D88mH7G{vQfL^{<$m62hyXZ9O7qYuNZTfb?Mvmii1ks@qRsh_8DN^;!L zbR18~EuiX|B4P-UX7xdMQ>yy(fq2Wz`1t=FYeL4)f5jSKfvM-y zsSDP~$AA9u?(z_2?6~Op>!#IaPt6|r>cI(d&D+qnd~V5>foaxxxxRV1zVqUzrkDqhWs1biRE8Ot;kkCws5xF@Ro29T zHS5c0(l;(JHil(%nzdRz%VtkZ%bk)aaKnW6aY-``+hyrCJYW+Xl92X?Q{3~;iCAF08b zLI}xR?OB@HK63wCQ$-z-;wf(*-utFaM!li>zNhJVg*)AGZTY{C9s7L+{mi1T_x}b| zxPNOm&NjoD6*%w2TdSo#pvmdpv#O!1#i@4z3H4ibu`^pfUBpQyuPb2fliB_oChpm* zAU8{j*1Fo5tL*kYgO1Lfdvp+0edcK0j)A-QRd~1KDQqd;F-8II=r1M!|OVdtbz9B)c(% z8Hr3N7xkH;VN_r*i+dDn3uJA6kk<4LT8oItwD8Wczb^(ZB%B8er4!+1Ej=nrBr`?D zyT01K`auUf0w0i zjk(z%Nl!>hlPtSE>5B*Av_wmWWckerCz5SdZoT3xy<`oG7q6D}ihqyoEnl^e4B7L; zCPQ3QWP*Of_xrvF0fCm#&_sRnH@l`EpQ;TFG==%Sb?WrHeqqMI5dU`}l`e+%-7&G1 z&=XK9)?~P$~K{2US4+JzS-H~5+N>5sQrc_&0_dy zbs-Iw50!!j6soX^<9`EmnnWab`BX68I0ZPSO6?N+=h8gT!pB&t(XY5<)TsrpIKmNm zGN5;5a_?!j`XZ&avT4T1sMKDyX&Js|UrTs$R^mkNqpOb>3^GlT2$bZRFdoy6dN=r zFgh^3H}_m$b%Kvp169S~;GDF?!C8O3bsJQFb`&UYjgJejH-(k%`mpIa?#Gt6FmRpg z6A{w_G|x4CxT`eGR39EU{ucMIqwU<+_vGs5+);WU&sHI7Lk|qvF0B=B$zf1QG@r_G?=w4E&)(vX1jf_g^HQ&GYpj}f= z&9zRr(~vVgE;*($yuKljN*tQg7p`PU4yK9V^SMeQ*aw><<%ZAYaD4uBb*ZhVKRD zQUeTopO{uSW*C1zhPVyyvh;j{vdgcwkkitiG54S~qp?bqdWlUZ;^Sdr1e`xXu&7u) zE=3wd6-3zw*jg%Z~uf%Tozl4OL6E;wqXttIS;|vuWMCM4w^n>Rm;rg;Mz_$a-1HzJ%Ds z)xBr!9#FE!mR=gty6oE!6C zsGbiYKhMae_zezc-B64u7=M^G!O0BzpteoFlc3%mf7U6jT+31T*R4#D-8$tcnA}=- zlpw@J1b0VtgV{j1LAf4ABonzr88HItX&zR2Kh>ZpDvkA@JSN1Sh~cAE;QBmsF!6dT z_@BSh{QvwJGmIHCX2c{>p{Ot+JzMlRx!afE4`$5hk(1c|qN0TKKH`p-9X~Cyz@JX+ zHkMB9fA-}ZX7t$MlZBz;j?2vGF(W66go&sNRbwYsq?r7BcLZ0BoluEB zqw-F&XfvZHM|MOI&0KqGG1?%Et6^cnCyqq#Bl!i;G(v~J_U!<=zRr;dy`(^7=LA~LR5<@0YS-a z@~sc>5UC^@8EMlIB+2{Yln=4TBK0Gom5_!n;b8)NGjA5xVY5)cC053wAnA*Hjxb_c z((&-QeGH2Vvt4<9n|*Wr?tY@}(vg#E>!f=`7Z8^y8w@HIh1g0NnwCoC{(PY+M^SesN~i;Ref z3J<5vW)E*~sDlt)JvZX9-v}21=PQw5m${=V3*T#7t#ZIkA#2PblpJuArv|MU<}YVN zZH*qHe}JJYsvrD5w0!!gdQ)kht;tHJubbl)tDif5aeUl1ZS;WXNLv7x!NwnqFN@>8 z;=Vloue{v@PPn;KUkpCI+}Lz;v_!mjz>%brbKiOs$}LnUONuMA`C1h+ijuOdm~?Zt zlu@}HIZlScx&10yY99}daf8}-?nI?TiLLfIe`MoU5_O7)=SNTlbbgN+S({k;-)5u= zI4Kyy9ckUWm(E|u9bL-#fzOtLFZud=1pN`N7wd0zrwBso=H_RRu%wOQfsCUq`VQMTB5u~FSZdiRskRhp(ga(MoT*8m279ftxeQbZ3x5AK;rk+IRmX5#AZ@-(uF&cro7{H;n#ETb5B7i@AUbQl+*Bh+hhmIH+= zQTqp@0#o2!RBUSb8EzGr?>Wx>0Px)fr&c$II&v=Qqox;OISmqU@198QlyNL!z(S5KCuRz zJ-Dl07TIqB7~WMfi~6Hu0=2EQTiq-Y^82oR_*&i3KEwp*wuy&4p2~3Cf1q;*{-iH? zxN8ISw3e2~8@p`)o`MS3e9$6W(W+MyHW?$PL{cdvNuW|G6f~|`|4?XNg=*$TI0T%t zW-bTWwlfIqo&?RJ8PbNi#u z5YR$p4dz*g+;Yr_8azn<+l;3nh$O+G!e=~ujU8DCSV3-yLm-S{=&d-=-ydpJp&?2prc zh@BH~)Sit>mDY+xH79=EcIc1RGB3k+gID&lYx5UgtXHdZN1lipY>n@4 z@roLlkT)ukJht-FqZXA$F5N1YGl?;3^@Q8Nz4d2M^{h^@QK~81_xXkwx&N#bu{oz+ z8o%_~qV&-pU!T!doiu87+353|lcTm=!M@QK>HARIe?(S(gjJW~;Xz~~h7}njv-t-G zhB+F%SX3^dn3kT+UeI=(IVwU>dROkVGld13t$}P;FnS2tKefa!NZ&W~@S2=0bApnj z8O0^*hYW5goLQpl6X4s+$0Ntoud!Fe`2GhzvZc*A3tD6P7>km#%l*>n8iiyv>-N=~ zbFWR7f6;xOS+L;1fWrNY*S(S|SBXTc#G>$EmB&_Y*Rr>FlyWOmCKOKE8y&fSTEFqQ z7V{z~#qZ%R%^|$BCi$AtHYmlLai8WqL5eTKQe4R`L$##&YI0(lW}wK#QAL znG}c%`qgt=z~p);l{Qyz&&t|ULym=Of3omQKf&@Sz^Z~mPC}D1B#{V`WL*3T4#kPr z9(m1)?mdQ^#noK|Uvp{Kz!Xq-f$I%c9LK_Gg?%CUh`eflmh5ZqYv0A6yBX?eS@?v| zT5?uGGcqKj&|1>}z81BwoO{6Cy9(BEE3X412)N3v1W~(?wgzr+S!5h(;Hp8ZfBjpo z2I*^16M>rg3A`^TVIZx_A+fqioaE|KOVa4*HiEA;D|>v38%)P?Ci2H)=ej5t71(xC zFS8x*0-lnbfs^8^Ahn@NXhcjz1g>_ivOH~e`rjQk?l#q*+fMdrJA{NSq~)fL*HA@B zdk3yt4)udN2)6;vuGeUw_QV<#e^8+Tyhd}so0Q=1NY4W1^qmt2&%0DGcQieCqL4YN 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 WsnZkJ+t`9v{)G1drKktZ0002nYXolq diff --git a/fonts/OpenSans-SemiBold.woff b/fonts/OpenSans-SemiBold.woff index b6142d30b14610131592dec82d5bff9b3f545915..64fff911726f7ad7d83aa62604b231ecefcf7eca 100644 GIT binary patch delta 54334 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

      td8bL9l?e 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

      Y+&M^MbaatTH9cP$MCqvbCkfGvl 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 delta 68771 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⪼rI_Da)?1^R%yX;&l+Tl}Qz= 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 diff --git a/includes/cacert.pem b/includes/cacert.pem index 86d6cd8..e8cc6c1 100644 --- a/includes/cacert.pem +++ b/includes/cacert.pem @@ -1,7 +1,9 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Tue Jul 2 03:12:04 2024 GMT +## Certificate data from Mozilla as of: Tue Dec 31 04:12:05 2024 GMT +## +## Find updated versions here: https://curl.se/docs/caextract.html ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates @@ -14,7 +16,7 @@ ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.29. -## SHA256: 456ff095dde6dd73354c5c28c73d9c06f53b61a803963414cb91a1d92945cdd3 +## SHA256: c99d6d3f8d3d4e47719ba2b648992f5b58b150128d3aca3c05c566d8dc98e116 ## @@ -582,27 +584,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- -SecureSign RootCA11 -=================== ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi -SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS -b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw -KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 -cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL -TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO -wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq -g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP -O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA -bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX -t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh -OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r -bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ -Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 -y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 -lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - Microsec e-Szigno Root CA 2009 ============================== -----BEGIN CERTIFICATE----- @@ -2317,40 +2298,6 @@ hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB dBb9HxEGmpv0 -----END CERTIFICATE----- -Entrust Root Certification Authority - G4 -========================================= ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu -bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 -dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT -AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D -umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV -3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds -8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ -e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 -ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X -xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV -7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 -dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW -Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n -MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q -jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht -7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK -YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt -jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ -m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW -RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA -JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G -+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT -kcpG2om3PVODLAgfi49T3f+sHw== ------END CERTIFICATE----- - Microsoft ECC Root Certificate Authority 2017 ============================================= -----BEGIN CERTIFICATE----- @@ -2600,6 +2547,36 @@ vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ CAezNIm8BZ/3Hobui3A= -----END CERTIFICATE----- +GLOBALTRUST 2020 +================ +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx +IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT +VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh +BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy +MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi +D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO +VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM +CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm +fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA +A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR +JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG +DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU +clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ +mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud +IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw +4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 +iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS +8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 +HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS +vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 +oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF +YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl +gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + ANF Secure Server Root CA ========================= -----BEGIN CERTIFICATE----- @@ -3138,36 +3115,6 @@ AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8 rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR -----END CERTIFICATE----- -Security Communication RootCA3 -============================== ------BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw -IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD -b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw -CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE -AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r -hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE -NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2 -/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm -npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY -XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK -p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC -3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf -GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw -CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB -/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS -YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu -Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O -H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx -YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ -XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml -+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn -KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9 -dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm -6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg== ------END CERTIFICATE----- - Security Communication ECC RootCA1 ================================== -----BEGIN CERTIFICATE----- @@ -3566,3 +3513,99 @@ Y1w8ndYn81LsF7Kpryz3dvgwHQYDVR0OBBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB cFBTApFwhVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dGXSaQ pYXFuXqUPoeovQA= -----END CERTIFICATE----- + +TWCA CYBER Root CA +================== +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQMQswCQYDVQQG +EwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NB +IENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQG +EwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NB +IENZQkVSIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1s +Ts6P40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxFavcokPFh +V8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/34bKS1PE2Y2yHer43CdT +o0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684iJkXXYJndzk834H/nY62wuFm40AZoNWDT +Nq5xQwTxaWV4fPMf88oon1oglWa0zbfuj3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK +/c/WMw+f+5eesRycnupfXtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkH +IuNZW0CP2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDAS9TM +fAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDAoS/xUgXJP+92ZuJF +2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzCkHDXShi8fgGwsOsVHkQGzaRP6AzR +wyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83 +QOGt4A1WNzAdBgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB +AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0ttGlTITVX1olN +c79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn68xDiBaiA9a5F/gZbG0jAn/x +X9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNnTKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDR +IG4kqIQnoVesqlVYL9zZyvpoBJ7tRCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq +/p1hvIbZv97Tujqxf36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0R +FxbIQh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz8ppy6rBe +Pm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4NxKfKjLji7gh7MMrZQzv +It6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzXxeSDwWrruoBa3lwtcHb4yOWHh8qgnaHl +IhInD0Q9HWzq1MKLL295q39QpsQZp6F6t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X +-----END CERTIFICATE----- + +SecureSign Root CA12 +==================== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT +ZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgwNTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJ +BgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU +U2VjdXJlU2lnbiBSb290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3 +emhFKxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mtp7JIKwcc +J/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zdJ1M3s6oYwlkm7Fsf0uZl +fO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gurFzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBF +EaCeVESE99g2zvVQR9wsMJvuwPWW0v4JhscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1Uef +NzFJM3IFTQy2VYzxV4+Kh9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsFAAOC +AQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6LdmmQOmFxv3Y67ilQi +LUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJmBClnW8Zt7vPemVV2zfrPIpyMpce +mik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPS +vWKErI4cqc1avTc7bgoitPQV55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhga +aaI5gdka9at/yOPiZwud9AzqVN/Ssq+xIvEg37xEHA== +-----END CERTIFICATE----- + +SecureSign Root CA14 +==================== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEMBQAwUTELMAkG +A1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT +ZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgwNzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJ +BgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU +U2VjdXJlU2lnbiBSb290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh +1oq/FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOgvlIfX8xn +bacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy6pJxaeQp8E+BgQQ8sqVb +1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa +/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9JkdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOE +kJTRX45zGRBdAuVwpcAQ0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSx +jVIHvXiby8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac18iz +ju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs0Wq2XSqypWa9a4X0 +dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIABSMbHdPTGrMNASRZhdCyvjG817XsY +AFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVLApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeq +YR3r6/wtbyPk86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E +rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ibed87hwriZLoA +ymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopTzfFP7ELyk+OZpDc8h7hi2/Ds +Hzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHSDCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPG +FrojutzdfhrGe0K22VoF3Jpf1d+42kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6q +nsb58Nn4DSEC5MUoFlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/ +OfVyK4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6dB7h7sxa +OgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtlLor6CZpO2oYofaphNdgO +pygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB365jJ6UeTo3cKXhZ+PmhIIynJkBugnLN +eLLIjzwec+fBH7/PzqUqm9tEZDKgu39cJRNItX+S +-----END CERTIFICATE----- + +SecureSign Root CA15 +==================== +-----BEGIN CERTIFICATE----- +MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMwUTELMAkGA1UE +BhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRTZWN1 +cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMyNTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNV +BAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2Vj +dXJlU2lnbiBSb290IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5G +dCx4wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSRZHX+AezB +2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT9DAKBggqhkjOPQQDAwNoADBlAjEA2S6J +fl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJ +SwdLZrWeqrqgHkHZAXQ6bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= +-----END CERTIFICATE----- diff --git a/includes/caddyfile.conf.php b/includes/caddyfile.conf.php new file mode 100644 index 0000000..fc08967 --- /dev/null +++ b/includes/caddyfile.conf.php @@ -0,0 +1,32 @@ + +# Template to enable clean URLs for the Caddy web server v2. +# +# Usage: +# +# example.com { +# #... +# import filesystem/path/to/caddyfile +# #... +# } + +@twigs { + path *.twig +} + +@admin { + path /{chyrp_path}/admin/* + file { + try_files {path} {path}/ /{chyrp_path}/admin/index.php + } +} + +@chyrp { + path /{chyrp_path}/* + file { + try_files {path} {path}/ /{chyrp_path}/index.php + } +} + +rewrite @twigs /{chyrp_path}/index.php +rewrite @admin {http.matchers.file.relative} +rewrite @chyrp {http.matchers.file.relative} diff --git a/includes/class/Config.php b/includes/class/Config.php index e5d34b8..9451b91 100644 --- a/includes/class/Config.php +++ b/includes/class/Config.php @@ -32,7 +32,9 @@ * Returns: * @mixed@ */ - public function __get($name): mixed { + public function __get( + $name + ): mixed { if (isset($this->data[$name])) return $this->data[$name]; @@ -48,7 +50,9 @@ * Function: __isset * Handles access to the configuration data. */ - public function __isset($name): bool { + public function __isset( + $name + ): bool { return isset($this->data[$name]); } @@ -56,14 +60,21 @@ * Function: read * Reads the configuration file and decodes the settings. */ - private function read(): array|false { + private function read( + ): array|false { $security = "\n"; - $contents = @file_get_contents(INCLUDES_DIR.DIR."config.json.php"); + + $contents = @file_get_contents( + INCLUDES_DIR.DIR."config.json.php" + ); if ($contents === false) return false; - $json = json_get(str_replace($security, "", $contents), true); + $json = json_get( + str_replace($security, "", $contents), + true + ); if (!is_array($json)) return false; @@ -75,14 +86,19 @@ * Function: write * Encodes the settings and writes the configuration file. */ - private function write(): int|false { + private function write( + ): int|false { $contents = "\n"; + $contents.= json_set( $this->data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ); - return @file_put_contents(INCLUDES_DIR.DIR."config.json.php", $contents); + return @file_put_contents( + INCLUDES_DIR.DIR."config.json.php", + $contents + ); } /** @@ -94,7 +110,11 @@ * $value - The value to set. * $fallback - Add the setting only if it doesn't exist. */ - public function set($setting, $value, $fallback = false): int|bool { + public function set( + $setting, + $value, + $fallback = false + ): int|bool { if (isset($this->data[$setting]) and $fallback) return true; @@ -113,7 +133,9 @@ * Parameters: * $setting - The setting name. */ - public function remove($setting): int|false { + public function remove( + $setting + ): int|false { unset($this->data[$setting]); return $this->write(); } @@ -122,7 +144,8 @@ * Function: current * Returns a singleton reference to the current configuration. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Feathers.php b/includes/class/Feathers.php index f28e7a0..6b74e46 100644 --- a/includes/class/Feathers.php +++ b/includes/class/Feathers.php @@ -39,8 +39,14 @@ * See Also: * */ - protected function setFilter($field, $name): void { - self::$filters[get_class($this)][] = array("field" => $field, "name" => $name); + protected function setFilter( + $field, + $name + ): void { + self::$filters[get_class($this)][] = array( + "field" => $field, + "name" => $name + ); if (isset($this->fields[$field])) { foreach ((array) $name as $filter) @@ -59,8 +65,14 @@ * See Also: * */ - protected function customFilter($field, $name): void { - self::$custom_filters[get_class($this)][] = array("field" => $field, "name" => $name); + protected function customFilter( + $field, + $name + ): void { + self::$custom_filters[get_class($this)][] = array( + "field" => $field, + "name" => $name + ); if (isset($this->fields[$field])) { foreach ((array) $name as $filter) @@ -80,7 +92,11 @@ * See Also: * */ - protected function respondTo($name, $function = null, $priority = 10): void { + protected function respondTo( + $name, + $function = null, + $priority = 10 + ): void { fallback($function, $name); Trigger::current()->priorities[$name][] = array( "priority" => $priority, @@ -103,7 +119,9 @@ * extra - Stuff to output after the input field. Can be anything. * note - A minor note to display next to the label text. */ - protected function setField($options): void { + protected function setField( + $options + ): void { $this->fields[$options["attr"]] = $options; } } diff --git a/includes/class/Flash.php b/includes/class/Flash.php index 6acf8f2..b047e7e 100644 --- a/includes/class/Flash.php +++ b/includes/class/Flash.php @@ -34,7 +34,9 @@ * Function: prepare * Prepare the structure of a session value. */ - private static function prepare($type): void { + private static function prepare( + $type + ): void { if ( !isset($_SESSION[$type]) or !is_array($_SESSION[$type]) @@ -52,7 +54,11 @@ * $redirect_to - URL to redirect to after the message is stored. * $code - Numeric HTTP status code to set. */ - public static function message($message, $redirect_to = null, $code = null): void { + public static function message( + $message, + $redirect_to = null, + $code = null + ): void { $trigger = Trigger::current(); $type = self::FLASH_MESSAGE; self::prepare($type); @@ -75,7 +81,11 @@ * $redirect_to - URL to redirect to after the notice is stored. * $code - Numeric HTTP status code to set. */ - public static function notice($message, $redirect_to = null, $code = null): void { + public static function notice( + $message, + $redirect_to = null, + $code = null + ): void { $trigger = Trigger::current(); $type = self::FLASH_NOTICE; self::prepare($type); @@ -98,7 +108,11 @@ * $redirect_to - URL to redirect to after the warning is stored. * $code - Numeric HTTP status code to set. */ - public static function warning($message, $redirect_to = null, $code = null): void { + public static function warning( + $message, + $redirect_to = null, + $code = null + ): void { $trigger = Trigger::current(); $type = self::FLASH_WARNING; self::prepare($type); @@ -116,7 +130,8 @@ * Function: messages * Calls "messages". */ - public function messages(): array { + public function messages( + ): array { return $this->serve(self::FLASH_MESSAGE); } @@ -124,7 +139,8 @@ * Function: notices * Calls "notices". */ - public function notices(): array { + public function notices( + ): array { return $this->serve(self::FLASH_NOTICE); } @@ -132,7 +148,8 @@ * Function: warnings * Calls "warnings". */ - public function warnings(): array { + public function warnings( + ): array { return $this->serve(self::FLASH_WARNING); } @@ -144,7 +161,8 @@ * An array of every flash available, * in the form of [type => [flashes]]. */ - public function all(): array { + public function all( + ): array { return array( "messages" => $this->messages(), "notices" => $this->notices(), @@ -162,7 +180,9 @@ * Returns: * An array of flashes of the requested type. */ - private function serve($type): array { + private function serve( + $type + ): array { self::prepare($type); if (!empty($_SESSION[$type])) { @@ -185,7 +205,9 @@ * Parameters: * $type - Type to check for (optional). */ - public static function exists($type = null): bool { + public static function exists( + $type = null + ): bool { switch ($type) { case self::FLASH_MESSAGE: case self::FLASH_NOTICE: @@ -223,7 +245,9 @@ * Parameters: * $type - Type to check for (optional). */ - public static function count($type = null): int { + public static function count( + $type = null + ): int { $total = 0; switch ($type) { @@ -260,7 +284,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Model.php b/includes/class/Model.php index f1e3df7..37862f6 100644 --- a/includes/class/Model.php +++ b/includes/class/Model.php @@ -38,7 +38,9 @@ * Returns: * @mixed@ */ - public function &__get($name): mixed { + public function &__get( + $name + ): mixed { $trigger = Trigger::current(); $model_name = strtolower(get_class($this)); @@ -164,7 +166,10 @@ * Function __set * Handles dynamic attributes. */ - public function __set($name, $value): void { + public function __set( + $name, + $value + ): void { $this->data[$name] = $value; } @@ -172,7 +177,9 @@ * Function: __isset * Handles model relationships, deferred and dynamic attributes. */ - public function __isset($name): bool { + public function __isset( + $name + ): bool { $trigger = Trigger::current(); $model_name = strtolower(get_class($this)); @@ -228,7 +235,11 @@ * read_from - An array to read from instead of performing another query. * ignore_dupes - An array of columns in which duplicate values will be retained. */ - protected static function grab($model, $id, $options = array()): void { + protected static function grab( + $model, + $id, + $options = array() + ): void { $model_name = strtolower(get_class($model)); if ($model_name == "visitor") @@ -483,7 +494,9 @@ * Function: deletable * Checks if the can delete the object. */ - public function deletable($user = null): bool { + public function deletable( + $user = null + ): bool { if ($this->no_results) return false; @@ -497,7 +510,9 @@ * Function: editable * Checks if the can edit the object. */ - public function editable($user = null): bool { + public function editable( + $user = null + ): bool { if ($this->no_results) return false; @@ -537,7 +552,7 @@ $classes = $classes.' '.$name.'_edit_link edit_link'; - echo $before.''.$text.''.$after; } @@ -571,7 +586,7 @@ $classes = $classes.' '.$name.'_delete_link delete_link'; - echo $before.''.$text.''.$after; } @@ -579,7 +594,8 @@ * Function: etag * Generates an Etag for the object. */ - public function etag(): string|false { + public function etag( + ): string|false { if ($this->no_results) return false; diff --git a/includes/class/Modules.php b/includes/class/Modules.php index b2a1d73..6e44c9f 100644 --- a/includes/class/Modules.php +++ b/includes/class/Modules.php @@ -24,7 +24,10 @@ * $name - Name of the trigger to respond to. * $priority - Priority of the response. */ - protected function setPriority($name, $priority): void { + protected function setPriority( + $name, + $priority + ): void { Trigger::current()->priorities[$name][] = array( "priority" => $priority, "function" => array($this, $name) @@ -40,7 +43,11 @@ * $function - Name of the class function to respond with. * $priority - Priority of the response. */ - protected function addAlias($name, $function, $priority = 10): void { + protected function addAlias( + $name, + $function, + $priority = 10 + ): void { Trigger::current()->priorities[$name][] = array( "priority" => $priority, "function" => array($this, $function) diff --git a/includes/class/Paginator.php b/includes/class/Paginator.php index 024e0c1..dd7ea6e 100644 --- a/includes/class/Paginator.php +++ b/includes/class/Paginator.php @@ -146,7 +146,8 @@ * Function: next * Returns the next pagination sequence. */ - public function next(): self { + public function next( + ): self { return new self( $this->array, $this->per_page, @@ -160,7 +161,8 @@ * Function: prev * Returns the previous pagination sequence. */ - public function prev(): self { + public function prev( + ): self { return new self( $this->array, $this->per_page, @@ -174,7 +176,8 @@ * Function: next_page * Checks whether or not it makes sense to show the Next Page link. */ - public function next_page(): bool { + public function next_page( + ): bool { return ( $this->pages > 1 and $this->page < $this->pages @@ -185,7 +188,8 @@ * Function: prev_page * Checks whether or not it makes sense to show the Previous Page link. */ - public function prev_page(): bool { + public function prev_page( + ): bool { return ( $this->page > 1 and $this->page <= $this->pages @@ -331,7 +335,9 @@ * Parameters: * $page - Page number to link to. */ - public function next_page_url($page = null): string { + public function next_page_url( + $page = null + ): string { $config = Config::current(); $route = Route::current(); $request = unfix(self_url()); @@ -380,7 +386,9 @@ * Parameters: * $page - Page number to link to. */ - public function prev_page_url($page = null): string { + public function prev_page_url( + $page = null + ): string { $config = Config::current(); $route = Route::current(); $request = unfix(self_url()); diff --git a/includes/class/Query.php b/includes/class/Query.php index 71059af..0b013d1 100644 --- a/includes/class/Query.php +++ b/includes/class/Query.php @@ -110,7 +110,9 @@ * Parameters: * $column - The offset of the column to grab. Default 0. */ - public function fetchColumn($column = 0): mixed { + public function fetchColumn( + $column = 0 + ): mixed { return $this->query->fetchColumn($column); } @@ -118,7 +120,9 @@ * Function: fetch * Returns the current row as an array. */ - public function fetch($mode = PDO::FETCH_ASSOC): mixed { # Can be PDO::FETCH_DEFAULT in PHP 8.0.7+ + public function fetch( + $mode = PDO::FETCH_DEFAULT + ): mixed { return $this->query->fetch($mode); } @@ -126,7 +130,8 @@ * Function: fetchObject * Returns the current row as an object. */ - public function fetchObject(): object|false { + public function fetchObject( + ): object|false { return $this->query->fetchObject(); } @@ -134,7 +139,9 @@ * Function: fetchAll * Returns an array of every result. */ - public function fetchAll($mode = PDO::FETCH_ASSOC): array { # Can be PDO::FETCH_DEFAULT in PHP 8.0.7+ + public function fetchAll( + $mode = PDO::FETCH_DEFAULT + ): array { return $this->query->fetchAll($mode); } @@ -148,7 +155,9 @@ * Returns: * An array of all of the values of that column in the result. */ - public function grab($column): array { + public function grab( + $column + ): array { $all = $this->fetchAll(); $result = array(); @@ -162,7 +171,9 @@ * Function: exception_handler * Handles exceptions thrown by failed queries. */ - public function exception_handler($e): void { + public function exception_handler( + $e + ): void { $this->sql->error = $e->getMessage(); # Trigger an error if throws were not requested. diff --git a/includes/class/Route.php b/includes/class/Route.php index 0932edc..9efb115 100644 --- a/includes/class/Route.php +++ b/includes/class/Route.php @@ -39,7 +39,9 @@ * Parameters: * $controller - The controller to use. */ - private function __construct($controller) { + private function __construct( + $controller + ) { if (!in_array("Controller", class_implements($controller))) trigger_error( __("Route was initiated with an invalid Controller."), @@ -95,7 +97,8 @@ * Function: init * Attempt to call a responder until one of them doesn't return false. */ - public function init(): bool { + public function init( + ): bool { $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -206,7 +209,10 @@ * An absolute clean or dirty URL, depending on value of @Config->clean_urls@ * and @controller->clean_urls@. */ - public static function url($url, $controller = null): string { + public static function url( + $url, + $controller = null + ): string { $config = Config::current(); if (!isset($controller)) @@ -277,7 +283,10 @@ * See Also: * */ - public function add($path, $action): void { + public function add( + $path, + $action + ): void { $config = Config::current(); $new_routes = $config->routes; $new_routes[$path] = $action; @@ -294,7 +303,9 @@ * See Also: * */ - public function remove($path): void { + public function remove( + $path + ): void { $config = Config::current(); $new_routes = $config->routes; unset($new_routes[$path]); @@ -308,7 +319,8 @@ * Notes: * The / path strictly requires no request args. */ - public function custom(): void { + public function custom( + ): void { if (!$this->controller instanceof MainController) return; @@ -357,7 +369,9 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current($controller = null): ?self { + public static function & current( + $controller = null + ): ?self { static $instance = null; if (!isset($controller) and empty($instance)) diff --git a/includes/class/SQL.php b/includes/class/SQL.php index 5f4c4cd..96e026f 100644 --- a/includes/class/SQL.php +++ b/includes/class/SQL.php @@ -72,7 +72,9 @@ * Parameters: * $settings - An array of settings (optional). */ - private function __construct($settings = array()) { + private function __construct( + $settings = array() + ) { if (class_exists("Config")) fallback($settings, Config::current()->sql); @@ -98,7 +100,9 @@ * Parameters: * $checking - Return a boolean for failure, instead of triggering an error? */ - public function connect($checking = false): bool { + public function connect( + $checking = false + ): bool { if ($this->connected) return true; @@ -448,7 +452,9 @@ * Parameters: * $string - String to escape. */ - public function escape($string): string { + public function escape( + $string + ): string { if (!isset($this->db)) $this->connect(); @@ -473,7 +479,9 @@ * Function: current * Returns a singleton reference to the current connection. */ - public static function & current($settings = false): self { + public static function & current( + $settings = false + ): self { if ($settings) { $loaded = new self($settings); return $loaded; diff --git a/includes/class/Session.php b/includes/class/Session.php index a6f528a..40058b1 100644 --- a/includes/class/Session.php +++ b/includes/class/Session.php @@ -24,7 +24,10 @@ * $path - Filesystem path. * $name - The session name. */ - public function open($path, $name): bool { + public function open( + $path, + $name + ): bool { $this->created_at = datetime(); $this->deny = (SESSION_DENY_BOT and BOT_UA); @@ -35,7 +38,8 @@ * Function: close * Executed when the session is closed. */ - public function close(): bool { + public function close( + ): bool { return true; } @@ -46,7 +50,9 @@ * Parameters: * $id - Session ID. */ - public function read($id): string|false { + public function read( + $id + ): string|false { $result = SQL::current()->select( tables:"sessions", fields:array("data", "created_at"), @@ -69,7 +75,10 @@ * $id - Session ID. * $data - Data to write. */ - public function write($id, $data): bool { + public function write( + $id, + $data + ): bool { $sql = SQL::current(); $visitor = Visitor::current(); @@ -100,7 +109,9 @@ * Parameters: * $id - Session ID. */ - public function destroy($id): bool { + public function destroy( + $id + ): bool { SQL::current()->delete("sessions", array("id" => $id)); return true; } @@ -112,7 +123,9 @@ * Parameters: * $lifetime - The configured maximum session lifetime in seconds. */ - public function gc($lifetime): int|false { + public function gc( + $lifetime + ): int|false { SQL::current()->delete( "sessions", "updated_at < :expired_cookie OR data = '' OR data IS NULL", @@ -126,7 +139,8 @@ * Function: hash_token * Generates an authentication token for this session. */ - public static function hash_token(): bool|string { + public static function hash_token( + ): bool|string { $id = session_id(); if ($id === "") @@ -142,7 +156,9 @@ * Parameters: * $hash - The token to validate. */ - public static function check_token($hash): bool { + public static function check_token( + $hash + ): bool { $token = self::hash_token(); if ($token === false) diff --git a/includes/class/Theme.php b/includes/class/Theme.php index b2d14d8..dc6937b 100644 --- a/includes/class/Theme.php +++ b/includes/class/Theme.php @@ -40,7 +40,10 @@ * $page_id - Page ID to start from, or zero to return all pages. * $exclude - Page ID/s to exclude, integer or array of integers. */ - public function pages_list($page_id = 0, $exclude = null): array { + public function pages_list( + $page_id = 0, + $exclude = null + ): array { $cache_id = serialize(array($page_id, $exclude)); if ( @@ -92,7 +95,9 @@ * Parameters: * $page - Page to start recursion at. */ - private function recurse_pages($page): void { + private function recurse_pages( + $page + ): void { if (!isset($page->depth)) $page->depth = 1; @@ -119,7 +124,9 @@ * Parameters: * $limit - Maximum number of months to list. */ - public function archives_list($limit = 12): array { + public function archives_list( + $limit = 12 + ): array { if ( isset($this->caches["archives_list"][$limit]) ) { @@ -177,7 +184,9 @@ * Parameters: * $limit - Maximum number of recent posts to list. */ - public function recent_posts($limit = 5): array { + public function recent_posts( + $limit = 5 + ): array { if ( isset($this->caches["recent_posts"][$limit]) ) { @@ -213,7 +222,10 @@ * $post - The post to use as the basis. * $limit - Maximum number of related posts to list. */ - public function related_posts($post, $limit = 5): array { + public function related_posts( + $post, + $limit = 5 + ): array { if ($post->no_results) return array(); @@ -256,7 +268,9 @@ * Parameters: * $name - The filename. */ - public function file_exists($name): bool { + public function file_exists( + $name + ): bool { return file_exists(THEME_DIR.DIR.$name.".twig"); } @@ -264,7 +278,8 @@ * Function: stylesheets * Outputs the stylesheet tags. */ - public function stylesheets(): string { + public function stylesheets( + ): string { $config = Config::current(); $stylesheets = array(); @@ -318,7 +333,8 @@ * Function: javascripts * Outputs the JavaScript tags. */ - public function javascripts(): string { + public function javascripts( + ): string { $config = Config::current(); $route = Route::current(); @@ -374,7 +390,8 @@ * Function: feeds * Outputs the feeds and other general purpose tags. */ - public function feeds(): string { + public function feeds( + ): string { $config = Config::current(); $route = Route::current(); $main = MainController::current(); @@ -451,7 +468,8 @@ * Function: load_time * Returns the total elapsed time for this page load. */ - public function load_time(): string { + public function load_time( + ): string { return timer_stop(); } @@ -459,7 +477,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Translation.php b/includes/class/Translation.php index 2864fc3..8d6403d 100644 --- a/includes/class/Translation.php +++ b/includes/class/Translation.php @@ -33,7 +33,11 @@ * $path - The path to the locale directory. * $reload - Reload the translation if already loaded? */ - public function load($domain, $path, $reload = false): bool { + public function load( + $domain, + $path, + $reload = false + ): bool { $filepath = $path.DIR.$this->locale.DIR."LC_MESSAGES".DIR.$domain.".mo"; if (isset($this->mo[$domain]) and !$reload) @@ -131,7 +135,12 @@ * $plural - Pluralized string (optional). * $number - The number to judge by (optional). */ - public function text($domain, $single, $plural = null, $number = 1): string { + public function text( + $domain, + $single, + $plural = null, + $number = 1 + ): string { if (isset($plural)) { $array = $this->find($domain, $plural); $n = (int) $number; @@ -150,7 +159,10 @@ * Function: find * Returns a translation array from the supplied domain. */ - public function find($domain, $string): array { + public function find( + $domain, + $string + ): array { if (!isset($this->mo[$domain])) return array(); @@ -166,7 +178,9 @@ * Function: nplural * Support for for languages with n != 2 plural forms. */ - private function nplural($n): int { + private function nplural( + $n + ): int { static $base; if (!isset($base)) @@ -199,7 +213,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Trigger.php b/includes/class/Trigger.php index 0dfc793..9319ec2 100644 --- a/includes/class/Trigger.php +++ b/includes/class/Trigger.php @@ -40,7 +40,10 @@ * Function: cmp * Sorts actions by priority when used with usort. */ - private function cmp($a, $b): int { + private function cmp( + $a, + $b + ): int { if (empty($a) or empty($b)) return 0; @@ -54,7 +57,10 @@ * Function: decide * Decides what to do with a call return value. */ - private function decide($return, $val): mixed { + private function decide( + $return, + $val + ): mixed { if ($return === false) return $val; @@ -79,7 +85,9 @@ * Notes: * Any additional arguments are passed on to the trigger responders. */ - public function call($name): mixed { + public function call( + $name + ): mixed { $return = false; if (is_array($name)) { @@ -159,7 +167,10 @@ * Notes: * Any additional arguments are passed on to the trigger responders. */ - public function filter(&$target, $name): mixed { + public function filter( + &$target, + $name + ): mixed { if (is_array($name)) { foreach ($name as $filter) { $args = func_get_args(); @@ -235,7 +246,9 @@ * Returns: * @true@ or @false@ */ - public function exists($name): bool { + public function exists( + $name + ): bool { if (isset($this->exists[$name])) return $this->exists[$name]; @@ -254,7 +267,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/class/Update.php b/includes/class/Update.php index 8c58947..e0c73f9 100644 --- a/includes/class/Update.php +++ b/includes/class/Update.php @@ -8,7 +8,8 @@ * Function: check * Checks the update channel. */ - public static function check(): void { + public static function check( + ): void { $config = Config::current(); $visitor = Visitor::current(); @@ -49,7 +50,9 @@ * Function: validate * Validates the XML dataset. */ - private static function validate($xml): bool { + private static function validate( + $xml + ): bool { if (!$xml instanceof SimpleXMLElement) return false; @@ -74,7 +77,9 @@ * Function: message * Flash the user about the newer version. */ - private static function message($item): void { + private static function message( + $item + ): void { Flash::message( _f("Chyrp Lite “%s” is available.", fix($item->title)). ' '. @@ -86,7 +91,8 @@ * Function: warning * Flash the user about the failed check. */ - private static function warning(): void { + private static function warning( + ): void { Flash::warning( __("Unable to check for new Chyrp Lite versions."). ' '. diff --git a/includes/common.js b/includes/common.js index 5335c85..9431447 100644 --- a/includes/common.js +++ b/includes/common.js @@ -14,7 +14,9 @@ $.fn.loader = function(remove) { } // Award a numeric score for the strength of a password. -function passwordStrength(password) { +function passwordStrength( + password +) { var score = 0; var frequency = new Object(); @@ -48,7 +50,9 @@ function passwordStrength(password) { } // Does the string look like a web URL? -function isURL(text) { +function isURL( + text +) { return ( /^(https?:\/\/)?([a-z0-9]([a-z0-9\-\.]*[a-z0-9])?\.[a-z]{2,63}\.?)(:[0-9]{1,5})?($|\/)/i.test(text) || @@ -59,7 +63,9 @@ function isURL(text) { } // Does the string look like an email address? -function isEmail(text) { +function isEmail( + text +) { return ( /^[^\\ <>@]+@([a-z0-9]([a-z0-9\-\.]*[a-z0-9])?\.[a-z]{2,63}\.?)$/i.test(text) || @@ -70,7 +76,10 @@ function isEmail(text) { } // Prefixes a URL with a scheme if none was detected. -function addScheme(url, scheme) { +function addScheme( + url, + scheme +) { var regexp = /^([a-z]+:\/\/)?(.+)/i; if (!scheme) @@ -83,6 +92,8 @@ function addScheme(url, scheme) { } // Escape strings for regular expressions. -function escapeRegExp(text) { +function escapeRegExp( + text +) { return text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } diff --git a/includes/common.php b/includes/common.php index d24f45e..29adc67 100644 --- a/includes/common.php +++ b/includes/common.php @@ -10,11 +10,11 @@ # Constant: CHYRP_VERSION # Version number for this release. - define('CHYRP_VERSION', "2024.03"); + define('CHYRP_VERSION', "2025.01"); # Constant: CHYRP_CODENAME # The codename for this version. - define('CHYRP_CODENAME', "Oak"); + define('CHYRP_CODENAME', "Boreal"); # Constant: CHYRP_IDENTITY # The string identifying this version. @@ -134,7 +134,7 @@ # Constant: USE_GETTEXT_SHIM # Use a shim for translation support? - define('USE_GETTEXT_SHIM', stripos(PHP_OS, "Win") === 0); + define('USE_GETTEXT_SHIM', true); # Constant: USE_OB # Use output buffering? diff --git a/includes/controller/Admin.php b/includes/controller/Admin.php index ca0c4df..0f2eab9 100644 --- a/includes/controller/Admin.php +++ b/includes/controller/Admin.php @@ -7,17 +7,17 @@ # Array: $urls # An array of clean URL => dirty URL translations. public $urls = array( - '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2=$3&$4=$5', + '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2=$3&$4=$5', - '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2=$3&$4', + '|/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2=$3&$4', - '|/([^/]+)/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2=$3', + '|/([^/]+)/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2=$3', - '|/([^/]+)/([^/]+)/$|' - => '/?action=$1&$2' + '|/([^/]+)/([^/]+)/$|' + => '/?action=$1&$2' ); # String: $base @@ -94,7 +94,9 @@ * Function: parse * Route constructor calls this to interpret clean URLs and determine the action. */ - public function parse($route): ?string { + public function parse( + $route + ): ?string { $visitor = Visitor::current(); $config = Config::current(); @@ -182,7 +184,9 @@ * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool { + public function exempt( + $action + ): bool { $exemptions = array("login", "logout"); return in_array($action, $exemptions); } @@ -191,7 +195,8 @@ * Function: admin_write_post * Post writing. */ - public function admin_write_post(): void { + public function admin_write_post( + ): void { $visitor = Visitor::current(); $config = Config::current(); $trigger = Trigger::current(); @@ -245,7 +250,8 @@ * Function: admin_add_post * Adds a post when the form is submitted. */ - public function admin_add_post()/*: never */{ + public function admin_add_post( + ): never { $visitor = Visitor::current(); if (!$visitor->group->can("add_post", "add_draft")) @@ -289,7 +295,8 @@ * Function: admin_edit_post * Post editing. */ - public function admin_edit_post(): void { + public function admin_edit_post( + ): void { $trigger = Trigger::current(); if (empty($_GET['id']) or !is_numeric($_GET['id'])) @@ -338,7 +345,8 @@ * Function: admin_update_post * Updates a post when the form is submitted. */ - public function admin_update_post()/*: never */{ + public function admin_update_post( + ): never { $visitor = Visitor::current(); $post_redirect = (Post::any_editable() or Post::any_deletable()) ? @@ -399,7 +407,8 @@ * Function: admin_delete_post * Post deletion (confirm page). */ - public function admin_delete_post(): void { + public function admin_delete_post( + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -434,7 +443,8 @@ * Function: admin_destroy_post * Destroys a post. */ - public function admin_destroy_post()/*: never */{ + public function admin_destroy_post( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -477,7 +487,8 @@ * Function: admin_manage_posts * Post management. */ - public function admin_manage_posts(): void { + public function admin_manage_posts( + ): void { if (!Post::any_editable() and !Post::any_deletable()) show_403( __("Access Denied"), @@ -538,55 +549,64 @@ $posts = new Paginator(array()); } - foreach ($posts->paginated as &$post) { - if ($ids = $post->groups()) { - $group_names = array(); - $group_classes = array(); + $post_statuses = array(); - foreach ($ids as $id) { - $group = new Group($id); + foreach ($posts->paginated as $post) { + $name = ""; + $groups = array(); + $classes = array(); + + if ($group_ids = $post->groups()) { + foreach ($group_ids as $group_id) { + $group = new Group($group_id); if (!$group->no_results) { - $group_names[] = $group->name; - $group_classes[] = "group-".$group->id; + $groups[] = $group; + $classes[] = "group-".$group->id; } } - - $post->status_name = join(", ", $group_names); - $post->status_class = join(" ", $group_classes); } else { switch ($post->status) { case Post::STATUS_DRAFT: - $post->status_name = __("Draft", "admin"); + $name = __("Draft", "admin"); break; case Post::STATUS_PUBLIC: - $post->status_name = __("Public", "admin"); + $name = __("Public", "admin"); break; case Post::STATUS_PRIVATE: - $post->status_name = __("Private", "admin"); + $name = __("Private", "admin"); break; case Post::STATUS_REG_ONLY: - $post->status_name = __("All registered users", "admin"); + $name = __("All registered users", "admin"); break; case Post::STATUS_SCHEDULED: - $post->status_name = __("Scheduled", "admin"); + $name = __("Scheduled", "admin"); break; default: - $post->status_name = camelize($post->status, true); + $name = camelize($post->status, true); } - $post->status_class = $post->status; + $classes[] = $post->status; } + + $post_statuses[$post->id] = array( + "name" => $name, + "groups" => $groups, + "classes" => $classes + ); } $this->display( "pages".DIR."manage_posts", - array("posts" => $posts) + array( + "posts" => $posts, + "post_statuses" => $post_statuses + ) ); } @@ -594,7 +614,8 @@ * Function: admin_write_page * Page creation. */ - public function admin_write_page(): void { + public function admin_write_page( + ): void { if (!Visitor::current()->group->can("add_page")) show_403( __("Access Denied"), @@ -611,7 +632,8 @@ * Function: admin_add_page * Adds a page when the form is submitted. */ - public function admin_add_page()/*: never */{ + public function admin_add_page( + ): never { $visitor = Visitor::current(); if (!$visitor->group->can("add_page")) @@ -682,7 +704,8 @@ * Function: admin_edit_page * Page editing. */ - public function admin_edit_page(): void { + public function admin_edit_page( + ): void { if (!Visitor::current()->group->can("edit_page")) show_403( __("Access Denied"), @@ -725,7 +748,8 @@ * Function: admin_update_page * Updates a page when the form is submitted. */ - public function admin_update_page()/*: never */{ + public function admin_update_page( + ): never { $visitor = Visitor::current(); $page_redirect = ($visitor->group->can("edit_page", "delete_page")) ? @@ -824,7 +848,8 @@ * Function: admin_delete_page * Page deletion (confirm page). */ - public function admin_delete_page(): void { + public function admin_delete_page( + ): void { if (!Visitor::current()->group->can("delete_page")) show_403( __("Access Denied"), @@ -856,7 +881,8 @@ * Function: admin_destroy_page * Destroys a page. */ - public function admin_destroy_page()/*: never */{ + public function admin_destroy_page( + ): never { if (!Visitor::current()->group->can("delete_page")) show_403( __("Access Denied"), @@ -913,7 +939,8 @@ * Function: admin_manage_pages * Page management. */ - public function admin_manage_pages(): void { + public function admin_manage_pages( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("edit_page", "delete_page")) @@ -960,7 +987,8 @@ * Function: admin_new_user * User creation. */ - public function admin_new_user(): void { + public function admin_new_user( + ): void { if (!Visitor::current()->group->can("add_user")) show_403( __("Access Denied"), @@ -988,7 +1016,8 @@ * Function: admin_add_user * Add a user when the form is submitted. */ - public function admin_add_user()/*: never */{ + public function admin_add_user( + ): never { if (!Visitor::current()->group->can("add_user")) show_403( __("Access Denied"), @@ -1001,14 +1030,23 @@ __("Invalid authentication token.") ); - if (empty($_POST['login']) or derezz($_POST['login'])) + if (empty($_POST['login'])) error( __("Error"), __("Please enter a username for the account."), code:422 ); - $check = new User(array("login" => $_POST['login'])); + $login = sanitize_db_string($_POST['login'], 64); + + if (empty($login)) + error( + __("Error"), + __("Invalid username."), + code:422 + ); + + $check = new User(array("login" => $login)); if (!$check->no_results) error( @@ -1079,7 +1117,7 @@ true ; $user = User::add( - login:$_POST['login'], + login:$login, password:User::hash_password($_POST['password1']), email:$_POST['email'], full_name:$_POST['full_name'], @@ -1101,7 +1139,8 @@ * Function: admin_edit_user * User editing. */ - public function admin_edit_user(): void { + public function admin_edit_user( + ): void { if (!Visitor::current()->group->can("edit_user")) show_403( __("Access Denied"), @@ -1138,7 +1177,8 @@ * Function: admin_update_user * Updates a user when the form is submitted. */ - public function admin_update_user()/*: never */{ + public function admin_update_user( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -1161,16 +1201,25 @@ __("You do not have sufficient privileges to edit users.") ); - if (empty($_POST['login']) or derezz($_POST['login'])) + if (empty($_POST['login'])) error( __("Error"), __("Please enter a username for the account."), code:422 ); + $login = sanitize_db_string($_POST['login'], 64); + + if (empty($login)) + error( + __("Error"), + __("Invalid username."), + code:422 + ); + $check = new User( array( - "login" => $_POST['login'], + "login" => $login, "id not" => $_POST['id'] ) ); @@ -1254,7 +1303,7 @@ true ; $user = $user->update( - login:$_POST['login'], + login:$login, password:$password, email:$_POST['email'], full_name:$_POST['full_name'], @@ -1276,7 +1325,8 @@ * Function: admin_delete_user * User deletion (confirm page). */ - public function admin_delete_user(): void { + public function admin_delete_user( + ): void { if (!Visitor::current()->group->can("delete_user")) show_403( __("Access Denied"), @@ -1316,7 +1366,8 @@ * Function: admin_destroy_user * Destroys a user. */ - public function admin_destroy_user()/*: never */{ + public function admin_destroy_user( + ): never { if (!Visitor::current()->group->can("delete_user")) show_403( __("Access Denied"), @@ -1405,7 +1456,8 @@ * Function: admin_manage_users * User management. */ - public function admin_manage_users(): void { + public function admin_manage_users( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("add_user", "edit_user", "delete_user")) @@ -1455,7 +1507,8 @@ * Function: admin_new_group * Group creation. */ - public function admin_new_group(): void { + public function admin_new_group( + ): void { if (!Visitor::current()->group->can("add_group")) show_403( __("Access Denied"), @@ -1472,7 +1525,8 @@ * Function: admin_add_group * Adds a group when the form is submitted. */ - public function admin_add_group()/*: never */{ + public function admin_add_group( + ): never { if (!Visitor::current()->group->can("add_group")) show_403( __("Access Denied"), @@ -1485,17 +1539,26 @@ __("Invalid authentication token.") ); - if (empty($_POST['name']) or derezz($_POST['name'])) + if (empty($_POST['name'])) error( __("Error"), __("Please enter a name for the group."), code:422 ); + $name = sanitize_db_string($_POST['name'], 100); + + if (empty($name)) + error( + __("Error"), + __("Invalid group name."), + code:422 + ); + fallback($_POST['permissions'], array()); $check = new Group( - array("name" => $_POST['name']) + array("name" => $name) ); if (!$check->no_results) @@ -1506,7 +1569,7 @@ ); Group::add( - $_POST['name'], + $name, array_keys($_POST['permissions']) ); @@ -1520,7 +1583,8 @@ * Function: admin_edit_group * Group editing. */ - public function admin_edit_group(): void { + public function admin_edit_group( + ): void { if (!Visitor::current()->group->can("edit_group")) show_403( __("Access Denied"), @@ -1555,7 +1619,8 @@ * Function: admin_update_group * Updates a group when the form is submitted. */ - public function admin_update_group()/*: never */{ + public function admin_update_group( + ): never { if (!Visitor::current()->group->can("edit_group")) show_403( __("Access Denied"), @@ -1575,18 +1640,27 @@ code:400 ); - if (empty($_POST['name']) or derezz($_POST['name'])) + if (empty($_POST['name'])) error( __("Error"), __("Please enter a name for the group."), code:422 ); + $name = sanitize_db_string($_POST['name'], 100); + + if (empty($name)) + error( + __("Error"), + __("Invalid group name."), + code:422 + ); + fallback($_POST['permissions'], array()); $check = new Group( array( - "name" => $_POST['name'], + "name" => $name, "id not" => $_POST['id'] ) ); @@ -1607,7 +1681,7 @@ ); $group = $group->update( - $_POST['name'], + $name, array_keys($_POST['permissions']) ); @@ -1621,7 +1695,8 @@ * Function: admin_delete_group * Group deletion (confirm page). */ - public function admin_delete_group(): void { + public function admin_delete_group( + ): void { if (!Visitor::current()->group->can("delete_group")) show_403( __("Access Denied"), @@ -1667,7 +1742,8 @@ * Function: admin_destroy_group * Destroys a group. */ - public function admin_destroy_group()/*: never */{ + public function admin_destroy_group( + ): never { if (!Visitor::current()->group->can("delete_group")) show_403( __("Access Denied"), @@ -1793,7 +1869,8 @@ * Function: admin_manage_groups * Group management. */ - public function admin_manage_groups(): void { + public function admin_manage_groups( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("add_group", "edit_group", "delete_group")) @@ -1844,7 +1921,8 @@ * Function: admin_delete_upload * Upload deletion (confirm page). */ - public function admin_delete_upload(): void { + public function admin_delete_upload( + ): void { $sql = SQL::current(); if (!Visitor::current()->group->can("edit_post", "edit_page", true)) @@ -1899,7 +1977,8 @@ * Function: admin_destroy_upload * Destroys a post. */ - public function admin_destroy_upload()/*: never */{ + public function admin_destroy_upload( + ): never { if (!Visitor::current()->group->can("edit_post", "edit_page", true)) show_403( __("Access Denied"), @@ -1941,7 +2020,8 @@ * Function: admin_manage_uploads * Upload management. */ - public function admin_manage_uploads(): void { + public function admin_manage_uploads( + ): void { if (!Visitor::current()->group->can("edit_post", "edit_page", true)) show_403( __("Access Denied"), @@ -1994,7 +2074,8 @@ * Function: admin_export * Export content from this installation. */ - public function admin_export(): void { + public function admin_export( + ): void { $config = Config::current(); $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -2333,7 +2414,7 @@ camelize($config->name), false, true - )."_Export_".date("Y-m-d"); + )."_export_".date("Y-m-d"); $archived = zip_archive($exports); file_attachment($archived, $filename.".zip"); @@ -2343,7 +2424,8 @@ * Function: admin_import * Import content to this installation. */ - public function admin_import(): void { + public function admin_import( + ): void { $config = Config::current(); $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -2616,7 +2698,8 @@ * Function: admin_modules * Module enabling/disabling. */ - public function admin_modules(): void { + public function admin_modules( + ): void { if (!Visitor::current()->group->can("toggle_extensions")) show_403( __("Access Denied"), @@ -2709,7 +2792,8 @@ * Function: admin_feathers * Feather enabling/disabling. */ - public function admin_feathers(): void { + public function admin_feathers( + ): void { if (!Visitor::current()->group->can("toggle_extensions")) show_403( __("Access Denied"), @@ -2753,7 +2837,8 @@ * Function: admin_themes * Theme switching/previewing. */ - public function admin_themes(): void { + public function admin_themes( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -2791,7 +2876,8 @@ * Function: admin_enable * Enables a module or feather. */ - public function admin_enable()/*: never */{ + public function admin_enable( + ): never { $config = Config::current(); $visitor = Visitor::current(); @@ -2869,7 +2955,8 @@ * Function: admin_disable * Disables a module or feather. */ - public function admin_disable()/*: never */{ + public function admin_disable( + ): never { $config = Config::current(); $visitor = Visitor::current(); @@ -2944,7 +3031,8 @@ * Function: admin_change_theme * Changes the theme. */ - public function admin_change_theme()/*: never */{ + public function admin_change_theme( + ): never { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -2987,7 +3075,8 @@ * Function: admin_preview_theme * Previews the theme. */ - public function admin_preview_theme()/*: never */{ + public function admin_preview_theme( + ): never { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3025,7 +3114,8 @@ * Function: admin_general_settings * General Settings page. */ - public function admin_general_settings(): void { + public function admin_general_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3064,20 +3154,6 @@ code:422 ); - if (empty($_POST['chyrp_url'])) - error( - __("Error"), - __("Chyrp URL cannot be blank."), - code:422 - ); - - if (!is_url($_POST['chyrp_url'])) - error( - __("Error"), - __("Invalid Chyrp URL."), - code:422 - ); - if (!empty($_POST['url']) and !is_url($_POST['url'])) error( __("Error"), @@ -3097,12 +3173,15 @@ 0 : $config->check_updates_last ; - $chyrp_url = rtrim(add_scheme($_POST['chyrp_url']), "/"); - $url = rtrim(add_scheme(oneof($_POST['url'], $_POST['chyrp_url'])), "/"); + $url = rtrim( + add_scheme( + oneof($_POST['url'], $config->chyrp_url) + ), + "/" + ); $config->set("name", strip_tags($_POST['name'])); $config->set("description", strip_tags($_POST['description'])); - $config->set("chyrp_url", $chyrp_url); $config->set("url", $url); $config->set("email", $_POST['email']); $config->set("timezone", $_POST['timezone']); @@ -3121,13 +3200,56 @@ * Function: admin_content_settings * Content Settings page. */ - public function admin_content_settings(): void { + public function admin_content_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), __("You do not have sufficient privileges to change settings.") ); + $post_statuses = array( + array( + "id" => Post::STATUS_DRAFT, + "name" => __("Draft", "admin") + ), + array( + "id" => Post::STATUS_PUBLIC, + "name" => __("Public", "admin") + ), + array( + "id" => Post::STATUS_PRIVATE, + "name" => __("Private", "admin") + ), + array( + "id" => Post::STATUS_REG_ONLY, + "name" => __("All registered users", "admin") + ), + array( + "id" => Post::STATUS_SCHEDULED, + "name" => __("Scheduled", "admin") + ) + ); + + $page_statuses = array( + array( + "id" => Page::STATUS_LISTED, + "name" => __("Public and visible in pages list", "admin") + ), + array( + "id" => Page::STATUS_PUBLIC, + "name" => __("Public", "admin") + ), + array( + "id" => Page::STATUS_TEASED, + "name" => __("Private and visible in pages list", "admin") + ), + array( + "id" => Page::STATUS_PRIVATE, + "name" => __("Private", "admin") + ) + ); + $feed_formats = array( array( "name" => "Atom", @@ -3146,7 +3268,11 @@ if (empty($_POST)) { $this->display( "pages".DIR."content_settings", - array("feed_formats" => $feed_formats) + array( + "post_statuses" => $post_statuses, + "page_statuses" => $page_statuses, + "feed_formats" => $feed_formats + ) ); return; @@ -3160,6 +3286,8 @@ fallback($_POST['posts_per_page'], 5); fallback($_POST['admin_per_page'], 25); + fallback($_POST['default_post_status'], "public"); + fallback($_POST['default_page_status'], "listed"); fallback($_POST['feed_items'], 20); fallback($_POST['feed_format'], "AtomFeed"); fallback($_POST['uploads_path'], ""); @@ -3180,6 +3308,8 @@ $config = Config::current(); $config->set("posts_per_page", abs((int) $_POST['posts_per_page'])); $config->set("admin_per_page", abs((int) $_POST['admin_per_page'])); + $config->set("default_post_status", $_POST['default_post_status']); + $config->set("default_page_status", $_POST['default_page_status']); $config->set("feed_items", abs((int) $_POST['feed_items'])); $config->set("feed_format", $_POST['feed_format']); $config->set("uploads_path", $matches[1].$matches[2].$matches[3]); @@ -3199,7 +3329,8 @@ * Function: admin_user_settings * User Settings page. */ - public function admin_user_settings(): void { + public function admin_user_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3266,7 +3397,8 @@ * Function: admin_route_settings * Route Settings page. */ - public function admin_route_settings(): void { + public function admin_route_settings( + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -3290,27 +3422,8 @@ $route = Route::current(); $config = Config::current(); - if (!empty($_POST['clean_urls']) and !$config->clean_urls) { - $conf = array(htaccess_conf(), caddyfile_conf(), nginx_conf()); - - if (in_array(false, $conf, true)) { - Flash::warning( - __("Failed to write file to disk.") - ); - unset($_POST['clean_urls']); - } else { - foreach ($conf as $return) { - if (is_int($return)) { - Flash::message( - __("Files created.").' '. - __("Please read the documentation before enabling clean URLs.") - ); - unset($_POST['clean_urls']); - break; - } - } - } - } + # If clean URLs are already active then rewrite support must be ok. + $rewrites_tested = $config->clean_urls; if (!empty($_POST['enable_homepage']) and !$config->enable_homepage) { $route->add("/", "page;url=home"); @@ -3341,17 +3454,54 @@ $config->set("post_url", trim($_POST['post_url'], "/ ")."/"); $config->set("enable_homepage", !empty($_POST['enable_homepage'])); + # Test URL rewrite support and disable clean URLs if not detected. + if ($config->clean_urls and !$rewrites_tested) { + $dirty_test = get_remote($config->url."/?feed"); + $clean_test = get_remote($config->url."/feed/"); + + if ($dirty_test !== false and $clean_test === false) { + $config->set("clean_urls", false); + + Flash::warning( + __("Clean URLs have been disabled because URL rewriting is not active.") + ); + } + } + Flash::notice( __("Settings updated."), "route_settings" ); } + /** + * Function: admin_download_rewrites + * Downloads the files required for URL rewrite support. + */ + public function admin_download_rewrites( + ): void { + if (!Visitor::current()->group->can("change_settings")) + show_403( + __("Access Denied"), + __("You do not have sufficient privileges to change settings.") + ); + + $conf = array( + "_htaccess" => htaccess_conf(), + "caddyfile" => caddyfile_conf(), + "include.conf" => nginx_conf() + ); + + $archived = zip_archive(array_filter($conf)); + file_attachment($archived, "URL_rewrite_files.zip"); + } + /** * Function: admin_login * Mask for MainController->login(). */ - public function admin_login()/*: never */{ + public function admin_login( + ): never { if (logged_in()) Flash::notice( __("You are already logged in."), @@ -3366,7 +3516,8 @@ * Function: admin_logout * Mask for MainController->logout(). */ - public function admin_logout()/*: never */{ + public function admin_logout( + ): never { redirect(url("logout", MainController::current())); } @@ -3374,7 +3525,8 @@ * Function: admin_help * Serves help pages for core and extensions. */ - public function admin_help(): void { + public function admin_help( + ): void { if (empty($_GET['id'])) error( __("Error"), @@ -3382,7 +3534,11 @@ code:400 ); - $template = str_replace(array(DIR, "/"), "", $_GET['id']); + $template = str_replace( + array(DIR, "/", "<", ">"), + "", + $_GET['id'] + ); $this->display( "help".DIR.$template, @@ -3395,7 +3551,9 @@ * Function: navigation_context * Returns the navigation context for Twig. */ - private function navigation_context($action): array { + private function navigation_context( + $action + ): array { $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -3658,7 +3816,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/controller/Ajax.php b/includes/controller/Ajax.php index ec89ad8..c599719 100644 --- a/includes/controller/Ajax.php +++ b/includes/controller/Ajax.php @@ -20,7 +20,9 @@ * Function: parse * Route constructor calls this to determine the action in the case of a POST request. */ - public function parse($route): ?string { + public function parse( + $route + ): ?string { if ( isset($_SERVER['HTTP_SEC_FETCH_SITE']) and $_SERVER['HTTP_SEC_FETCH_SITE'] != "same-origin" @@ -45,7 +47,9 @@ * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool { + public function exempt( + $action + ): bool { return false; } @@ -53,7 +57,8 @@ * Function: ajax_destroy_post * Destroys a post. */ - public function ajax_destroy_post(): void { + public function ajax_destroy_post( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -91,7 +96,8 @@ * Function: ajax_destroy_page * Destroys a page. */ - public function ajax_destroy_page(): void { + public function ajax_destroy_page( + ): void { if (!Visitor::current()->group->can("delete_page")) show_403( __("Access Denied"), @@ -127,7 +133,8 @@ * Function: ajax_preview_post * Previews a post. */ - public function ajax_preview_post(): void { + public function ajax_preview_post( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -183,7 +190,8 @@ * Function: ajax_preview_page * Previews a page. */ - public function ajax_preview_page(): void { + public function ajax_preview_page( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -224,7 +232,8 @@ * Function: ajax_file_upload * Moves a file to the uploads directory. */ - public function ajax_file_upload(): void { + public function ajax_file_upload( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -265,7 +274,8 @@ } } - public function ajax_uploads_modal(): void { + public function ajax_uploads_modal( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -309,7 +319,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/controller/Main.php b/includes/controller/Main.php index abdf0fb..83fc96f 100644 --- a/includes/controller/Main.php +++ b/includes/controller/Main.php @@ -7,35 +7,35 @@ # Array: $urls # An array of clean URL => dirty URL translations. public $urls = array( - '|/id/post/([0-9]+)/|' - => '/?action=id&post=$1', + '|/id/post/([0-9]+)/|' + => '/?action=id&post=$1', - '|/id/page/([0-9]+)/|' - => '/?action=id&page=$1', + '|/id/page/([0-9]+)/|' + => '/?action=id&page=$1', - '|/author/([0-9]+)/|' - => '/?action=author&id=$1', + '|/author/([0-9]+)/|' + => '/?action=author&id=$1', - '|/random/([^/]+)/|' - => '/?action=random&feather=$1', + '|/random/([^/]+)/|' + => '/?action=random&feather=$1', - '|/matter/([^/]+)/|' - => '/?action=matter&url=$1', + '|/matter/([^/]+)/|' + => '/?action=matter&url=$1', - '|/search/([^/]+)/|' - => '/?action=search&query=$1', + '|/search/([^/]+)/|' + => '/?action=search&query=$1', - '|/archive/([0-9]{4})/([0-9]{2})/([0-9]{2})/|' - => '/?action=archive&year=$1&month=$2&day=$3', + '|/archive/([0-9]{4})/([0-9]{2})/([0-9]{2})/|' + => '/?action=archive&year=$1&month=$2&day=$3', - '|/archive/([0-9]{4})/([0-9]{2})/|' - => '/?action=archive&year=$1&month=$2', + '|/archive/([0-9]{4})/([0-9]{2})/|' + => '/?action=archive&year=$1&month=$2', - '|/archive/([0-9]{4})/|' - => '/?action=archive&year=$1', + '|/archive/([0-9]{4})/|' + => '/?action=archive&year=$1', - '|/([^/]+)/feed/|' - => '/?action=$1&feed' + '|/([^/]+)/feed/|' + => '/?action=$1&feed' ); # Variable: $twig @@ -86,7 +86,9 @@ * Function: parse * Route constructor calls this to interpret clean URLs and determine the action. */ - public function parse($route): ?string { + public function parse( + $route + ): ?string { $config = Config::current(); # Serve the index if the first arg is empty and / is not a route. @@ -208,7 +210,9 @@ * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool { + public function exempt( + $action + ): bool { $exemptions = array( "login", "logout", @@ -224,7 +228,8 @@ * Function: main_index * Grabs the posts for the main index. */ - public function main_index(): void { + public function main_index( + ): void { $this->display( "pages".DIR."index", array( @@ -240,7 +245,8 @@ * Function: main_updated * Grabs the posts that have been updated. */ - public function main_updated(): void { + public function main_updated( + ): void { $this->display( array("pages".DIR."updated", "pages".DIR."index"), array( @@ -263,7 +269,8 @@ * Function: main_author * Grabs the posts created by a user. */ - public function main_author(): void { + public function main_author( + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) Flash::warning( __("You did not specify a user ID."), @@ -308,7 +315,8 @@ * Function: main_archive * Grabs the posts for the archive page. */ - public function main_archive(): void { + public function main_archive( + ): void { $sql = SQL::current(); $statuses = Post::statuses(); $feathers = Post::feathers(); @@ -473,7 +481,8 @@ * Function: main_search * Grabs the posts and pages for a search query. */ - public function main_search(): void { + public function main_search( + ): void { $config = Config::current(); $visitor = Visitor::current(); @@ -563,7 +572,8 @@ * Function: main_drafts * Grabs the posts with draft status created by this user. */ - public function main_drafts(): void { + public function main_drafts( + ): void { $visitor = Visitor::current(); if (!$visitor->group->can("view_own_draft", "view_draft")) @@ -596,7 +606,9 @@ * Handles post viewing via dirty URL or clean URL. * E.g. /year/month/day/url/. */ - public function main_view($post = null): bool { + public function main_view( + $post = null + ): bool { if (!isset($post)) $post = new Post( array("url" => fallback($_GET['url'])), @@ -630,7 +642,9 @@ * Handles page viewing via dirty URL or clean URL. * E.g. /parent/child/child-of-child/. */ - public function main_page($page = null): bool { + public function main_page( + $page = null + ): bool { $trigger = Trigger::current(); $visitor = Visitor::current(); @@ -667,7 +681,8 @@ * Function: main_id * Views a post or page by its static ID. */ - public function main_id(): bool { + public function main_id( + ): bool { if (!empty($_GET['post']) and is_numeric($_GET['post'])) { $post = new Post($_GET['post']); @@ -693,7 +708,8 @@ * Function: main_random * Grabs a random post and redirects to it. */ - public function main_random(): bool { + public function main_random( + ): bool { $conds = array(Post::statuses()); if (isset($_GET['feather'])) @@ -737,13 +753,18 @@ * Function: main_matter * Displays a standalone Twig template from the "pages" directory. */ - public function main_matter(): bool { + public function main_matter( + ): bool { $theme = Theme::current(); if (!isset($_GET['url'])) return false; - $matter = str_replace(array(DIR, "/"), "", $_GET['url']); + $matter = str_replace( + array(DIR, "/", "<", ">"), + "", + $_GET['url'] + ); if ($matter == "") return false; @@ -766,7 +787,8 @@ * Function: main_register * Register a visitor as a new user. */ - public function main_register(): void { + public function main_register( + ): void { $config = Config::current(); if (!$config->can_register) @@ -787,13 +809,20 @@ __("Invalid authentication token.") ); - if (empty($_POST['login']) or derezz($_POST['login'])) + if (empty($_POST['login'])) Flash::warning( __("Please enter a username for your account.") ); + $login = sanitize_db_string($_POST['login'], 64); + + if (empty($login)) + Flash::warning( + __("Invalid username.") + ); + $check = new User( - array("login" => $_POST['login']) + array("login" => $login) ); if (!$check->no_results) @@ -841,7 +870,7 @@ if (!Flash::exists("warning")) { $user = User::add( - login:$_POST['login'], + login:$login, password:User::hash_password($_POST['password1']), email:$_POST['email'], full_name:$_POST['full_name'], @@ -878,7 +907,8 @@ * Function: main_activate * Activates (approves) a given login. */ - public function main_activate()/*: never */{ + public function main_activate( + ): never { if (logged_in()) Flash::notice( __("You cannot activate an account because you are already logged in."), @@ -924,7 +954,8 @@ * Function: main_login * Logs in a user if they provide the username and password. */ - public function main_login(): void { + public function main_login( + ): void { $config = Config::current(); $trigger = Trigger::current(); @@ -982,7 +1013,8 @@ * Function: main_logout * Logs out the current user. */ - public function main_logout()/*: never */{ + public function main_logout( + ): never { if (!logged_in()) Flash::notice( __("You aren't logged in."), @@ -1001,7 +1033,8 @@ * Function: main_controls * Updates the current user when the form is submitted. */ - public function main_controls(): void { + public function main_controls( + ): void { $visitor = Visitor::current(); if (!logged_in()) @@ -1085,7 +1118,8 @@ * Function: main_lost_password * Emails a password reset link to the registered address of a user. */ - public function main_lost_password(): void { + public function main_lost_password( + ): void { $config = Config::current(); if (logged_in()) @@ -1137,7 +1171,8 @@ * Function: main_reset_password * Resets the password for a given login. */ - public function main_reset_password(): void { + public function main_reset_password( + ): void { $config = Config::current(); if (logged_in()) @@ -1222,7 +1257,8 @@ * Function: main_webmention * Webmention receiver endpoint. */ - public function main_webmention(): void { + public function main_webmention( + ): void { if (!Config::current()->send_pingbacks) error( __("Error"), @@ -1240,7 +1276,9 @@ * Function: main_feed * Grabs posts and serves a feed. */ - public function main_feed($posts = null): void { + public function main_feed( + $posts = null + ): void { $config = Config::current(); $trigger = Trigger::current(); $theme = Theme::current(); @@ -1436,7 +1474,8 @@ * Function: current * Returns a singleton reference to the current class. */ - public static function & current(): self { + public static function & current( + ): self { static $instance = null; $instance = (empty($instance)) ? new self() : $instance ; return $instance; diff --git a/includes/download.php b/includes/download.php index 32f2df6..f29b863 100644 --- a/includes/download.php +++ b/includes/download.php @@ -22,7 +22,11 @@ __("You are not allowed to view this site.") ); - $filename = str_replace(array(DIR, "/"), "", $_GET['file']); + $filename = str_replace( + array(DIR, "/", "<", ">"), + "", + $_GET['file'] + ); if ($filename == "") show_404( diff --git a/includes/error.php b/includes/error.php index 76a62d1..e0ad579 100644 --- a/includes/error.php +++ b/includes/error.php @@ -8,10 +8,17 @@ ini_set("error_log", MAIN_DIR.DIR."error_log.txt"); # Set the appropriate error reporting level. - if (DEBUG) - error_reporting(E_ALL | E_STRICT); - else - error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE); + if (DEBUG) { + error_reporting(E_ALL); + } else { + error_reporting( + E_ALL + & ~E_DEPRECATED + & ~E_USER_DEPRECATED + & ~E_NOTICE + & ~E_USER_NOTICE + ); + } # Set the error and exception handlers. set_error_handler("error_composer"); @@ -21,7 +28,12 @@ * Function: error_composer * Composes a message for the error() function to display. */ - function error_composer($errno, $message, $file, $line) { + function error_composer( + $errno, + $message, + $file, + $line + ) { # Test for suppressed errors and excluded error levels. if (!(error_reporting() & $errno)) return true; @@ -34,18 +46,24 @@ if (DEBUG) error_log( - "ERROR: ".$errno." ".strip_tags($normalized). + "ERROR: ".$errno. + " ".strip_tags($normalized). " (".$file." on line ".$line.")" ); - error(body:$message, backtrace:debug_backtrace()); + error( + body:$message, + backtrace:debug_backtrace() + ); } /** * Function: exception_composer * Composes a message for the error() function to display. */ - function exception_composer($e) { + function exception_composer( + $e + ) { $errno = $e->getCode(); $message = $e->getMessage(); $file = $e->getFile(); @@ -58,11 +76,15 @@ if (DEBUG) error_log( - "ERROR: ".$errno." ".strip_tags($normalized). + "ERROR: ".$errno. + " ".strip_tags($normalized). " (".$file." on line ".$line.")" ); - error(body:$message, backtrace:$e->getTrace()); + error( + body:$message, + backtrace:$e->getTrace() + ); } /** @@ -75,7 +97,12 @@ * $backtrace - The trace of the error. * $code - Numeric HTTP status code to set. */ - function error($title = "", $body = "", $backtrace = array(), $code = 500)/*: never*/{ + function error( + $title = "", + $body = "", + $backtrace = array(), + $code = 500 + ): never { # Discard any additional output buffers. while (OB_BASE_LEVEL < ob_get_level()) ob_end_clean(); @@ -179,16 +206,39 @@ fallback($body, __("An unspecified error has occurred.")); fallback($backtrace, array()); + $allowed_tags = array( + "abbr", "address", + "b", "blockquote", "br", + "cite", "code", + "data", "del", "dfn", + "em", + "h1", "h2", "h3", "h4", "h5", "h6", "hr", + "i", "ins", + "kbd", + "li", + "mark", + "ol", + "p", "pre", + "small", "strong", "sub", "sup", + "time", + "ul" + ); + + # Make title and body safe. + $title = strip_tags($title, $allowed_tags); + $body = strip_tags($body, $allowed_tags); + # Redact and escape the backtrace for display. foreach ($backtrace as $index => &$trace) { - if (!isset($trace["file"]) or !isset($trace["line"])) + if (!isset($trace["file"]) or !isset($trace["line"])) { unset($backtrace[$index]); - else + } else { $trace["file"] = fix( str_replace(MAIN_DIR.DIR, "", $trace["file"]), false, true ); + } } #--------------------------------------------- @@ -264,14 +314,44 @@ } :root { color-scheme: light dark; + --chyrp-pure-white: #ffffff; + --chyrp-pure-black: #000000; + --chyrp-inky-black: #1f1f23; + --chyrp-summer-grey: #fbfbfb; + --chyrp-english-grey: #efefef; + --chyrp-welsh-grey: #dfdfdf; + --chyrp-irish-grey: #cfcfcf; + --chyrp-scottish-grey: #afafaf; + --chyrp-winter-grey: #656565; + --chyrp-strong-yellow: #ffdd00; + --chyrp-strong-orange: #ff7f00; + --chyrp-strong-red: #c11600; + --chyrp-strong-green: #108600; + --chyrp-strong-blue: #1e57ba; + --chyrp-strong-purple: #ba1eba; + --chyrp-light-yellow: #fffde6; + --chyrp-light-red: #faebe4; + --chyrp-light-green: #ebfae4; + --chyrp-light-blue: #f2fbff; + --chyrp-light-purple: #fae4fa; + --chyrp-medium-yellow: #fffbcc; + --chyrp-medium-red: #fcddcf; + --chyrp-medium-green: #daf1d0; + --chyrp-medium-blue: #e1f2fa; + --chyrp-medium-purple: #f6d5f6; + --chyrp-border-yellow: #e5d7a1; + --chyrp-border-red: #d6bdb5; + --chyrp-border-green: #bdd6b5; + --chyrp-border-blue: #b8cdd9; + --chyrp-border-purple: #d6b5d6; } *::selection { - color: #ffffff; - background-color: #ff7f00; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-strong-yellow); } html, body, div, dl, dt, dd, ul, ol, li, p, h1, h2, h3, h4, h5, h6, img, pre, code, - form, fieldset, input, select, textarea, + form, fieldset, input, select, svg, textarea, table, tbody, tr, th, td, legend, caption, blockquote, aside, figure, figcaption { margin: 0em; @@ -285,9 +365,9 @@ font-size: 1rem; font-family: "Open Sans webfont", sans-serif; line-height: 1.5; - color: #1f1f23; + color: var(--chyrp-inky-black); tab-size: 4; - background: #efefef; + background: var(--chyrp-english-grey); margin: 2rem; } h1 { @@ -306,7 +386,7 @@ font-size: 1em; font-weight: 600; margin: 1rem 0rem; - border-bottom: 1px solid #cfcfcf; + border-bottom: 1px solid var(--chyrp-irish-grey); } p { width: fit-content; @@ -315,7 +395,7 @@ pre { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; + background-color: var(--chyrp-english-grey); margin: 1rem 0rem; padding: 1rem; overflow-x: auto; @@ -324,9 +404,9 @@ code { font-family: "Cousine webfont", monospace; font-size: 0.85em; - background-color: #efefef; - padding: 0px 2px; - border: 1px solid #cfcfcf; + background-color: var(--chyrp-english-grey); + padding: 2px 4px 0px 4px; + border: 1px solid var(--chyrp-irish-grey); vertical-align: bottom; white-space: break-spaces; } @@ -340,7 +420,7 @@ strong { font: inherit; font-weight: bold; - color: #c11600; + color: var(--chyrp-strong-red); } em, dfn, cite, var { font: inherit; @@ -358,18 +438,18 @@ } a:link, a:visited { - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: underline; text-underline-offset: 0.125em; } a:focus { - outline: #ff7f00 dashed 2px; - outline-offset: 1px; + outline: var(--chyrp-strong-orange) dashed 2px; + outline-offset: 0px; } a:hover, a:focus, a:active { - color: #1e57ba; + color: var(--chyrp-strong-blue); text-decoration: underline; text-underline-offset: 0.125em; } @@ -381,12 +461,12 @@ font: inherit; font-size: 1.25em; text-align: center; - color: #1f1f23; + color: var(--chyrp-inky-black); text-decoration: none; margin: 1rem 0rem; padding: 0.5rem 1rem; - background-color: #f2fbff; - border: 2px solid #b8cdd9; + background-color: var(--chyrp-light-blue); + border: 2px solid var(--chyrp-border-blue); border-radius: 0.25em; cursor: pointer; } @@ -399,25 +479,25 @@ button:focus, a.big:active, button:active { - border-color: #1e57ba; + border-color: var(--chyrp-strong-blue); outline: none; } hr { border: none; clear: both; - border-top: 1px solid #cfcfcf; + border-top: 1px solid var(--chyrp-irish-grey); margin: 2rem 0rem; } aside { margin-bottom: 1rem; - padding: 0.5rem 1rem; - border: 1px solid #e5d7a1; + padding: 0.5rem; + border: 1px solid var(--chyrp-border-yellow); border-radius: 0.25em; - background-color: #fffecd; + background-color: var(--chyrp-light-yellow); } .window { width: 30rem; - background: #ffffff; + background: var(--chyrp-pure-white); padding: 2rem; margin: 0rem auto 0rem auto; border-radius: 2rem; @@ -430,25 +510,28 @@ } @media (prefers-color-scheme: dark) { body { - color: #ffffff; - background-color: #1f1f23; + color: var(--chyrp-pure-white); + background-color: var(--chyrp-inky-black); } .window { - color: #1f1f23; - background-color: #efefef; + color: var(--chyrp-inky-black); + background-color: var(--chyrp-english-grey); + } + h3 { + border-color: var(--chyrp-scottish-grey); } hr { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } aside { - border-color: #afafaf; + border-color: var(--chyrp-scottish-grey); } pre { - background-color: #dfdfdf; + background-color: var(--chyrp-welsh-grey); } code { - background-color: #dfdfdf; - border-color: #afafaf; + background-color: var(--chyrp-welsh-grey); + border-color: var(--chyrp-scottish-grey); } } diff --git a/includes/helpers.php b/includes/helpers.php index a9ef33c..02f3ea3 100644 --- a/includes/helpers.php +++ b/includes/helpers.php @@ -15,7 +15,9 @@ * Parameters: * $secure - Send the cookie only over HTTPS? */ - function session($secure = null): void { + function session( + $secure = null + ): void { if (session_status() == PHP_SESSION_ACTIVE) { trigger_error( __("Session cannot be started more than once."), @@ -98,7 +100,10 @@ * $url - The absolute or relative URL to redirect to. * $code - Numeric HTTP status code to set (optional). */ - function redirect($url, $code = null)/*: never*/{ + function redirect( + $url, + $code = null + ): never { if (!substr_count($url, "://")) $url = url($url); @@ -131,7 +136,10 @@ * $title - The title for the error dialog (optional). * $body - The message for the error dialog (optional). */ - function show_403($title = "", $body = "")/*: never*/{ + function show_403( + $title = "", + $body = "" + ): never { $title = oneof($title, __("Forbidden")); $body = oneof($body, __("You do not have permission to access this resource.")); @@ -155,7 +163,10 @@ * $title - The title for the error dialog (optional). * $body - The message for the error dialog (optional). */ - function show_404($title = "", $body = "")/*: never*/{ + function show_404( + $title = "", + $body = "" + ): never { $title = oneof($title, __("Not Found")); $body = oneof($body, __("The requested resource was not found.")); @@ -175,7 +186,10 @@ * Function: url * Mask for Route::url(). */ - function url($url, $controller = null): string { + function url( + $url, + $controller = null + ): string { if (!class_exists("Route")) return $url; @@ -199,140 +213,122 @@ /** * Function: htaccess_conf - * Creates the .htaccess file for Chyrp Lite or overwrites an existing file. + * Creates the Apache rewrites for Chyrp Lite. * * Parameters: - * $url_path - The URL path to MAIN_DIR for the RewriteBase directive. + * $url_path - The URL path to MAIN_DIR. * * Returns: - * True if no action was needed, bytes written on success, false on failure. + * The rewrite rules, or false on failure. */ - function htaccess_conf($url_path = null): int|bool { + function htaccess_conf( + $url_path = null + ): string|false { $url_path = oneof( $url_path, parse_url(Config::current()->chyrp_url, PHP_URL_PATH), "/" ); - $filepath = MAIN_DIR.DIR.".htaccess"; - $template = INCLUDES_DIR.DIR."htaccess.conf"; + $security = "\n"; + $template = INCLUDES_DIR.DIR."htaccess.conf.php"; if (!is_file($template) or !is_readable($template)) return false; + $contents = str_replace( + $security, + "", + file_get_contents($template) + ); + $htaccess = preg_replace( '~%\\{CHYRP_PATH\\}/?~', ltrim($url_path."/", "/"), - file_get_contents($template) + $contents ); - if (!file_exists($filepath)) - return @file_put_contents($filepath, $htaccess); - - if (!is_file($filepath) or !is_readable($filepath)) - return false; - - if ( - !preg_match( - "~".preg_quote($htaccess, "~")."~", - file_get_contents($filepath) - ) - ) - return @file_put_contents($filepath, $htaccess); - - return true; + return $htaccess; } /** * Function: caddyfile_conf - * Creates the caddyfile for Chyrp Lite or overwrites an existing file. + * Creates the Caddy rewrites for Chyrp Lite. * * Parameters: - * $url_path - The URL path to MAIN_DIR for the rewrite directive. + * $url_path - The URL path to MAIN_DIR. * * Returns: - * True if no action was needed, bytes written on success, false on failure. + * The rewrite rules, or false on failure. */ - function caddyfile_conf($url_path = null): int|bool { + function caddyfile_conf( + $url_path = null + ): string|false { $url_path = oneof( $url_path, parse_url(Config::current()->chyrp_url, PHP_URL_PATH), "/" ); - $filepath = MAIN_DIR.DIR."caddyfile"; - $template = INCLUDES_DIR.DIR."caddyfile.conf"; + $security = "\n"; + $template = INCLUDES_DIR.DIR."caddyfile.conf.php"; if (!is_file($template) or !is_readable($template)) return false; + $contents = str_replace( + $security, + "", + file_get_contents($template) + ); + $caddyfile = preg_replace( '~\\{chyrp_path\\}/?~', ltrim($url_path."/", "/"), - file_get_contents($template) + $contents ); - if (!file_exists($filepath)) - return @file_put_contents($filepath, $caddyfile); - - if (!is_file($filepath) or !is_readable($filepath)) - return false; - - if ( - !preg_match( - "~".preg_quote($caddyfile, "~")."~", - file_get_contents($filepath) - ) - ) - return @file_put_contents($filepath, $caddyfile); - - return true; + return $caddyfile; } /** * Function: nginx_conf - * Creates the nginx configuration for Chyrp Lite or overwrites an existing file. + * Creates the nginx rewrites for Chyrp Lite. * * Parameters: - * $url_path - The URL path to MAIN_DIR for the location directive. + * $url_path - The URL path to MAIN_DIR. * * Returns: - * True if no action was needed, bytes written on success, false on failure. + * The rewrite rules, or false on failure. */ - function nginx_conf($url_path = null): int|bool { + function nginx_conf( + $url_path = null + ): string|false { $url_path = oneof( $url_path, parse_url(Config::current()->chyrp_url, PHP_URL_PATH), "/" ); - $filepath = MAIN_DIR.DIR."include.conf"; - $template = INCLUDES_DIR.DIR."nginx.conf"; + $security = "\n"; + $template = INCLUDES_DIR.DIR."nginx.conf.php"; if (!is_file($template) or !is_readable($template)) return false; - $caddyfile = preg_replace( - '~\\$chyrp_path/?~', - ltrim($url_path."/", "/"), + $contents = str_replace( + $security, + "", file_get_contents($template) ); - if (!file_exists($filepath)) - return @file_put_contents($filepath, $caddyfile); + $include = preg_replace( + '~\\$chyrp_path/?~', + ltrim($url_path."/", "/"), + $contents + ); - if (!is_file($filepath) or !is_readable($filepath)) - return false; - - if ( - !preg_match( - "~".preg_quote($caddyfile, "~")."~", - file_get_contents($filepath) - ) - ) - return @file_put_contents($filepath, $caddyfile); - - return true; + return $include; } #--------------------------------------------- @@ -361,7 +357,7 @@ if ($dirname == "en_US") continue; - if (preg_match("/^[a-z]{2}(_|-)[a-z]{2}$/i", $dirname)) + if (preg_match("/^[a-z]{2,3}(_|-|$)/i", $dirname)) $locales[] = array( "code" => $dirname, "name" => lang_code($dirname) @@ -379,7 +375,9 @@ * Parameters: * $locale - The locale name, e.g. @en_US@, @uk_UA@, @fr_FR@ */ - function set_locale($locale = "en_US"): void { + function set_locale( + $locale = "en_US" + ): void { $list = array( $locale.".UTF-8", $locale.".utf-8", @@ -434,7 +432,10 @@ * $domain - The name of this translation domain. * $locale - The path to the locale directory. */ - function load_translator($domain, $locale): void { + function load_translator( + $domain, + $locale + ): void { if (USE_GETTEXT_SHIM and class_exists("Translation")) { Translation::current()->load($domain, $locale); return; @@ -457,7 +458,9 @@ * Returns: * A localised display name, e.g. "English (United States)". */ - function lang_code($code): string { + function lang_code( + $code + ): string { return class_exists("Locale") ? Locale::getDisplayName($code, $code) : $code ; @@ -473,10 +476,12 @@ * Returns: * The primary subtag for this code, e.g. "en" from "en_US". */ - function lang_base($code): string { + function lang_base( + $code + ): string { $code = str_replace("_", "-", $code); $tags = explode("-", $code); - return ($tags === false) ? "en" : $tags[0] ; + return $tags[0]; } /** @@ -489,7 +494,9 @@ * Returns: * Either the string "ltr" or "rtl". */ - function text_direction($code): string { + function text_direction( + $code + ): string { $base = lang_base($code); switch ($base) { @@ -515,7 +522,10 @@ * Returns: * The translated string or the original. */ - function __($text, $domain = "chyrp"): string { + function __( + $text, + $domain = "chyrp" + ): string { if (USE_GETTEXT_SHIM) return Translation::current()->text( $domain, @@ -544,7 +554,12 @@ * Returns: * The translated string or the original. */ - function _p($single, $plural, $number, $domain = "chyrp"): string { + function _p( + $single, + $plural, + $number, + $domain = "chyrp" + ): string { $int = (int) $number; if (USE_GETTEXT_SHIM) @@ -580,7 +595,11 @@ * Returns: * The translated string or the original. */ - function _f($string, $args = array(), $domain = "chyrp"): string { + function _f( + $string, + $args = array(), + $domain = "chyrp" + ): string { $args = (array) $args; array_unshift($args, __($string, $domain)); return call_user_func_array("sprintf", $args); @@ -597,7 +616,10 @@ * Returns: * An internationalized time/date string with the supplied formatting. */ - function _w($formatting, $when): string|false { + function _w( + $formatting, + $when + ): string|false { static $locale; $time = is_numeric($when) ? @@ -637,7 +659,10 @@ * Returns: * A time/date string with the supplied formatting. */ - function when($formatting, $when): string|false { + function when( + $formatting, + $when + ): string|false { $time = is_numeric($when) ? $when : strtotime($when) ; @@ -655,7 +680,9 @@ * Returns: * A standard datetime string. */ - function datetime($when = null): string|false { + function datetime( + $when = null + ): string|false { fallback($when, time()); $time = is_numeric($when) ? @@ -669,7 +696,9 @@ * Function: now * Alias to strtotime, for prettiness like now("+1 day"). */ - function now($when): string|false { + function now( + $when + ): string|false { return strtotime($when); } @@ -684,7 +713,9 @@ * https://unicode-org.github.io/icu/userguide/format_parse/datetime/ * https://www.php.net/manual/en/datetime.format.php */ - function convert_datetime($formatting): string { + function convert_datetime( + $formatting + ): string { return strtr($formatting, array( "A" => "'A'", "a" => "a", "B" => "'B'", "b" => "'b'", @@ -746,7 +777,9 @@ * Parameters: * $timezone - The timezone to set. */ - function set_timezone($timezone = "Atlantic/Reykjavik"): bool { + function set_timezone( + $timezone = "Atlantic/Reykjavik" + ): bool { $result = date_default_timezone_set($timezone); if (DEBUG) @@ -782,7 +815,9 @@ * candidate values. The variable will be set to the value of the first * non-empty argument, or the last, or null if no arguments are supplied. */ - function fallback(&$variable): mixed { + function fallback( + &$variable + ): mixed { if (is_bool($variable)) return $variable; @@ -872,28 +907,6 @@ return $last; } - /** - * Function: derezz - * Strips tags and junk from the supplied string and tests it for emptiness. - * - * Parameters: - * &$string - The string, supplied by reference. - * - * Returns: - * Whether or not the stripped string is empty. - * - * Notes: - * Useful for data that will be stripped later on by its model - * but which needs to be tested for uniqueness/emptiness first. - * - * See Also: - * - */ - function derezz(&$string): bool { - $string = str_replace("\x00..\x1f", "", strip_tags($string)); - return ($string == ""); - } - /** * Function: token * Salt and hash a unique token using the supplied data. @@ -904,7 +917,9 @@ * Returns: * A unique token salted with the site's secure hashkey. */ - function token($items): string { + function token( + $items + ): string { return sha1( implode((array) $items). Config::current()->secure_hashkey @@ -924,7 +939,12 @@ * Returns: * The integer value of the check result. */ - function crc24($str, $polynomial = 0x864cfb, $ini = 0xb704ce, $xor = 0): int { + function crc24( + $str, + $polynomial = 0x864cfb, + $ini = 0xb704ce, + $xor = 0 + ): int { $crc = $ini; for ($i = 0; $i < strlen($str); $i++) { @@ -952,7 +972,9 @@ * Returns: * A string of the requested length. */ - function slug($length): string { + function slug( + $length + ): string { return strtolower(random($length)); } @@ -969,7 +991,9 @@ * Notes: * Uses a cryptographically secure pseudo-random method. */ - function random($length): string { + function random( + $length + ): string { $input = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $range = strlen($input) - 1; $chars = ""; @@ -990,7 +1014,9 @@ * Returns: * A byte value or the input if decoding failed. */ - function shorthand_bytes($value): mixed { + function shorthand_bytes( + $value + ): mixed { switch (substr($value, -1)) { case "K": case "k": return (int) $value * 1024; @@ -1053,7 +1079,9 @@ * Returns: * A formatted number with the requested $precision. */ - function timer_stop($precision = 3): string { + function timer_stop( + $precision = 3 + ): string { $elapsed = microtime(true) - timer_start(); return number_format($elapsed, $precision, ".", ""); } @@ -1069,7 +1097,10 @@ * Returns: * Whether or not the match succeeded. */ - function match_any($try, $haystack): bool { + function match_any( + $try, + $haystack + ): bool { foreach ((array) $try as $needle) { if (preg_match($needle, $haystack)) return true; @@ -1085,7 +1116,9 @@ * Parameters: * $class - The name of the class to load. */ - function autoload($class): void { + function autoload( + $class + ): void { $filepath = str_replace( array("_", "\\", "\0"), array(DIR, DIR, ""), @@ -1133,7 +1166,11 @@ * of "WHERE" parameters, and "ORDER BY" clause for the results. * Non-keyword text will be parameterized as array[1][":query"]. */ - function keywords($query, $plain, $table = null): array { + function keywords( + $query, + $plain, + $table = null + ): array { $trimmed = trim($query); if (empty($trimmed)) @@ -1320,7 +1357,10 @@ * The supplied word with a trailing "s" added, * or the correct non-normative pluralization. */ - function pluralize($string, $number = null): string { + function pluralize( + $string, + $number = null + ): string { $uncountable = array( "audio", "equipment", "fish", "information", "money", "moose", "news", "rice", "series", "sheep", "species" @@ -1382,7 +1422,10 @@ * The supplied word with trailing "s" removed, * or the correct non-normative singularization. */ - function depluralize($string, $number = null): string { + function depluralize( + $string, + $number = null + ): string { $uncountable = array("news", "series", "species"); if (isset($number) and $number != 1) @@ -1436,7 +1479,9 @@ * Returns: * The normalized string. */ - function normalize($string): string { + function normalize( + $string + ): string { return trim(preg_replace("/[\s\n\r\t]+/", " ", $string)); } @@ -1454,7 +1499,10 @@ * See Also: * */ - function camelize($string, $keep_spaces = false): string { + function camelize( + $string, + $keep_spaces = false + ): string { $lowercase = strtolower($string); $deunderscore = str_replace("_", " ", $lowercase); $dehyphen = str_replace("-", " ", $deunderscore); @@ -1479,7 +1527,9 @@ * See Also: * */ - function decamelize($string): string { + function decamelize( + $string + ): string { return strtolower( preg_replace("/([a-z])([A-Z])/", "\\1_\\2", $string) ); @@ -1494,36 +1544,42 @@ * $length - Truncate the string to this number of characters. * $ellipsis - A string to place at the truncation point. * $exact - Split words to return the exact length requested? - * $encoding - The character encoding of the string and ellipsis. * * Returns: - * A truncated string with ellipsis appended. + * A truncated string, with ellipsis appended, of or less. */ function truncate( $text, $length = 100, $ellipsis = null, - $exact = false, - $encoding = "UTF-8" + $exact = false ): string { - if (mb_strlen($text, $encoding) <= $length) + if ($length < 1) + return ""; + + if (mb_strlen($text, "UTF-8") <= $length) return $text; if (!isset($ellipsis)) - $ellipsis = mb_chr(0x2026, $encoding); + $ellipsis = mb_chr(0x2026, "UTF-8"); - $breakpoint = $length - mb_strlen($ellipsis, $encoding); - $truncation = mb_substr($text, 0, $breakpoint, $encoding); - $remainder = mb_substr($text, $breakpoint, null, $encoding); + $end = $length - mb_strlen($ellipsis, "UTF-8"); - if (!$exact and !preg_match("/^\s/", $remainder)) - $truncation = preg_replace( - "/(.+)\s.*/s", + if ($end < 1) + return ""; + + if (!$exact) { + $text = preg_replace( + "/^(.{1,$end})\b(?<=[\p{L}\p{N}]).+$/su", "$1", - $truncation + $text ); + } - return $truncation.$ellipsis; + # Hard trim if exact length was requested + # or the approximate regex couldn't match. + $text = mb_substr($text, 0, $end, "UTF-8"); + return $text.$ellipsis; } /** @@ -1542,7 +1598,10 @@ * https://github.github.com/gfm/ * https://chyrplite.net/wiki/Chyrp-Flavoured-Markdown.html */ - function markdown($text, $context = null): string { + function markdown( + $text, + $context = null + ): string { static $parser; if (!isset($parser)) { @@ -1555,6 +1614,9 @@ $parser->enableNewlines = false; $parser->renderCheckboxInputs = false; $parser->disallowedRawHTML = false; + $parser->renderLazyImages = true; + $parser->renderLazyMedia = false; + $parser->enableImageDimensions = true; } if ($context instanceof Model) { @@ -1580,7 +1642,9 @@ * See Also: * http://www.unicode.org/charts/PDF/U1F600.pdf */ - function emote($text): string { + function emote( + $text + ): string { $emoji = array( "o:-)" => "😇", ">:-)" => "😈", @@ -1633,7 +1697,11 @@ * Returns: * A sanitized version of the string. */ - function fix($string, $quotes = false, $double = false): string { + function fix( + $string, + $quotes = false, + $double = false + ): string { $quotes = ($quotes) ? ENT_QUOTES : ENT_NOQUOTES ; @@ -1657,7 +1725,10 @@ * Returns: * An unsanitary version of the string. */ - function unfix($string, $all = false): string { + function unfix( + $string, + $all = false + ): string { return ($all) ? html_entity_decode( (string) $string, @@ -1680,7 +1751,7 @@ * $string - The string to sanitize - must be ASCII or UTF-8! * $lowercase - Force the string to lowercase? * $strict - Remove all characters except "-" and alphanumerics? - * $truncate - Number of characters to truncate to (0 to disable). + * $truncate - Number of bytes to truncate to (0 to disable). * * Returns: * A sanitized version of the string. @@ -1769,12 +1840,14 @@ # E.g. echo implode(",", unpack("C*", "€")); ); - # Strip tags, remove punctuation and HTML entities. - $clean = str_replace( - $strip, - "", - strip_tags($string) - ); + # Strip tags. + $clean = strip_tags($string); + + # Remove punctuation and HTML entities. + $clean = str_replace($strip, "", $clean); + + # Remove unprintable control characters. + $clean = preg_replace("/[\\x00-\\x1f]/u", "", $clean); # Trim. $clean = trim($clean); @@ -1784,8 +1857,7 @@ if ($strict) { # Substitute UTF-8 multi-byte encodings. - if (preg_match("/[\x80-\xff]/", $clean)) - $clean = strtr($clean, $utf8mb); + $clean = strtr($clean, $utf8mb); # Remove non-ASCII characters that remain. $clean = preg_replace("/[^a-zA-Z0-9\\-]/", "", $clean); @@ -1795,47 +1867,66 @@ $clean = mb_strtolower($clean, "UTF-8"); if ($truncate) - $clean = mb_substr($clean, 0, $truncate, "UTF-8"); + $clean = mb_strcut($clean, 0, $truncate, "UTF-8"); return $clean; } + /** + * Function: sanitize_db_string + * Purifies and trims a string for a database column. + * + * Parameters: + * $string - The string. + * $length - The length limit in bytes (optional). + * + * Returns: + * A purified and trimmed version of the string. + * + * See Also: + * + */ + function sanitize_db_string( + $string, + $length = null + ): string { + $string = preg_replace("/[\\x00-\\x1f]/u", "", $string); + $string = strip_tags($string); + $string = mb_strcut($string, 0, $length, "UTF-8"); + return $string; + } + /** * Function: sanitize_html - * Sanitizes HTML to disable scripts and obnoxious attributes. + * Sanitizes HTML to disable styles, scripts, and most attributes. * * Parameters: * $string - String containing HTML to sanitize. * * Returns: - * A version of the string containing only valid tags - * and whitelisted attributes essential to tag function. + * A version of the string containing only valid HTML tags + * and whitelisted attributes essential to tag functionality. */ - function sanitize_html($text): string { + function sanitize_html( + $text + ): string { # Strip invalid tags. $text = preg_replace( - "/<([^a-z\/!]|\/(?![a-z])|!(?!--))[^>]*>/i", - " ", + "/<([^a-z\/!]|\/(?![a-z])|!(?!--))/i", + "<$1", $text ); - # Strip style tags. + # Strip script and style tags. $text = preg_replace( - "/<\/?style[^>]*>/i", - " ", - $text - ); - - # Strip script tags. - $text = preg_replace( - "/<\/?script[^>]*>/i", - " ", + "/<(script|style)(\s|>|\/>)/i", + "<$1$2", $text ); # Strip attributes from each tag, unless essential to its function. return preg_replace_callback( - "/<([a-z][a-z0-9]*)[^>]*?( ?\/)?>/i", + "/<([a-z][^\s>]*)[^>]*?(\s?\/)?>/i", function ($element) { fallback($element[2], ""); @@ -1843,7 +1934,7 @@ $whitelist = ""; preg_match_all( - "/ ([a-z]+)=(\"[^\"]+\"|\'[^\']+\')/i", + "/\s([^\s=\/\"']+)\s*=\s*(\"[^\"]*\"|\'[^\']*\')/i", $element[0], $attributes, PREG_SET_ORDER @@ -1851,50 +1942,136 @@ foreach ($attributes as $attribute) { $label = strtolower($attribute[1]); - $content = trim($attribute[2], "\"'"); + $content = substr($attribute[2], 1, -1); - switch ($label) { - case "src": - $array = array( - "audio", - "iframe", - "img", - "source", - "track", - "video" - ); + switch ($name) { + case "a": + switch ($label) { + case "href": + if (is_url($content)) + $whitelist.= $attribute[0]; - if (in_array($name, $array) and is_url($content)) - $whitelist.= $attribute[0]; + break; + } break; - case "href": - $array = array( - "a", - "area" - ); + case "audio": + case "video": + switch ($label) { + case "controls": + $whitelist.= $attribute[0]; - if (in_array($name, $array) and is_url($content)) - $whitelist.= $attribute[0]; + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } break; - case "alt": - $array = array( - "area", - "img" - ); + case "iframe": + switch ($label) { + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; - if (in_array($name, $array)) - $whitelist.= $attribute[0]; + break; + } break; - case "dir": - case "lang": - $whitelist.= $attribute[0]; + case "img": + switch ($label) { + case "alt": + $whitelist.= $attribute[0]; + + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } + break; + + case "ol": + switch ($label) { + case "reversed": + case "type": + $whitelist.= $attribute[0]; + + break; + + case "start": + if (is_numeric($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + case "source": + switch ($label) { + case "type": + $whitelist.= $attribute[0]; + + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + case "track": + switch ($label) { + case "kind": + case "label": + case "srclang": + $whitelist.= $attribute[0]; + + break; + + case "src": + if (is_url($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + case "td": + case "th": + switch ($label) { + case "colspan": + case "rowspan": + if (is_numeric($content)) + $whitelist.= $attribute[0]; + + break; + } + + break; + + default: + switch ($label) { + case "dir": + case "lang": + $whitelist.= $attribute[0]; + + break; + } } } @@ -1910,7 +2087,7 @@ /** * Function: get_remote - * Retrieve the contents of a URL. + * Retrieves the contents of a URL. * * Parameters: * $url - The URL of the resource to be retrieved. @@ -1951,10 +2128,10 @@ return false; $opts = array( - CURLOPT_CAINFO => INCLUDES_DIR.DIR."cacert.pem", + CURLOPT_CAINFO => INCLUDES_DIR.DIR.$config->cacert_pem, CURLOPT_RETURNTRANSFER => true, CURLOPT_VERBOSE => false, - CURLOPT_FAILONERROR => false, + CURLOPT_FAILONERROR => true, CURLOPT_HEADER => (bool) $headers, CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => (int) $redirects, @@ -2003,7 +2180,11 @@ * $post - The post this string belongs to. * $limit - Execution time limit in seconds (optional). */ - function webmention_send($string, $post, $limit = 30): void { + function webmention_send( + $string, + $post, + $limit = 30 + ): void { foreach (grab_urls($string) as $url) { # Have we exceeded the time limit? if (timer_stop() > $limit) @@ -2041,7 +2222,10 @@ * $source - The sender's URL. * $target - The URL of our post. */ - function webmention_receive($source, $target): void { + function webmention_receive( + $source, + $target + ): void { $trigger = Trigger::current(); # No need to continue without a responder for the Webmention trigger. @@ -2125,7 +2309,10 @@ * Returns: * The Webmention endpoint URL, or false on failure. */ - function webmention_discover($url, $redirects = 3): string|false { + function webmention_discover( + $url, + $redirects = 3 + ): string|false { $response = get_remote( url:$url, redirects:$redirects, @@ -2210,7 +2397,9 @@ * Returns: * An array of all URLs found in the string. */ - function grab_urls($string): array { + function grab_urls( + $string + ): array { $urls = array(); $regx = "/]* href=(\"[^\"]+\"|\'[^\']+\')[^>]*>.+?<\/a>/i"; @@ -2237,7 +2426,10 @@ * Notes: * Does not attempt to resolve dot segments in the path. */ - function merge_urls($base, $rel) { + function merge_urls( + $base, + $rel + ) { extract(parse_url(add_scheme($base)), EXTR_SKIP); fallback($path, "/"); fallback($scheme, "http"); @@ -2274,7 +2466,9 @@ * Function: load_info * Loads an extension's info.php file and returns an array of attributes. */ - function load_info($filepath): array { + function load_info( + $filepath + ): array { if (is_file($filepath) and is_readable($filepath)) $info = include $filepath; @@ -2400,7 +2594,9 @@ * Returns: * Whether or not the supplied module is enabled. */ - function module_enabled($name): bool { + function module_enabled( + $name + ): bool { return ( !empty(Modules::$instances[$name]) and empty(Modules::$instances[$name]->cancelled) @@ -2417,7 +2613,9 @@ * Returns: * Whether or not the supplied feather is enabled. */ - function feather_enabled($name): bool { + function feather_enabled( + $name + ): bool { return ( !empty(Feathers::$instances[$name]) and empty(Feathers::$instances[$name]->cancelled) @@ -2435,7 +2633,10 @@ * Notes: * A module can cancel itself in its __init() method. */ - function cancel_module($target, $reason = ""): void { + function cancel_module( + $target, + $reason = "" + ): void { $message = empty($reason) ? _f("Execution of %s has been cancelled.", camelize($target)) : $reason ; @@ -2458,7 +2659,10 @@ * Notes: * A feather can cancel itself in its __init() method. */ - function cancel_feather($target, $reason = ""): void { + function cancel_feather( + $target, + $reason = "" + ): void { $message = empty($reason) ? _f("Execution of %s has been cancelled.", camelize($target)) : $reason ; @@ -2485,7 +2689,10 @@ * Returns: * The filename of the upload relative to the uploads directory. */ - function upload($file, $filter = null): string { + function upload( + $file, + $filter = null + ): string { $uploads_path = MAIN_DIR.Config::current()->uploads_path; $filename = upload_filename($file['name'], $filter); @@ -2535,7 +2742,11 @@ * Returns: * The filename of the copied file, or false on failure. */ - function upload_from_url($url, $redirects = 3, $timeout = 10): string|false { + function upload_from_url( + $url, + $redirects = 3, + $timeout = 10 + ): string|false { if (!preg_match("~[^ /\?]+(?=($|\?))~", $url, $match)) return false; @@ -2583,7 +2794,10 @@ * Returns: * The supplied filename prepended with URL or filesystem path. */ - function uploaded($filename, $url = true): string { + function uploaded( + $filename, + $url = true + ): string { $config = Config::current(); return ($url) ? @@ -2683,7 +2897,9 @@ * Notes: * $_POST and $_FILES are empty if post_max_size directive is exceeded. */ - function upload_tester($file): bool { + function upload_tester( + $file + ): bool { $success = false; $results = array(); $maximum = Config::current()->uploads_limit; @@ -2772,7 +2988,10 @@ * Returns: * A sanitized unique filename, or false on failure. */ - function upload_filename($filename, $filter = array()): string|false { + function upload_filename( + $filename, + $filter = array() + ): string|false { if (empty($filter)) $filter = upload_filter_whitelist(); @@ -2839,7 +3058,9 @@ * Returns: * Whether or not the file was deleted successfully. */ - function delete_upload($filename): bool { + function delete_upload( + $filename + ): bool { $filename = str_replace(array(DIR, "/"), "", $filename); if ($filename == "") @@ -2869,7 +3090,9 @@ * Returns: * A numeric score for the strength of the password. */ - function password_strength($password = ""): int { + function password_strength( + $password = "" + ): int { $score = 0; if (empty($password)) @@ -2911,7 +3134,9 @@ * See Also: * */ - function is_url($string): bool { + function is_url( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -2948,7 +3173,10 @@ * See Also: * */ - function add_scheme($url, $scheme = null): string { + function add_scheme( + $url, + $scheme = null + ): string { preg_match('~^([a-z]+://)?(.+)~i', $url, $match); $match[1] = isset($scheme) ? @@ -2971,7 +3199,9 @@ * Returns: * Whether or not the string matches the criteria. */ - function is_email($string): bool { + function is_email( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -3004,7 +3234,9 @@ * Returns: * Whether or not the string matches the criteria. */ - function is_unsafe_ip($string): bool { + function is_unsafe_ip( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -3036,7 +3268,9 @@ * Returns: * Whether or not the string matches the criteria. */ - function is_datetime_zero($string): bool { + function is_datetime_zero( + $string + ): bool { if ( !is_string($string) and !$string instanceof Stringable @@ -3102,7 +3336,9 @@ * Strings are escaped with backslashes, * booleans expanded to "true" or "false". */ - function esce($variable): void { + function esce( + $variable + ): void { if ( !is_scalar($variable) and !$variable instanceof Stringable @@ -3112,10 +3348,91 @@ if (is_bool($variable)) { echo ($variable) ? "true" : "false" ; } else { - echo addslashes((string) $variable); + echo addslashes( + str_replace( + array("\n", "\r"), + "", + (string) $variable + ) + ); } } + /** + * Function: icon_img + * Returns an img tag for the requested icon resource. + * + * Parameters: + * $filename - The icon filename. + * $alt_text - The alternative text for the image. + * $class - The CSS class for the image. + */ + function icon_img( + $filename, + $alt_text = "", + $class = null + ): string { + $url = Config::current()->chyrp_url. + "/admin/images/icons/".$filename; + + $img = ''.fix($alt_text, true);
+
+        if (isset($class) and $class !== false)
+            $img.= ''; + + return $img; + } + + /** + * Function: icon_svg + * Returns an SVG tag for the requested icon resource. + * + * Parameters: + * $filename - The icon filename. + * $label - The ARIA label for the SVG. + * $class - The CSS class for the SVG. + */ + function icon_svg( + $filename, + $label = null, + $class = null + ): string { + $filename = str_replace(array(DIR, "/"), "", $filename); + $id = serialize(array($filename, $label, $class)); + $path = MAIN_DIR.DIR."admin".DIR."images".DIR."icons"; + $attrs = ""; + + static $cache = array(); + + if (isset($cache[$id])) + return $cache[$id]; + + $svg = @file_get_contents($path.DIR.$filename); + + if ($svg === false) + return ""; + + if (isset($label) and $label !== false) { + $attrs.= 'aria-label="'.fix($label, true).'" '; + } else { + $attrs.= 'aria-hidden="true" '; + } + + if (isset($class) and $class !== false) + $attrs.= 'class="'.fix($class, true).'" '; + + $svg = str_replace( + ' $text, "data" => $data)); } @@ -3186,7 +3515,10 @@ * $contents - The bitstream to be delivered to the visitor. * $filename - The name to be applied to the content upon download. */ - function file_attachment($contents = "", $filename = "caconym"): void { + function file_attachment( + $contents = "", + $filename = "caconym" + ): void { $safename = addslashes($filename); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"".$safename."\""); @@ -3210,7 +3542,9 @@ * See Also: * https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT */ - function zip_archive($array): string { + function zip_archive( + $array + ): string { $file = ""; $cdir = ""; $eocd = ""; @@ -3328,7 +3662,9 @@ * Parameters: * $user - The user to receive the email. */ - function email_activate_account($user): bool { + function email_activate_account( + $user + ): bool { $config = Config::current(); $trigger = Trigger::current(); @@ -3366,7 +3702,9 @@ * Parameters: * $user - The user to receive the email. */ - function email_reset_password($user): bool { + function email_reset_password( + $user + ): bool { $config = Config::current(); $trigger = Trigger::current(); $issue = strval(time()); diff --git a/includes/htaccess.conf.php b/includes/htaccess.conf.php new file mode 100644 index 0000000..f5c3d65 --- /dev/null +++ b/includes/htaccess.conf.php @@ -0,0 +1,15 @@ + +# Template to enable clean URLs for the Apache web server. + + +RewriteEngine On +RewriteBase /%{CHYRP_PATH}/ +RewriteRule ^.+\.twig$ index.php [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_URI} ^/%{CHYRP_PATH}/admin/.+ +ReWriteRule ^.+$ /%{CHYRP_PATH}/admin/index.php [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^.+$ index.php [L] + diff --git a/includes/interface/CaptchaProvider.php b/includes/interface/CaptchaProvider.php index fa9107f..bd052f4 100644 --- a/includes/interface/CaptchaProvider.php +++ b/includes/interface/CaptchaProvider.php @@ -8,11 +8,13 @@ * Function: generateCaptcha * Returns the HTML form elements for the captcha challenge. */ - public static function generateCaptcha(): string; + public static function generateCaptcha( + ): string; /** * Function: checkCaptcha * Checks the response and returns true (success) or false (failure). */ - public static function checkCaptcha(): bool; + public static function checkCaptcha( + ): bool; } diff --git a/includes/interface/Controller.php b/includes/interface/Controller.php index 87a7568..ee70841 100644 --- a/includes/interface/Controller.php +++ b/includes/interface/Controller.php @@ -8,11 +8,15 @@ * Function: parse * Route constructor calls this to determine the action. */ - public function parse($route): ?string; + public function parse( + $route + ): ?string; /** * Function: exempt * Route constructor calls this to determine "view_site" exemptions. */ - public function exempt($action): bool; + public function exempt( + $action + ): bool; } diff --git a/includes/interface/Feather.php b/includes/interface/Feather.php index 6dc7128..7f50293 100644 --- a/includes/interface/Feather.php +++ b/includes/interface/Feather.php @@ -11,30 +11,39 @@ * Returns: * The object created. */ - public function submit(): Post; + public function submit( + ): Post; /** * Function: update * Handles updating a post. */ - public function update($post): Post|false; + public function update( + $post + ): Post|false; /** * Function: title * Returns the appropriate source to be treated as a "title" of a post. - * If there is no immediate solution, you may use . + * If there is no immediate solution, you may use . */ - public function title($post): string; + public function title( + $post + ): string; /** * Function: excerpt * Returns the appropriate source, unmodified, to be used as an excerpt of a post. */ - public function excerpt($post): string; + public function excerpt( + $post + ): string; /** * Function: feed_content * Returns the appropriate content for a feed. */ - public function feed_content($post): string; + public function feed_content( + $post + ): string; } diff --git a/includes/interface/FeedGenerator.php b/includes/interface/FeedGenerator.php index d29c07d..3acc39f 100644 --- a/includes/interface/FeedGenerator.php +++ b/includes/interface/FeedGenerator.php @@ -14,7 +14,12 @@ * Function: open * Opens the feed. */ - public function open($title, $subtitle, $id, $updated): bool; + public function open( + $title, + $subtitle, + $id, + $updated + ): bool; /** * Function: entry @@ -36,35 +41,50 @@ * Function: category * Adds a category to an entry or feed. */ - public function category($term, $scheme, $label): bool; + public function category( + $term, + $scheme, + $label + ): bool; /** * Function: rights * Adds human-readable licensing information to an entry or feed. */ - public function rights($text): bool; + public function rights( + $text + ): bool; /** * Function: enclosure * Adds a link for a resource that is potentially large in size. */ - public function enclosure($link, $length, $type, $title): bool; + public function enclosure( + $link, + $length, + $type, + $title + ): bool; /** * Function: related * Adds a link for a resource related to an entry or feed. */ - public function related($link): bool; + public function related( + $link + ): bool; /** * Function: feed * Returns the generated feed. */ - public function feed(): string; + public function feed( + ): string; /** * Function: display * Displays the generated feed. */ - public function display(): bool; + public function display( + ): bool; } diff --git a/includes/lib/AtomFeed.php b/includes/lib/AtomFeed.php index f3b2b2a..cf20f6e 100644 --- a/includes/lib/AtomFeed.php +++ b/includes/lib/AtomFeed.php @@ -23,7 +23,8 @@ * Function: type * Returns the content type of the feed. */ - public static function type(): string { + public static function type( + ): string { return "application/atom+xml"; } @@ -315,7 +316,8 @@ * Function: feed * Returns the generated feed. */ - public function feed(): string { + public function feed( + ): string { $feed = $this->xml["feed"]; $items = $this->xml["items"]; @@ -330,10 +332,11 @@ } /** - * Function: output + * Function: display * Displays the generated feed. */ - public function display(): bool { + public function display( + ): bool { if (headers_sent()) return false; diff --git a/includes/lib/JSONFeed.php b/includes/lib/JSONFeed.php index 93dae59..e0b0579 100644 --- a/includes/lib/JSONFeed.php +++ b/includes/lib/JSONFeed.php @@ -23,7 +23,8 @@ * Function: type * Returns the content type of the feed. */ - public static function type(): string { + public static function type( + ): string { return "application/feed+json"; } @@ -147,7 +148,9 @@ * Function: rights * Not implemented in JSON Feed version 1. */ - public function rights($text): bool { + public function rights( + $text + ): bool { return false; } @@ -202,7 +205,9 @@ * Parameters: * $link - The external URL. */ - public function related($link): bool { + public function related( + $link + ): bool { if (!$this->open) return false; @@ -221,7 +226,8 @@ * Function: feed * Returns the generated feed. */ - public function feed(): string { + public function feed( + ): string { $encoded = json_set( $this->json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES @@ -231,10 +237,11 @@ } /** - * Function: output + * Function: display * Displays the generated feed. */ - public function display(): bool { + public function display( + ): bool { if (headers_sent()) return false; diff --git a/includes/lib/Leaf.php b/includes/lib/Leaf.php index f1ab722..476a012 100644 --- a/includes/lib/Leaf.php +++ b/includes/lib/Leaf.php @@ -20,13 +20,14 @@ new \Twig\TwigFunction("is_url", "is_url"), new \Twig\TwigFunction("is_email", "is_email"), new \Twig\TwigFunction("generate_captcha", "generate_captcha"), + new \Twig\TwigFunction("icon_img", "icon_img"), + new \Twig\TwigFunction("icon_svg", "icon_svg"), new \Twig\TwigFunction("javascripts", "javascripts"), # Custom functions: new \Twig\TwigFunction("paginate", "twig_function_paginate"), new \Twig\TwigFunction("posted", "twig_function_posted"), new \Twig\TwigFunction("mailto", "twig_function_mailto"), - new \Twig\TwigFunction("icon_img", "twig_function_icon_img"), new \Twig\TwigFunction("copyright_notice", "twig_function_copyright_notice"), new \Twig\TwigFunction("uploaded_search", "twig_function_uploaded_search"), new \Twig\TwigFunction("slug_pattern", "twig_function_slug_pattern"), @@ -92,7 +93,9 @@ * Parameters: * $name - The name of the missing Twig function. */ - function twig_callback_missing_function($name): \Twig\TwigFunction|false { + function twig_callback_missing_function( + $name + ): \Twig\TwigFunction|false { foreach (Modules::$instances as $module) { if (is_callable(array($module, "twig_function_".$name))) return new \Twig\TwigFunction( @@ -111,7 +114,9 @@ * Parameters: * $name - The name of the missing Twig filter. */ - function twig_callback_missing_filter($name): \Twig\TwigFilter|false { + function twig_callback_missing_filter( + $name + ): \Twig\TwigFilter|false { foreach (Modules::$instances as $module) { if (is_callable(array($module, "twig_filter_".$name))) return new \Twig\TwigFilter( @@ -175,7 +180,9 @@ * Parameters: * $email - The email address to obfuscate. */ - function twig_function_mailto($email): ?string { + function twig_function_mailto( + $email + ): ?string { if (!is_email($email)) return null; @@ -264,34 +271,6 @@ return $mailto.implode("", $chars); } - /** - * Function: twig_function_icon_img - * Returns a URL to the requested icon resource. - * - * Parameters: - * $filename - The icon filename. - * $alt_text - The alternative text for the image. - * $class - The CSS class for the link. - */ - function twig_function_icon_img( - $filename, - $alt_text = "", - $class = null - ): string { - $url = Config::current()->chyrp_url. - "/admin/images/icons/".$filename; - - $img = ''.fix($alt_text, true);
-
-        if (isset($class) and $class !== false)
-            $img.= ''; - - return $img; - } - /** * Function: twig_function_copyright_notice * Returns a copyright notice. @@ -354,9 +333,10 @@ /** * Function: twig_function_slug_pattern - * Returns a HTML @pattern@ attribute if strict slugs are enabled. + * Returns a HTML @pattern@ attribute according to SLUG_STRICT constant. */ - function twig_function_slug_pattern(): string { + function twig_function_slug_pattern( + ): string { return SLUG_STRICT ? ' pattern="^[a-z0-9\\-]*$"' : ' pattern="^[^\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e]*$"' ; @@ -366,7 +346,8 @@ * Function: twig_function_javascripts_nonce * Returns a nonce value to enable inline JavaScript with a Content Security Policy. */ - function twig_function_javascripts_nonce(): string { + function twig_function_javascripts_nonce( + ): string { $nonce = ""; return Trigger::current()->filter($nonce, "javascripts_nonce"); } @@ -375,7 +356,8 @@ * Function: twig_function_stylesheets_nonce * Returns a nonce value to enable inline stylesheets with a Content Security Policy. */ - function twig_function_stylesheets_nonce(): string { + function twig_function_stylesheets_nonce( + ): string { $nonce = ""; return Trigger::current()->filter($nonce, "stylesheets_nonce"); } @@ -507,7 +489,9 @@ * Parameters: * $bytes - The filesize in bytes. */ - function twig_filter_filesize_format($bytes): string { + function twig_filter_filesize_format( + $bytes + ): string { if (is_array($bytes)) $bytes = max($bytes); @@ -593,7 +577,9 @@ * Parameters: * $variable - The variable to inspect. */ - function twig_filter_inspect($variable): string { + function twig_filter_inspect( + $variable + ): string { return '

      '.
                      fix(var_export($variable, true)).
                      '
      '; @@ -606,7 +592,9 @@ * Parameters: * $test - The variable to test. */ - function twig_filter_checked($test): string { + function twig_filter_checked( + $test + ): string { return ($test) ? " checked" : "" ; } @@ -618,7 +606,9 @@ * Parameters: * $test - The variable to test. */ - function twig_filter_selected($test): string { + function twig_filter_selected( + $test + ): string { $try = func_get_args(); array_shift($try); @@ -641,7 +631,9 @@ * Parameters: * $test - The variable to test. */ - function twig_filter_disabled($test): string { + function twig_filter_disabled( + $test + ): string { $try = func_get_args(); array_shift($try); @@ -663,7 +655,9 @@ * Parameters: * $filename - The uploaded filename. */ - function twig_filter_download($filename): string { + function twig_filter_download( + $filename + ): string { $filepath = Config::current()->chyrp_url. "/includes/download.php?file=". urlencode($filename); diff --git a/includes/lib/RSSFeed.php b/includes/lib/RSSFeed.php index b6cc75c..4addf8f 100644 --- a/includes/lib/RSSFeed.php +++ b/includes/lib/RSSFeed.php @@ -23,7 +23,8 @@ * Function: type * Returns the content type of the feed. */ - public static function type(): string { + public static function type( + ): string { return "application/rss+xml"; } @@ -143,7 +144,11 @@ * $scheme - URI for the categorization scheme (optional). * $label - Human-readable label for the category (optional). */ - public function category($term, $scheme = "", $label = ""): bool { + public function category( + $term, + $scheme = "", + $label = "" + ): bool { if (!$this->open) return false; @@ -166,7 +171,9 @@ * Function: rights * Not implemented in RSS 2.0.11. */ - public function rights($text): bool { + public function rights( + $text + ): bool { return false; } @@ -210,7 +217,9 @@ * Function: related * Not implemented in RSS 2.0.11. */ - public function related($link): bool { + public function related( + $link + ): bool { return false; } @@ -218,7 +227,8 @@ * Function: feed * Returns the generated feed. */ - public function feed(): string { + public function feed( + ): string { $feed = $this->xml["feed"]; $items = $this->xml["items"]; @@ -234,10 +244,11 @@ } /** - * Function: output + * Function: display * Displays the generated feed. */ - public function display(): bool { + public function display( + ): bool { if (headers_sent()) return false; diff --git a/includes/lib/ThumbnailFile.php b/includes/lib/ThumbnailFile.php index 2ed9603..4c01702 100644 --- a/includes/lib/ThumbnailFile.php +++ b/includes/lib/ThumbnailFile.php @@ -32,6 +32,10 @@ # Quality factor for the thumbnail file. private $quality = 80; + # Integer: $orientation + # EXIF orientation tag value. + private $orientation = 1; + # Variable: $type # The original image type detected by GD library. private $type = 0; @@ -67,7 +71,13 @@ * $quality - Quality factor for the thumbnail file. * $square - Create a square crop of the original image? */ - public function __construct($filename, $thumb_w, $thumb_h, $quality, $square) { + public function __construct( + $filename, + $thumb_w, + $thumb_h, + $quality, + $square + ) { $this->thumb_w = (int) $thumb_w; $this->thumb_h = (int) $thumb_h; $this->quality = (int) $quality; @@ -96,6 +106,22 @@ if ($this->quality > 100 or $this->quality < 0) $this->quality = 80; + if (function_exists("exif_read_data")) { + $exif = @exif_read_data($filepath); + + if ($exif !== false) { + if (isset($exif["Orientation"])) + $this->orientation = (int) $exif["Orientation"]; + + if ($this->orientation >= 5) { + $orig_w = $this->orig_w; + $orig_h = $this->orig_h; + $this->orig_w = $orig_h; + $this->orig_h = $orig_w; + } + } + } + $this->resize(); $this->destination = CACHES_DIR.DIR."thumbs".DIR.$this->name(); } @@ -104,7 +130,8 @@ * Function: upscaling * Will the thumbnail be larger than the original? */ - public function upscaling(): bool { + public function upscaling( + ): bool { return ( ($this->thumb_w == 0 or $this->orig_w <= $this->thumb_w) and ($this->thumb_h == 0 or $this->orig_h <= $this->thumb_h) and @@ -116,7 +143,8 @@ * Function: creatable * Can the thumbnail file be created? */ - public function creatable(): bool { + public function creatable( + ): bool { if (isset($this->creatable)) return $this->creatable; @@ -227,7 +255,8 @@ * Function: extension * Returns the correct extension for the image. */ - public function extension(): string|false { + public function extension( + ): string|false { return image_type_to_extension($this->type); } @@ -235,7 +264,8 @@ * Function: mime_type * Returns the correct MIME type for the image. */ - public function mime_type(): string|false { + public function mime_type( + ): string|false { return image_type_to_mime_type($this->type); } @@ -243,7 +273,8 @@ * Function: name * Generates and returns a unique name for the thumbnail file. */ - public function name(): string|false { + public function name( + ): string|false { if (isset($this->name)) return $this->name; @@ -267,7 +298,9 @@ * Parameters: * $overwrite - Overwrite an existing thumbnail file? */ - public function create($overwrite = false): bool { + public function create( + $overwrite = false + ): bool { if (!$this->creatable()) return false; @@ -322,6 +355,61 @@ __("Failed to create image thumbnail.") ); + if ($this->orientation > 1) { + # Transform the original image to correct orientation: + ##################################################### + # 1 # 2 # 3 # 4 # + # # # # # + # XXXXXXX # XXXXXXX # XX # XX # + # XX # XX # XX # XX # + # XXXXX # XXXXX # XXXXX # XXXXX # + # XX # XX # XX # XX # + # XX # XX # XXXXXXX # XXXXXXX # + # # # # # + ##################################################### + # 5 # 6 # 7 # 8 # + # # # # # + # XXXXXXXXXX # # # XXXXXXXXXX # + # XX XX # XX # XX # XX XX # + # XX XX # XX XX # XX XX # XX XX # + # XX # XX XX # XX XX # XX # + # # XXXXXXXXXX # XXXXXXXXXX # # + # # # # # + ##################################################### + + switch ($this->orientation) { + case 2: + imageflip($original, IMG_FLIP_HORIZONTAL); + break; + case 3: + $original = imagerotate($original, 180, 0); + break; + case 4: + imageflip($original, IMG_FLIP_VERTICAL); + break; + case 5: + imageflip($original, IMG_FLIP_VERTICAL); + $original = imagerotate($original, 270, 0); + break; + case 6: + $original = imagerotate($original, 270, 0); + break; + case 7: + imageflip($original, IMG_FLIP_VERTICAL); + $original = imagerotate($original, 90, 0); + break; + case 8: + $original = imagerotate($original, 90, 0); + break; + } + + if ($original === false) + error( + __("Error"), + __("Failed to create image thumbnail.") + ); + } + # Do the crop and resize. imagecopyresampled( $thumb, @@ -392,7 +480,8 @@ * Function: serve * Serves a thumbnail file with correct Content-Type header. */ - public function serve(): bool { + public function serve( + ): bool { if (!file_exists($this->destination)) return false; @@ -409,7 +498,8 @@ * Function: resize * Computes the final dimensions based on supplied parameters. */ - private function resize(): void { + private function resize( + ): void { $scale_x = ($this->thumb_w > 0) ? $this->thumb_w / $this->orig_w : 0 ; diff --git a/includes/lib/Twig/AbstractTwigCallable.php b/includes/lib/Twig/AbstractTwigCallable.php new file mode 100644 index 0000000..d85f0f8 --- /dev/null +++ b/includes/lib/Twig/AbstractTwigCallable.php @@ -0,0 +1,184 @@ + + */ +abstract class AbstractTwigCallable implements TwigCallableInterface +{ + protected $options; + + private $name; + private $dynamicName; + private $callable; + private $arguments; + + public function __construct(string $name, $callable = null, array $options = []) + { + $this->name = $this->dynamicName = $name; + $this->callable = $callable; + $this->arguments = []; + $this->options = array_merge([ + 'needs_environment' => false, + 'needs_context' => false, + 'needs_charset' => false, + 'is_variadic' => false, + 'deprecation_info' => null, + 'deprecated' => false, + 'deprecating_package' => '', + 'alternative' => null, + ], $options); + + if ($this->options['deprecation_info'] && !$this->options['deprecation_info'] instanceof DeprecatedCallableInfo) { + throw new \LogicException(\sprintf('The "deprecation_info" option must be an instance of "%s".', DeprecatedCallableInfo::class)); + } + + if ($this->options['deprecated']) { + if ($this->options['deprecation_info']) { + throw new \LogicException('When setting the "deprecation_info" option, you need to remove the obsolete deprecated options.'); + } + + trigger_deprecation('twig/twig', '3.15', 'Using the "deprecated", "deprecating_package", and "alternative" options is deprecated, pass a "deprecation_info" one instead.'); + + $this->options['deprecation_info'] = new DeprecatedCallableInfo( + $this->options['deprecating_package'], + $this->options['deprecated'], + null, + $this->options['alternative'], + ); + } + + if ($this->options['deprecation_info']) { + $this->options['deprecation_info']->setName($name); + $this->options['deprecation_info']->setType($this->getType()); + } + } + + public function __toString(): string + { + return \sprintf('%s(%s)', static::class, $this->name); + } + + public function getName(): string + { + return $this->name; + } + + public function getDynamicName(): string + { + return $this->dynamicName; + } + + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass(): string + { + return $this->options['node_class']; + } + + public function needsCharset(): bool + { + return $this->options['needs_charset']; + } + + public function needsEnvironment(): bool + { + return $this->options['needs_environment']; + } + + public function needsContext(): bool + { + return $this->options['needs_context']; + } + + /** + * @return static + */ + public function withDynamicArguments(string $name, string $dynamicName, array $arguments): self + { + $new = clone $this; + $new->name = $name; + $new->dynamicName = $dynamicName; + $new->arguments = $arguments; + + return $new; + } + + /** + * @deprecated since Twig 3.12, use withDynamicArguments() instead + */ + public function setArguments(array $arguments): void + { + trigger_deprecation('twig/twig', '3.12', 'The "%s::setArguments()" method is deprecated, use "%s::withDynamicArguments()" instead.', static::class, static::class); + + $this->arguments = $arguments; + } + + public function getArguments(): array + { + return $this->arguments; + } + + public function isVariadic(): bool + { + return $this->options['is_variadic']; + } + + public function isDeprecated(): bool + { + return (bool) $this->options['deprecation_info']; + } + + public function triggerDeprecation(?string $file = null, ?int $line = null): void + { + $this->options['deprecation_info']->triggerDeprecation($file, $line); + } + + /** + * @deprecated since Twig 3.15 + */ + public function getDeprecatingPackage(): string + { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + + return $this->options['deprecating_package']; + } + + /** + * @deprecated since Twig 3.15 + */ + public function getDeprecatedVersion(): string + { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; + } + + /** + * @deprecated since Twig 3.15 + */ + public function getAlternative(): ?string + { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + + return $this->options['alternative']; + } + + public function getMinimalNumberOfRequiredArguments(): int + { + return ($this->options['needs_charset'] ? 1 : 0) + ($this->options['needs_environment'] ? 1 : 0) + ($this->options['needs_context'] ? 1 : 0) + \count($this->arguments); + } +} diff --git a/includes/lib/Twig/Attribute/FirstClassTwigCallableReady.php b/includes/lib/Twig/Attribute/FirstClassTwigCallableReady.php new file mode 100644 index 0000000..ffd8cff --- /dev/null +++ b/includes/lib/Twig/Attribute/FirstClassTwigCallableReady.php @@ -0,0 +1,20 @@ + */ -final class ChainCache implements CacheInterface +final class ChainCache implements CacheInterface, RemovableCacheInterface { - private $caches; - /** * @param iterable $caches The ordered list of caches used to store and fetch cached items */ - public function __construct(iterable $caches) - { - $this->caches = $caches; + public function __construct( + private iterable $caches, + ) { } public function generateKey(string $name, string $className): string @@ -71,6 +69,15 @@ final class ChainCache implements CacheInterface return 0; } + public function remove(string $name, string $cls): void + { + foreach ($this->caches as $cache) { + if ($cache instanceof RemovableCacheInterface) { + $cache->remove($name, $cls); + } + } + } + /** * @return string[] */ diff --git a/includes/lib/Twig/Cache/FilesystemCache.php b/includes/lib/Twig/Cache/FilesystemCache.php index 2e79fac..5840585 100644 --- a/includes/lib/Twig/Cache/FilesystemCache.php +++ b/includes/lib/Twig/Cache/FilesystemCache.php @@ -16,7 +16,7 @@ namespace Twig\Cache; * * @author Andrew Tch */ -class FilesystemCache implements CacheInterface +class FilesystemCache implements CacheInterface, RemovableCacheInterface { public const FORCE_BYTECODE_INVALIDATION = 1; @@ -76,6 +76,14 @@ class FilesystemCache implements CacheInterface throw new \RuntimeException(\sprintf('Failed to write cache file "%s".', $key)); } + public function remove(string $name, string $cls): void + { + $key = $this->generateKey($name, $cls); + if (!@unlink($key) && file_exists($key)) { + throw new \RuntimeException(\sprintf('Failed to delete cache file "%s".', $key)); + } + } + public function getTimestamp(string $key): int { if (!is_file($key)) { diff --git a/includes/lib/Twig/Cache/NullCache.php b/includes/lib/Twig/Cache/NullCache.php index 8d20d59..1ae2169 100644 --- a/includes/lib/Twig/Cache/NullCache.php +++ b/includes/lib/Twig/Cache/NullCache.php @@ -16,7 +16,7 @@ namespace Twig\Cache; * * @author Fabien Potencier */ -final class NullCache implements CacheInterface +final class NullCache implements CacheInterface, RemovableCacheInterface { public function generateKey(string $name, string $className): string { @@ -35,4 +35,8 @@ final class NullCache implements CacheInterface { return 0; } + + public function remove(string $name, string $cls): void + { + } } diff --git a/includes/lib/Twig/Cache/RemovableCacheInterface.php b/includes/lib/Twig/Cache/RemovableCacheInterface.php new file mode 100644 index 0000000..05da569 --- /dev/null +++ b/includes/lib/Twig/Cache/RemovableCacheInterface.php @@ -0,0 +1,20 @@ + + */ +interface RemovableCacheInterface +{ + public function remove(string $name, string $cls): void; +} diff --git a/includes/lib/Twig/Compiler.php b/includes/lib/Twig/Compiler.php index 1e7ed04..ce8b17c 100644 --- a/includes/lib/Twig/Compiler.php +++ b/includes/lib/Twig/Compiler.php @@ -22,7 +22,6 @@ class Compiler private $lastLine; private $source; private $indentation; - private $env; private $debugInfo = []; private $sourceOffset; private $sourceLine; @@ -30,9 +29,9 @@ class Compiler private $didUseEcho = false; private $didUseEchoStack = []; - public function __construct(Environment $env) - { - $this->env = $env; + public function __construct( + private Environment $env, + ) { } public function getEnvironment(): Environment @@ -75,7 +74,7 @@ class Compiler $node->compile($this); if ($this->didUseEcho) { - trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node)); + trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node)); } return $this; @@ -100,7 +99,7 @@ class Compiler $node->compile($this); if ($this->didUseEcho) { - trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node)); + trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node)); } return $this; @@ -171,7 +170,7 @@ class Compiler } elseif (\is_bool($value)) { $this->raw($value ? 'true' : 'false'); } elseif (\is_array($value)) { - $this->raw('array('); + $this->raw('['); $first = true; foreach ($value as $key => $v) { if (!$first) { @@ -182,7 +181,7 @@ class Compiler $this->raw(' => '); $this->repr($v); } - $this->raw(')'); + $this->raw(']'); } else { $this->string($value); } @@ -244,7 +243,7 @@ class Compiler public function getVarName(): string { - return \sprintf('__internal_compile_%d', $this->varNameSalt++); + return \sprintf('_v%d', $this->varNameSalt++); } private function checkForEcho(string $string): void diff --git a/includes/lib/Twig/DeprecatedCallableInfo.php b/includes/lib/Twig/DeprecatedCallableInfo.php new file mode 100644 index 0000000..2db9f3d --- /dev/null +++ b/includes/lib/Twig/DeprecatedCallableInfo.php @@ -0,0 +1,67 @@ + + */ +final class DeprecatedCallableInfo +{ + private string $type; + private string $name; + + public function __construct( + private string $package, + private string $version, + private ?string $altName = null, + private ?string $altPackage = null, + private ?string $altVersion = null, + ) { + } + + public function setType(string $type): void + { + $this->type = $type; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function triggerDeprecation(?string $file = null, ?int $line = null): void + { + $message = \sprintf('Twig %s "%s" is deprecated', ucfirst($this->type), $this->name); + + if ($this->altName) { + $message .= \sprintf('; use "%s"', $this->altName); + if ($this->altPackage) { + $message .= \sprintf(' from the "%s" package', $this->altPackage); + } + if ($this->altVersion) { + $message .= \sprintf(' (available since version %s)', $this->altVersion); + } + $message .= ' instead'; + } + + if ($file) { + $message .= \sprintf(' in %s', $file); + if ($line) { + $message .= \sprintf(' at line %d', $line); + } + } + + $message .= '.'; + + trigger_deprecation($this->package, $this->version, $message); + } +} diff --git a/includes/lib/Twig/Environment.php b/includes/lib/Twig/Environment.php index 32b1313..66400b0 100644 --- a/includes/lib/Twig/Environment.php +++ b/includes/lib/Twig/Environment.php @@ -14,6 +14,7 @@ namespace Twig; use Twig\Cache\CacheInterface; use Twig\Cache\FilesystemCache; use Twig\Cache\NullCache; +use Twig\Cache\RemovableCacheInterface; use Twig\Error\Error; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; @@ -43,10 +44,10 @@ use Twig\TokenParser\TokenParserInterface; */ class Environment { - public const VERSION = '3.11.0'; - public const VERSION_ID = 301100; - public const MAJOR_VERSION = 4; - public const MINOR_VERSION = 11; + public const VERSION = '3.18.0'; + public const VERSION_ID = 31800; + public const MAJOR_VERSION = 3; + public const MINOR_VERSION = 18; public const RELEASE_VERSION = 0; public const EXTRA_VERSION = ''; @@ -71,6 +72,7 @@ class Environment /** @var bool */ private $useYield; private $defaultRuntimeLoader; + private array $hotCache = []; /** * Constructor. @@ -103,11 +105,11 @@ class Environment * (default to -1 which means that all optimizations are enabled; * set it to 0 to disable). * - * * use_yield: Enable templates to exclusively use "yield" instead of "echo" - * (default to "false", but switch it to "true" when possible - * as this will be the only supported mode in Twig 4.0) + * * use_yield: true: forces templates to exclusively use "yield" instead of "echo" (all extensions must be yield ready) + * false (default): allows templates to use a mix of "yield" and "echo" calls to allow for a progressive migration + * Switch to "true" when possible as this will be the only supported mode in Twig 4.0 */ - public function __construct(LoaderInterface $loader, $options = []) + public function __construct(LoaderInterface $loader, array $options = []) { $this->setLoader($loader); @@ -233,6 +235,18 @@ class Environment return $this->strictVariables; } + public function removeCache(string $name): void + { + $cls = $this->getTemplateClass($name); + $this->hotCache[$name] = $cls.'_'.bin2hex(random_bytes(16)); + + if ($this->cache instanceof RemovableCacheInterface) { + $this->cache->remove($name, $cls); + } else { + throw new \LogicException(\sprintf('The "%s" cache class does not support removing template cache as it does not implement the "RemovableCacheInterface" interface.', \get_class($this->cache))); + } + } + /** * Gets the current cache implementation. * @@ -287,7 +301,7 @@ class Environment */ public function getTemplateClass(string $name, ?int $index = null): string { - $key = $this->getLoader()->getCacheKey($name).$this->optionsHash; + $key = ($this->hotCache[$name] ?? $this->getLoader()->getCacheKey($name)).$this->optionsHash; return '__TwigTemplate_'.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $key).(null === $index ? '' : '___'.$index); } @@ -379,8 +393,10 @@ class Environment if (!class_exists($cls, false)) { $source = $this->getLoader()->getSourceContext($name); $content = $this->compileSource($source); - $this->cache->write($key, $content); - $this->cache->load($key); + if (!isset($this->hotCache[$name])) { + $this->cache->write($key, $content); + $this->cache->load($key); + } if (!class_exists($mainCls, false)) { /* Last line of defense if either $this->bcWriteCacheFile was used, @@ -813,8 +829,6 @@ class Environment } /** - * @internal - * * @return array */ public function getGlobals(): array @@ -830,23 +844,26 @@ class Environment return array_merge($this->extensionSet->getGlobals(), $this->globals); } + public function resetGlobals(): void + { + $this->resolvedGlobals = null; + $this->extensionSet->resetGlobals(); + } + + /** + * @deprecated since Twig 3.14 + */ public function mergeGlobals(array $context): array { - // we don't use array_merge as the context being generally - // bigger than globals, this code is faster. - foreach ($this->getGlobals() as $key => $value) { - if (!\array_key_exists($key, $context)) { - $context[$key] = $value; - } - } + trigger_deprecation('twig/twig', '3.14', 'The "%s" method is deprecated.', __METHOD__); - return $context; + return $context + $this->getGlobals(); } /** * @internal * - * @return array}> + * @return array}> */ public function getUnaryOperators(): array { @@ -856,7 +873,7 @@ class Environment /** * @internal * - * @return array, associativity: ExpressionParser::OPERATOR_*}> + * @return array, associativity: ExpressionParser::OPERATOR_*}> */ public function getBinaryOperators(): array { diff --git a/includes/lib/Twig/Error/Error.php b/includes/lib/Twig/Error/Error.php index 4efd9ca..61c309f 100644 --- a/includes/lib/Twig/Error/Error.php +++ b/includes/lib/Twig/Error/Error.php @@ -142,7 +142,7 @@ class Error extends \Exception } if ($this->name) { - if (\is_string($this->name) || (\is_object($this->name) && method_exists($this->name, '__toString'))) { + if (\is_string($this->name) || $this->name instanceof \Stringable) { $name = \sprintf('"%s"', $this->name); } else { $name = json_encode($this->name); diff --git a/includes/lib/Twig/ExpressionParser.php b/includes/lib/Twig/ExpressionParser.php index 8448440..0f1b0ed 100644 --- a/includes/lib/Twig/ExpressionParser.php +++ b/includes/lib/Twig/ExpressionParser.php @@ -12,26 +12,31 @@ namespace Twig; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\ArrowFunctionExpression; -use Twig\Node\Expression\AssignNameExpression; use Twig\Node\Expression\Binary\AbstractBinary; use Twig\Node\Expression\Binary\ConcatBinary; -use Twig\Node\Expression\BlockReferenceExpression; -use Twig\Node\Expression\ConditionalExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\GetAttrExpression; -use Twig\Node\Expression\MethodCallExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\NameExpression; -use Twig\Node\Expression\ParentExpression; +use Twig\Node\Expression\Ternary\ConditionalTernary; use Twig\Node\Expression\TestExpression; use Twig\Node\Expression\Unary\AbstractUnary; use Twig\Node\Expression\Unary\NegUnary; use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Expression\Unary\PosUnary; +use Twig\Node\Expression\Unary\SpreadUnary; +use Twig\Node\Expression\Variable\AssignContextVariable; +use Twig\Node\Expression\Variable\ContextVariable; +use Twig\Node\Expression\Variable\LocalVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\Node; +use Twig\Node\Nodes; /** * Parses expressions. @@ -48,24 +53,50 @@ class ExpressionParser public const OPERATOR_LEFT = 1; public const OPERATOR_RIGHT = 2; - private $parser; - private $env; - /** @var array}> */ + /** @var array}> */ private $unaryOperators; - /** @var array, associativity: self::OPERATOR_*}> */ + /** @var array, associativity: self::OPERATOR_*}> */ private $binaryOperators; + private $readyNodes = []; + private array $precedenceChanges = []; + private bool $deprecationCheck = true; - public function __construct(Parser $parser, Environment $env) - { - $this->parser = $parser; - $this->env = $env; + public function __construct( + private Parser $parser, + private Environment $env, + ) { $this->unaryOperators = $env->getUnaryOperators(); $this->binaryOperators = $env->getBinaryOperators(); + + $ops = []; + foreach ($this->unaryOperators as $n => $c) { + $ops[] = $c + ['name' => $n, 'type' => 'unary']; + } + foreach ($this->binaryOperators as $n => $c) { + $ops[] = $c + ['name' => $n, 'type' => 'binary']; + } + foreach ($ops as $config) { + if (!isset($config['precedence_change'])) { + continue; + } + $name = $config['type'].'_'.$config['name']; + $min = min($config['precedence_change']->getNewPrecedence(), $config['precedence']); + $max = max($config['precedence_change']->getNewPrecedence(), $config['precedence']); + foreach ($ops as $c) { + if ($c['precedence'] > $min && $c['precedence'] < $max) { + $this->precedenceChanges[$c['type'].'_'.$c['name']][] = $name; + } + } + } } - public function parseExpression($precedence = 0, $allowArrow = false) + public function parseExpression($precedence = 0) { - if ($allowArrow && $arrow = $this->parseArrow()) { + if (\func_num_args() > 1) { + trigger_deprecation('twig/twig', '3.15', 'Passing a second argument ($allowArrow) to "%s()" is deprecated.', __METHOD__); + } + + if ($arrow = $this->parseArrow()) { return $arrow; } @@ -82,11 +113,20 @@ class ExpressionParser } elseif (isset($op['callable'])) { $expr = $op['callable']($this->parser, $expr); } else { - $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence'], true); + $previous = $this->setDeprecationCheck(true); + try { + $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']); + } finally { + $this->setDeprecationCheck($previous); + } $class = $op['class']; $expr = new $class($expr, $expr1, $token->getLine()); } + $expr->setAttribute('operator', 'binary_'.$token->getValue()); + + $this->triggerPrecedenceDeprecations($expr); + $token = $this->parser->getCurrentToken(); } @@ -97,6 +137,43 @@ class ExpressionParser return $expr; } + private function triggerPrecedenceDeprecations(AbstractExpression $expr): void + { + // Check that the all nodes that are between the 2 precedences have explicit parentheses + if (!$expr->hasAttribute('operator') || !isset($this->precedenceChanges[$expr->getAttribute('operator')])) { + return; + } + + if (str_starts_with($unaryOp = $expr->getAttribute('operator'), 'unary')) { + if ($expr->hasExplicitParentheses()) { + return; + } + $target = explode('_', $unaryOp)[1]; + /** @var AbstractExpression $node */ + $node = $expr->getNode('node'); + foreach ($this->precedenceChanges as $operatorName => $changes) { + if (!\in_array($unaryOp, $changes)) { + continue; + } + if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator')) { + $change = $this->unaryOperators[$target]['precedence_change']; + trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" unary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $target, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine())); + } + } + } else { + foreach ($this->precedenceChanges[$expr->getAttribute('operator')] as $operatorName) { + foreach ($expr as $node) { + /** @var AbstractExpression $node */ + if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator') && !$node->hasExplicitParentheses()) { + $op = explode('_', $operatorName)[1]; + $change = $this->binaryOperators[$op]['precedence_change']; + trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" binary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $op, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine())); + } + } + } + } + } + /** * @return ArrowFunctionExpression|null */ @@ -105,54 +182,54 @@ class ExpressionParser $stream = $this->parser->getStream(); // short array syntax (one argument, no parentheses)? - if ($stream->look(1)->test(/* Token::ARROW_TYPE */ 12)) { + if ($stream->look(1)->test(Token::ARROW_TYPE)) { $line = $stream->getCurrent()->getLine(); - $token = $stream->expect(/* Token::NAME_TYPE */ 5); - $names = [new AssignNameExpression($token->getValue(), $token->getLine())]; - $stream->expect(/* Token::ARROW_TYPE */ 12); + $token = $stream->expect(Token::NAME_TYPE); + $names = [new AssignContextVariable($token->getValue(), $token->getLine())]; + $stream->expect(Token::ARROW_TYPE); - return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line); } // first, determine if we are parsing an arrow function by finding => (long form) $i = 0; - if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, '(')) { return null; } ++$i; while (true) { // variable name ++$i; - if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ',')) { break; } ++$i; } - if (!$stream->look($i)->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + if (!$stream->look($i)->test(Token::PUNCTUATION_TYPE, ')')) { return null; } ++$i; - if (!$stream->look($i)->test(/* Token::ARROW_TYPE */ 12)) { + if (!$stream->look($i)->test(Token::ARROW_TYPE)) { return null; } // yes, let's parse it properly - $token = $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '('); + $token = $stream->expect(Token::PUNCTUATION_TYPE, '('); $line = $token->getLine(); $names = []; while (true) { - $token = $stream->expect(/* Token::NAME_TYPE */ 5); - $names[] = new AssignNameExpression($token->getValue(), $token->getLine()); + $token = $stream->expect(Token::NAME_TYPE); + $names[] = new AssignContextVariable($token->getValue(), $token->getLine()); - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')'); - $stream->expect(/* Token::ARROW_TYPE */ 12); + $stream->expect(Token::PUNCTUATION_TYPE, ')'); + $stream->expect(Token::ARROW_TYPE); - return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line); } private function getPrimary(): AbstractExpression @@ -165,11 +242,23 @@ class ExpressionParser $expr = $this->parseExpression($operator['precedence']); $class = $operator['class']; - return $this->parsePostfixExpression(new $class($expr, $token->getLine())); - } elseif ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + $expr = new $class($expr, $token->getLine()); + $expr->setAttribute('operator', 'unary_'.$token->getValue()); + + if ($this->deprecationCheck) { + $this->triggerPrecedenceDeprecations($expr); + } + + return $this->parsePostfixExpression($expr); + } elseif ($token->test(Token::PUNCTUATION_TYPE, '(')) { $this->parser->getStream()->next(); - $expr = $this->parseExpression(); - $this->parser->getStream()->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'An opened parenthesis is not properly closed'); + $previous = $this->setDeprecationCheck(false); + try { + $expr = $this->parseExpression()->setExplicitParentheses(); + } finally { + $this->setDeprecationCheck($previous); + } + $this->parser->getStream()->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); return $this->parsePostfixExpression($expr); } @@ -179,23 +268,17 @@ class ExpressionParser private function parseConditionalExpression($expr): AbstractExpression { - while ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, '?')) { - if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - $expr2 = $this->parseExpression(); - if ($this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - // Ternary operator (expr ? expr2 : expr3) - $expr3 = $this->parseExpression(); - } else { - // Ternary without else (expr ? expr2) - $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine()); - } - } else { - // Ternary without then (expr ?: expr3) - $expr2 = $expr; + while ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, '?')) { + $expr2 = $this->parseExpression(); + if ($this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ':')) { + // Ternary operator (expr ? expr2 : expr3) $expr3 = $this->parseExpression(); + } else { + // Ternary without else (expr ? expr2) + $expr3 = new ConstantExpression('', $this->parser->getCurrentToken()->getLine()); } - $expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); + $expr = new ConditionalTernary($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); } return $expr; @@ -203,19 +286,19 @@ class ExpressionParser private function isUnary(Token $token): bool { - return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->unaryOperators[$token->getValue()]); + return $token->test(Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]); } private function isBinary(Token $token): bool { - return $token->test(/* Token::OPERATOR_TYPE */ 8) && isset($this->binaryOperators[$token->getValue()]); + return $token->test(Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->getValue()]); } public function parsePrimaryExpression() { $token = $this->parser->getCurrentToken(); switch ($token->getType()) { - case /* Token::NAME_TYPE */ 5: + case Token::NAME_TYPE: $this->parser->getStream()->next(); switch ($token->getValue()) { case 'true': @@ -239,53 +322,44 @@ class ExpressionParser if ('(' === $this->parser->getCurrentToken()->getValue()) { $node = $this->getFunctionNode($token->getValue(), $token->getLine()); } else { - $node = new NameExpression($token->getValue(), $token->getLine()); + $node = new ContextVariable($token->getValue(), $token->getLine()); } } break; - case /* Token::NUMBER_TYPE */ 6: + case Token::NUMBER_TYPE: $this->parser->getStream()->next(); $node = new ConstantExpression($token->getValue(), $token->getLine()); break; - case /* Token::STRING_TYPE */ 7: - case /* Token::INTERPOLATION_START_TYPE */ 10: + case Token::STRING_TYPE: + case Token::INTERPOLATION_START_TYPE: $node = $this->parseStringExpression(); break; - case /* Token::OPERATOR_TYPE */ 8: + case Token::PUNCTUATION_TYPE: + $node = match ($token->getValue()) { + '[' => $this->parseSequenceExpression(), + '{' => $this->parseMappingExpression(), + default => throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()), + }; + break; + + case Token::OPERATOR_TYPE: if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) { // in this context, string operators are variable names $this->parser->getStream()->next(); - $node = new NameExpression($token->getValue(), $token->getLine()); + $node = new ContextVariable($token->getValue(), $token->getLine()); break; } - if (isset($this->unaryOperators[$token->getValue()])) { - $class = $this->unaryOperators[$token->getValue()]['class']; - if (!\in_array($class, [NegUnary::class, PosUnary::class])) { - throw new SyntaxError(\sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } - - $this->parser->getStream()->next(); - $expr = $this->parsePrimaryExpression(); - - $node = new $class($expr, $token->getLine()); - break; + if ('=' === $token->getValue() && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { + throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } // no break default: - if ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '[')) { - $node = $this->parseSequenceExpression(); - } elseif ($token->test(/* Token::PUNCTUATION_TYPE */ 9, '{')) { - $node = $this->parseMappingExpression(); - } elseif ($token->test(/* Token::OPERATOR_TYPE */ 8, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { - throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } else { - throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } + throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } return $this->parsePostfixExpression($node); @@ -299,12 +373,12 @@ class ExpressionParser // a string cannot be followed by another string in a single expression $nextCanBeString = true; while (true) { - if ($nextCanBeString && $token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) { + if ($nextCanBeString && $token = $stream->nextIf(Token::STRING_TYPE)) { $nodes[] = new ConstantExpression($token->getValue(), $token->getLine()); $nextCanBeString = false; - } elseif ($stream->nextIf(/* Token::INTERPOLATION_START_TYPE */ 10)) { + } elseif ($stream->nextIf(Token::INTERPOLATION_START_TYPE)) { $nodes[] = $this->parseExpression(); - $stream->expect(/* Token::INTERPOLATION_END_TYPE */ 11); + $stream->expect(Token::INTERPOLATION_END_TYPE); $nextCanBeString = true; } else { break; @@ -320,7 +394,7 @@ class ExpressionParser } /** - * @deprecated since 3.11, use parseSequenceExpression() instead + * @deprecated since Twig 3.11, use parseSequenceExpression() instead */ public function parseArrayExpression() { @@ -332,23 +406,22 @@ class ExpressionParser public function parseSequenceExpression() { $stream = $this->parser->getStream(); - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '[', 'A sequence element was expected'); + $stream->expect(Token::PUNCTUATION_TYPE, '[', 'A sequence element was expected'); $node = new ArrayExpression([], $stream->getCurrent()->getLine()); $first = true; - while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + while (!$stream->test(Token::PUNCTUATION_TYPE, ']')) { if (!$first) { - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'A sequence element must be followed by a comma'); + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A sequence element must be followed by a comma'); // trailing ,? - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { + if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { break; } } $first = false; - if ($stream->test(/* Token::SPREAD_TYPE */ 13)) { - $stream->next(); + if ($stream->nextIf(Token::SPREAD_TYPE)) { $expr = $this->parseExpression(); $expr->setAttribute('spread', true); $node->addElement($expr); @@ -356,13 +429,13 @@ class ExpressionParser $node->addElement($this->parseExpression()); } } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']', 'An opened sequence is not properly closed'); + $stream->expect(Token::PUNCTUATION_TYPE, ']', 'An opened sequence is not properly closed'); return $node; } /** - * @deprecated since 3.11, use parseMappingExpression() instead + * @deprecated since Twig 3.11, use parseMappingExpression() instead */ public function parseHashExpression() { @@ -374,23 +447,22 @@ class ExpressionParser public function parseMappingExpression() { $stream = $this->parser->getStream(); - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '{', 'A mapping element was expected'); + $stream->expect(Token::PUNCTUATION_TYPE, '{', 'A mapping element was expected'); $node = new ArrayExpression([], $stream->getCurrent()->getLine()); $first = true; - while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + while (!$stream->test(Token::PUNCTUATION_TYPE, '}')) { if (!$first) { - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'A mapping value must be followed by a comma'); + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A mapping value must be followed by a comma'); // trailing ,? - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '}')) { + if ($stream->test(Token::PUNCTUATION_TYPE, '}')) { break; } } $first = false; - if ($stream->test(/* Token::SPREAD_TYPE */ 13)) { - $stream->next(); + if ($stream->nextIf(Token::SPREAD_TYPE)) { $value = $this->parseExpression(); $value->setAttribute('spread', true); $node->addElement($value); @@ -403,18 +475,18 @@ class ExpressionParser // * a string -- 'a' // * a name, which is equivalent to a string -- a // * an expression, which must be enclosed in parentheses -- (1 + 2) - if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + if ($token = $stream->nextIf(Token::NAME_TYPE)) { $key = new ConstantExpression($token->getValue(), $token->getLine()); // {a} is a shortcut for {a:a} if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) { - $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine()); + $value = new ContextVariable($key->getAttribute('value'), $key->getTemplateLine()); $node->addElement($value, $key); continue; } - } elseif (($token = $stream->nextIf(/* Token::STRING_TYPE */ 7)) || $token = $stream->nextIf(/* Token::NUMBER_TYPE */ 6)) { + } elseif (($token = $stream->nextIf(Token::STRING_TYPE)) || $token = $stream->nextIf(Token::NUMBER_TYPE)) { $key = new ConstantExpression($token->getValue(), $token->getLine()); - } elseif ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { + } elseif ($stream->test(Token::PUNCTUATION_TYPE, '(')) { $key = $this->parseExpression(); } else { $current = $stream->getCurrent(); @@ -422,12 +494,12 @@ class ExpressionParser throw new SyntaxError(\sprintf('A mapping key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s".', Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $stream->getSourceContext()); } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ':', 'A mapping key must be followed by a colon (:)'); + $stream->expect(Token::PUNCTUATION_TYPE, ':', 'A mapping key must be followed by a colon (:)'); $value = $this->parseExpression(); $node->addElement($value, $key); } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '}', 'An opened mapping is not properly closed'); + $stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened mapping is not properly closed'); return $node; } @@ -436,7 +508,7 @@ class ExpressionParser { while (true) { $token = $this->parser->getCurrentToken(); - if (/* Token::PUNCTUATION_TYPE */ 9 == $token->getType()) { + if (Token::PUNCTUATION_TYPE == $token->getType()) { if ('.' == $token->getValue() || '[' == $token->getValue()) { $node = $this->parseSubscriptExpression($node); } elseif ('|' == $token->getValue()) { @@ -454,124 +526,38 @@ class ExpressionParser public function getFunctionNode($name, $line) { - switch ($name) { - case 'parent': - $this->parseArguments(); - if (!\count($this->parser->getBlockStack())) { - throw new SyntaxError('Calling "parent" outside a block is forbidden.', $line, $this->parser->getStream()->getSourceContext()); - } - - if (!$this->parser->getParent() && !$this->parser->hasTraits()) { - throw new SyntaxError('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getStream()->getSourceContext()); - } - - return new ParentExpression($this->parser->peekBlockStack(), $line); - case 'block': - $args = $this->parseArguments(); - if (\count($args) < 1) { - throw new SyntaxError('The "block" function takes one argument (the block name).', $line, $this->parser->getStream()->getSourceContext()); - } - - return new BlockReferenceExpression($args->getNode('0'), \count($args) > 1 ? $args->getNode('1') : null, $line); - case 'attribute': - $args = $this->parseArguments(); - if (\count($args) < 2) { - throw new SyntaxError('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getStream()->getSourceContext()); - } - - return new GetAttrExpression($args->getNode('0'), $args->getNode('1'), \count($args) > 2 ? $args->getNode('2') : null, Template::ANY_CALL, $line); - default: - if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { - $arguments = new ArrayExpression([], $line); - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - - $node = new MethodCallExpression($alias['node'], $alias['name'], $arguments, $line); - $node->setAttribute('safe', true); - - return $node; - } - - $args = $this->parseArguments(true); - $class = $this->getFunctionNodeClass($name, $line); - - return new $class($name, $args, $line); + if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { + return new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], $this->createArguments($line), $line); } + + $args = $this->parseOnlyArguments(); + $function = $this->getFunction($name, $line); + + if ($function->getParserCallable()) { + $fakeNode = new EmptyNode($line); + $fakeNode->setSourceContext($this->parser->getStream()->getSourceContext()); + + return ($function->getParserCallable())($this->parser, $fakeNode, $args, $line); + } + + if (!isset($this->readyNodes[$class = $function->getNodeClass()])) { + $this->readyNodes[$class] = (bool) (new \ReflectionClass($class))->getConstructor()->getAttributes(FirstClassTwigCallableReady::class); + } + + if (!$ready = $this->readyNodes[$class]) { + trigger_deprecation('twig/twig', '3.12', 'Twig node "%s" is not marked as ready for passing a "TwigFunction" in the constructor instead of its name; please update your code and then add #[FirstClassTwigCallableReady] attribute to the constructor.', $class); + } + + return new $class($ready ? $function : $function->getName(), $args, $line); } public function parseSubscriptExpression($node) { - $stream = $this->parser->getStream(); - $token = $stream->next(); - $lineno = $token->getLine(); - $arguments = new ArrayExpression([], $lineno); - $type = Template::ANY_CALL; - if ('.' == $token->getValue()) { - $token = $stream->next(); - if ( - /* Token::NAME_TYPE */ 5 == $token->getType() - || - /* Token::NUMBER_TYPE */ 6 == $token->getType() - || - (/* Token::OPERATOR_TYPE */ 8 == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) - ) { - $arg = new ConstantExpression($token->getValue(), $lineno); - - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { - $type = Template::METHOD_CALL; - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - } - } else { - throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $lineno, $stream->getSourceContext()); - } - - if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { - $name = $arg->getAttribute('value'); - - $node = new MethodCallExpression($node, 'macro_'.$name, $arguments, $lineno); - $node->setAttribute('safe', true); - - return $node; - } - } else { - $type = Template::ARRAY_CALL; - - // slice? - $slice = false; - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - $slice = true; - $arg = new ConstantExpression(0, $token->getLine()); - } else { - $arg = $this->parseExpression(); - } - - if ($stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ':')) { - $slice = true; - } - - if ($slice) { - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ']')) { - $length = new ConstantExpression(null, $token->getLine()); - } else { - $length = $this->parseExpression(); - } - - $class = $this->getFilterNodeClass('slice', $token->getLine()); - $arguments = new Node([$arg, $length]); - $filter = new $class($node, new ConstantExpression('slice', $token->getLine()), $arguments, $token->getLine()); - - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); - - return $filter; - } - - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ']'); + if ('.' === $this->parser->getStream()->next()->getValue()) { + return $this->parseSubscriptExpressionDot($node); } - return new GetAttrExpression($node, $arg, $arguments, $type, $lineno); + return $this->parseSubscriptExpressionArray($node); } public function parseFilterExpression($node) @@ -581,23 +567,35 @@ class ExpressionParser return $this->parseFilterExpressionRaw($node); } - public function parseFilterExpressionRaw($node, $tag = null) + public function parseFilterExpressionRaw($node) { - while (true) { - $token = $this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5); + if (\func_num_args() > 1) { + trigger_deprecation('twig/twig', '3.12', 'Passing a second argument to "%s()" is deprecated.', __METHOD__); + } - $name = new ConstantExpression($token->getValue(), $token->getLine()); - if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { - $arguments = new Node(); + while (true) { + $token = $this->parser->getStream()->expect(Token::NAME_TYPE); + + if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '(')) { + $arguments = new EmptyNode(); } else { - $arguments = $this->parseArguments(true, false, true); + $arguments = $this->parseOnlyArguments(); } - $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine()); + $filter = $this->getFilter($token->getValue(), $token->getLine()); - $node = new $class($node, $name, $arguments, $token->getLine(), $tag); + $ready = true; + if (!isset($this->readyNodes[$class = $filter->getNodeClass()])) { + $this->readyNodes[$class] = (bool) (new \ReflectionClass($class))->getConstructor()->getAttributes(FirstClassTwigCallableReady::class); + } - if (!$this->parser->getStream()->test(/* Token::PUNCTUATION_TYPE */ 9, '|')) { + if (!$ready = $this->readyNodes[$class]) { + trigger_deprecation('twig/twig', '3.12', 'Twig node "%s" is not marked as ready for passing a "TwigFilter" in the constructor instead of its name; please update your code and then add #[FirstClassTwigCallableReady] attribute to the constructor.', $class); + } + + $node = new $class($node, $ready ? $filter : new ConstantExpression($filter->getName(), $token->getLine()), $arguments, $token->getLine()); + + if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '|')) { break; } @@ -610,51 +608,66 @@ class ExpressionParser /** * Parses arguments. * - * @param bool $namedArguments Whether to allow named arguments or not - * @param bool $definition Whether we are parsing arguments for a function definition - * * @return Node * * @throws SyntaxError */ - public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false) + public function parseArguments() { + $namedArguments = false; + $definition = false; + if (\func_num_args() > 1) { + $definition = func_get_arg(1); + } + if (\func_num_args() > 0) { + trigger_deprecation('twig/twig', '3.15', 'Passing arguments to "%s()" is deprecated.', __METHOD__); + $namedArguments = func_get_arg(0); + } + $args = []; $stream = $this->parser->getStream(); - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, '(', 'A list of arguments must begin with an opening parenthesis'); - while (!$stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { - if (!empty($args)) { - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ',', 'Arguments must be separated by a comma'); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + $hasSpread = false; + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if ($args) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); // if the comma above was a trailing comma, early exit the argument parse loop - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, ')')) { + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { break; } } if ($definition) { - $token = $stream->expect(/* Token::NAME_TYPE */ 5, null, 'An argument must be a name'); - $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine()); + $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name'); + $value = new ContextVariable($token->getValue(), $this->parser->getCurrentToken()->getLine()); } else { - $value = $this->parseExpression(0, $allowArrow); + if ($stream->nextIf(Token::SPREAD_TYPE)) { + $hasSpread = true; + $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine()); + } elseif ($hasSpread) { + throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } else { + $value = $this->parseExpression(); + } } $name = null; - if ($namedArguments && $token = $stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + if ($namedArguments && (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || (!$definition && $token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':')))) { if (!$value instanceof NameExpression) { throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext()); } $name = $value->getAttribute('name'); if ($definition) { - $value = $this->parsePrimaryExpression(); + $value = $this->getPrimary(); if (!$this->checkConstantExpression($value)) { throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext()); } } else { - $value = $this->parseExpression(0, $allowArrow); + $value = $this->parseExpression(); } } @@ -662,6 +675,7 @@ class ExpressionParser if (null === $name) { $name = $value->getAttribute('name'); $value = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); + $value->setAttribute('is_implicit', true); } $args[$name] = $value; } else { @@ -672,9 +686,9 @@ class ExpressionParser } } } - $stream->expect(/* Token::PUNCTUATION_TYPE */ 9, ')', 'A list of arguments must be closed by a parenthesis'); + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); - return new Node($args); + return new Nodes($args); } public function parseAssignmentExpression() @@ -683,24 +697,20 @@ class ExpressionParser $targets = []; while (true) { $token = $this->parser->getCurrentToken(); - if ($stream->test(/* Token::OPERATOR_TYPE */ 8) && preg_match(Lexer::REGEX_NAME, $token->getValue())) { + if ($stream->test(Token::OPERATOR_TYPE) && preg_match(Lexer::REGEX_NAME, $token->getValue())) { // in this context, string operators are variable names $this->parser->getStream()->next(); } else { - $stream->expect(/* Token::NAME_TYPE */ 5, null, 'Only variables can be assigned to'); + $stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to'); } - $value = $token->getValue(); - if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) { - throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext()); - } - $targets[] = new AssignNameExpression($value, $token->getLine()); + $targets[] = new AssignContextVariable($token->getValue(), $token->getLine()); - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - return new Node($targets); + return new Nodes($targets); } public function parseMultitargetExpression() @@ -708,12 +718,12 @@ class ExpressionParser $targets = []; while (true) { $targets[] = $this->parseExpression(); - if (!$this->parser->getStream()->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$this->parser->getStream()->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - return new Node($targets); + return new Nodes($targets); } private function parseNotTestExpression(Node $node): NotUnary @@ -724,71 +734,72 @@ class ExpressionParser private function parseTestExpression(Node $node): TestExpression { $stream = $this->parser->getStream(); - [$name, $test] = $this->getTest($node->getTemplateLine()); + $test = $this->getTest($node->getTemplateLine()); - $class = $this->getTestNodeClass($test); $arguments = null; - if ($stream->test(/* Token::PUNCTUATION_TYPE */ 9, '(')) { - $arguments = $this->parseArguments(true); + if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { + $arguments = $this->parseOnlyArguments(); } elseif ($test->hasOneMandatoryArgument()) { - $arguments = new Node([0 => $this->parsePrimaryExpression()]); + $arguments = new Nodes([0 => $this->getPrimary()]); } - if ('defined' === $name && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) { - $node = new MethodCallExpression($alias['node'], $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); - $node->setAttribute('safe', true); + if ('defined' === $test->getName() && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) { + $node = new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); } - return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine()); + $ready = $test instanceof TwigTest; + if (!isset($this->readyNodes[$class = $test->getNodeClass()])) { + $this->readyNodes[$class] = (bool) (new \ReflectionClass($class))->getConstructor()->getAttributes(FirstClassTwigCallableReady::class); + } + + if (!$ready = $this->readyNodes[$class]) { + trigger_deprecation('twig/twig', '3.12', 'Twig node "%s" is not marked as ready for passing a "TwigTest" in the constructor instead of its name; please update your code and then add #[FirstClassTwigCallableReady] attribute to the constructor.', $class); + } + + return new $class($node, $ready ? $test : $test->getName(), $arguments, $this->parser->getCurrentToken()->getLine()); } - private function getTest(int $line): array + private function getTest(int $line): TwigTest { $stream = $this->parser->getStream(); - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); - if ($test = $this->env->getTest($name)) { - return [$name, $test]; - } - - if ($stream->test(/* Token::NAME_TYPE */ 5)) { + if ($stream->test(Token::NAME_TYPE)) { // try 2-words tests $name = $name.' '.$this->parser->getCurrentToken()->getValue(); if ($test = $this->env->getTest($name)) { $stream->next(); - - return [$name, $test]; } + } else { + $test = $this->env->getTest($name); } - $e = new SyntaxError(\sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); - $e->addSuggestions($name, array_keys($this->env->getTests())); + if (!$test) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigTest($name, fn () => ''); + } + $e = new SyntaxError(\sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getTests())); - throw $e; - } + throw $e; + } - private function getTestNodeClass(TwigTest $test): string - { if ($test->isDeprecated()) { $stream = $this->parser->getStream(); - $message = \sprintf('Twig Test "%s" is deprecated', $test->getName()); - - if ($test->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $test->getAlternative()); - } $src = $stream->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine()); - - trigger_deprecation($test->getDeprecatingPackage(), $test->getDeprecatedVersion(), $message); + $test->triggerDeprecation($src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine()); } - return $test->getNodeClass(); + return $test; } - private function getFunctionNodeClass(string $name, int $line): string + private function getFunction(string $name, int $line): TwigFunction { if (!$function = $this->env->getFunction($name)) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigFunction($name, fn () => ''); + } $e = new SyntaxError(\sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFunctions())); @@ -796,22 +807,19 @@ class ExpressionParser } if ($function->isDeprecated()) { - $message = \sprintf('Twig Function "%s" is deprecated', $function->getName()); - if ($function->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $function->getAlternative()); - } $src = $this->parser->getStream()->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line); - - trigger_deprecation($function->getDeprecatingPackage(), $function->getDeprecatedVersion(), $message); + $function->triggerDeprecation($src->getPath() ?: $src->getName(), $line); } - return $function->getNodeClass(); + return $function; } - private function getFilterNodeClass(string $name, int $line): string + private function getFilter(string $name, int $line): TwigFilter { if (!$filter = $this->env->getFilter($name)) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigFilter($name, fn () => ''); + } $e = new SyntaxError(\sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFilters())); @@ -819,20 +827,15 @@ class ExpressionParser } if ($filter->isDeprecated()) { - $message = \sprintf('Twig Filter "%s" is deprecated', $filter->getName()); - if ($filter->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $filter->getAlternative()); - } $src = $this->parser->getStream()->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line); - - trigger_deprecation($filter->getDeprecatingPackage(), $filter->getDeprecatedVersion(), $message); + $filter->triggerDeprecation($src->getPath() ?: $src->getName(), $line); } - return $filter->getNodeClass(); + return $filter; } // checks that the node only contains "constant" elements + // to be removed in 4.0 private function checkConstantExpression(Node $node): bool { if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression @@ -849,4 +852,150 @@ class ExpressionParser return true; } + + private function setDeprecationCheck(bool $deprecationCheck): bool + { + $current = $this->deprecationCheck; + $this->deprecationCheck = $deprecationCheck; + + return $current; + } + + private function createArguments(int $line): ArrayExpression + { + $arguments = new ArrayExpression([], $line); + foreach ($this->parseOnlyArguments() as $k => $n) { + $arguments->addElement($n, new LocalVariable($k, $line)); + } + + return $arguments; + } + + public function parseOnlyArguments() + { + $args = []; + $stream = $this->parser->getStream(); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + $hasSpread = false; + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if ($args) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { + break; + } + } + + if ($stream->nextIf(Token::SPREAD_TYPE)) { + $hasSpread = true; + $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine()); + } elseif ($hasSpread) { + throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } else { + $value = $this->parseExpression(); + } + + $name = null; + if (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || ($token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':'))) { + if (!$value instanceof NameExpression) { + throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext()); + } + $name = $value->getAttribute('name'); + $value = $this->parseExpression(); + } + + if (null === $name) { + $args[] = $value; + } else { + $args[$name] = $value; + } + } + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); + + return new Nodes($args); + } + + private function parseSubscriptExpressionDot(Node $node): AbstractExpression + { + $stream = $this->parser->getStream(); + $token = $stream->getCurrent(); + $lineno = $token->getLine(); + $arguments = new ArrayExpression([], $lineno); + $type = Template::ANY_CALL; + + if ($stream->nextIf(Token::PUNCTUATION_TYPE, '(')) { + $attribute = $this->parseExpression(); + $stream->expect(Token::PUNCTUATION_TYPE, ')'); + } else { + $token = $stream->next(); + if ( + Token::NAME_TYPE == $token->getType() + || Token::NUMBER_TYPE == $token->getType() + || (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) + ) { + $attribute = new ConstantExpression($token->getValue(), $token->getLine()); + } else { + throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $token->getLine(), $stream->getSourceContext()); + } + } + + if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { + $type = Template::METHOD_CALL; + $arguments = $this->createArguments($token->getLine()); + } + + if ( + $node instanceof NameExpression + && ( + null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name')) + || '_self' === $node->getAttribute('name') && $attribute instanceof ConstantExpression + ) + ) { + return new MacroReferenceExpression(new TemplateVariable($node->getAttribute('name'), $node->getTemplateLine()), 'macro_'.$attribute->getAttribute('value'), $arguments, $node->getTemplateLine()); + } + + return new GetAttrExpression($node, $attribute, $arguments, $type, $lineno); + } + + private function parseSubscriptExpressionArray(Node $node): AbstractExpression + { + $stream = $this->parser->getStream(); + $token = $stream->getCurrent(); + $lineno = $token->getLine(); + $arguments = new ArrayExpression([], $lineno); + + // slice? + $slice = false; + if ($stream->test(Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + $attribute = new ConstantExpression(0, $token->getLine()); + } else { + $attribute = $this->parseExpression(); + } + + if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + } + + if ($slice) { + if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { + $length = new ConstantExpression(null, $token->getLine()); + } else { + $length = $this->parseExpression(); + } + + $filter = $this->getFilter('slice', $token->getLine()); + $arguments = new Nodes([$attribute, $length]); + $filter = new ($filter->getNodeClass())($node, $filter, $arguments, $token->getLine()); + + $stream->expect(Token::PUNCTUATION_TYPE, ']'); + + return $filter; + } + + $stream->expect(Token::PUNCTUATION_TYPE, ']'); + + return new GetAttrExpression($node, $attribute, $arguments, Template::ARRAY_CALL, $lineno); + } } diff --git a/includes/lib/Twig/Extension/CoreExtension.php b/includes/lib/Twig/Extension/CoreExtension.php index 5ac8088..01e7285 100644 --- a/includes/lib/Twig/Extension/CoreExtension.php +++ b/includes/lib/Twig/Extension/CoreExtension.php @@ -11,11 +11,14 @@ namespace Twig\Extension; +use Twig\DeprecatedCallableInfo; use Twig\Environment; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; +use Twig\Error\SyntaxError; use Twig\ExpressionParser; use Twig\Markup; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\Binary\AddBinary; use Twig\Node\Expression\Binary\AndBinary; use Twig\Node\Expression\Binary\BitwiseAndBinary; @@ -23,6 +26,7 @@ use Twig\Node\Expression\Binary\BitwiseOrBinary; use Twig\Node\Expression\Binary\BitwiseXorBinary; use Twig\Node\Expression\Binary\ConcatBinary; use Twig\Node\Expression\Binary\DivBinary; +use Twig\Node\Expression\Binary\ElvisBinary; use Twig\Node\Expression\Binary\EndsWithBinary; use Twig\Node\Expression\Binary\EqualBinary; use Twig\Node\Expression\Binary\FloorDivBinary; @@ -38,14 +42,20 @@ use Twig\Node\Expression\Binary\ModBinary; use Twig\Node\Expression\Binary\MulBinary; use Twig\Node\Expression\Binary\NotEqualBinary; use Twig\Node\Expression\Binary\NotInBinary; +use Twig\Node\Expression\Binary\NullCoalesceBinary; use Twig\Node\Expression\Binary\OrBinary; use Twig\Node\Expression\Binary\PowerBinary; use Twig\Node\Expression\Binary\RangeBinary; use Twig\Node\Expression\Binary\SpaceshipBinary; use Twig\Node\Expression\Binary\StartsWithBinary; use Twig\Node\Expression\Binary\SubBinary; +use Twig\Node\Expression\Binary\XorBinary; +use Twig\Node\Expression\BlockReferenceExpression; use Twig\Node\Expression\Filter\DefaultFilter; -use Twig\Node\Expression\NullCoalesceExpression; +use Twig\Node\Expression\FunctionNode\EnumCasesFunction; +use Twig\Node\Expression\FunctionNode\EnumFunction; +use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\ParentExpression; use Twig\Node\Expression\Test\ConstantTest; use Twig\Node\Expression\Test\DefinedTest; use Twig\Node\Expression\Test\DivisiblebyTest; @@ -56,7 +66,11 @@ use Twig\Node\Expression\Test\SameasTest; use Twig\Node\Expression\Unary\NegUnary; use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Expression\Unary\PosUnary; -use Twig\NodeVisitor\MacroAutoImportNodeVisitor; +use Twig\Node\Node; +use Twig\OperatorPrecedenceChange; +use Twig\Parser; +use Twig\Sandbox\SecurityNotAllowedMethodError; +use Twig\Sandbox\SecurityNotAllowedPropertyError; use Twig\Source; use Twig\Template; use Twig\TemplateWrapper; @@ -69,19 +83,38 @@ use Twig\TokenParser\ExtendsTokenParser; use Twig\TokenParser\FlushTokenParser; use Twig\TokenParser\ForTokenParser; use Twig\TokenParser\FromTokenParser; +use Twig\TokenParser\GuardTokenParser; use Twig\TokenParser\IfTokenParser; use Twig\TokenParser\ImportTokenParser; use Twig\TokenParser\IncludeTokenParser; use Twig\TokenParser\MacroTokenParser; use Twig\TokenParser\SetTokenParser; +use Twig\TokenParser\TypesTokenParser; use Twig\TokenParser\UseTokenParser; use Twig\TokenParser\WithTokenParser; use Twig\TwigFilter; use Twig\TwigFunction; use Twig\TwigTest; +use Twig\Util\CallableArgumentsExtractor; final class CoreExtension extends AbstractExtension { + public const ARRAY_LIKE_CLASSES = [ + 'ArrayIterator', + 'ArrayObject', + 'CachingIterator', + 'RecursiveArrayIterator', + 'RecursiveCachingIterator', + 'SplDoublyLinkedList', + 'SplFixedArray', + 'SplObjectStorage', + 'SplQueue', + 'SplStack', + 'WeakMap', + ]; + + private const DEFAULT_TRIM_CHARS = " \t\n\r\0\x0B"; + private $dateFormats = ['F j, Y H:i', '%d days']; private $numberFormat = [0, '.', ',']; private $timezone = null; @@ -173,11 +206,13 @@ final class CoreExtension extends AbstractExtension new ImportTokenParser(), new FromTokenParser(), new SetTokenParser(), + new TypesTokenParser(), new FlushTokenParser(), new DoTokenParser(), new EmbedTokenParser(), new WithTokenParser(), new DeprecatedTokenParser(), + new GuardTokenParser(), ]; } @@ -206,7 +241,7 @@ final class CoreExtension extends AbstractExtension new TwigFilter('striptags', [self::class, 'striptags']), new TwigFilter('trim', [self::class, 'trim']), new TwigFilter('nl2br', [self::class, 'nl2br'], ['pre_escape' => 'html', 'is_safe' => ['html']]), - new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html']]), + new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html'], 'deprecation_info' => new DeprecatedCallableInfo('twig/twig', '3.12')]), // array helpers new TwigFilter('join', [self::class, 'join']), @@ -237,6 +272,9 @@ final class CoreExtension extends AbstractExtension public function getFunctions(): array { return [ + new TwigFunction('parent', null, ['parser_callable' => [self::class, 'parseParentFunction']]), + new TwigFunction('block', null, ['parser_callable' => [self::class, 'parseBlockFunction']]), + new TwigFunction('attribute', null, ['parser_callable' => [self::class, 'parseAttributeFunction']]), new TwigFunction('max', 'max'), new TwigFunction('min', 'min'), new TwigFunction('range', 'range'), @@ -246,6 +284,8 @@ final class CoreExtension extends AbstractExtension new TwigFunction('date', [$this, 'convertDate']), new TwigFunction('include', [self::class, 'include'], ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]), new TwigFunction('source', [self::class, 'source'], ['needs_environment' => true, 'is_safe' => ['all']]), + new TwigFunction('enum_cases', [self::class, 'enumCases'], ['node_class' => EnumCasesFunction::class]), + new TwigFunction('enum', [self::class, 'enum'], ['node_class' => EnumFunction::class]), ]; } @@ -269,19 +309,23 @@ final class CoreExtension extends AbstractExtension public function getNodeVisitors(): array { - return [new MacroAutoImportNodeVisitor()]; + return []; } public function getOperators(): array { return [ [ - 'not' => ['precedence' => 50, 'class' => NotUnary::class], + 'not' => ['precedence' => 50, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 70), 'class' => NotUnary::class], '-' => ['precedence' => 500, 'class' => NegUnary::class], '+' => ['precedence' => 500, 'class' => PosUnary::class], ], [ + '? :' => ['precedence' => 5, 'class' => ElvisBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + '?:' => ['precedence' => 5, 'class' => ElvisBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + '??' => ['precedence' => 300, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 5), 'class' => NullCoalesceBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], 'or' => ['precedence' => 10, 'class' => OrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'xor' => ['precedence' => 12, 'class' => XorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'and' => ['precedence' => 15, 'class' => AndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-or' => ['precedence' => 16, 'class' => BitwiseOrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-xor' => ['precedence' => 17, 'class' => BitwiseXorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], @@ -303,7 +347,7 @@ final class CoreExtension extends AbstractExtension '..' => ['precedence' => 25, 'class' => RangeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '+' => ['precedence' => 30, 'class' => AddBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '-' => ['precedence' => 30, 'class' => SubBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], - '~' => ['precedence' => 40, 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '~' => ['precedence' => 40, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 27), 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '*' => ['precedence' => 60, 'class' => MulBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '/' => ['precedence' => 60, 'class' => DivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '//' => ['precedence' => 60, 'class' => FloorDivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], @@ -311,32 +355,44 @@ final class CoreExtension extends AbstractExtension 'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], '**' => ['precedence' => 200, 'class' => PowerBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], - '??' => ['precedence' => 300, 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], ], ]; } /** - * Cycles over a value. + * Cycles over a sequence. * - * @param \ArrayAccess|array $values - * @param int $position The cycle position + * @param array|\ArrayAccess $values A non-empty sequence of values + * @param int<0, max> $position The position of the value to return in the cycle * - * @return string The next value in the cycle + * @return mixed The value at the given position in the sequence, wrapping around as needed * * @internal */ - public static function cycle($values, $position): string + public static function cycle($values, $position): mixed { - if (!\is_array($values) && !$values instanceof \ArrayAccess) { - return $values; + if (!\is_array($values)) { + if (!$values instanceof \ArrayAccess) { + throw new RuntimeError('The "cycle" function expects an array or "ArrayAccess" as first argument.'); + } + + if (!is_countable($values)) { + // To be uncommented in 4.0 + // throw new RuntimeError('The "cycle" function expects a countable sequence as first argument.'); + + trigger_deprecation('twig/twig', '3.12', 'Passing a non-countable sequence of values to "%s()" is deprecated.', __METHOD__); + + return $values; + } + + $values = self::toArray($values, false); } - if (!\count($values)) { - throw new RuntimeError('The "cycle" function does not work on empty sequences/mappings.'); + if (!$count = \count($values)) { + throw new RuntimeError('The "cycle" function expects a non-empty sequence.'); } - return $values[$position % \count($values)]; + return $values[$position % $count]; } /** @@ -403,7 +459,7 @@ final class CoreExtension extends AbstractExtension $values = self::toArray($values); if (0 === \count($values)) { - throw new RuntimeError('The random function cannot pick from an empty sequence/mapping.'); + throw new RuntimeError('The "random" function cannot pick from an empty sequence or mapping.'); } return $values[array_rand($values, 1)]; @@ -414,9 +470,9 @@ final class CoreExtension extends AbstractExtension * * {{ post.published_at|date("m/d/Y") }} * - * @param \DateTimeInterface|\DateInterval|string $date A date - * @param string|null $format The target format, null to use the default - * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param \DateTimeInterface|\DateInterval|string|int|null $date A date, a timestamp or null to use the current time + * @param string|null $format The target format, null to use the default + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged */ public function formatDate($date, $format = null, $timezone = null): string { @@ -437,8 +493,8 @@ final class CoreExtension extends AbstractExtension * * {{ post.published_at|date_modify("-1day")|date("m/d/Y") }} * - * @param \DateTimeInterface|string $date A date - * @param string $modifier A modifier string + * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time + * @param string $modifier A modifier string * * @return \DateTime|\DateTimeImmutable * @@ -477,8 +533,8 @@ final class CoreExtension extends AbstractExtension * {# do something #} * {% endif %} * - * @param \DateTimeInterface|string|null $date A date or null to use the current time - * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged * * @return \DateTime|\DateTimeImmutable */ @@ -516,7 +572,7 @@ final class CoreExtension extends AbstractExtension } $asString = (string) $date; - if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { + if (ctype_digit($asString) || ('' !== $asString && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { $date = new \DateTime('@'.$date); } else { $date = new \DateTime($date, $this->getTimezone()); @@ -540,7 +596,7 @@ final class CoreExtension extends AbstractExtension public static function replace($str, $from): string { if (!is_iterable($from)) { - throw new RuntimeError(\sprintf('The "replace" filter expects a sequence/mapping or "Traversable" as replace values, got "%s".', \is_object($from) ? \get_class($from) : \gettype($from))); + throw new RuntimeError(\sprintf('The "replace" filter expects a sequence or a mapping, got "%s".', get_debug_type($from))); } return strtr($str ?? '', self::toArray($from)); @@ -549,11 +605,11 @@ final class CoreExtension extends AbstractExtension /** * Rounds a number. * - * @param int|float|string|null $value The value to round - * @param int|float $precision The rounding precision - * @param string $method The method to use for rounding + * @param int|float|string|null $value The value to round + * @param int|float $precision The rounding precision + * @param 'common'|'ceil'|'floor' $method The method to use for rounding * - * @return int|float The rounded number + * @return float The rounded number * * @internal */ @@ -566,7 +622,7 @@ final class CoreExtension extends AbstractExtension } if ('ceil' !== $method && 'floor' !== $method) { - throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); + throw new RuntimeError('The "round" filter only supports the "common", "ceil", and "floor" methods.'); } return $method($value * 10 ** $precision) / 10 ** $precision; @@ -637,7 +693,7 @@ final class CoreExtension extends AbstractExtension foreach ($arrays as $argNumber => $array) { if (!is_iterable($array)) { - throw new RuntimeError(\sprintf('The merge filter only works with sequences/mappings or "Traversable", got "%s" for argument %d.', \gettype($array), $argNumber + 1)); + throw new RuntimeError(\sprintf('The "merge" filter expects a sequence or a mapping, got "%s" for argument %d.', get_debug_type($array), $argNumber + 1)); } $result = array_merge($result, self::toArray($array)); @@ -729,9 +785,9 @@ final class CoreExtension extends AbstractExtension * {{ [1, 2, 3]|join }} * {# returns 123 #} * - * @param array $value An array - * @param string $glue The separator - * @param string|null $and The separator for the last pair + * @param iterable|array|string|float|int|bool|null $value An array + * @param string $glue The separator + * @param string|null $and The separator for the last pair * * @internal */ @@ -804,9 +860,6 @@ final class CoreExtension extends AbstractExtension return $r; } - // The '_default' filter is used internally to avoid using the ternary operator - // which costs a lot for big contexts (before PHP 5.4). So, on average, - // a function call is cheaper. /** * @internal */ @@ -939,6 +992,7 @@ final class CoreExtension extends AbstractExtension * Sorts an array. * * @param array|\Traversable $array + * @param ?\Closure $arrow * * @internal */ @@ -947,11 +1001,11 @@ final class CoreExtension extends AbstractExtension if ($array instanceof \Traversable) { $array = iterator_to_array($array); } elseif (!\is_array($array)) { - throw new RuntimeError(\sprintf('The sort filter only works with sequences/mappings or "Traversable", got "%s".', \gettype($array))); + throw new RuntimeError(\sprintf('The "sort" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); } if (null !== $arrow) { - self::checkArrowInSandbox($env, $arrow, 'sort', 'filter'); + self::checkArrow($env, $arrow, 'sort', 'filter'); uasort($array, $arrow); } else { @@ -1090,30 +1144,29 @@ final class CoreExtension extends AbstractExtension /** * Returns a trimmed string. * - * @param string|null $string - * @param string|null $characterMask - * @param string $side + * @param string|\Stringable|null $string + * @param string|null $characterMask + * @param string $side left, right, or both * - * @throws RuntimeError When an invalid trimming side is used (not a string or not 'left', 'right', or 'both') + * @throws RuntimeError When an invalid trimming side is used * * @internal */ - public static function trim($string, $characterMask = null, $side = 'both'): string + public static function trim($string, $characterMask = null, $side = 'both'): string|\Stringable { if (null === $characterMask) { - $characterMask = " \t\n\r\0\x0B"; + $characterMask = self::DEFAULT_TRIM_CHARS; } - switch ($side) { - case 'both': - return trim($string ?? '', $characterMask); - case 'left': - return ltrim($string ?? '', $characterMask); - case 'right': - return rtrim($string ?? '', $characterMask); - default: - throw new RuntimeError('Trimming side must be "left", "right" or "both".'); - } + $trimmed = match ($side) { + 'both' => trim($string ?? '', $characterMask), + 'left' => ltrim($string ?? '', $characterMask), + 'right' => rtrim($string ?? '', $characterMask), + default => throw new RuntimeError('Trimming side must be "left", "right" or "both".'), + }; + + // trimming a safe string with the default character mask always returns a safe string (independently of the context) + return $string instanceof Markup && self::DEFAULT_TRIM_CHARS === $characterMask ? new Markup($trimmed, $string->getCharset()) : $trimmed; } /** @@ -1181,7 +1234,7 @@ final class CoreExtension extends AbstractExtension return iterator_count($thing); } - if (method_exists($thing, '__toString')) { + if ($thing instanceof \Stringable) { return mb_strlen((string) $thing, $charset); } @@ -1251,6 +1304,8 @@ final class CoreExtension extends AbstractExtension /** * @internal + * + * to be removed in 4.0 */ public static function callMacro(Template $template, string $method, array $args, int $lineno, array $context, Source $source) { @@ -1269,6 +1324,12 @@ final class CoreExtension extends AbstractExtension } /** + * @template TSequence + * + * @param TSequence $seq + * + * @return ($seq is iterable ? TSequence : array{}) + * * @internal */ public static function ensureTraversable($seq) @@ -1318,7 +1379,7 @@ final class CoreExtension extends AbstractExtension return !iterator_count($value); } - if (\is_object($value) && method_exists($value, '__toString')) { + if ($value instanceof \Stringable) { return '' === (string) $value; } @@ -1400,13 +1461,6 @@ final class CoreExtension extends AbstractExtension if (!$alreadySandboxed = $sandbox->isSandboxed()) { $sandbox->enableSandbox(); } - - foreach ((\is_array($template) ? $template : [$template]) as $name) { - // if a Template instance is passed, it might have been instantiated outside of a sandbox, check security - if ($name instanceof TemplateWrapper || $name instanceof Template) { - $name->unwrap()->checkSecurity(); - } - } } try { @@ -1417,9 +1471,15 @@ final class CoreExtension extends AbstractExtension if (!$ignoreMissing) { throw $e; } + + return ''; } - return $loaded ? $loaded->render($variables) : ''; + if ($isSandboxed) { + $loaded->unwrap()->checkSecurity(); + } + + return $loaded->render($variables); } finally { if ($isSandboxed && !$alreadySandboxed) { $sandbox->disableSandbox(); @@ -1450,56 +1510,85 @@ final class CoreExtension extends AbstractExtension } /** - * Provides the ability to get constants from instances as well as class/global constants. + * Returns the list of cases of the enum. * - * @param string $constant The name of the constant - * @param object|null $object The object to get the constant from + * @template T of \UnitEnum * - * @return mixed Class constants can return many types like scalars, arrays, and - * objects depending on the PHP version (\BackedEnum, \UnitEnum, etc.) + * @param class-string $enum + * + * @return list * * @internal */ - public static function constant($constant, $object = null) + public static function enumCases(string $enum): array + { + if (!enum_exists($enum)) { + throw new RuntimeError(\sprintf('Enum "%s" does not exist.', $enum)); + } + + return $enum::cases(); + } + + /** + * Provides the ability to access enums by their class names. + * + * @template T of \UnitEnum + * + * @param class-string $enum + * + * @return T + * + * @internal + */ + public static function enum(string $enum): \UnitEnum + { + if (!enum_exists($enum)) { + throw new RuntimeError(\sprintf('"%s" is not an enum.', $enum)); + } + + if (!$cases = $enum::cases()) { + throw new RuntimeError(\sprintf('"%s" is an empty enum.', $enum)); + } + + return $cases[0]; + } + + /** + * Provides the ability to get constants from instances as well as class/global constants. + * + * @param string $constant The name of the constant + * @param object|null $object The object to get the constant from + * @param bool $checkDefined Whether to check if the constant is defined or not + * + * @return mixed Class constants can return many types like scalars, arrays, and + * objects depending on the PHP version (\BackedEnum, \UnitEnum, etc.) + * When $checkDefined is true, returns true when the constant is defined, false otherwise + * + * @internal + */ + public static function constant($constant, $object = null, bool $checkDefined = false) { if (null !== $object) { if ('class' === $constant) { - return \get_class($object); + return $checkDefined ? true : \get_class($object); } $constant = \get_class($object).'::'.$constant; } if (!\defined($constant)) { + if ($checkDefined) { + return false; + } + if ('::class' === strtolower(substr($constant, -7))) { - throw new RuntimeError(\sprintf('You cannot use the Twig function "constant()" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant)); + throw new RuntimeError(\sprintf('You cannot use the Twig function "constant" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant)); } throw new RuntimeError(\sprintf('Constant "%s" is undefined.', $constant)); } - return \constant($constant); - } - - /** - * Checks if a constant exists. - * - * @param string $constant The name of the constant - * @param object|null $object The object to get the constant from - * - * @internal - */ - public static function constantIsDefined($constant, $object = null): bool - { - if (null !== $object) { - if ('class' === $constant) { - return true; - } - - $constant = \get_class($object).'::'.$constant; - } - - return \defined($constant); + return $checkDefined ? true : \constant($constant); } /** @@ -1514,7 +1603,7 @@ final class CoreExtension extends AbstractExtension public static function batch($items, $size, $fill = null, $preserveKeys = true): array { if (!is_iterable($items)) { - throw new RuntimeError(\sprintf('The "batch" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items))); + throw new RuntimeError(\sprintf('The "batch" filter expects a sequence or a mapping, got "%s".', get_debug_type($items))); } $size = (int) ceil($size); @@ -1550,15 +1639,27 @@ final class CoreExtension extends AbstractExtension * * @internal */ - public static function getAttribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = /* Template::ANY_CALL */ 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) + public static function getAttribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = Template::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) { + $propertyNotAllowedError = null; + // array - if (/* Template::METHOD_CALL */ 'method' !== $type) { + if (Template::METHOD_CALL !== $type) { $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item; - if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object))) - || ($object instanceof \ArrayAccess && isset($object[$arrayItem])) - ) { + if ($sandboxed && $object instanceof \ArrayAccess && !\in_array($object::class, self::ARRAY_LIKE_CLASSES, true)) { + try { + $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $arrayItem, $lineno, $source); + } catch (SecurityNotAllowedPropertyError $propertyNotAllowedError) { + goto methodCheck; + } + } + + if (match (true) { + \is_array($object) => \array_key_exists($arrayItem, $object), + $object instanceof \ArrayAccess => $object->offsetExists($arrayItem), + default => false, + }) { if ($isDefinedTest) { return true; } @@ -1566,7 +1667,7 @@ final class CoreExtension extends AbstractExtension return $object[$arrayItem]; } - if (/* Template::ARRAY_CALL */ 'array' === $type || !\is_object($object)) { + if (Template::ARRAY_CALL === $type || !\is_object($object)) { if ($isDefinedTest) { return false; } @@ -1580,27 +1681,29 @@ final class CoreExtension extends AbstractExtension } elseif (\is_object($object)) { $message = \sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, \get_class($object)); } elseif (\is_array($object)) { - if (empty($object)) { + if (!$object) { $message = \sprintf('Key "%s" does not exist as the sequence/mapping is empty.', $arrayItem); } else { $message = \sprintf('Key "%s" for sequence/mapping with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object))); } - } elseif (/* Template::ARRAY_CALL */ 'array' === $type) { + } elseif (Template::ARRAY_CALL === $type) { if (null === $object) { $message = \sprintf('Impossible to access a key ("%s") on a null variable.', $item); } else { - $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } } elseif (null === $object) { $message = \sprintf('Impossible to access an attribute ("%s") on a null variable.', $item); } else { - $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } throw new RuntimeError($message, $lineno, $source); } } + $item = (string) $item; + if (!\is_object($object)) { if ($isDefinedTest) { return false; @@ -1615,7 +1718,7 @@ final class CoreExtension extends AbstractExtension } elseif (\is_array($object)) { $message = \sprintf('Impossible to invoke a method ("%s") on a sequence/mapping.', $item); } else { - $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } throw new RuntimeError($message, $lineno, $source); @@ -1626,20 +1729,50 @@ final class CoreExtension extends AbstractExtension } // object property - if (/* Template::METHOD_CALL */ 'method' !== $type) { - if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) { + if (Template::METHOD_CALL !== $type) { + if ($sandboxed) { + try { + $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $item, $lineno, $source); + } catch (SecurityNotAllowedPropertyError $propertyNotAllowedError) { + goto methodCheck; + } + } + + static $propertyCheckers = []; + + if ($object instanceof \Closure && '__invoke' === $item) { + return $isDefinedTest ? true : $object(); + } + + if (isset($object->$item) + || ($propertyCheckers[$object::class][$item] ??= self::getPropertyChecker($object::class, $item))($object, $item) + ) { if ($isDefinedTest) { return true; } - if ($sandboxed) { - $env->getExtension(SandboxExtension::class)->checkPropertyAllowed($object, $item, $lineno, $source); - } - return $object->$item; } + + if ($object instanceof \DateTimeInterface && \in_array($item, ['date', 'timezone', 'timezone_type'], true)) { + if ($isDefinedTest) { + return true; + } + + return ((array) $object)[$item]; + } + + if (\defined($object::class.'::'.$item)) { + if ($isDefinedTest) { + return true; + } + + return \constant($object::class.'::'.$item); + } } + methodCheck: + static $cache = []; $class = \get_class($object); @@ -1648,8 +1781,11 @@ final class CoreExtension extends AbstractExtension // precedence: getXxx() > isXxx() > hasXxx() if (!isset($cache[$class])) { $methods = get_class_methods($object); + if ($object instanceof \Closure) { + $methods[] = '__invoke'; + } sort($methods); - $lcMethods = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, $methods); + $lcMethods = array_map('strtolower', $methods); $classCache = []; foreach ($methods as $i => $method) { $classCache[$method] = $method; @@ -1688,7 +1824,7 @@ final class CoreExtension extends AbstractExtension $call = false; if (isset($cache[$class][$item])) { $method = $cache[$class][$item]; - } elseif (isset($cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) { + } elseif (isset($cache[$class][$lcItem = strtolower($item)])) { $method = $cache[$class][$lcItem]; } elseif (isset($cache[$class]['__call'])) { $method = $item; @@ -1698,6 +1834,10 @@ final class CoreExtension extends AbstractExtension return false; } + if ($propertyNotAllowedError) { + throw $propertyNotAllowedError; + } + if ($ignoreStrictCheck || !$env->isStrictVariables()) { return; } @@ -1705,12 +1845,24 @@ final class CoreExtension extends AbstractExtension throw new RuntimeError(\sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()"/"has%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), $lineno, $source); } - if ($isDefinedTest) { - return true; + if ($sandboxed) { + try { + $env->getExtension(SandboxExtension::class)->checkMethodAllowed($object, $method, $lineno, $source); + } catch (SecurityNotAllowedMethodError $e) { + if ($isDefinedTest) { + return false; + } + + if ($propertyNotAllowedError) { + throw $propertyNotAllowedError; + } + + throw $e; + } } - if ($sandboxed) { - $env->getExtension(SandboxExtension::class)->checkMethodAllowed($object, $method, $lineno, $source); + if ($isDefinedTest) { + return true; } // Some objects throw exceptions when they have __call, and the method we try @@ -1748,25 +1900,29 @@ final class CoreExtension extends AbstractExtension */ public static function column($array, $name, $index = null): array { + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "column" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + if ($array instanceof \Traversable) { $array = iterator_to_array($array); - } elseif (!\is_array($array)) { - throw new RuntimeError(\sprintf('The column filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array))); } return array_column($array, $name, $index); } /** + * @param \Closure $arrow + * * @internal */ public static function filter(Environment $env, $array, $arrow) { if (!is_iterable($array)) { - throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array))); + throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', get_debug_type($array))); } - self::checkArrowInSandbox($env, $arrow, 'filter', 'filter'); + self::checkArrow($env, $arrow, 'filter', 'filter'); if (\is_array($array)) { return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH); @@ -1777,11 +1933,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function find(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'find', 'filter'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "find" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'find', 'filter'); foreach ($array as $k => $v) { if ($arrow($v, $k)) { @@ -1793,11 +1955,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function map(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'map', 'filter'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "map" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'map', 'filter'); $r = []; foreach ($array as $k => $v) { @@ -1808,16 +1976,18 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function reduce(Environment $env, $array, $arrow, $initial = null) { - self::checkArrowInSandbox($env, $arrow, 'reduce', 'filter'); - - if (!\is_array($array) && !$array instanceof \Traversable) { - throw new RuntimeError(\sprintf('The "reduce" filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array))); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "reduce" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); } + self::checkArrow($env, $arrow, 'reduce', 'filter'); + $accumulator = $initial; foreach ($array as $key => $value) { $accumulator = $arrow($accumulator, $value, $key); @@ -1827,11 +1997,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function arraySome(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'has some', 'operator'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "has some" test expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'has some', 'operator'); foreach ($array as $k => $v) { if ($arrow($v, $k)) { @@ -1843,11 +2019,17 @@ final class CoreExtension extends AbstractExtension } /** + * @param \Closure $arrow + * * @internal */ public static function arrayEvery(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'has every', 'operator'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "has every" test expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'has every', 'operator'); foreach ($array as $k => $v) { if (!$arrow($v, $k)) { @@ -1861,11 +2043,17 @@ final class CoreExtension extends AbstractExtension /** * @internal */ - public static function checkArrowInSandbox(Environment $env, $arrow, $thing, $type) + public static function checkArrow(Environment $env, $arrow, $thing, $type) { - if (!$arrow instanceof \Closure && $env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) { + if ($arrow instanceof \Closure) { + return; + } + + if ($env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) { throw new RuntimeError(\sprintf('The callable passed to the "%s" %s must be a Closure in sandbox mode.', $thing, $type)); } + + trigger_deprecation('twig/twig', '3.15', 'Passing a callable that is not a PHP \Closure as an argument to the "%s" %s is deprecated.', $thing, $type); } /** @@ -1873,29 +2061,91 @@ final class CoreExtension extends AbstractExtension */ public static function captureOutput(iterable $body): string { - $output = ''; $level = ob_get_level(); ob_start(); try { foreach ($body as $data) { - if (ob_get_length()) { - $output .= ob_get_clean(); - ob_start(); - } - - $output .= $data; + echo $data; } - - if (ob_get_length()) { - $output .= ob_get_clean(); - } - } finally { + } catch (\Throwable $e) { while (ob_get_level() > $level) { ob_end_clean(); } + + throw $e; } - return $output; + return ob_get_clean(); + } + + /** + * @internal + */ + public static function parseParentFunction(Parser $parser, Node $fakeNode, $args, int $line): AbstractExpression + { + if (!$blockName = $parser->peekBlockStack()) { + throw new SyntaxError('Calling the "parent" function outside of a block is forbidden.', $line, $parser->getStream()->getSourceContext()); + } + + if (!$parser->hasInheritance()) { + throw new SyntaxError('Calling the "parent" function on a template that does not call "extends" or "use" is forbidden.', $line, $parser->getStream()->getSourceContext()); + } + + return new ParentExpression($blockName, $line); + } + + /** + * @internal + */ + public static function parseBlockFunction(Parser $parser, Node $fakeNode, $args, int $line): AbstractExpression + { + $fakeFunction = new TwigFunction('block', fn ($name, $template = null) => null); + $args = (new CallableArgumentsExtractor($fakeNode, $fakeFunction))->extractArguments($args); + + return new BlockReferenceExpression($args[0], $args[1] ?? null, $line); + } + + /** + * @internal + */ + public static function parseAttributeFunction(Parser $parser, Node $fakeNode, $args, int $line): AbstractExpression + { + $fakeFunction = new TwigFunction('attribute', fn ($variable, $attribute, $arguments = null) => null); + $args = (new CallableArgumentsExtractor($fakeNode, $fakeFunction))->extractArguments($args); + + /* + Deprecation to uncomment sometimes during the lifetime of the 4.x branch + $src = $parser->getStream()->getSourceContext(); + $dep = new DeprecatedCallableInfo('twig/twig', '3.15', 'The "attribute" function is deprecated, use the "." notation instead.'); + $dep->setName('attribute'); + $dep->setType('function'); + $dep->triggerDeprecation($src->getPath() ?: $src->getName(), $line); + */ + + return new GetAttrExpression($args[0], $args[1], $args[2] ?? null, Template::ANY_CALL, $line); + } + + private static function getPropertyChecker(string $class, string $property): \Closure + { + static $classReflectors = []; + + $class = $classReflectors[$class] ??= new \ReflectionClass($class); + + if (!$class->hasProperty($property)) { + static $propertyExists; + + return $propertyExists ??= \Closure::fromCallable('property_exists'); + } + + $property = $class->getProperty($property); + + if (!$property->isPublic()) { + static $false; + + return $false ??= static fn () => false; + } + + return static fn ($object) => $property->isInitialized($object); } } diff --git a/includes/lib/Twig/Extension/DebugExtension.php b/includes/lib/Twig/Extension/DebugExtension.php index cefb44c..dac21c3 100644 --- a/includes/lib/Twig/Extension/DebugExtension.php +++ b/includes/lib/Twig/Extension/DebugExtension.php @@ -22,10 +22,8 @@ final class DebugExtension extends AbstractExtension { // dump is safe if var_dump is overridden by xdebug $isDumpOutputHtmlSafe = \extension_loaded('xdebug') - // false means that it was not set (and the default is on) or it explicitly enabled - && (false === \ini_get('xdebug.overload_var_dump') || \ini_get('xdebug.overload_var_dump')) - // false means that it was not set (and the default is on) or it explicitly enabled - // xdebug.overload_var_dump produces HTML only when html_errors is also enabled + // Xdebug overloads var_dump in develop mode when html_errors is enabled + && str_contains(\ini_get('xdebug.mode'), 'develop') && (false === \ini_get('html_errors') || \ini_get('html_errors')) || 'cli' === \PHP_SAPI ; diff --git a/includes/lib/Twig/Extension/EscaperExtension.php b/includes/lib/Twig/Extension/EscaperExtension.php index d8e9b6e..52531c4 100644 --- a/includes/lib/Twig/Extension/EscaperExtension.php +++ b/includes/lib/Twig/Extension/EscaperExtension.php @@ -60,8 +60,9 @@ final class EscaperExtension extends AbstractExtension /** * @deprecated since Twig 3.10 */ - public function setEnvironment(Environment $environment, bool $triggerDeprecation = true): void + public function setEnvironment(Environment $environment): void { + $triggerDeprecation = \func_num_args() > 1 ? func_get_arg(1) : true; if ($triggerDeprecation) { trigger_deprecation('twig/twig', '3.10', 'The "%s()" method is deprecated and not needed if you are using methods from "Twig\Runtime\EscaperRuntime".', __METHOD__); } diff --git a/includes/lib/Twig/Extension/ExtensionInterface.php b/includes/lib/Twig/Extension/ExtensionInterface.php index 10a42b6..d51cd3e 100644 --- a/includes/lib/Twig/Extension/ExtensionInterface.php +++ b/includes/lib/Twig/Extension/ExtensionInterface.php @@ -12,8 +12,10 @@ namespace Twig\Extension; use Twig\ExpressionParser; -use Twig\Node\Expression\AbstractExpression; +use Twig\Node\Expression\Binary\AbstractBinary; +use Twig\Node\Expression\Unary\AbstractUnary; use Twig\NodeVisitor\NodeVisitorInterface; +use Twig\OperatorPrecedenceChange; use Twig\TokenParser\TokenParserInterface; use Twig\TwigFilter; use Twig\TwigFunction; @@ -67,8 +69,8 @@ interface ExtensionInterface * @return array First array of unary operators, second array of binary operators * * @psalm-return array{ - * array}>, - * array, associativity: ExpressionParser::OPERATOR_*}> + * array}>, + * array, associativity: ExpressionParser::OPERATOR_*}> * } */ public function getOperators(); diff --git a/includes/lib/Twig/Extension/GlobalsInterface.php b/includes/lib/Twig/Extension/GlobalsInterface.php index 6f1dfe8..d52cd10 100644 --- a/includes/lib/Twig/Extension/GlobalsInterface.php +++ b/includes/lib/Twig/Extension/GlobalsInterface.php @@ -12,10 +12,7 @@ namespace Twig\Extension; /** - * Enables usage of the deprecated Twig\Extension\AbstractExtension::getGlobals() method. - * - * Explicitly implement this interface if you really need to implement the - * deprecated getGlobals() method in your extensions. + * Allows Twig extensions to add globals to the context. * * @author Fabien Potencier */ diff --git a/includes/lib/Twig/Extension/OptimizerExtension.php b/includes/lib/Twig/Extension/OptimizerExtension.php index 965bfdb..d3fe46a 100644 --- a/includes/lib/Twig/Extension/OptimizerExtension.php +++ b/includes/lib/Twig/Extension/OptimizerExtension.php @@ -15,11 +15,9 @@ use Twig\NodeVisitor\OptimizerNodeVisitor; final class OptimizerExtension extends AbstractExtension { - private $optimizers; - - public function __construct(int $optimizers = -1) - { - $this->optimizers = $optimizers; + public function __construct( + private int $optimizers = -1, + ) { } public function getNodeVisitors(): array diff --git a/includes/lib/Twig/Extension/SandboxExtension.php b/includes/lib/Twig/Extension/SandboxExtension.php index 921df28..bbf7396 100644 --- a/includes/lib/Twig/Extension/SandboxExtension.php +++ b/includes/lib/Twig/Extension/SandboxExtension.php @@ -119,7 +119,13 @@ final class SandboxExtension extends AbstractExtension public function ensureToStringAllowed($obj, int $lineno = -1, ?Source $source = null) { - if ($this->isSandboxed($source) && \is_object($obj) && method_exists($obj, '__toString')) { + if (\is_array($obj)) { + $this->ensureToStringAllowedForArray($obj, $lineno, $source); + + return $obj; + } + + if ($obj instanceof \Stringable && $this->isSandboxed($source)) { try { $this->policy->checkMethodAllowed($obj, '__toString'); } catch (SecurityNotAllowedMethodError $e) { @@ -132,4 +138,28 @@ final class SandboxExtension extends AbstractExtension return $obj; } + + private function ensureToStringAllowedForArray(array $obj, int $lineno, ?Source $source, array &$stack = []): void + { + foreach ($obj as $k => $v) { + if (!$v) { + continue; + } + + if (!\is_array($v)) { + $this->ensureToStringAllowed($v, $lineno, $source); + continue; + } + + if ($r = \ReflectionReference::fromArrayElement($obj, $k)) { + if (isset($stack[$r->getId()])) { + continue; + } + + $stack[$r->getId()] = true; + } + + $this->ensureToStringAllowedForArray($v, $lineno, $source, $stack); + } + } } diff --git a/includes/lib/Twig/Extension/StringLoaderExtension.php b/includes/lib/Twig/Extension/StringLoaderExtension.php index 12f5c30..698d181 100644 --- a/includes/lib/Twig/Extension/StringLoaderExtension.php +++ b/includes/lib/Twig/Extension/StringLoaderExtension.php @@ -29,12 +29,11 @@ final class StringLoaderExtension extends AbstractExtension * * {{ include(template_from_string("Hello {{ name }}")) }} * - * @param string $template A template as a string or object implementing __toString() - * @param string|null $name An optional name of the template to be used in error messages + * @param string|null $name An optional name of the template to be used in error messages * * @internal */ - public static function templateFromString(Environment $env, $template, ?string $name = null): TemplateWrapper + public static function templateFromString(Environment $env, string|\Stringable $template, ?string $name = null): TemplateWrapper { return $env->createTemplate((string) $template, $name); } diff --git a/includes/lib/Twig/Extension/YieldNotReadyExtension.php b/includes/lib/Twig/Extension/YieldNotReadyExtension.php index 2503c8d..49dfb80 100644 --- a/includes/lib/Twig/Extension/YieldNotReadyExtension.php +++ b/includes/lib/Twig/Extension/YieldNotReadyExtension.php @@ -18,11 +18,9 @@ use Twig\NodeVisitor\YieldNotReadyNodeVisitor; */ final class YieldNotReadyExtension extends AbstractExtension { - private $useYield; - - public function __construct(bool $useYield) - { - $this->useYield = $useYield; + public function __construct( + private bool $useYield, + ) { } public function getNodeVisitors(): array diff --git a/includes/lib/Twig/ExtensionSet.php b/includes/lib/Twig/ExtensionSet.php index 8b59a13..e8b3174 100644 --- a/includes/lib/Twig/ExtensionSet.php +++ b/includes/lib/Twig/ExtensionSet.php @@ -15,7 +15,6 @@ use Twig\Error\RuntimeError; use Twig\Extension\ExtensionInterface; use Twig\Extension\GlobalsInterface; use Twig\Extension\StagingExtension; -use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\Binary\AbstractBinary; use Twig\Node\Expression\Unary\AbstractUnary; use Twig\NodeVisitor\NodeVisitorInterface; @@ -36,15 +35,21 @@ final class ExtensionSet private $visitors; /** @var array */ private $filters; + /** @var array */ + private $dynamicFilters; /** @var array */ private $tests; + /** @var array */ + private $dynamicTests; /** @var array */ private $functions; - /** @var array}> */ + /** @var array */ + private $dynamicFunctions; + /** @var array}> */ private $unaryOperators; - /** @var array, associativity: ExpressionParser::OPERATOR_*}> */ + /** @var array, associativity: ExpressionParser::OPERATOR_*}> */ private $binaryOperators; - /** @var array */ + /** @var array|null */ private $globals; private $functionCallbacks = []; private $filterCallbacks = []; @@ -167,14 +172,11 @@ final class ExtensionSet return $this->functions[$name]; } - foreach ($this->functions as $pattern => $function) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); - - if ($count && preg_match('#^'.$pattern.'$#', $name, $matches)) { + foreach ($this->dynamicFunctions as $pattern => $function) { + if (preg_match($pattern, $name, $matches)) { array_shift($matches); - $function->setArguments($matches); - return $function; + return $function->withDynamicArguments($name, $function->getName(), $matches); } } @@ -223,14 +225,11 @@ final class ExtensionSet return $this->filters[$name]; } - foreach ($this->filters as $pattern => $filter) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); - - if ($count && preg_match('#^'.$pattern.'$#', $name, $matches)) { + foreach ($this->dynamicFilters as $pattern => $filter) { + if (preg_match($pattern, $name, $matches)) { array_shift($matches); - $filter->setArguments($matches); - return $filter; + return $filter->withDynamicArguments($name, $filter->getName(), $matches); } } @@ -329,12 +328,7 @@ final class ExtensionSet continue; } - $extGlobals = $extension->getGlobals(); - if (!\is_array($extGlobals)) { - throw new \UnexpectedValueException(\sprintf('"%s::getGlobals()" must return an array of globals.', \get_class($extension))); - } - - $globals = array_merge($globals, $extGlobals); + $globals = array_merge($globals, $extension->getGlobals()); } if ($this->initialized) { @@ -344,6 +338,11 @@ final class ExtensionSet return $globals; } + public function resetGlobals(): void + { + $this->globals = null; + } + public function addTest(TwigTest $test): void { if ($this->initialized) { @@ -375,16 +374,11 @@ final class ExtensionSet return $this->tests[$name]; } - foreach ($this->tests as $pattern => $test) { - $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); + foreach ($this->dynamicTests as $pattern => $test) { + if (preg_match($pattern, $name, $matches)) { + array_shift($matches); - if ($count) { - if (preg_match('#^'.$pattern.'$#', $name, $matches)) { - array_shift($matches); - $test->setArguments($matches); - - return $test; - } + return $test->withDynamicArguments($name, $test->getName(), $matches); } } @@ -392,7 +386,7 @@ final class ExtensionSet } /** - * @return array}> + * @return array}> */ public function getUnaryOperators(): array { @@ -404,7 +398,7 @@ final class ExtensionSet } /** - * @return array, associativity: ExpressionParser::OPERATOR_*}> + * @return array, associativity: ExpressionParser::OPERATOR_*}> */ public function getBinaryOperators(): array { @@ -421,6 +415,9 @@ final class ExtensionSet $this->filters = []; $this->functions = []; $this->tests = []; + $this->dynamicFilters = []; + $this->dynamicFunctions = []; + $this->dynamicTests = []; $this->visitors = []; $this->unaryOperators = []; $this->binaryOperators = []; @@ -437,17 +434,26 @@ final class ExtensionSet { // filters foreach ($extension->getFilters() as $filter) { - $this->filters[$filter->getName()] = $filter; + $this->filters[$name = $filter->getName()] = $filter; + if (str_contains($name, '*')) { + $this->dynamicFilters['#^'.str_replace('\\*', '(.*?)', preg_quote($name, '#')).'$#'] = $filter; + } } // functions foreach ($extension->getFunctions() as $function) { - $this->functions[$function->getName()] = $function; + $this->functions[$name = $function->getName()] = $function; + if (str_contains($name, '*')) { + $this->dynamicFunctions['#^'.str_replace('\\*', '(.*?)', preg_quote($name, '#')).'$#'] = $function; + } } // tests foreach ($extension->getTests() as $test) { - $this->tests[$test->getName()] = $test; + $this->tests[$name = $test->getName()] = $test; + if (str_contains($name, '*')) { + $this->dynamicTests['#^'.str_replace('\\*', '(.*?)', preg_quote($name, '#')).'$#'] = $test; + } } // token parsers @@ -467,7 +473,7 @@ final class ExtensionSet // operators if ($operators = $extension->getOperators()) { if (!\is_array($operators)) { - throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), \is_object($operators) ? \get_class($operators) : \gettype($operators).(\is_resource($operators) ? '' : '#'.$operators))); + throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), get_debug_type($operators).(\is_resource($operators) ? '' : '#'.$operators))); } if (2 !== \count($operators)) { diff --git a/includes/lib/Twig/FileExtensionEscapingStrategy.php b/includes/lib/Twig/FileExtensionEscapingStrategy.php index 812071b..5308158 100644 --- a/includes/lib/Twig/FileExtensionEscapingStrategy.php +++ b/includes/lib/Twig/FileExtensionEscapingStrategy.php @@ -45,6 +45,7 @@ class FileExtensionEscapingStrategy switch ($extension) { case 'js': + case 'json': return 'js'; case 'css': diff --git a/includes/lib/Twig/Lexer.php b/includes/lib/Twig/Lexer.php index 8973fbb..0338fd8 100644 --- a/includes/lib/Twig/Lexer.php +++ b/includes/lib/Twig/Lexer.php @@ -44,12 +44,29 @@ class Lexer public const STATE_INTERPOLATION = 4; public const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; - public const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A'; public const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; + + public const REGEX_NUMBER = '/(?(DEFINE) + (?[0-9]+(_[0-9]+)*) # Integers (with underscores) 123_456 + (?\.(?&LNUM)) # Fractional part .456 + (?[eE][+-]?(?&LNUM)) # Exponent part E+10 + (?(?&LNUM)(?:(?&FRAC))?) # Decimal number 123_456.456 + )(?:(?&DNUM)(?:(?&EXPONENT))?) # 123_456.456E+10 + /Ax'; + public const REGEX_DQ_STRING_DELIM = '/"/A'; public const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; + public const REGEX_INLINE_COMMENT = '/#[^\n]*/A'; public const PUNCTUATION = '()[]{}?:.,|'; + private const SPECIAL_CHARS = [ + 'f' => "\f", + 'n' => "\n", + 'r' => "\r", + 't' => "\t", + 'v' => "\v", + ]; + public function __construct(Environment $env, array $options = []) { $this->env = $env; @@ -207,9 +224,9 @@ class Lexer } } - $this->pushToken(/* Token::EOF_TYPE */ -1); + $this->pushToken(Token::EOF_TYPE); - if (!empty($this->brackets)) { + if ($this->brackets) { [$expect, $lineno] = array_pop($this->brackets); throw new SyntaxError(\sprintf('Unclosed "%s".', $expect), $lineno, $this->source); } @@ -221,7 +238,7 @@ class Lexer { // if no matches are left we return the rest of the template as simple text token if ($this->position == \count($this->positions[0]) - 1) { - $this->pushToken(/* Token::TEXT_TYPE */ 0, substr($this->code, $this->cursor)); + $this->pushToken(Token::TEXT_TYPE, substr($this->code, $this->cursor)); $this->cursor = $this->end; return; @@ -250,7 +267,7 @@ class Lexer $text = rtrim($text, " \t\0\x0B"); } } - $this->pushToken(/* Token::TEXT_TYPE */ 0, $text); + $this->pushToken(Token::TEXT_TYPE, $text); $this->moveCursor($textContent.$position[0]); switch ($this->positions[1][$this->position][0]) { @@ -268,14 +285,14 @@ class Lexer $this->moveCursor($match[0]); $this->lineno = (int) $match[1]; } else { - $this->pushToken(/* Token::BLOCK_START_TYPE */ 1); + $this->pushToken(Token::BLOCK_START_TYPE); $this->pushState(self::STATE_BLOCK); $this->currentVarBlockLine = $this->lineno; } break; case $this->options['tag_variable'][0]: - $this->pushToken(/* Token::VAR_START_TYPE */ 2); + $this->pushToken(Token::VAR_START_TYPE); $this->pushState(self::STATE_VAR); $this->currentVarBlockLine = $this->lineno; break; @@ -284,8 +301,8 @@ class Lexer private function lexBlock(): void { - if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::BLOCK_END_TYPE */ 3); + if (!$this->brackets && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(Token::BLOCK_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { @@ -295,8 +312,8 @@ class Lexer private function lexVar(): void { - if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::VAR_END_TYPE */ 4); + if (!$this->brackets && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { + $this->pushToken(Token::VAR_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { @@ -327,21 +344,17 @@ class Lexer } // operators elseif (preg_match($this->regexes['operator'], $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::OPERATOR_TYPE */ 8, preg_replace('/\s+/', ' ', $match[0])); + $this->pushToken(Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0])); $this->moveCursor($match[0]); } // names elseif (preg_match(self::REGEX_NAME, $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::NAME_TYPE */ 5, $match[0]); + $this->pushToken(Token::NAME_TYPE, $match[0]); $this->moveCursor($match[0]); } // numbers elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, 0, $this->cursor)) { - $number = (float) $match[0]; // floats - if (ctype_digit($match[0]) && $number <= \PHP_INT_MAX) { - $number = (int) $match[0]; // integers lower than the maximum - } - $this->pushToken(/* Token::NUMBER_TYPE */ 6, $number); + $this->pushToken(Token::NUMBER_TYPE, 0 + str_replace('_', '', $match[0])); $this->moveCursor($match[0]); } // punctuation @@ -352,7 +365,7 @@ class Lexer } // closing bracket elseif (str_contains(')]}', $this->code[$this->cursor])) { - if (empty($this->brackets)) { + if (!$this->brackets) { throw new SyntaxError(\sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } @@ -362,12 +375,12 @@ class Lexer } } - $this->pushToken(/* Token::PUNCTUATION_TYPE */ 9, $this->code[$this->cursor]); + $this->pushToken(Token::PUNCTUATION_TYPE, $this->code[$this->cursor]); ++$this->cursor; } // strings elseif (preg_match(self::REGEX_STRING, $this->code, $match, 0, $this->cursor)) { - $this->pushToken(/* Token::STRING_TYPE */ 7, stripcslashes(substr($match[0], 1, -1))); + $this->pushToken(Token::STRING_TYPE, $this->stripcslashes(substr($match[0], 1, -1), substr($match[0], 0, 1))); $this->moveCursor($match[0]); } // opening double quoted string @@ -376,12 +389,73 @@ class Lexer $this->pushState(self::STATE_STRING); $this->moveCursor($match[0]); } + // inline comment + elseif (preg_match(self::REGEX_INLINE_COMMENT, $this->code, $match, 0, $this->cursor)) { + $this->moveCursor($match[0]); + } // unlexable else { throw new SyntaxError(\sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } } + private function stripcslashes(string $str, string $quoteType): string + { + $result = ''; + $length = \strlen($str); + + $i = 0; + while ($i < $length) { + if (false === $pos = strpos($str, '\\', $i)) { + $result .= substr($str, $i); + break; + } + + $result .= substr($str, $i, $pos - $i); + $i = $pos + 1; + + if ($i >= $length) { + $result .= '\\'; + break; + } + + $nextChar = $str[$i]; + + if (isset(self::SPECIAL_CHARS[$nextChar])) { + $result .= self::SPECIAL_CHARS[$nextChar]; + } elseif ('\\' === $nextChar) { + $result .= $nextChar; + } elseif ("'" === $nextChar || '"' === $nextChar) { + if ($nextChar !== $quoteType) { + trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno); + } + $result .= $nextChar; + } elseif ('#' === $nextChar && $i + 1 < $length && '{' === $str[$i + 1]) { + $result .= '#{'; + ++$i; + } elseif ('x' === $nextChar && $i + 1 < $length && ctype_xdigit($str[$i + 1])) { + $hex = $str[++$i]; + if ($i + 1 < $length && ctype_xdigit($str[$i + 1])) { + $hex .= $str[++$i]; + } + $result .= \chr(hexdec($hex)); + } elseif (ctype_digit($nextChar) && $nextChar < '8') { + $octal = $nextChar; + while ($i + 1 < $length && ctype_digit($str[$i + 1]) && $str[$i + 1] < '8' && \strlen($octal) < 3) { + $octal .= $str[++$i]; + } + $result .= \chr(octdec($octal)); + } else { + trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno); + $result .= $nextChar; + } + + ++$i; + } + + return $result; + } + private function lexRawData(): void { if (!preg_match($this->regexes['lex_raw_data'], $this->code, $match, \PREG_OFFSET_CAPTURE, $this->cursor)) { @@ -403,7 +477,7 @@ class Lexer } } - $this->pushToken(/* Token::TEXT_TYPE */ 0, $text); + $this->pushToken(Token::TEXT_TYPE, $text); } private function lexComment(): void @@ -419,11 +493,11 @@ class Lexer { if (preg_match($this->regexes['interpolation_start'], $this->code, $match, 0, $this->cursor)) { $this->brackets[] = [$this->options['interpolation'][0], $this->lineno]; - $this->pushToken(/* Token::INTERPOLATION_START_TYPE */ 10); + $this->pushToken(Token::INTERPOLATION_START_TYPE); $this->moveCursor($match[0]); $this->pushState(self::STATE_INTERPOLATION); } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, 0, $this->cursor) && '' !== $match[0]) { - $this->pushToken(/* Token::STRING_TYPE */ 7, stripcslashes($match[0])); + $this->pushToken(Token::STRING_TYPE, $this->stripcslashes($match[0], '"')); $this->moveCursor($match[0]); } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, 0, $this->cursor)) { [$expect, $lineno] = array_pop($this->brackets); @@ -444,7 +518,7 @@ class Lexer $bracket = end($this->brackets); if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, 0, $this->cursor)) { array_pop($this->brackets); - $this->pushToken(/* Token::INTERPOLATION_END_TYPE */ 11); + $this->pushToken(Token::INTERPOLATION_END_TYPE); $this->moveCursor($match[0]); $this->popState(); } else { @@ -455,7 +529,7 @@ class Lexer private function pushToken($type, $value = ''): void { // do not push empty text tokens - if (/* Token::TEXT_TYPE */ 0 === $type && '' === $value) { + if (Token::TEXT_TYPE === $type && '' === $value) { return; } diff --git a/includes/lib/Twig/Loader/ArrayLoader.php b/includes/lib/Twig/Loader/ArrayLoader.php index ce613c9..2bb54b7 100644 --- a/includes/lib/Twig/Loader/ArrayLoader.php +++ b/includes/lib/Twig/Loader/ArrayLoader.php @@ -28,14 +28,12 @@ use Twig\Source; */ final class ArrayLoader implements LoaderInterface { - private $templates = []; - /** * @param array $templates An array of templates (keys are the names, and values are the source code) */ - public function __construct(array $templates = []) - { - $this->templates = $templates; + public function __construct( + private array $templates = [], + ) { } public function setTemplate(string $name, string $template): void diff --git a/includes/lib/Twig/Loader/ChainLoader.php b/includes/lib/Twig/Loader/ChainLoader.php index 163c029..6e4f951 100644 --- a/includes/lib/Twig/Loader/ChainLoader.php +++ b/includes/lib/Twig/Loader/ChainLoader.php @@ -21,22 +21,28 @@ use Twig\Source; */ final class ChainLoader implements LoaderInterface { + /** + * @var array + */ private $hasSourceCache = []; - private $loaders = []; /** - * @param LoaderInterface[] $loaders + * @param iterable $loaders */ - public function __construct(array $loaders = []) - { - foreach ($loaders as $loader) { - $this->addLoader($loader); - } + public function __construct( + private iterable $loaders = [], + ) { } public function addLoader(LoaderInterface $loader): void { - $this->loaders[] = $loader; + $current = $this->loaders; + + $this->loaders = (static function () use ($current, $loader): \Generator { + yield from $current; + yield $loader; + })(); + $this->hasSourceCache = []; } @@ -45,13 +51,18 @@ final class ChainLoader implements LoaderInterface */ public function getLoaders(): array { + if (!\is_array($this->loaders)) { + $this->loaders = iterator_to_array($this->loaders, false); + } + return $this->loaders; } public function getSourceContext(string $name): Source { $exceptions = []; - foreach ($this->loaders as $loader) { + + foreach ($this->getLoaders() as $loader) { if (!$loader->exists($name)) { continue; } @@ -72,7 +83,7 @@ final class ChainLoader implements LoaderInterface return $this->hasSourceCache[$name]; } - foreach ($this->loaders as $loader) { + foreach ($this->getLoaders() as $loader) { if ($loader->exists($name)) { return $this->hasSourceCache[$name] = true; } @@ -84,7 +95,8 @@ final class ChainLoader implements LoaderInterface public function getCacheKey(string $name): string { $exceptions = []; - foreach ($this->loaders as $loader) { + + foreach ($this->getLoaders() as $loader) { if (!$loader->exists($name)) { continue; } @@ -102,7 +114,8 @@ final class ChainLoader implements LoaderInterface public function isFresh(string $name, int $time): bool { $exceptions = []; - foreach ($this->loaders as $loader) { + + foreach ($this->getLoaders() as $loader) { if (!$loader->exists($name)) { continue; } diff --git a/includes/lib/Twig/Loader/FilesystemLoader.php b/includes/lib/Twig/Loader/FilesystemLoader.php index c60964f..49f2b89 100644 --- a/includes/lib/Twig/Loader/FilesystemLoader.php +++ b/includes/lib/Twig/Loader/FilesystemLoader.php @@ -24,6 +24,9 @@ class FilesystemLoader implements LoaderInterface /** Identifier of the main namespace. */ public const MAIN_NAMESPACE = '__main__'; + /** + * @var array> + */ protected $paths = []; protected $cache = []; protected $errorCache = []; @@ -31,8 +34,8 @@ class FilesystemLoader implements LoaderInterface private $rootPath; /** - * @param string|array $paths A path or an array of paths where to look for templates - * @param string|null $rootPath The root path common to all relative paths (null for getcwd()) + * @param string|string[] $paths A path or an array of paths where to look for templates + * @param string|null $rootPath The root path common to all relative paths (null for getcwd()) */ public function __construct($paths = [], ?string $rootPath = null) { @@ -48,6 +51,8 @@ class FilesystemLoader implements LoaderInterface /** * Returns the paths to the templates. + * + * @return list */ public function getPaths(string $namespace = self::MAIN_NAMESPACE): array { @@ -58,6 +63,8 @@ class FilesystemLoader implements LoaderInterface * Returns the path namespaces. * * The main namespace is always defined. + * + * @return list */ public function getNamespaces(): array { @@ -65,7 +72,7 @@ class FilesystemLoader implements LoaderInterface } /** - * @param string|array $paths A path or an array of paths where to look for templates + * @param string|string[] $paths A path or an array of paths where to look for templates */ public function setPaths($paths, string $namespace = self::MAIN_NAMESPACE): void { diff --git a/includes/lib/Twig/Markup.php b/includes/lib/Twig/Markup.php index 1788acc..c7aa65b 100644 --- a/includes/lib/Twig/Markup.php +++ b/includes/lib/Twig/Markup.php @@ -16,10 +16,10 @@ namespace Twig; * * @author Fabien Potencier */ -class Markup implements \Countable, \JsonSerializable +class Markup implements \Countable, \JsonSerializable, \Stringable { private $content; - private $charset; + private ?string $charset; public function __construct($content, $charset) { @@ -32,6 +32,11 @@ class Markup implements \Countable, \JsonSerializable return $this->content; } + public function getCharset(): string + { + return $this->charset; + } + /** * @return int */ diff --git a/includes/lib/Twig/Node/AutoEscapeNode.php b/includes/lib/Twig/Node/AutoEscapeNode.php index f9bc17e..ee80639 100644 --- a/includes/lib/Twig/Node/AutoEscapeNode.php +++ b/includes/lib/Twig/Node/AutoEscapeNode.php @@ -28,9 +28,9 @@ use Twig\Compiler; #[YieldReady] class AutoEscapeNode extends Node { - public function __construct($value, Node $body, int $lineno, string $tag = 'autoescape') + public function __construct($value, Node $body, int $lineno) { - parent::__construct(['body' => $body], ['value' => $value], $lineno, $tag); + parent::__construct(['body' => $body], ['value' => $value], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/BlockNode.php b/includes/lib/Twig/Node/BlockNode.php index 15973a3..b4f939c 100644 --- a/includes/lib/Twig/Node/BlockNode.php +++ b/includes/lib/Twig/Node/BlockNode.php @@ -23,23 +23,26 @@ use Twig\Compiler; #[YieldReady] class BlockNode extends Node { - public function __construct(string $name, Node $body, int $lineno, ?string $tag = null) + public function __construct(string $name, Node $body, int $lineno) { - parent::__construct(['body' => $body], ['name' => $name], $lineno, $tag); + parent::__construct(['body' => $body], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void { $compiler ->addDebugInfo($this) - ->write(\sprintf("public function block_%s(\$context, array \$blocks = [])\n", $this->getAttribute('name')), "{\n") + ->write("/**\n") + ->write(" * @return iterable\n") + ->write(" */\n") + ->write(\sprintf("public function block_%s(array \$context, array \$blocks = []): iterable\n", $this->getAttribute('name')), "{\n") ->indent() ->write("\$macros = \$this->macros;\n") ; $compiler ->subcompile($this->getNode('body')) - ->write("return; yield '';\n") // needed when body doesn't yield anything + ->write("yield from [];\n") ->outdent() ->write("}\n\n") ; diff --git a/includes/lib/Twig/Node/BlockReferenceNode.php b/includes/lib/Twig/Node/BlockReferenceNode.php index 23c73ea..7c313a0 100644 --- a/includes/lib/Twig/Node/BlockReferenceNode.php +++ b/includes/lib/Twig/Node/BlockReferenceNode.php @@ -23,9 +23,9 @@ use Twig\Compiler; #[YieldReady] class BlockReferenceNode extends Node implements NodeOutputInterface { - public function __construct(string $name, int $lineno, ?string $tag = null) + public function __construct(string $name, int $lineno) { - parent::__construct([], ['name' => $name], $lineno, $tag); + parent::__construct([], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/CaptureNode.php b/includes/lib/Twig/Node/CaptureNode.php index b1cb357..3b7f0b6 100644 --- a/includes/lib/Twig/Node/CaptureNode.php +++ b/includes/lib/Twig/Node/CaptureNode.php @@ -22,9 +22,9 @@ use Twig\Compiler; #[YieldReady] class CaptureNode extends Node { - public function __construct(Node $body, int $lineno, ?string $tag = null) + public function __construct(Node $body, int $lineno) { - parent::__construct(['body' => $body], ['raw' => false], $lineno, $tag); + parent::__construct(['body' => $body], ['raw' => false], $lineno); } public function compile(Compiler $compiler): void @@ -39,7 +39,7 @@ class CaptureNode extends Node ->raw("(function () use (&\$context, \$macros, \$blocks) {\n") ->indent() ->subcompile($this->getNode('body')) - ->write("return; yield '';\n") + ->write("yield from [];\n") ->outdent() ->write('})()') ; diff --git a/includes/lib/Twig/Node/CheckToStringNode.php b/includes/lib/Twig/Node/CheckToStringNode.php index 81fb924..937240c 100644 --- a/includes/lib/Twig/Node/CheckToStringNode.php +++ b/includes/lib/Twig/Node/CheckToStringNode.php @@ -30,7 +30,7 @@ class CheckToStringNode extends AbstractExpression { public function __construct(AbstractExpression $expr) { - parent::__construct(['expr' => $expr], [], $expr->getTemplateLine(), $expr->getNodeTag()); + parent::__construct(['expr' => $expr], [], $expr->getTemplateLine()); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/DeprecatedNode.php b/includes/lib/Twig/Node/DeprecatedNode.php index afeb833..0772adf 100644 --- a/includes/lib/Twig/Node/DeprecatedNode.php +++ b/includes/lib/Twig/Node/DeprecatedNode.php @@ -24,9 +24,9 @@ use Twig\Node\Expression\ConstantExpression; #[YieldReady] class DeprecatedNode extends Node { - public function __construct(AbstractExpression $expr, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, int $lineno) { - parent::__construct(['expr' => $expr], [], $lineno, $tag); + parent::__construct(['expr' => $expr], [], $lineno); } public function compile(Compiler $compiler): void @@ -65,7 +65,7 @@ class DeprecatedNode extends Node } $compiler - ->raw(".") + ->raw('.') ->string(\sprintf(' in "%s" at line %d.', $this->getTemplateName(), $this->getTemplateLine())) ->raw(");\n") ; diff --git a/includes/lib/Twig/Node/DoNode.php b/includes/lib/Twig/Node/DoNode.php index 445016a..1593fd0 100644 --- a/includes/lib/Twig/Node/DoNode.php +++ b/includes/lib/Twig/Node/DoNode.php @@ -23,9 +23,9 @@ use Twig\Node\Expression\AbstractExpression; #[YieldReady] class DoNode extends Node { - public function __construct(AbstractExpression $expr, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, int $lineno) { - parent::__construct(['expr' => $expr], [], $lineno, $tag); + parent::__construct(['expr' => $expr], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/EmbedNode.php b/includes/lib/Twig/Node/EmbedNode.php index 5455094..597f95e 100644 --- a/includes/lib/Twig/Node/EmbedNode.php +++ b/includes/lib/Twig/Node/EmbedNode.php @@ -25,18 +25,18 @@ use Twig\Node\Expression\ConstantExpression; class EmbedNode extends IncludeNode { // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module) - public function __construct(string $name, int $index, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, ?string $tag = null) + public function __construct(string $name, int $index, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno) { - parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); + parent::__construct(new ConstantExpression('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno); $this->setAttribute('name', $name); $this->setAttribute('index', $index); } - protected function addGetTemplate(Compiler $compiler): void + protected function addGetTemplate(Compiler $compiler, string $template = ''): void { $compiler - ->write('$this->loadTemplate(') + ->raw('$this->loadTemplate(') ->string($this->getAttribute('name')) ->raw(', ') ->repr($this->getTemplateName()) @@ -46,5 +46,11 @@ class EmbedNode extends IncludeNode ->string($this->getAttribute('index')) ->raw(')') ; + if ($this->getAttribute('ignore_missing')) { + $compiler + ->raw(";\n") + ->write(\sprintf("\$%s->getParent(\$context);\n", $template)) + ; + } } } diff --git a/includes/lib/Twig/Node/EmptyNode.php b/includes/lib/Twig/Node/EmptyNode.php new file mode 100644 index 0000000..fd4717f --- /dev/null +++ b/includes/lib/Twig/Node/EmptyNode.php @@ -0,0 +1,33 @@ + + */ +#[YieldReady] +final class EmptyNode extends Node +{ + public function __construct(int $lineno = 0) + { + parent::__construct([], [], $lineno); + } + + public function setNode(string $name, Node $node): void + { + throw new \LogicException('EmptyNode cannot have children.'); + } +} diff --git a/includes/lib/Twig/Node/Expression/AbstractExpression.php b/includes/lib/Twig/Node/Expression/AbstractExpression.php index 1692f56..22d8617 100644 --- a/includes/lib/Twig/Node/Expression/AbstractExpression.php +++ b/includes/lib/Twig/Node/Expression/AbstractExpression.php @@ -25,4 +25,19 @@ abstract class AbstractExpression extends Node { return $this->hasAttribute('is_generator') && $this->getAttribute('is_generator'); } + + /** + * @return static + */ + public function setExplicitParentheses(): self + { + $this->setAttribute('with_parentheses', true); + + return $this; + } + + public function hasExplicitParentheses(): bool + { + return $this->hasAttribute('with_parentheses') && $this->getAttribute('with_parentheses'); + } } diff --git a/includes/lib/Twig/Node/Expression/ArrayExpression.php b/includes/lib/Twig/Node/Expression/ArrayExpression.php index 5f8b0f6..9769b71 100644 --- a/includes/lib/Twig/Node/Expression/ArrayExpression.php +++ b/includes/lib/Twig/Node/Expression/ArrayExpression.php @@ -12,6 +12,7 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Unary\StringCastUnary; class ArrayExpression extends AbstractExpression { @@ -97,7 +98,17 @@ class ArrayExpression extends AbstractExpression $compiler->raw('...')->subcompile($pair['value']); ++$nextIndex; } else { - $key = $pair['key'] instanceof ConstantExpression ? $pair['key']->getAttribute('value') : null; + $key = null; + if ($pair['key'] instanceof NameExpression) { + $pair['key'] = new StringCastUnary($pair['key'], $pair['key']->getTemplateLine()); + } + if ($pair['key'] instanceof TempNameExpression) { + $key = $pair['key']->getAttribute('name'); + $pair['key'] = new ConstantExpression($key, $pair['key']->getTemplateLine()); + } + if ($pair['key'] instanceof ConstantExpression) { + $key = $pair['key']->getAttribute('value'); + } if ($nextIndex !== $key) { if (\is_int($key)) { diff --git a/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php b/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php index eaad03c..2bae4ed 100644 --- a/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php +++ b/includes/lib/Twig/Node/Expression/ArrowFunctionExpression.php @@ -21,9 +21,9 @@ use Twig\Node\Node; */ class ArrowFunctionExpression extends AbstractExpression { - public function __construct(AbstractExpression $expr, Node $names, $lineno, $tag = null) + public function __construct(AbstractExpression $expr, Node $names, $lineno) { - parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno, $tag); + parent::__construct(['expr' => $expr, 'names' => $names], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/AssignNameExpression.php b/includes/lib/Twig/Node/Expression/AssignNameExpression.php index 7dd1bc4..c2cbb8e 100644 --- a/includes/lib/Twig/Node/Expression/AssignNameExpression.php +++ b/includes/lib/Twig/Node/Expression/AssignNameExpression.php @@ -13,9 +13,25 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Error\SyntaxError; +use Twig\Node\Expression\Variable\AssignContextVariable; class AssignNameExpression extends NameExpression { + public function __construct(string $name, int $lineno) + { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, AssignContextVariable::class); + } + + // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded + if (\in_array(strtolower($name), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno); + } + + parent::__construct($name, $lineno); + } + public function compile(Compiler $compiler): void { $compiler diff --git a/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php b/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php index c424e5c..0953027 100644 --- a/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php +++ b/includes/lib/Twig/Node/Expression/Binary/AbstractBinary.php @@ -18,8 +18,19 @@ use Twig\Node\Node; abstract class AbstractBinary extends AbstractExpression { + /** + * @param AbstractExpression $left + * @param AbstractExpression $right + */ public function __construct(Node $left, Node $right, int $lineno) { + if (!$left instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($left)); + } + if (!$right instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($right)); + } + parent::__construct(['left' => $left, 'right' => $right], [], $lineno); } diff --git a/includes/lib/Twig/Node/Expression/Binary/ElvisBinary.php b/includes/lib/Twig/Node/Expression/Binary/ElvisBinary.php new file mode 100644 index 0000000..205d1ff --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Binary/ElvisBinary.php @@ -0,0 +1,50 @@ +setNode('test', clone $left); + $left->setAttribute('always_defined', true); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('((') + ->subcompile($this->getNode('test')) + ->raw(') ? (') + ->subcompile($this->getNode('left')) + ->raw(') : (') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('?:'); + } + + public function getOperandNamesToEscape(): array + { + return ['left', 'right']; + } +} diff --git a/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php b/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php index 4669044..0a523c2 100644 --- a/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php +++ b/includes/lib/Twig/Node/Expression/Binary/MatchesBinary.php @@ -12,9 +12,27 @@ namespace Twig\Node\Expression\Binary; use Twig\Compiler; +use Twig\Error\SyntaxError; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Node; class MatchesBinary extends AbstractBinary { + public function __construct(Node $left, Node $right, int $lineno) + { + if ($right instanceof ConstantExpression) { + $regexp = $right->getAttribute('value'); + set_error_handler(static fn ($t, $m) => throw new SyntaxError(\sprintf('Regexp "%s" passed to "matches" is not valid: %s.', $regexp, substr($m, 14)), $lineno)); + try { + preg_match($regexp, ''); + } finally { + restore_error_handler(); + } + } + + parent::__construct($left, $right, $lineno); + } + public function compile(Compiler $compiler): void { $compiler diff --git a/includes/lib/Twig/Node/Expression/Binary/NullCoalesceBinary.php b/includes/lib/Twig/Node/Expression/Binary/NullCoalesceBinary.php new file mode 100644 index 0000000..15b6e8e --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Binary/NullCoalesceBinary.php @@ -0,0 +1,83 @@ +getTemplateLine()); + // for "block()", we don't need the null test as the return value is always a string + if (!$left instanceof BlockReferenceExpression) { + $test = new AndBinary( + $test, + new NotUnary(new NullTest($left, new TwigTest('null'), new EmptyNode(), $left->getTemplateLine()), $left->getTemplateLine()), + $left->getTemplateLine(), + ); + } + + $this->setNode('test', $test); + } else { + $left->setAttribute('always_defined', true); + } + } + + public function compile(Compiler $compiler): void + { + /* + * This optimizes only one case. PHP 7 also supports more complex expressions + * that can return null. So, for instance, if log is defined, log("foo") ?? "..." works, + * but log($a["foo"]) ?? "..." does not if $a["foo"] is not defined. More advanced + * cases might be implemented as an optimizer node visitor, but has not been done + * as benefits are probably not worth the added complexity. + */ + if ($this->hasNode('test')) { + $compiler + ->raw('((') + ->subcompile($this->getNode('test')) + ->raw(') ? (') + ->subcompile($this->getNode('left')) + ->raw(') : (') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + + return; + } + + parent::compile($compiler); + } + + public function operator(Compiler $compiler): Compiler + { + return $compiler->raw('??'); + } + + public function getOperandNamesToEscape(): array + { + return $this->hasNode('test') ? ['left', 'right'] : ['right']; + } +} diff --git a/includes/lib/Twig/Node/Expression/Binary/XorBinary.php b/includes/lib/Twig/Node/Expression/Binary/XorBinary.php new file mode 100644 index 0000000..d8ccd78 --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Binary/XorBinary.php @@ -0,0 +1,23 @@ +raw('xor'); + } +} diff --git a/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php b/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php index 6293822..a5a3cee 100644 --- a/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php +++ b/includes/lib/Twig/Node/Expression/BlockReferenceExpression.php @@ -22,14 +22,21 @@ use Twig\Node\Node; */ class BlockReferenceExpression extends AbstractExpression { - public function __construct(Node $name, ?Node $template, int $lineno, ?string $tag = null) + /** + * @param AbstractExpression $name + */ + public function __construct(Node $name, ?Node $template, int $lineno) { + if (!$name instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($name)); + } + $nodes = ['name' => $name]; if (null !== $template) { $nodes['template'] = $template; } - parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno, $tag); + parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/CallExpression.php b/includes/lib/Twig/Node/Expression/CallExpression.php index cd81df4..8e999c7 100644 --- a/includes/lib/Twig/Node/Expression/CallExpression.php +++ b/includes/lib/Twig/Node/Expression/CallExpression.php @@ -15,6 +15,11 @@ use Twig\Compiler; use Twig\Error\SyntaxError; use Twig\Extension\ExtensionInterface; use Twig\Node\Node; +use Twig\TwigCallableInterface; +use Twig\TwigFilter; +use Twig\TwigFunction; +use Twig\TwigTest; +use Twig\Util\CallableArgumentsExtractor; use Twig\Util\ReflectionCallable; abstract class CallExpression extends AbstractExpression @@ -23,12 +28,13 @@ abstract class CallExpression extends AbstractExpression protected function compileCallable(Compiler $compiler) { - $callable = $this->getAttribute('callable'); + $twigCallable = $this->getTwigCallable(); + $callable = $twigCallable->getCallable(); if (\is_string($callable) && !str_contains($callable, '::')) { $compiler->raw($callable); } else { - $rc = $this->reflectCallable($callable); + $rc = $this->reflectCallable($twigCallable); $r = $rc->getReflector(); $callable = $rc->getCallable(); @@ -51,7 +57,7 @@ abstract class CallExpression extends AbstractExpression $compiler->raw(\sprintf('->%s', $callable[1])); } else { - $compiler->raw(\sprintf('$this->env->get%s(\'%s\')->getCallable()', ucfirst($this->getAttribute('type')), $this->getAttribute('name'))); + $compiler->raw(\sprintf('$this->env->get%s(\'%s\')->getCallable()', ucfirst($this->getAttribute('type')), $twigCallable->getDynamicName())); } } @@ -68,12 +74,14 @@ abstract class CallExpression extends AbstractExpression $first = true; - if ($this->hasAttribute('needs_charset') && $this->getAttribute('needs_charset')) { + $twigCallable = $this->getAttribute('twig_callable'); + + if ($twigCallable->needsCharset()) { $compiler->raw('$this->env->getCharset()'); $first = false; } - if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { + if ($twigCallable->needsEnvironment()) { if (!$first) { $compiler->raw(', '); } @@ -81,7 +89,7 @@ abstract class CallExpression extends AbstractExpression $first = false; } - if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { + if ($twigCallable->needsContext()) { if (!$first) { $compiler->raw(', '); } @@ -89,14 +97,12 @@ abstract class CallExpression extends AbstractExpression $first = false; } - if ($this->hasAttribute('arguments')) { - foreach ($this->getAttribute('arguments') as $argument) { - if (!$first) { - $compiler->raw(', '); - } - $compiler->string($argument); - $first = false; + foreach ($twigCallable->getArguments() as $argument) { + if (!$first) { + $compiler->raw(', '); } + $compiler->string($argument); + $first = false; } if ($this->hasNode('node')) { @@ -108,8 +114,7 @@ abstract class CallExpression extends AbstractExpression } if ($this->hasNode('arguments')) { - $callable = $this->getAttribute('callable'); - $arguments = $this->getArguments($callable, $this->getNode('arguments')); + $arguments = (new CallableArgumentsExtractor($this, $this->getTwigCallable()))->extractArguments($this->getNode('arguments')); foreach ($arguments as $node) { if (!$first) { $compiler->raw(', '); @@ -122,8 +127,13 @@ abstract class CallExpression extends AbstractExpression $compiler->raw($isArray ? ']' : ')'); } + /** + * @deprecated since Twig 3.12, use Twig\Util\CallableArgumentsExtractor::getArguments() instead + */ protected function getArguments($callable, $arguments) { + trigger_deprecation('twig/twig', '3.12', 'The "%s()" method is deprecated, use Twig\Util\CallableArgumentsExtractor::getArguments() instead.', __METHOD__); + $callType = $this->getAttribute('type'); $callName = $this->getAttribute('name'); @@ -140,7 +150,7 @@ abstract class CallExpression extends AbstractExpression $parameters[$name] = $node; } - $isVariadic = $this->hasAttribute('is_variadic') && $this->getAttribute('is_variadic'); + $isVariadic = $this->getAttribute('twig_callable')->isVariadic(); if (!$named && !$isVariadic) { return $parameters; } @@ -198,7 +208,7 @@ abstract class CallExpression extends AbstractExpression } elseif ($callableParameter->isDefaultValueAvailable()) { $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1); } elseif ($callableParameter->isOptional()) { - if (empty($parameters)) { + if (!$parameters) { break; } else { $missingArguments[] = $name; @@ -225,7 +235,7 @@ abstract class CallExpression extends AbstractExpression } } - if (!empty($parameters)) { + if ($parameters) { $unknownParameter = null; foreach ($parameters as $parameter) { if ($parameter instanceof Node) { @@ -247,14 +257,21 @@ abstract class CallExpression extends AbstractExpression return $arguments; } + /** + * @deprecated since Twig 3.12 + */ protected function normalizeName(string $name): string { + trigger_deprecation('twig/twig', '3.12', 'The "%s()" method is deprecated.', __METHOD__); + return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name)); } + // To be removed in 4.0 private function getCallableParameters($callable, bool $isVariadic): array { - $rc = $this->reflectCallable($callable); + $twigCallable = $this->getAttribute('twig_callable'); + $rc = $this->reflectCallable($twigCallable); $r = $rc->getReflector(); $callableName = $rc->getName(); @@ -262,20 +279,19 @@ abstract class CallExpression extends AbstractExpression if ($this->hasNode('node')) { array_shift($parameters); } - if ($this->hasAttribute('needs_charset') && $this->getAttribute('needs_charset')) { + if ($twigCallable->needsCharset()) { array_shift($parameters); } - if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { + if ($twigCallable->needsEnvironment()) { array_shift($parameters); } - if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { + if ($twigCallable->needsContext()) { array_shift($parameters); } - if ($this->hasAttribute('arguments') && null !== $this->getAttribute('arguments')) { - foreach ($this->getAttribute('arguments') as $argument) { - array_shift($parameters); - } + foreach ($twigCallable->getArguments() as $argument) { + array_shift($parameters); } + $isPhpVariadic = false; if ($isVariadic) { $argument = end($parameters); @@ -286,19 +302,61 @@ abstract class CallExpression extends AbstractExpression array_pop($parameters); $isPhpVariadic = true; } else { - throw new \LogicException(\sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $this->getAttribute('name'))); + throw new \LogicException(\sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $callableName, $this->getAttribute('type'), $twigCallable->getName())); } } return [$parameters, $isPhpVariadic]; } - private function reflectCallable($callable): ReflectionCallable + private function reflectCallable(TwigCallableInterface $callable): ReflectionCallable { if (!$this->reflector) { - $this->reflector = new ReflectionCallable($callable, $this->getAttribute('type'), $this->getAttribute('name')); + $this->reflector = new ReflectionCallable($callable); } return $this->reflector; } + + /** + * Overrides the Twig callable based on attributes (as potentially, attributes changed between the creation and the compilation of the node). + * + * To be removed in 4.0 and replace by $this->getAttribute('twig_callable'). + */ + private function getTwigCallable(): TwigCallableInterface + { + $current = $this->getAttribute('twig_callable'); + + $this->setAttribute('twig_callable', match ($this->getAttribute('type')) { + 'test' => (new TwigTest( + $this->getAttribute('name'), + $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), + [ + 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), + ], + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), + 'function' => (new TwigFunction( + $this->hasAttribute('name') ? $this->getAttribute('name') : $current->getName(), + $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), + [ + 'needs_environment' => $this->hasAttribute('needs_environment') ? $this->getAttribute('needs_environment') : $current->needsEnvironment(), + 'needs_context' => $this->hasAttribute('needs_context') ? $this->getAttribute('needs_context') : $current->needsContext(), + 'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(), + 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), + ], + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), + 'filter' => (new TwigFilter( + $this->getAttribute('name'), + $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), + [ + 'needs_environment' => $this->hasAttribute('needs_environment') ? $this->getAttribute('needs_environment') : $current->needsEnvironment(), + 'needs_context' => $this->hasAttribute('needs_context') ? $this->getAttribute('needs_context') : $current->needsContext(), + 'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(), + 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), + ], + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), + }); + + return $this->getAttribute('twig_callable'); + } } diff --git a/includes/lib/Twig/Node/Expression/ConditionalExpression.php b/includes/lib/Twig/Node/Expression/ConditionalExpression.php index d7db993..7fe309c 100644 --- a/includes/lib/Twig/Node/Expression/ConditionalExpression.php +++ b/includes/lib/Twig/Node/Expression/ConditionalExpression.php @@ -13,11 +13,14 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Ternary\ConditionalTernary; -class ConditionalExpression extends AbstractExpression +class ConditionalExpression extends AbstractExpression implements OperatorEscapeInterface { public function __construct(AbstractExpression $expr1, AbstractExpression $expr2, AbstractExpression $expr3, int $lineno) { + trigger_deprecation('twig/twig', '3.17', \sprintf('"%s" is deprecated; use "%s" instead.', __CLASS__, ConditionalTernary::class)); + parent::__construct(['expr1' => $expr1, 'expr2' => $expr2, 'expr3' => $expr3], [], $lineno); } @@ -42,4 +45,9 @@ class ConditionalExpression extends AbstractExpression ->raw('))'); } } + + public function getOperandNamesToEscape(): array + { + return ['expr2', 'expr3']; + } } diff --git a/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php b/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php index 7eb0ea7..cabd2aa 100644 --- a/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php +++ b/includes/lib/Twig/Node/Expression/Filter/DefaultFilter.php @@ -11,14 +11,20 @@ namespace Twig\Node\Expression\Filter; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; -use Twig\Node\Expression\ConditionalExpression; +use Twig\Extension\CoreExtension; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\GetAttrExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\Ternary\ConditionalTernary; use Twig\Node\Expression\Test\DefinedTest; use Twig\Node\Node; +use Twig\TwigFilter; +use Twig\TwigTest; /** * Returns the value or the default value when it is undefined or empty. @@ -29,20 +35,34 @@ use Twig\Node\Node; */ class DefaultFilter extends FilterExpression { - public function __construct(Node $node, ConstantExpression $filterName, Node $arguments, int $lineno, ?string $tag = null) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno) { - $default = new FilterExpression($node, new ConstantExpression('default', $node->getTemplateLine()), $arguments, $node->getTemplateLine()); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } - if ('default' === $filterName->getAttribute('value') && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { - $test = new DefinedTest(clone $node, 'defined', new Node(), $node->getTemplateLine()); + if ($filter instanceof TwigFilter) { + $name = $filter->getName(); + $default = new FilterExpression($node, $filter, $arguments, $node->getTemplateLine()); + } else { + $name = $filter->getAttribute('value'); + $default = new FilterExpression($node, new TwigFilter('default', [CoreExtension::class, 'default']), $arguments, $node->getTemplateLine()); + } + + if ('default' === $name && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { + $test = new DefinedTest(clone $node, new TwigTest('defined'), new EmptyNode(), $node->getTemplateLine()); $false = \count($arguments) ? $arguments->getNode('0') : new ConstantExpression('', $node->getTemplateLine()); - $node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine()); + $node = new ConditionalTernary($test, $default, $false, $node->getTemplateLine()); } else { $node = $default; } - parent::__construct($node, $filterName, $arguments, $lineno, $tag); + parent::__construct($node, $filter, $arguments, $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/Filter/RawFilter.php b/includes/lib/Twig/Node/Expression/Filter/RawFilter.php index 5849423..0a49e7c 100644 --- a/includes/lib/Twig/Node/Expression/Filter/RawFilter.php +++ b/includes/lib/Twig/Node/Expression/Filter/RawFilter.php @@ -11,26 +11,31 @@ namespace Twig\Node\Expression\Filter; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; use Twig\Node\Node; +use Twig\TwigFilter; /** * @author Fabien Potencier */ class RawFilter extends FilterExpression { - public function __construct(Node $node, ?ConstantExpression $filterName = null, ?Node $arguments = null, int $lineno = 0, ?string $tag = null) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigFilter|ConstantExpression|null $filter = null, ?Node $arguments = null, int $lineno = 0) { - if (null === $filterName) { - $filterName = new ConstantExpression('raw', $node->getTemplateLine()); - } - if (null === $arguments) { - $arguments = new Node(); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); } - parent::__construct($node, $filterName, $arguments, $lineno ?: $node->getTemplateLine(), $tag ?: $node->getNodeTag()); + parent::__construct($node, $filter ?: new TwigFilter('raw', null, ['is_safe' => ['all']]), $arguments ?: new EmptyNode(), $lineno ?: $node->getTemplateLine()); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/FilterExpression.php b/includes/lib/Twig/Node/Expression/FilterExpression.php index 251870a..6e0c486 100644 --- a/includes/lib/Twig/Node/Expression/FilterExpression.php +++ b/includes/lib/Twig/Node/Expression/FilterExpression.php @@ -12,22 +12,56 @@ namespace Twig\Node\Expression; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; +use Twig\Node\NameDeprecation; use Twig\Node\Node; +use Twig\TwigFilter; class FilterExpression extends CallExpression { - public function __construct(Node $node, ConstantExpression $filterName, Node $arguments, int $lineno, ?string $tag = null) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno) { - parent::__construct(['node' => $node, 'filter' => $filterName, 'arguments' => $arguments], ['name' => $filterName->getAttribute('value'), 'type' => 'filter'], $lineno, $tag); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + + if ($filter instanceof TwigFilter) { + $name = $filter->getName(); + $filterName = new ConstantExpression($name, $lineno); + } else { + $name = $filter->getAttribute('value'); + $filterName = $filter; + trigger_deprecation('twig/twig', '3.12', 'Not passing an instance of "TwigFilter" when creating a "%s" filter of type "%s" is deprecated.', $name, static::class); + } + + parent::__construct(['node' => $node, 'filter' => $filterName, 'arguments' => $arguments], ['name' => $name, 'type' => 'filter'], $lineno); + + if ($filter instanceof TwigFilter) { + $this->setAttribute('twig_callable', $filter); + } + + $this->deprecateNode('filter', new NameDeprecation('twig/twig', '3.12')); + + $this->deprecateAttribute('needs_charset', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_environment', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_context', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('arguments', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('callable', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('is_variadic', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('dynamic_name', new NameDeprecation('twig/twig', '3.12')); } public function compile(Compiler $compiler): void { - $name = $this->getNode('filter')->getAttribute('value'); + $name = $this->getNode('filter', false)->getAttribute('value'); if ($name !== $this->getAttribute('name')) { trigger_deprecation('twig/twig', '3.11', 'Changing the value of a "filter" node in a NodeVisitor class is not supported anymore.'); - $this->setAttribute('name', $name); + $this->removeAttribute('twig_callable'); } if ('raw' === $name) { trigger_deprecation('twig/twig', '3.11', 'Creating the "raw" filter via "FilterExpression" is deprecated; use "RawFilter" instead.'); @@ -36,14 +70,10 @@ class FilterExpression extends CallExpression return; } - $filter = $compiler->getEnvironment()->getFilter($name); - $this->setAttribute('needs_charset', $filter->needsCharset()); - $this->setAttribute('needs_environment', $filter->needsEnvironment()); - $this->setAttribute('needs_context', $filter->needsContext()); - $this->setAttribute('arguments', $filter->getArguments()); - $this->setAttribute('callable', $filter->getCallable()); - $this->setAttribute('is_variadic', $filter->isVariadic()); + if (!$this->hasAttribute('twig_callable')) { + $this->setAttribute('twig_callable', $compiler->getEnvironment()->getFilter($name)); + } $this->compileCallable($compiler); } diff --git a/includes/lib/Twig/Node/Expression/FunctionExpression.php b/includes/lib/Twig/Node/Expression/FunctionExpression.php index ef99c40..6215c6a 100644 --- a/includes/lib/Twig/Node/Expression/FunctionExpression.php +++ b/includes/lib/Twig/Node/Expression/FunctionExpression.php @@ -11,32 +11,57 @@ namespace Twig\Node\Expression; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; -use Twig\Extension\CoreExtension; +use Twig\Node\NameDeprecation; use Twig\Node\Node; +use Twig\TwigFunction; class FunctionExpression extends CallExpression { - public function __construct(string $name, Node $arguments, int $lineno) + #[FirstClassTwigCallableReady] + public function __construct(TwigFunction|string $function, Node $arguments, int $lineno) { + if ($function instanceof TwigFunction) { + $name = $function->getName(); + } else { + $name = $function; + trigger_deprecation('twig/twig', '3.12', 'Not passing an instance of "TwigFunction" when creating a "%s" function of type "%s" is deprecated.', $name, static::class); + } + parent::__construct(['arguments' => $arguments], ['name' => $name, 'type' => 'function', 'is_defined_test' => false], $lineno); + + if ($function instanceof TwigFunction) { + $this->setAttribute('twig_callable', $function); + } + + $this->deprecateAttribute('needs_charset', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_environment', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('needs_context', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('arguments', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('callable', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('is_variadic', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('dynamic_name', new NameDeprecation('twig/twig', '3.12')); } public function compile(Compiler $compiler) { $name = $this->getAttribute('name'); - $function = $compiler->getEnvironment()->getFunction($name); - - $this->setAttribute('needs_charset', $function->needsCharset()); - $this->setAttribute('needs_environment', $function->needsEnvironment()); - $this->setAttribute('needs_context', $function->needsContext()); - $this->setAttribute('arguments', $function->getArguments()); - $callable = $function->getCallable(); - if ('constant' === $name && $this->getAttribute('is_defined_test')) { - $callable = [CoreExtension::class, 'constantIsDefined']; + if ($this->hasAttribute('twig_callable')) { + $name = $this->getAttribute('twig_callable')->getName(); + if ($name !== $this->getAttribute('name')) { + trigger_deprecation('twig/twig', '3.12', 'Changing the value of a "function" node in a NodeVisitor class is not supported anymore.'); + $this->removeAttribute('twig_callable'); + } + } + + if (!$this->hasAttribute('twig_callable')) { + $this->setAttribute('twig_callable', $compiler->getEnvironment()->getFunction($name)); + } + + if ('constant' === $name && $this->getAttribute('is_defined_test')) { + $this->getNode('arguments')->setNode('checkDefined', new ConstantExpression(true, $this->getTemplateLine())); } - $this->setAttribute('callable', $callable); - $this->setAttribute('is_variadic', $function->isVariadic()); $this->compileCallable($compiler); } diff --git a/includes/lib/Twig/Node/Expression/FunctionNode/EnumCasesFunction.php b/includes/lib/Twig/Node/Expression/FunctionNode/EnumCasesFunction.php new file mode 100644 index 0000000..7e5c25f --- /dev/null +++ b/includes/lib/Twig/Node/Expression/FunctionNode/EnumCasesFunction.php @@ -0,0 +1,41 @@ +getNode('arguments'); + if ($arguments->hasNode('enum')) { + $firstArgument = $arguments->getNode('enum'); + } elseif ($arguments->hasNode('0')) { + $firstArgument = $arguments->getNode('0'); + } else { + $firstArgument = null; + } + + if (!$firstArgument instanceof ConstantExpression || 1 !== \count($arguments)) { + parent::compile($compiler); + + return; + } + + $value = $firstArgument->getAttribute('value'); + + if (!\is_string($value)) { + throw new SyntaxError('The first argument of the "enum_cases" function must be a string.', $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!enum_exists($value)) { + throw new SyntaxError(\sprintf('The first argument of the "enum_cases" function must be the name of an enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + $compiler->raw(\sprintf('%s::cases()', $value)); + } +} diff --git a/includes/lib/Twig/Node/Expression/FunctionNode/EnumFunction.php b/includes/lib/Twig/Node/Expression/FunctionNode/EnumFunction.php new file mode 100644 index 0000000..1f8b0ec --- /dev/null +++ b/includes/lib/Twig/Node/Expression/FunctionNode/EnumFunction.php @@ -0,0 +1,45 @@ +getNode('arguments'); + if ($arguments->hasNode('enum')) { + $firstArgument = $arguments->getNode('enum'); + } elseif ($arguments->hasNode('0')) { + $firstArgument = $arguments->getNode('0'); + } else { + $firstArgument = null; + } + + if (!$firstArgument instanceof ConstantExpression || 1 !== \count($arguments)) { + parent::compile($compiler); + + return; + } + + $value = $firstArgument->getAttribute('value'); + + if (!\is_string($value)) { + throw new SyntaxError('The first argument of the "enum" function must be a string.', $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!enum_exists($value)) { + throw new SyntaxError(\sprintf('The first argument of the "enum" function must be the name of an enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!$cases = $value::cases()) { + throw new SyntaxError(\sprintf('The first argument of the "enum" function must be a non-empty enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + $compiler->raw(\sprintf('%s::%s', $value, $cases[0]->name)); + } +} diff --git a/includes/lib/Twig/Node/Expression/GetAttrExpression.php b/includes/lib/Twig/Node/Expression/GetAttrExpression.php index 29a446b..0d4b96b 100644 --- a/includes/lib/Twig/Node/Expression/GetAttrExpression.php +++ b/includes/lib/Twig/Node/Expression/GetAttrExpression.php @@ -18,6 +18,9 @@ use Twig\Template; class GetAttrExpression extends AbstractExpression { + /** + * @param ArrayExpression|NameExpression|null $arguments + */ public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno) { $nodes = ['node' => $node, 'attribute' => $attribute]; @@ -25,12 +28,17 @@ class GetAttrExpression extends AbstractExpression $nodes['arguments'] = $arguments; } + if ($arguments && !$arguments instanceof ArrayExpression && !$arguments instanceof NameExpression) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class)); + } + parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'optimizable' => true], $lineno); } public function compile(Compiler $compiler): void { $env = $compiler->getEnvironment(); + $arrayAccessSandbox = false; // optimize array calls if ( @@ -44,17 +52,35 @@ class GetAttrExpression extends AbstractExpression ->raw('(('.$var.' = ') ->subcompile($this->getNode('node')) ->raw(') && is_array(') - ->raw($var) + ->raw($var); + + if (!$env->hasExtension(SandboxExtension::class)) { + $compiler + ->raw(') || ') + ->raw($var) + ->raw(' instanceof ArrayAccess ? (') + ->raw($var) + ->raw('[') + ->subcompile($this->getNode('attribute')) + ->raw('] ?? null) : null)') + ; + + return; + } + + $arrayAccessSandbox = true; + + $compiler ->raw(') || ') ->raw($var) - ->raw(' instanceof ArrayAccess ? (') + ->raw(' instanceof ArrayAccess && in_array(') + ->raw($var.'::class') + ->raw(', CoreExtension::ARRAY_LIKE_CLASSES, true) ? (') ->raw($var) ->raw('[') ->subcompile($this->getNode('attribute')) - ->raw('] ?? null) : null)') + ->raw('] ?? null) : ') ; - - return; } $compiler->raw('CoreExtension::getAttribute($this->env, $this->source, '); @@ -83,5 +109,9 @@ class GetAttrExpression extends AbstractExpression ->raw(', ')->repr($this->getNode('node')->getTemplateLine()) ->raw(')') ; + + if ($arrayAccessSandbox) { + $compiler->raw(')'); + } } } diff --git a/includes/lib/Twig/Node/Expression/InlinePrint.php b/includes/lib/Twig/Node/Expression/InlinePrint.php index 0a3c2e4..5509f79 100644 --- a/includes/lib/Twig/Node/Expression/InlinePrint.php +++ b/includes/lib/Twig/Node/Expression/InlinePrint.php @@ -19,8 +19,13 @@ use Twig\Node\Node; */ final class InlinePrint extends AbstractExpression { + /** + * @param AbstractExpression $node + */ public function __construct(Node $node, int $lineno) { + trigger_deprecation('twig/twig', '3.16', \sprintf('The "%s" class is deprecated with no replacement.', static::class)); + parent::__construct(['node' => $node], [], $lineno); } diff --git a/includes/lib/Twig/Node/Expression/MacroReferenceExpression.php b/includes/lib/Twig/Node/Expression/MacroReferenceExpression.php new file mode 100644 index 0000000..abe99aa --- /dev/null +++ b/includes/lib/Twig/Node/Expression/MacroReferenceExpression.php @@ -0,0 +1,56 @@ + + */ +class MacroReferenceExpression extends AbstractExpression +{ + public function __construct(TemplateVariable $template, string $name, AbstractExpression $arguments, int $lineno) + { + parent::__construct(['template' => $template, 'arguments' => $arguments], ['name' => $name, 'is_defined_test' => false], $lineno); + } + + public function compile(Compiler $compiler): void + { + if ($this->getAttribute('is_defined_test')) { + $compiler + ->subcompile($this->getNode('template')) + ->raw('->hasMacro(') + ->repr($this->getAttribute('name')) + ->raw(', $context') + ->raw(')') + ; + + return; + } + + $compiler + ->subcompile($this->getNode('template')) + ->raw('->getTemplateForMacro(') + ->repr($this->getAttribute('name')) + ->raw(', $context, ') + ->repr($this->getTemplateLine()) + ->raw(', $this->getSourceContext())') + ->raw(\sprintf('->%s', $this->getAttribute('name'))) + ->raw('(...') + ->subcompile($this->getNode('arguments')) + ->raw(')') + ; + } +} diff --git a/includes/lib/Twig/Node/Expression/MethodCallExpression.php b/includes/lib/Twig/Node/Expression/MethodCallExpression.php index 01806f9..9aede82 100644 --- a/includes/lib/Twig/Node/Expression/MethodCallExpression.php +++ b/includes/lib/Twig/Node/Expression/MethodCallExpression.php @@ -17,6 +17,8 @@ class MethodCallExpression extends AbstractExpression { public function __construct(AbstractExpression $node, string $method, ArrayExpression $arguments, int $lineno) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', __CLASS__, MacroReferenceExpression::class); + parent::__construct(['node' => $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false, 'is_defined_test' => false], $lineno); if ($node instanceof NameExpression) { @@ -43,21 +45,9 @@ class MethodCallExpression extends AbstractExpression ->repr($this->getNode('node')->getAttribute('name')) ->raw('], ') ->repr($this->getAttribute('method')) - ->raw(', [') - ; - $first = true; - /** @var ArrayExpression */ - $args = $this->getNode('arguments'); - foreach ($args->getKeyValuePairs() as $pair) { - if (!$first) { - $compiler->raw(', '); - } - $first = false; - - $compiler->subcompile($pair['value']); - } - $compiler - ->raw('], ') + ->raw(', ') + ->subcompile($this->getNode('arguments')) + ->raw(', ') ->repr($this->getTemplateLine()) ->raw(', $context, $this->getSourceContext())'); } diff --git a/includes/lib/Twig/Node/Expression/NameExpression.php b/includes/lib/Twig/Node/Expression/NameExpression.php index 286aa5a..78ae51f 100644 --- a/includes/lib/Twig/Node/Expression/NameExpression.php +++ b/includes/lib/Twig/Node/Expression/NameExpression.php @@ -13,6 +13,7 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Variable\ContextVariable; class NameExpression extends AbstractExpression { @@ -24,6 +25,10 @@ class NameExpression extends AbstractExpression public function __construct(string $name, int $lineno) { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, ContextVariable::class); + } + parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno); } diff --git a/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php b/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php index a72bc4f..c07bb36 100644 --- a/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php +++ b/includes/lib/Twig/Node/Expression/NullCoalesceExpression.php @@ -12,22 +12,38 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\EmptyNode; use Twig\Node\Expression\Binary\AndBinary; +use Twig\Node\Expression\Binary\NullCoalesceBinary; use Twig\Node\Expression\Test\DefinedTest; use Twig\Node\Expression\Test\NullTest; use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Node; +use Twig\TwigTest; class NullCoalesceExpression extends ConditionalExpression { + /** + * @param AbstractExpression $left + * @param AbstractExpression $right + */ public function __construct(Node $left, Node $right, int $lineno) { - $test = new DefinedTest(clone $left, 'defined', new Node(), $left->getTemplateLine()); + trigger_deprecation('twig/twig', '3.17', \sprintf('"%s" is deprecated; use "%s" instead.', __CLASS__, NullCoalesceBinary::class)); + + if (!$left instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($left)); + } + if (!$right instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($right)); + } + + $test = new DefinedTest(clone $left, new TwigTest('defined'), new EmptyNode(), $left->getTemplateLine()); // for "block()", we don't need the null test as the return value is always a string if (!$left instanceof BlockReferenceExpression) { $test = new AndBinary( $test, - new NotUnary(new NullTest($left, 'null', new Node(), $left->getTemplateLine()), $left->getTemplateLine()), + new NotUnary(new NullTest($left, new TwigTest('null'), new EmptyNode(), $left->getTemplateLine()), $left->getTemplateLine()), $left->getTemplateLine() ); } diff --git a/includes/lib/Twig/Node/Expression/OperatorEscapeInterface.php b/includes/lib/Twig/Node/Expression/OperatorEscapeInterface.php new file mode 100644 index 0000000..06db6c6 --- /dev/null +++ b/includes/lib/Twig/Node/Expression/OperatorEscapeInterface.php @@ -0,0 +1,25 @@ + 1. + * + * @author Fabien Potencier + */ +interface OperatorEscapeInterface +{ + /** + * @return string[] + */ + public function getOperandNamesToEscape(): array; +} diff --git a/includes/lib/Twig/Node/Expression/ParentExpression.php b/includes/lib/Twig/Node/Expression/ParentExpression.php index 59d833a..22fe38f 100644 --- a/includes/lib/Twig/Node/Expression/ParentExpression.php +++ b/includes/lib/Twig/Node/Expression/ParentExpression.php @@ -21,9 +21,9 @@ use Twig\Compiler; */ class ParentExpression extends AbstractExpression { - public function __construct(string $name, int $lineno, ?string $tag = null) + public function __construct(string $name, int $lineno) { - parent::__construct([], ['output' => false, 'name' => $name], $lineno, $tag); + parent::__construct([], ['output' => false, 'name' => $name], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/Expression/TempNameExpression.php b/includes/lib/Twig/Node/Expression/TempNameExpression.php index 004c704..8cb66a1 100644 --- a/includes/lib/Twig/Node/Expression/TempNameExpression.php +++ b/includes/lib/Twig/Node/Expression/TempNameExpression.php @@ -12,20 +12,38 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Error\SyntaxError; class TempNameExpression extends AbstractExpression { - public function __construct(string $name, int $lineno) + public const RESERVED_NAMES = ['varargs', 'context', 'macros', 'blocks', 'this']; + + public function __construct(string|int|null $name, int $lineno) { + // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded + if ($name && \in_array(strtolower($name), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno); + } + + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated.', self::class); + } + + if (null !== $name && (\is_int($name) || ctype_digit($name))) { + $name = (int) $name; + } elseif (\in_array($name, self::RESERVED_NAMES)) { + $name = "\u{035C}".$name; + } + parent::__construct([], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->raw('$_') - ->raw($this->getAttribute('name')) - ->raw('_') - ; + if (null === $this->getAttribute('name')) { + $this->setAttribute('name', $compiler->getVarName()); + } + + $compiler->raw('$'.$this->getAttribute('name')); } } diff --git a/includes/lib/Twig/Node/Expression/Ternary/ConditionalTernary.php b/includes/lib/Twig/Node/Expression/Ternary/ConditionalTernary.php new file mode 100644 index 0000000..627da7a --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Ternary/ConditionalTernary.php @@ -0,0 +1,42 @@ + $test, 'left' => $left, 'right' => $right], [], $lineno); + } + + public function compile(Compiler $compiler): void + { + $compiler + ->raw('((') + ->subcompile($this->getNode('test')) + ->raw(') ? (') + ->subcompile($this->getNode('left')) + ->raw(') : (') + ->subcompile($this->getNode('right')) + ->raw('))') + ; + } + + public function getOperandNamesToEscape(): array + { + return ['left', 'right']; + } +} diff --git a/includes/lib/Twig/Node/Expression/Test/DefinedTest.php b/includes/lib/Twig/Node/Expression/Test/DefinedTest.php index 3953bbb..7a0150d 100644 --- a/includes/lib/Twig/Node/Expression/Test/DefinedTest.php +++ b/includes/lib/Twig/Node/Expression/Test/DefinedTest.php @@ -11,17 +11,21 @@ namespace Twig\Node\Expression\Test; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; use Twig\Error\SyntaxError; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\BlockReferenceExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\MethodCallExpression; use Twig\Node\Expression\NameExpression; use Twig\Node\Expression\TestExpression; use Twig\Node\Node; +use Twig\TwigTest; /** * Checks if a variable is defined in the current context. @@ -35,8 +39,16 @@ use Twig\Node\Node; */ class DefinedTest extends TestExpression { - public function __construct(Node $node, string $name, ?Node $arguments, int $lineno) + /** + * @param AbstractExpression $node + */ + #[FirstClassTwigCallableReady] + public function __construct(Node $node, TwigTest|string $name, ?Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + if ($node instanceof NameExpression) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof GetAttrExpression) { @@ -44,6 +56,8 @@ class DefinedTest extends TestExpression $this->changeIgnoreStrictCheck($node); } elseif ($node instanceof BlockReferenceExpression) { $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof MacroReferenceExpression) { + $node->setAttribute('is_defined_test', true); } elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) { @@ -54,6 +68,10 @@ class DefinedTest extends TestExpression throw new SyntaxError('The "defined" test only works with simple variables.', $lineno); } + if (\is_string($name) && 'defined' !== $name) { + trigger_deprecation('twig/twig', '3.12', 'Creating a "DefinedTest" instance with a test name that is not "defined" is deprecated.'); + } + parent::__construct($node, $name, $arguments, $lineno); } diff --git a/includes/lib/Twig/Node/Expression/TestExpression.php b/includes/lib/Twig/Node/Expression/TestExpression.php index 29c5a52..7b9a541 100644 --- a/includes/lib/Twig/Node/Expression/TestExpression.php +++ b/includes/lib/Twig/Node/Expression/TestExpression.php @@ -11,28 +11,62 @@ namespace Twig\Node\Expression; +use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; +use Twig\Node\NameDeprecation; use Twig\Node\Node; +use Twig\TwigTest; class TestExpression extends CallExpression { - public function __construct(Node $node, string $name, ?Node $arguments, int $lineno) + #[FirstClassTwigCallableReady] + /** + * @param AbstractExpression $node + */ + public function __construct(Node $node, string|TwigTest $test, ?Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + $nodes = ['node' => $node]; if (null !== $arguments) { $nodes['arguments'] = $arguments; } + if ($test instanceof TwigTest) { + $name = $test->getName(); + } else { + $name = $test; + trigger_deprecation('twig/twig', '3.12', 'Not passing an instance of "TwigTest" when creating a "%s" test of type "%s" is deprecated.', $name, static::class); + } + parent::__construct($nodes, ['name' => $name, 'type' => 'test'], $lineno); + + if ($test instanceof TwigTest) { + $this->setAttribute('twig_callable', $test); + } + + $this->deprecateAttribute('arguments', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('callable', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('is_variadic', new NameDeprecation('twig/twig', '3.12')); + $this->deprecateAttribute('dynamic_name', new NameDeprecation('twig/twig', '3.12')); } public function compile(Compiler $compiler): void { - $test = $compiler->getEnvironment()->getTest($this->getAttribute('name')); + $name = $this->getAttribute('name'); + if ($this->hasAttribute('twig_callable')) { + $name = $this->getAttribute('twig_callable')->getName(); + if ($name !== $this->getAttribute('name')) { + trigger_deprecation('twig/twig', '3.12', 'Changing the value of a "test" node in a NodeVisitor class is not supported anymore.'); + $this->removeAttribute('twig_callable'); + } + } - $this->setAttribute('arguments', $test->getArguments()); - $this->setAttribute('callable', $test->getCallable()); - $this->setAttribute('is_variadic', $test->isVariadic()); + if (!$this->hasAttribute('twig_callable')) { + $this->setAttribute('twig_callable', $compiler->getEnvironment()->getTest($this->getAttribute('name'))); + } $this->compileCallable($compiler); } diff --git a/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php b/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php index e31e3f8..d4746e7 100644 --- a/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php +++ b/includes/lib/Twig/Node/Expression/Unary/AbstractUnary.php @@ -18,16 +18,30 @@ use Twig\Node\Node; abstract class AbstractUnary extends AbstractExpression { + /** + * @param AbstractExpression $node + */ public function __construct(Node $node, int $lineno) { - parent::__construct(['node' => $node], [], $lineno); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance argument to "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, \get_class($node)); + } + + parent::__construct(['node' => $node], ['with_parentheses' => false], $lineno); } public function compile(Compiler $compiler): void { - $compiler->raw(' '); + if ($this->hasExplicitParentheses()) { + $compiler->raw('('); + } else { + $compiler->raw(' '); + } $this->operator($compiler); $compiler->subcompile($this->getNode('node')); + if ($this->hasExplicitParentheses()) { + $compiler->raw(')'); + } } abstract public function operator(Compiler $compiler): Compiler; diff --git a/includes/lib/Twig/Node/Expression/Unary/SpreadUnary.php b/includes/lib/Twig/Node/Expression/Unary/SpreadUnary.php new file mode 100644 index 0000000..f99072c --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Unary/SpreadUnary.php @@ -0,0 +1,22 @@ +raw('...'); + } +} diff --git a/includes/lib/Twig/Node/Expression/Unary/StringCastUnary.php b/includes/lib/Twig/Node/Expression/Unary/StringCastUnary.php new file mode 100644 index 0000000..87ea17c --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Unary/StringCastUnary.php @@ -0,0 +1,22 @@ +raw('(string)'); + } +} diff --git a/includes/lib/Twig/Node/Expression/Variable/AssignContextVariable.php b/includes/lib/Twig/Node/Expression/Variable/AssignContextVariable.php new file mode 100644 index 0000000..30d8106 --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Variable/AssignContextVariable.php @@ -0,0 +1,18 @@ + $var], ['global' => $global], $var->getTemplateLine()); + } + + public function compile(Compiler $compiler): void + { + /** @var TemplateVariable $var */ + $var = $this->nodes['var']; + + $compiler + ->addDebugInfo($this) + ->write('$macros[') + ->string($var->getName($compiler)) + ->raw('] = ') + ; + + if ($this->getAttribute('global')) { + $compiler + ->raw('$this->macros[') + ->string($var->getName($compiler)) + ->raw('] = ') + ; + } + } +} diff --git a/includes/lib/Twig/Node/Expression/Variable/ContextVariable.php b/includes/lib/Twig/Node/Expression/Variable/ContextVariable.php new file mode 100644 index 0000000..cabc16a --- /dev/null +++ b/includes/lib/Twig/Node/Expression/Variable/ContextVariable.php @@ -0,0 +1,18 @@ +getAttribute('name')) { + $this->setAttribute('name', $compiler->getVarName()); + } + + return $this->getAttribute('name'); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getName($compiler); + + if ('_self' === $name) { + $compiler->raw('$this'); + } else { + $compiler + ->raw('$macros[') + ->string($name) + ->raw(']') + ; + } + } +} diff --git a/includes/lib/Twig/Node/FlushNode.php b/includes/lib/Twig/Node/FlushNode.php index 8a3dde6..ff3bd1c 100644 --- a/includes/lib/Twig/Node/FlushNode.php +++ b/includes/lib/Twig/Node/FlushNode.php @@ -22,16 +22,19 @@ use Twig\Compiler; #[YieldReady] class FlushNode extends Node { - public function __construct(int $lineno, string $tag) + public function __construct(int $lineno) { - parent::__construct([], [], $lineno, $tag); + parent::__construct([], [], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->addDebugInfo($this) - ->write("flush();\n") - ; + $compiler->addDebugInfo($this); + + if ($compiler->getEnvironment()->useYield()) { + $compiler->write("yield '';\n"); + } + + $compiler->write("flush();\n"); } } diff --git a/includes/lib/Twig/Node/ForLoopNode.php b/includes/lib/Twig/Node/ForLoopNode.php index 503687c..1f0a4f3 100644 --- a/includes/lib/Twig/Node/ForLoopNode.php +++ b/includes/lib/Twig/Node/ForLoopNode.php @@ -22,9 +22,9 @@ use Twig\Compiler; #[YieldReady] class ForLoopNode extends Node { - public function __construct(int $lineno, ?string $tag = null) + public function __construct(int $lineno) { - parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno, $tag); + parent::__construct([], ['with_loop' => false, 'ifexpr' => false, 'else' => false], $lineno); } public function compile(Compiler $compiler): void @@ -38,7 +38,7 @@ class ForLoopNode extends Node ->write("++\$context['loop']['index0'];\n") ->write("++\$context['loop']['index'];\n") ->write("\$context['loop']['first'] = false;\n") - ->write("if (isset(\$context['loop']['length'])) {\n") + ->write("if (isset(\$context['loop']['revindex0'], \$context['loop']['revindex'])) {\n") ->indent() ->write("--\$context['loop']['revindex0'];\n") ->write("--\$context['loop']['revindex'];\n") diff --git a/includes/lib/Twig/Node/ForNode.php b/includes/lib/Twig/Node/ForNode.php index 5222cf9..4346afe 100644 --- a/includes/lib/Twig/Node/ForNode.php +++ b/includes/lib/Twig/Node/ForNode.php @@ -15,7 +15,7 @@ namespace Twig\Node; use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Expression\AbstractExpression; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; /** * Represents a for node. @@ -27,16 +27,16 @@ class ForNode extends Node { private $loop; - public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno, ?string $tag = null) + public function __construct(AssignContextVariable $keyTarget, AssignContextVariable $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno) { - $body = new Node([$body, $this->loop = new ForLoopNode($lineno, $tag)]); + $body = new Nodes([$body, $this->loop = new ForLoopNode($lineno)]); $nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body]; if (null !== $else) { $nodes['else'] = $else; } - parent::__construct($nodes, ['with_loop' => true], $lineno, $tag); + parent::__construct($nodes, ['with_loop' => true], $lineno); } public function compile(Compiler $compiler): void @@ -101,7 +101,14 @@ class ForNode extends Node $compiler->write("\$_parent = \$context['_parent'];\n"); // remove some "private" loop variables (needed for nested loops) - $compiler->write('unset($context[\'_seq\'], $context[\'_iterated\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\'], $context[\'loop\']);'."\n"); + $compiler->write('unset($context[\'_seq\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\']'); + if ($this->hasNode('else')) { + $compiler->raw(', $context[\'_iterated\']'); + } + if ($this->getAttribute('with_loop')) { + $compiler->raw(', $context[\'loop\']'); + } + $compiler->raw(");\n"); // keep the values set in the inner context for variables defined in the outer context $compiler->write("\$context = array_intersect_key(\$context, \$_parent) + \$_parent;\n"); diff --git a/includes/lib/Twig/Node/IfNode.php b/includes/lib/Twig/Node/IfNode.php index 1b88330..2af48fa 100644 --- a/includes/lib/Twig/Node/IfNode.php +++ b/includes/lib/Twig/Node/IfNode.php @@ -23,14 +23,14 @@ use Twig\Compiler; #[YieldReady] class IfNode extends Node { - public function __construct(Node $tests, ?Node $else, int $lineno, ?string $tag = null) + public function __construct(Node $tests, ?Node $else, int $lineno) { $nodes = ['tests' => $tests]; if (null !== $else) { $nodes['else'] = $else; } - parent::__construct($nodes, [], $lineno, $tag); + parent::__construct($nodes, [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/ImportNode.php b/includes/lib/Twig/Node/ImportNode.php index db47bfe..124c41b 100644 --- a/includes/lib/Twig/Node/ImportNode.php +++ b/includes/lib/Twig/Node/ImportNode.php @@ -15,6 +15,7 @@ use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; /** * Represents an import node. @@ -24,27 +25,24 @@ use Twig\Node\Expression\NameExpression; #[YieldReady] class ImportNode extends Node { - public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, ?string $tag = null, bool $global = true) + public function __construct(AbstractExpression $expr, AbstractExpression|AssignTemplateVariable $var, int $lineno) { - parent::__construct(['expr' => $expr, 'var' => $var], ['global' => $global], $lineno, $tag); + if (\func_num_args() > 3) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Passing more than 3 arguments to "%s()" is deprecated.', __METHOD__)); + } + + if (!$var instanceof AssignTemplateVariable) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Passing a "%s" instance as the second argument of "%s" is deprecated, pass a "%s" instead.', $var::class, __CLASS__, AssignTemplateVariable::class)); + + $var = new AssignTemplateVariable($var->getAttribute('name'), $lineno); + } + + parent::__construct(['expr' => $expr, 'var' => $var], [], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->addDebugInfo($this) - ->write('$macros[') - ->repr($this->getNode('var')->getAttribute('name')) - ->raw('] = ') - ; - - if ($this->getAttribute('global')) { - $compiler - ->raw('$this->macros[') - ->repr($this->getNode('var')->getAttribute('name')) - ->raw('] = ') - ; - } + $compiler->subcompile($this->getNode('var')); if ($this->getNode('expr') instanceof NameExpression && '_self' === $this->getNode('expr')->getAttribute('name')) { $compiler->raw('$this'); diff --git a/includes/lib/Twig/Node/IncludeNode.php b/includes/lib/Twig/Node/IncludeNode.php index 7073fa4..5e0c6de 100644 --- a/includes/lib/Twig/Node/IncludeNode.php +++ b/includes/lib/Twig/Node/IncludeNode.php @@ -24,14 +24,14 @@ use Twig\Node\Expression\AbstractExpression; #[YieldReady] class IncludeNode extends Node implements NodeOutputInterface { - public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, ?AbstractExpression $variables, bool $only, bool $ignoreMissing, int $lineno) { $nodes = ['expr' => $expr]; if (null !== $variables) { $nodes['variables'] = $variables; } - parent::__construct($nodes, ['only' => $only, 'ignore_missing' => $ignoreMissing], $lineno, $tag); + parent::__construct($nodes, ['only' => $only, 'ignore_missing' => $ignoreMissing], $lineno); } public function compile(Compiler $compiler): void @@ -42,13 +42,12 @@ class IncludeNode extends Node implements NodeOutputInterface $template = $compiler->getVarName(); $compiler - ->write(\sprintf("$%s = null;\n", $template)) ->write("try {\n") ->indent() ->write(\sprintf('$%s = ', $template)) ; - $this->addGetTemplate($compiler); + $this->addGetTemplate($compiler, $template); $compiler ->raw(";\n") @@ -56,6 +55,7 @@ class IncludeNode extends Node implements NodeOutputInterface ->write("} catch (LoaderError \$e) {\n") ->indent() ->write("// ignore missing template\n") + ->write(\sprintf("\$$template = null;\n", $template)) ->outdent() ->write("}\n") ->write(\sprintf("if ($%s) {\n", $template)) @@ -78,10 +78,10 @@ class IncludeNode extends Node implements NodeOutputInterface } } - protected function addGetTemplate(Compiler $compiler) + protected function addGetTemplate(Compiler $compiler/* , string $template = '' */) { $compiler - ->write('$this->loadTemplate(') + ->raw('$this->loadTemplate(') ->subcompile($this->getNode('expr')) ->raw(', ') ->repr($this->getTemplateName()) diff --git a/includes/lib/Twig/Node/MacroNode.php b/includes/lib/Twig/Node/MacroNode.php index a6048de..db3ca45 100644 --- a/includes/lib/Twig/Node/MacroNode.php +++ b/includes/lib/Twig/Node/MacroNode.php @@ -14,6 +14,8 @@ namespace Twig\Node; use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Error\SyntaxError; +use Twig\Node\Expression\ArrayExpression; +use Twig\Node\Expression\Variable\LocalVariable; /** * Represents a macro node. @@ -25,15 +27,33 @@ class MacroNode extends Node { public const VARARGS_NAME = 'varargs'; - public function __construct(string $name, Node $body, Node $arguments, int $lineno, ?string $tag = null) + /** + * @param BodyNode $body + * @param ArrayExpression $arguments + */ + public function __construct(string $name, Node $body, Node $arguments, int $lineno) { - foreach ($arguments as $argumentName => $argument) { - if (self::VARARGS_NAME === $argumentName) { - throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getTemplateLine(), $argument->getSourceContext()); + if (!$body instanceof BodyNode) { + trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated ("%s" given).', BodyNode::class, static::class, $body::class)); + } + + if (!$arguments instanceof ArrayExpression) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class)); + + $args = new ArrayExpression([], $arguments->getTemplateLine()); + foreach ($arguments as $n => $default) { + $args->addElement($default, new LocalVariable($n, $default->getTemplateLine())); + } + $arguments = $args; + } + + foreach ($arguments->getKeyValuePairs() as $pair) { + if ("\u{035C}".self::VARARGS_NAME === $pair['key']->getAttribute('name')) { + throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $pair['value']->getTemplateLine(), $pair['value']->getSourceContext()); } } - parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno, $tag); + parent::__construct(['body' => $body, 'arguments' => $arguments], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void @@ -43,51 +63,53 @@ class MacroNode extends Node ->write(\sprintf('public function macro_%s(', $this->getAttribute('name'))) ; - $count = \count($this->getNode('arguments')); - $pos = 0; - foreach ($this->getNode('arguments') as $name => $default) { + /** @var ArrayExpression $arguments */ + $arguments = $this->getNode('arguments'); + foreach ($arguments->getKeyValuePairs() as $pair) { + $name = $pair['key']; + $default = $pair['value']; $compiler - ->raw('$__'.$name.'__ = ') + ->subcompile($name) + ->raw(' = ') ->subcompile($default) + ->raw(', ') ; - - if (++$pos < $count) { - $compiler->raw(', '); - } - } - - if ($count) { - $compiler->raw(', '); } $compiler - ->raw('...$__varargs__') - ->raw(")\n") + ->raw('...$varargs') + ->raw("): string|Markup\n") ->write("{\n") ->indent() ->write("\$macros = \$this->macros;\n") - ->write("\$context = \$this->env->mergeGlobals([\n") + ->write("\$context = [\n") ->indent() ; - foreach ($this->getNode('arguments') as $name => $default) { + foreach ($arguments->getKeyValuePairs() as $pair) { + $name = $pair['key']; + $var = $name->getAttribute('name'); + if (str_starts_with($var, "\u{035C}")) { + $var = substr($var, \strlen("\u{035C}")); + } $compiler ->write('') - ->string($name) - ->raw(' => $__'.$name.'__') + ->string($var) + ->raw(' => ') + ->subcompile($name) ->raw(",\n") ; } - $node = new CaptureNode($this->getNode('body'), $this->getNode('body')->lineno, $this->getNode('body')->tag); + $node = new CaptureNode($this->getNode('body'), $this->getNode('body')->lineno); $compiler ->write('') ->string(self::VARARGS_NAME) ->raw(' => ') - ->raw("\$__varargs__,\n") + ->raw("\$varargs,\n") ->outdent() - ->write("]);\n\n") + ->write("] + \$this->env->getGlobals();\n\n") ->write("\$blocks = [];\n\n") ->write('return ') ->subcompile($node) diff --git a/includes/lib/Twig/Node/ModuleNode.php b/includes/lib/Twig/Node/ModuleNode.php index fb85cd8..17840dd 100644 --- a/includes/lib/Twig/Node/ModuleNode.php +++ b/includes/lib/Twig/Node/ModuleNode.php @@ -21,27 +21,34 @@ use Twig\Source; /** * Represents a module node. * - * Consider this class as being final. If you need to customize the behavior of - * the generated class, consider adding nodes to the following nodes: display_start, - * display_end, constructor_start, constructor_end, and class_end. + * If you need to customize the behavior of the generated class, add nodes to + * the following nodes: display_start, display_end, constructor_start, + * constructor_end, and class_end. * * @author Fabien Potencier */ #[YieldReady] final class ModuleNode extends Node { + /** + * @param BodyNode $body + */ public function __construct(Node $body, ?AbstractExpression $parent, Node $blocks, Node $macros, Node $traits, $embeddedTemplates, Source $source) { + if (!$body instanceof BodyNode) { + trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated.', BodyNode::class, static::class)); + } + $nodes = [ 'body' => $body, 'blocks' => $blocks, 'macros' => $macros, 'traits' => $traits, - 'display_start' => new Node(), - 'display_end' => new Node(), - 'constructor_start' => new Node(), - 'constructor_end' => new Node(), - 'class_end' => new Node(), + 'display_start' => new Nodes(), + 'display_end' => new Nodes(), + 'constructor_start' => new Nodes(), + 'constructor_end' => new Nodes(), + 'class_end' => new Nodes(), ]; if (null !== $parent) { $nodes['parent'] = $parent; @@ -108,7 +115,7 @@ final class ModuleNode extends Node $parent = $this->getNode('parent'); $compiler - ->write("protected function doGetParent(array \$context)\n", "{\n") + ->write("protected function doGetParent(array \$context): bool|string|Template|TemplateWrapper\n", "{\n") ->indent() ->addDebugInfo($parent) ->write('return ') @@ -153,7 +160,9 @@ final class ModuleNode extends Node ->write("use Twig\Sandbox\SecurityNotAllowedFilterError;\n") ->write("use Twig\Sandbox\SecurityNotAllowedFunctionError;\n") ->write("use Twig\Source;\n") - ->write("use Twig\Template;\n\n") + ->write("use Twig\Template;\n") + ->write("use Twig\TemplateWrapper;\n") + ->write("\n") ; } $compiler @@ -163,8 +172,11 @@ final class ModuleNode extends Node ->raw(" extends Template\n") ->write("{\n") ->indent() - ->write("private \$source;\n") - ->write("private \$macros = [];\n\n") + ->write("private Source \$source;\n") + ->write("/**\n") + ->write(" * @var array\n") + ->write(" */\n") + ->write("private array \$macros = [];\n\n") ; } @@ -232,7 +244,11 @@ final class ModuleNode extends Node ->string($key) ->raw(\sprintf(']; unset($_trait_%s_blocks[', $i)) ->string($key) - ->raw("]);\n\n") + ->raw(']); $this->traitAliases[') + ->subcompile($value) + ->raw('] = ') + ->string($key) + ->raw(";\n\n") ; } } @@ -306,7 +322,7 @@ final class ModuleNode extends Node protected function compileDisplay(Compiler $compiler) { $compiler - ->write("protected function doDisplay(array \$context, array \$blocks = [])\n", "{\n") + ->write("protected function doDisplay(array \$context, array \$blocks = []): iterable\n", "{\n") ->indent() ->write("\$macros = \$this->macros;\n") ->subcompile($this->getNode('display_start')) @@ -341,7 +357,7 @@ final class ModuleNode extends Node $compiler->subcompile($this->getNode('display_end')); if (!$this->hasNode('parent')) { - $compiler->write("return; yield '';\n"); // ensure at least one yield call even for templates with no output + $compiler->write("yield from [];\n"); } $compiler @@ -370,7 +386,7 @@ final class ModuleNode extends Node ->write("/**\n") ->write(" * @codeCoverageIgnore\n") ->write(" */\n") - ->write("public function getTemplateName()\n", "{\n") + ->write("public function getTemplateName(): string\n", "{\n") ->indent() ->write('return ') ->repr($this->getSourceContext()->getName()) @@ -398,7 +414,7 @@ final class ModuleNode extends Node } if (!\count($nodes)) { - $nodes = new Node([$nodes]); + $nodes = new Nodes([$nodes]); } foreach ($nodes as $node) { @@ -406,14 +422,6 @@ final class ModuleNode extends Node continue; } - if ($node instanceof TextNode && ctype_space($node->getAttribute('data'))) { - continue; - } - - if ($node instanceof BlockReferenceNode) { - continue; - } - $traitable = false; break; } @@ -427,7 +435,7 @@ final class ModuleNode extends Node ->write("/**\n") ->write(" * @codeCoverageIgnore\n") ->write(" */\n") - ->write("public function isTraitable()\n", "{\n") + ->write("public function isTraitable(): bool\n", "{\n") ->indent() ->write("return false;\n") ->outdent() @@ -441,7 +449,7 @@ final class ModuleNode extends Node ->write("/**\n") ->write(" * @codeCoverageIgnore\n") ->write(" */\n") - ->write("public function getDebugInfo()\n", "{\n") + ->write("public function getDebugInfo(): array\n", "{\n") ->indent() ->write(\sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true)))) ->outdent() @@ -452,7 +460,7 @@ final class ModuleNode extends Node protected function compileGetSourceContext(Compiler $compiler) { $compiler - ->write("public function getSourceContext()\n", "{\n") + ->write("public function getSourceContext(): Source\n", "{\n") ->indent() ->write('return new Source(') ->string($compiler->getEnvironment()->isDebug() ? $this->getSourceContext()->getCode() : '') @@ -482,19 +490,4 @@ final class ModuleNode extends Node throw new \LogicException('Trait templates can only be constant nodes.'); } } - - private function hasNodeOutputNodes(Node $node): bool - { - if ($node instanceof NodeOutputInterface) { - return true; - } - - foreach ($node as $child) { - if ($this->hasNodeOutputNodes($child)) { - return true; - } - } - - return false; - } } diff --git a/includes/lib/Twig/Node/Node.php b/includes/lib/Twig/Node/Node.php index 5ef661f..7b4044c 100644 --- a/includes/lib/Twig/Node/Node.php +++ b/includes/lib/Twig/Node/Node.php @@ -20,10 +20,15 @@ use Twig\Source; * Represents a node in the AST. * * @author Fabien Potencier + * + * @implements \IteratorAggregate */ #[YieldReady] class Node implements \Countable, \IteratorAggregate { + /** + * @var array + */ protected $nodes; protected $attributes; protected $lineno; @@ -36,50 +41,68 @@ class Node implements \Countable, \IteratorAggregate private $attributeNameDeprecations = []; /** - * @param array $nodes An array of named nodes - * @param array $attributes An array of attributes (should not be nodes) - * @param int $lineno The line number - * @param string $tag The tag name associated with the Node + * @param array $nodes An array of named nodes + * @param array $attributes An array of attributes (should not be nodes) + * @param int $lineno The line number */ - public function __construct(array $nodes = [], array $attributes = [], int $lineno = 0, ?string $tag = null) + public function __construct(array $nodes = [], array $attributes = [], int $lineno = 0) { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Instantiating "%s" directly is deprecated; the class will become abstract in 4.0.', self::class)); + } + foreach ($nodes as $name => $node) { if (!$node instanceof self) { - throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class)); + throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', get_debug_type($node), $name, static::class)); } } $this->nodes = $nodes; $this->attributes = $attributes; $this->lineno = $lineno; - $this->tag = $tag; + + if (\func_num_args() > 3) { + trigger_deprecation('twig/twig', '3.12', \sprintf('The "tag" constructor argument of the "%s" class is deprecated and ignored (check which TokenParser class set it to "%s"), the tag is now automatically set by the Parser when needed.', static::class, func_get_arg(3) ?: 'null')); + } } public function __toString() { - $attributes = []; - foreach ($this->attributes as $name => $value) { - $attributes[] = \sprintf('%s: %s', $name, \is_callable($value) ? '\Closure' : str_replace("\n", '', var_export($value, true))); + $repr = static::class; + + if ($this->tag) { + $repr .= \sprintf("\n tag: %s", $this->tag); } - $repr = [static::class.'('.implode(', ', $attributes)]; + $attributes = []; + foreach ($this->attributes as $name => $value) { + if (\is_callable($value)) { + $v = '\Closure'; + } elseif ($value instanceof \Stringable) { + $v = (string) $value; + } else { + $v = str_replace("\n", '', var_export($value, true)); + } + $attributes[] = \sprintf('%s: %s', $name, $v); + } + + if ($attributes) { + $repr .= \sprintf("\n attributes:\n %s", implode("\n ", $attributes)); + } if (\count($this->nodes)) { + $repr .= "\n nodes:"; foreach ($this->nodes as $name => $node) { - $len = \strlen($name) + 4; + $len = \strlen($name) + 6; $noderepr = []; foreach (explode("\n", (string) $node) as $line) { $noderepr[] = str_repeat(' ', $len).$line; } - $repr[] = \sprintf(' %s: %s', $name, ltrim(implode("\n", $noderepr))); + $repr .= \sprintf("\n %s: %s", $name, ltrim(implode("\n", $noderepr))); } - - $repr[] = ')'; - } else { - $repr[0] .= ')'; } - return implode("\n", $repr); + return $repr; } /** @@ -102,6 +125,18 @@ class Node implements \Countable, \IteratorAggregate return $this->tag; } + /** + * @internal + */ + public function setNodeTag(string $tag): void + { + if ($this->tag) { + throw new \LogicException('The tag of a node can only be set once.'); + } + + $this->tag = $tag; + } + public function hasAttribute(string $name): bool { return \array_key_exists($name, $this->attributes); @@ -151,11 +186,17 @@ class Node implements \Countable, \IteratorAggregate unset($this->attributes[$name]); } + /** + * @param string|int $name + */ public function hasNode(string $name): bool { return isset($this->nodes[$name]); } + /** + * @param string|int $name + */ public function getNode(string $name): self { if (!isset($this->nodes[$name])) { @@ -175,6 +216,9 @@ class Node implements \Countable, \IteratorAggregate return $this->nodes[$name]; } + /** + * @param string|int $name + */ public function setNode(string $name, self $node): void { $triggerDeprecation = \func_num_args() > 2 ? func_get_arg(2) : true; @@ -193,11 +237,17 @@ class Node implements \Countable, \IteratorAggregate $this->nodes[$name] = $node; } + /** + * @param string|int $name + */ public function removeNode(string $name): void { unset($this->nodes[$name]); } + /** + * @param string|int $name + */ public function deprecateNode(string $name, NameDeprecation $dep): void { $this->nodeNameDeprecations[$name] = $dep; diff --git a/includes/lib/Twig/Node/Nodes.php b/includes/lib/Twig/Node/Nodes.php new file mode 100644 index 0000000..bd67053 --- /dev/null +++ b/includes/lib/Twig/Node/Nodes.php @@ -0,0 +1,28 @@ + + */ +#[YieldReady] +final class Nodes extends Node +{ + public function __construct(array $nodes = [], int $lineno = 0) + { + parent::__construct($nodes, [], $lineno); + } +} diff --git a/includes/lib/Twig/Node/PrintNode.php b/includes/lib/Twig/Node/PrintNode.php index da442d8..e3c23bb 100644 --- a/includes/lib/Twig/Node/PrintNode.php +++ b/includes/lib/Twig/Node/PrintNode.php @@ -24,9 +24,9 @@ use Twig\Node\Expression\AbstractExpression; #[YieldReady] class PrintNode extends Node implements NodeOutputInterface { - public function __construct(AbstractExpression $expr, int $lineno, ?string $tag = null) + public function __construct(AbstractExpression $expr, int $lineno) { - parent::__construct(['expr' => $expr], [], $lineno, $tag); + parent::__construct(['expr' => $expr], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/SandboxNode.php b/includes/lib/Twig/Node/SandboxNode.php index 80aecbd..d51cea4 100644 --- a/includes/lib/Twig/Node/SandboxNode.php +++ b/includes/lib/Twig/Node/SandboxNode.php @@ -22,9 +22,9 @@ use Twig\Compiler; #[YieldReady] class SandboxNode extends Node { - public function __construct(Node $body, int $lineno, ?string $tag = null) + public function __construct(Node $body, int $lineno) { - parent::__construct(['body' => $body], [], $lineno, $tag); + parent::__construct(['body' => $body], [], $lineno); } public function compile(Compiler $compiler): void diff --git a/includes/lib/Twig/Node/SetNode.php b/includes/lib/Twig/Node/SetNode.php index 0900f15..4d97adb 100644 --- a/includes/lib/Twig/Node/SetNode.php +++ b/includes/lib/Twig/Node/SetNode.php @@ -23,7 +23,7 @@ use Twig\Node\Expression\ConstantExpression; #[YieldReady] class SetNode extends Node implements NodeCaptureInterface { - public function __construct(bool $capture, Node $names, Node $values, int $lineno, ?string $tag = null) + public function __construct(bool $capture, Node $names, Node $values, int $lineno) { /* * Optimizes the node when capture is used for a large block of text. @@ -33,15 +33,22 @@ class SetNode extends Node implements NodeCaptureInterface $safe = false; if ($capture) { $safe = true; - if ($values instanceof TextNode) { + // Node::class === get_class($values) should be removed in Twig 4.0 + if (($values instanceof Nodes || Node::class === \get_class($values)) && !\count($values)) { + $values = new ConstantExpression('', $values->getTemplateLine()); + $capture = false; + } elseif ($values instanceof TextNode) { $values = new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine()); $capture = false; + } elseif ($values instanceof PrintNode && $values->getNode('expr') instanceof ConstantExpression) { + $values = $values->getNode('expr'); + $capture = false; } else { $values = new CaptureNode($values, $values->getTemplateLine()); } } - parent::__construct(['names' => $names, 'values' => $values], ['capture' => $capture, 'safe' => $safe], $lineno, $tag); + parent::__construct(['names' => $names, 'values' => $values], ['capture' => $capture, 'safe' => $safe], $lineno); } public function compile(Compiler $compiler): void @@ -78,11 +85,23 @@ class SetNode extends Node implements NodeCaptureInterface $compiler->raw(']'); } else { if ($this->getAttribute('safe')) { - $compiler - ->raw("('' === \$tmp = ") - ->subcompile($this->getNode('values')) - ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())") - ; + if ($this->getNode('values') instanceof ConstantExpression) { + if ('' === $this->getNode('values')->getAttribute('value')) { + $compiler->raw('""'); + } else { + $compiler + ->raw('new Markup(') + ->subcompile($this->getNode('values')) + ->raw(', $this->env->getCharset())') + ; + } + } else { + $compiler + ->raw("('' === \$tmp = ") + ->subcompile($this->getNode('values')) + ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())") + ; + } } else { $compiler->subcompile($this->getNode('values')); } diff --git a/includes/lib/Twig/Node/TypesNode.php b/includes/lib/Twig/Node/TypesNode.php new file mode 100644 index 0000000..ebb304d --- /dev/null +++ b/includes/lib/Twig/Node/TypesNode.php @@ -0,0 +1,28 @@ + + */ +#[YieldReady] +class TypesNode extends Node +{ + /** + * @param array $types + */ + public function __construct(array $types, int $lineno) + { + parent::__construct([], ['mapping' => $types], $lineno); + } + + public function compile(Compiler $compiler) + { + // Don't compile anything. + } +} diff --git a/includes/lib/Twig/Node/WithNode.php b/includes/lib/Twig/Node/WithNode.php index a7b7e70..487e280 100644 --- a/includes/lib/Twig/Node/WithNode.php +++ b/includes/lib/Twig/Node/WithNode.php @@ -22,14 +22,14 @@ use Twig\Compiler; #[YieldReady] class WithNode extends Node { - public function __construct(Node $body, ?Node $variables, bool $only, int $lineno, ?string $tag = null) + public function __construct(Node $body, ?Node $variables, bool $only, int $lineno) { $nodes = ['body' => $body]; if (null !== $variables) { $nodes['variables'] = $variables; } - parent::__construct($nodes, ['only' => $only], $lineno, $tag); + parent::__construct($nodes, ['only' => $only], $lineno); } public function compile(Compiler $compiler): void @@ -61,7 +61,7 @@ class WithNode extends Node $compiler->write("\$context = [];\n"); } - $compiler->write(\sprintf("\$context = \$this->env->mergeGlobals(array_merge(\$context, \$%s));\n", $varsName)); + $compiler->write(\sprintf("\$context = \$%s + \$context + \$this->env->getGlobals();\n", $varsName)); } $compiler diff --git a/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php b/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php index 91e2ea8..a70726b 100644 --- a/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/EscaperNodeVisitor.php @@ -16,14 +16,14 @@ use Twig\Extension\EscaperExtension; use Twig\Node\AutoEscapeNode; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; -use Twig\Node\DoNode; -use Twig\Node\Expression\ConditionalExpression; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; -use Twig\Node\Expression\InlinePrint; +use Twig\Node\Expression\OperatorEscapeInterface; use Twig\Node\ImportNode; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\NodeTraverser; @@ -59,7 +59,7 @@ final class EscaperNodeVisitor implements NodeVisitorInterface } elseif ($node instanceof BlockNode) { $this->statusStack[] = $this->blocks[$node->getAttribute('name')] ?? $this->needEscaping(); } elseif ($node instanceof ImportNode) { - $this->safeVars[] = $node->getNode('var')->getAttribute('name'); + $this->safeVars[] = $node->getNode('var')->getNode('var')->getAttribute('name'); } return $node; @@ -75,11 +75,13 @@ final class EscaperNodeVisitor implements NodeVisitorInterface return $this->preEscapeFilterNode($node, $env); } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping()) { $expression = $node->getNode('expr'); - if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) { - return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine()); + if ($expression instanceof OperatorEscapeInterface) { + $this->escapeConditional($expression, $env, $type); + } else { + $node->setNode('expr', $this->escapeExpression($expression, $env, $type)); } - return $this->escapePrintNode($node, $env, $type); + return $node; } if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) { @@ -91,81 +93,57 @@ final class EscaperNodeVisitor implements NodeVisitorInterface return $node; } - private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, string $type): bool + /** + * @param AbstractExpression&OperatorEscapeInterface $expression + */ + private function escapeConditional($expression, Environment $env, string $type): void { - $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env); - $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env); - - return $expr2Safe !== $expr3Safe; + foreach ($expression->getOperandNamesToEscape() as $name) { + /** @var AbstractExpression $operand */ + $operand = $expression->getNode($name); + if ($operand instanceof OperatorEscapeInterface) { + $this->escapeConditional($operand, $env, $type); + } else { + $expression->setNode($name, $this->escapeExpression($operand, $env, $type)); + } + } } - private function unwrapConditional(ConditionalExpression $expression, Environment $env, string $type): ConditionalExpression + private function escapeExpression(AbstractExpression $expression, Environment $env, string $type): AbstractExpression { - // convert "echo a ? b : c" to "a ? echo b : echo c" recursively - $expr2 = $expression->getNode('expr2'); - if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) { - $expr2 = $this->unwrapConditional($expr2, $env, $type); - } else { - $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type); - } - $expr3 = $expression->getNode('expr3'); - if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) { - $expr3 = $this->unwrapConditional($expr3, $env, $type); - } else { - $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type); - } - - return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine()); - } - - private function escapeInlinePrintNode(InlinePrint $node, Environment $env, string $type): Node - { - $expression = $node->getNode('node'); - - if ($this->isSafeFor($type, $expression, $env)) { - return $node; - } - - return new InlinePrint($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); - } - - private function escapePrintNode(PrintNode $node, Environment $env, string $type): Node - { - $expression = $node->getNode('expr'); - - if ($this->isSafeFor($type, $expression, $env)) { - return $node; - } - - $class = \get_class($node); - - return new $class($this->getEscaperFilter($type, $expression), $node->getTemplateLine()); + return $this->isSafeFor($type, $expression, $env) ? $expression : $this->getEscaperFilter($env, $type, $expression); } private function preEscapeFilterNode(FilterExpression $filter, Environment $env): FilterExpression { - $name = $filter->getNode('filter')->getAttribute('value'); + if ($filter->hasAttribute('twig_callable')) { + $type = $filter->getAttribute('twig_callable')->getPreEscape(); + } else { + // legacy + $name = $filter->getNode('filter', false)->getAttribute('value'); + $type = $env->getFilter($name)->getPreEscape(); + } - $type = $env->getFilter($name)->getPreEscape(); if (null === $type) { return $filter; } + /** @var AbstractExpression $node */ $node = $filter->getNode('node'); if ($this->isSafeFor($type, $node, $env)) { return $filter; } - $filter->setNode('node', $this->getEscaperFilter($type, $node)); + $filter->setNode('node', $this->getEscaperFilter($env, $type, $node)); return $filter; } - private function isSafeFor(string $type, Node $expression, Environment $env): bool + private function isSafeFor(string $type, AbstractExpression $expression, Environment $env): bool { $safe = $this->safeAnalysis->getSafe($expression); - if (null === $safe) { + if (!$safe) { if (null === $this->traverser) { $this->traverser = new NodeTraverser($env, [$this->safeAnalysis]); } @@ -188,13 +166,13 @@ final class EscaperNodeVisitor implements NodeVisitorInterface return $this->defaultStrategy ?: false; } - private function getEscaperFilter(string $type, Node $node): FilterExpression + private function getEscaperFilter(Environment $env, string $type, AbstractExpression $node): FilterExpression { $line = $node->getTemplateLine(); - $name = new ConstantExpression('escape', $line); - $args = new Node([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); + $filter = $env->getFilter('escape'); + $args = new Nodes([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); - return new FilterExpression($node, $name, $args, $line); + return new FilterExpression($node, $filter, $args, $line); } public function getPriority(): int diff --git a/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php b/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php index 55f5d6e..a943f45 100644 --- a/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/OptimizerNodeVisitor.php @@ -47,13 +47,13 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface private $loops = []; private $loopsTargets = []; - private $optimizers; /** * @param int $optimizers The optimizer mode */ - public function __construct(int $optimizers = -1) - { + public function __construct( + private int $optimizers = -1, + ) { if ($optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER | self::OPTIMIZE_TEXT_NODES)) { throw new \InvalidArgumentException(\sprintf('Optimizer mode "%s" is not valid.', $optimizers)); } @@ -62,7 +62,9 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface trigger_deprecation('twig/twig', '3.11', 'The "Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_RAW_FILTER" option is deprecated and does nothing.'); } - $this->optimizers = $optimizers; + if (-1 !== $optimizers && self::OPTIMIZE_TEXT_NODES === (self::OPTIMIZE_TEXT_NODES & $optimizers)) { + trigger_deprecation('twig/twig', '3.12', 'The "Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES" option is deprecated and does nothing.'); + } } public function enterNode(Node $node, Environment $env): Node @@ -82,42 +84,6 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface $node = $this->optimizePrintNode($node); - if (self::OPTIMIZE_TEXT_NODES === (self::OPTIMIZE_TEXT_NODES & $this->optimizers)) { - $node = $this->mergeTextNodeCalls($node); - } - - return $node; - } - - private function mergeTextNodeCalls(Node $node): Node - { - $text = ''; - $names = []; - foreach ($node as $k => $n) { - if (!$n instanceof TextNode) { - return $node; - } - - $text .= $n->getAttribute('data'); - $names[] = $k; - } - - if (!$text) { - return $node; - } - - if (Node::class === \get_class($node)) { - return new TextNode($text, $node->getTemplateLine()); - } - - foreach ($names as $i => $name) { - if (0 === $i) { - $node->setNode($name, new TextNode($text, $node->getTemplateLine())); - } else { - $node->removeNode($name); - } - } - return $node; } diff --git a/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php b/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php index 6df046e..3be8230 100644 --- a/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/SafeAnalysisNodeVisitor.php @@ -13,13 +13,14 @@ namespace Twig\NodeVisitor; use Twig\Environment; use Twig\Node\Expression\BlockReferenceExpression; -use Twig\Node\Expression\ConditionalExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\MethodCallExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\OperatorEscapeInterface; use Twig\Node\Expression\ParentExpression; use Twig\Node\Node; @@ -36,11 +37,14 @@ final class SafeAnalysisNodeVisitor implements NodeVisitorInterface $this->safeVars = $safeVars; } + /** + * @return array + */ public function getSafe(Node $node) { $hash = spl_object_hash($node); if (!isset($this->data[$hash])) { - return; + return []; } foreach ($this->data[$hash] as $bucket) { @@ -54,6 +58,8 @@ final class SafeAnalysisNodeVisitor implements NodeVisitorInterface return $bucket['value']; } + + return []; } private function setSafe(Node $node, array $safe): void @@ -90,55 +96,69 @@ final class SafeAnalysisNodeVisitor implements NodeVisitorInterface } elseif ($node instanceof ParentExpression) { // parent block is safe by definition $this->setSafe($node, ['all']); - } elseif ($node instanceof ConditionalExpression) { - // intersect safeness of both operands - $safe = $this->intersectSafe($this->getSafe($node->getNode('expr2')), $this->getSafe($node->getNode('expr3'))); - $this->setSafe($node, $safe); + } elseif ($node instanceof OperatorEscapeInterface) { + // intersect safeness of operands + $operands = $node->getOperandNamesToEscape(); + if (2 < \count($operands)) { + throw new \LogicException(\sprintf('Operators with more than 2 operands are not supported yet, got %d.', \count($operands))); + } elseif (2 === \count($operands)) { + $safe = $this->intersectSafe($this->getSafe($node->getNode($operands[0])), $this->getSafe($node->getNode($operands[1]))); + $this->setSafe($node, $safe); + } } elseif ($node instanceof FilterExpression) { // filter expression is safe when the filter is safe - $name = $node->getNode('filter')->getAttribute('value'); - $args = $node->getNode('arguments'); - if ($filter = $env->getFilter($name)) { - $safe = $filter->getSafe($args); + if ($node->hasAttribute('twig_callable')) { + $filter = $node->getAttribute('twig_callable'); + } else { + // legacy + $filter = $env->getFilter($node->getAttribute('name')); + } + + if ($filter) { + $safe = $filter->getSafe($node->getNode('arguments')); if (null === $safe) { + trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $filter::class); + $safe = []; + } + + if (!$safe) { $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety()); } $this->setSafe($node, $safe); - } else { - $this->setSafe($node, []); } } elseif ($node instanceof FunctionExpression) { // function expression is safe when the function is safe - $name = $node->getAttribute('name'); - $args = $node->getNode('arguments'); - if ($function = $env->getFunction($name)) { - $this->setSafe($node, $function->getSafe($args)); + if ($node->hasAttribute('twig_callable')) { + $function = $node->getAttribute('twig_callable'); } else { - $this->setSafe($node, []); + // legacy + $function = $env->getFunction($node->getAttribute('name')); } - } elseif ($node instanceof MethodCallExpression) { - if ($node->getAttribute('safe')) { - $this->setSafe($node, ['all']); - } else { - $this->setSafe($node, []); + + if ($function) { + $safe = $function->getSafe($node->getNode('arguments')); + if (null === $safe) { + trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $function::class); + $safe = []; + } + $this->setSafe($node, $safe); } + } elseif ($node instanceof MethodCallExpression || $node instanceof MacroReferenceExpression) { + // all macro calls are safe + $this->setSafe($node, ['all']); } elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) { $name = $node->getNode('node')->getAttribute('name'); if (\in_array($name, $this->safeVars)) { $this->setSafe($node, ['all']); - } else { - $this->setSafe($node, []); } - } else { - $this->setSafe($node, []); } return $node; } - private function intersectSafe(?array $a = null, ?array $b = null): array + private function intersectSafe(array $a, array $b): array { - if (null === $a || null === $b) { + if (!$a || !$b) { return []; } diff --git a/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php b/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php index 6802088..74b686f 100644 --- a/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/SandboxNodeVisitor.php @@ -15,14 +15,17 @@ use Twig\Environment; use Twig\Node\CheckSecurityCallNode; use Twig\Node\CheckSecurityNode; use Twig\Node\CheckToStringNode; +use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\Binary\ConcatBinary; use Twig\Node\Expression\Binary\RangeBinary; use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\Unary\SpreadUnary; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\SetNode; @@ -58,8 +61,8 @@ final class SandboxNodeVisitor implements NodeVisitorInterface } // look for filters - if ($node instanceof FilterExpression && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) { - $this->filters[$node->getNode('filter')->getAttribute('value')] = $node->getTemplateLine(); + if ($node instanceof FilterExpression && !isset($this->filters[$node->getAttribute('name')])) { + $this->filters[$node->getAttribute('name')] = $node->getTemplateLine(); } // look for functions @@ -105,8 +108,8 @@ final class SandboxNodeVisitor implements NodeVisitorInterface if ($node instanceof ModuleNode) { $this->inAModule = false; - $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); - $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); + $node->setNode('constructor_end', new Nodes([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); + $node->setNode('class_end', new Nodes([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); } elseif ($this->inAModule) { if ($node instanceof PrintNode || $node instanceof SetNode) { $this->needsToStringWrap = false; @@ -120,7 +123,18 @@ final class SandboxNodeVisitor implements NodeVisitorInterface { $expr = $node->getNode($name); if (($expr instanceof NameExpression || $expr instanceof GetAttrExpression) && !$expr->isGenerator()) { - $node->setNode($name, new CheckToStringNode($expr)); + // Simplify in 4.0 as the spread attribute has been removed there + $new = new CheckToStringNode($expr); + if ($expr->hasAttribute('spread')) { + $new->setAttribute('spread', $expr->getAttribute('spread')); + } + $node->setNode($name, $new); + } elseif ($expr instanceof SpreadUnary) { + $this->wrapNode($expr, 'node'); + } elseif ($expr instanceof ArrayExpression) { + foreach ($expr as $name => $_) { + $this->wrapNode($expr, $name); + } } } diff --git a/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php b/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php index 6470bda..3c97862 100644 --- a/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php +++ b/includes/lib/Twig/NodeVisitor/YieldNotReadyNodeVisitor.php @@ -21,12 +21,11 @@ use Twig\Node\Node; */ final class YieldNotReadyNodeVisitor implements NodeVisitorInterface { - private $useYield; private $yieldReadyNodes = []; - public function __construct(bool $useYield) - { - $this->useYield = $useYield; + public function __construct( + private bool $useYield, + ) { } public function enterNode(Node $node, Environment $env): Node @@ -39,10 +38,10 @@ final class YieldNotReadyNodeVisitor implements NodeVisitorInterface if (!$this->yieldReadyNodes[$class] = (bool) (new \ReflectionClass($class))->getAttributes(YieldReady::class)) { if ($this->useYield) { - throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[YieldReady] attribute.', $class)); + throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class)); } - trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[YieldReady] attribute.', $class); + trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class); } return $node; diff --git a/includes/lib/Twig/OperatorPrecedenceChange.php b/includes/lib/Twig/OperatorPrecedenceChange.php new file mode 100644 index 0000000..1d9edef --- /dev/null +++ b/includes/lib/Twig/OperatorPrecedenceChange.php @@ -0,0 +1,42 @@ + + */ +class OperatorPrecedenceChange +{ + public function __construct( + private string $package, + private string $version, + private int $newPrecedence, + ) { + } + + public function getPackage(): string + { + return $this->package; + } + + public function getVersion(): string + { + return $this->version; + } + + public function getNewPrecedence(): int + { + return $this->newPrecedence; + } +} diff --git a/includes/lib/Twig/Parser.php b/includes/lib/Twig/Parser.php index 7cfc205..7bf51b7 100644 --- a/includes/lib/Twig/Parser.php +++ b/includes/lib/Twig/Parser.php @@ -16,12 +16,16 @@ use Twig\Error\SyntaxError; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; use Twig\Node\BodyNode; +use Twig\Node\EmptyNode; use Twig\Node\Expression\AbstractExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\MacroNode; use Twig\Node\ModuleNode; use Twig\Node\Node; use Twig\Node\NodeCaptureInterface; use Twig\Node\NodeOutputInterface; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\TextNode; use Twig\TokenParser\TokenParserInterface; @@ -40,19 +44,26 @@ class Parser private $blocks; private $blockStack; private $macros; - private $env; private $importedSymbols; private $traits; private $embeddedTemplates = []; private $varNameSalt = 0; + private $ignoreUnknownTwigCallables = false; - public function __construct(Environment $env) + public function __construct( + private Environment $env, + ) { + } + + public function getEnvironment(): Environment { - $this->env = $env; + return $this->env; } public function getVarName(): string { + trigger_deprecation('twig/twig', '3.15', 'The "%s()" method is deprecated.', __METHOD__); + return \sprintf('__internal_parse_%d', $this->varNameSalt++); } @@ -84,7 +95,7 @@ class Parser $body = $this->subparse($test, $dropNeedle); if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) { - $body = new Node(); + $body = new EmptyNode(); } } catch (SyntaxError $e) { if (!$e->getSourceContext()) { @@ -92,13 +103,13 @@ class Parser } if (!$e->getTemplateLine()) { - $e->setTemplateLine($this->stream->getCurrent()->getLine()); + $e->setTemplateLine($this->getCurrentToken()->getLine()); } throw $e; } - $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); + $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Nodes($this->blocks), new Nodes($this->macros), new Nodes($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); $traverser = new NodeTraverser($this->env, $this->visitors); @@ -115,29 +126,45 @@ class Parser return $node; } + public function shouldIgnoreUnknownTwigCallables(): bool + { + return $this->ignoreUnknownTwigCallables; + } + + public function subparseIgnoreUnknownTwigCallables($test, bool $dropNeedle = false): void + { + $previous = $this->ignoreUnknownTwigCallables; + $this->ignoreUnknownTwigCallables = true; + try { + $this->subparse($test, $dropNeedle); + } finally { + $this->ignoreUnknownTwigCallables = $previous; + } + } + public function subparse($test, bool $dropNeedle = false): Node { $lineno = $this->getCurrentToken()->getLine(); $rv = []; while (!$this->stream->isEOF()) { switch ($this->getCurrentToken()->getType()) { - case /* Token::TEXT_TYPE */ 0: + case Token::TEXT_TYPE: $token = $this->stream->next(); $rv[] = new TextNode($token->getValue(), $token->getLine()); break; - case /* Token::VAR_START_TYPE */ 2: + case Token::VAR_START_TYPE: $token = $this->stream->next(); $expr = $this->expressionParser->parseExpression(); - $this->stream->expect(/* Token::VAR_END_TYPE */ 4); + $this->stream->expect(Token::VAR_END_TYPE); $rv[] = new PrintNode($expr, $token->getLine()); break; - case /* Token::BLOCK_START_TYPE */ 1: + case Token::BLOCK_START_TYPE: $this->stream->next(); $token = $this->getCurrentToken(); - if (/* Token::NAME_TYPE */ 5 !== $token->getType()) { + if (Token::NAME_TYPE !== $token->getType()) { throw new SyntaxError('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext()); } @@ -150,14 +177,14 @@ class Parser return $rv[0]; } - return new Node($rv, [], $lineno); + return new Nodes($rv, $lineno); } if (!$subparser = $this->env->getTokenParser($token->getValue())) { if (null !== $test) { $e = new SyntaxError(\sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); - $callable = (new ReflectionCallable($test))->getCallable(); + $callable = (new ReflectionCallable(new TwigTest('decision', $test)))->getCallable(); if (\is_array($callable) && $callable[0] instanceof TokenParserInterface) { $e->appendMessage(\sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $callable[0]->getTag(), $lineno)); } @@ -173,13 +200,16 @@ class Parser $subparser->setParser($this); $node = $subparser->parse($token); - if (null !== $node) { + if (!$node) { + trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class); + } else { + $node->setNodeTag($subparser->getTag()); $rv[] = $node; } break; default: - throw new SyntaxError('Lexer or parser ended up in unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); + throw new SyntaxError('The lexer or the parser ended up in an unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); } } @@ -187,11 +217,13 @@ class Parser return $rv[0]; } - return new Node($rv, [], $lineno); + return new Nodes($rv, $lineno); } public function getBlockStack(): array { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return $this->blockStack; } @@ -212,21 +244,31 @@ class Parser public function hasBlock(string $name): bool { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return isset($this->blocks[$name]); } public function getBlock(string $name): Node { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return $this->blocks[$name]; } public function setBlock(string $name, BlockNode $value): void { + if (isset($this->blocks[$name])) { + throw new SyntaxError(\sprintf("The block '%s' has already been defined line %d.", $name, $this->blocks[$name]->getTemplateLine()), $this->getCurrentToken()->getLine(), $this->blocks[$name]->getSourceContext()); + } + $this->blocks[$name] = new BodyNode([$value], [], $value->getTemplateLine()); } public function hasMacro(string $name): bool { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return isset($this->macros[$name]); } @@ -242,6 +284,8 @@ class Parser public function hasTraits(): bool { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return \count($this->traits) > 0; } @@ -252,9 +296,15 @@ class Parser $this->embeddedTemplates[] = $template; } - public function addImportedSymbol(string $type, string $alias, ?string $name = null, ?AbstractExpression $node = null): void + public function addImportedSymbol(string $type, string $alias, ?string $name = null, AbstractExpression|AssignTemplateVariable|null $internalRef = null): void { - $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node]; + if ($internalRef && !$internalRef instanceof AssignTemplateVariable) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance as an internal reference is deprecated ("%s" given).', __METHOD__, AssignTemplateVariable::class, $internalRef::class); + + $internalRef = new AssignTemplateVariable(new TemplateVariable($internalRef->getAttribute('name'), $internalRef->getTemplateLine()), $internalRef->getAttribute('global')); + } + + $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $internalRef]; } public function getImportedSymbol(string $type, string $alias) @@ -285,11 +335,26 @@ class Parser public function getParent(): ?Node { + trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__); + return $this->parent; } + public function hasInheritance() + { + return $this->parent || 0 < \count($this->traits); + } + public function setParent(?Node $parent): void { + if (null === $parent) { + trigger_deprecation('twig/twig', '3.12', 'Passing "null" to "%s()" is deprecated.', __METHOD__); + } + + if (null !== $this->parent) { + throw new SyntaxError('Multiple extends tags are forbidden.', $parent->getTemplateLine(), $parent->getSourceContext()); + } + $this->parent = $parent; } @@ -340,7 +405,8 @@ class Parser // here, $nested means "being at the root level of a child template" // we need to discard the wrapping "Node" for the "body" node - $nested = $nested || Node::class !== \get_class($node); + // Node::class !== \get_class($node) should be removed in Twig 4.0 + $nested = $nested || (Node::class !== \get_class($node) && !$node instanceof Nodes); foreach ($node as $k => $n) { if (null !== $n && null === $this->filterBodyNodes($n, $nested)) { $node->removeNode($k); diff --git a/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php b/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php index 4d2a581..4c5c200 100644 --- a/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php +++ b/includes/lib/Twig/Profiler/NodeVisitor/ProfilerNodeVisitor.php @@ -17,6 +17,7 @@ use Twig\Node\BodyNode; use Twig\Node\MacroNode; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\NodeVisitor\NodeVisitorInterface; use Twig\Profiler\Node\EnterProfileNode; use Twig\Profiler\Node\LeaveProfileNode; @@ -27,12 +28,11 @@ use Twig\Profiler\Profile; */ final class ProfilerNodeVisitor implements NodeVisitorInterface { - private $extensionName; private $varName; - public function __construct(string $extensionName) - { - $this->extensionName = $extensionName; + public function __construct( + private string $extensionName, + ) { $this->varName = \sprintf('__internal_%s', hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $extensionName)); } @@ -44,8 +44,8 @@ final class ProfilerNodeVisitor implements NodeVisitorInterface public function leaveNode(Node $node, Environment $env): ?Node { if ($node instanceof ModuleNode) { - $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); - $node->setNode('display_end', new Node([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); + $node->setNode('display_start', new Nodes([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); + $node->setNode('display_end', new Nodes([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); } elseif ($node instanceof BlockNode) { $node->setNode('body', new BodyNode([ new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $this->varName), diff --git a/includes/lib/Twig/Profiler/Profile.php b/includes/lib/Twig/Profiler/Profile.php index 72506b7..a3c6ee0 100644 --- a/includes/lib/Twig/Profiler/Profile.php +++ b/includes/lib/Twig/Profiler/Profile.php @@ -20,18 +20,15 @@ final class Profile implements \IteratorAggregate, \Serializable public const BLOCK = 'block'; public const TEMPLATE = 'template'; public const MACRO = 'macro'; - - private $template; - private $name; - private $type; private $starts = []; private $ends = []; private $profiles = []; - public function __construct(string $template = 'main', string $type = self::ROOT, string $name = 'main') - { - $this->template = $template; - $this->type = $type; + public function __construct( + private string $template = 'main', + private string $type = self::ROOT, + private string $name = 'main', + ) { $this->name = str_starts_with($name, '__internal_') ? 'INTERNAL' : $name; $this->enter(); } @@ -102,6 +99,22 @@ final class Profile implements \IteratorAggregate, \Serializable return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0; } + /** + * Returns the start time in microseconds. + */ + public function getStartTime(): float + { + return $this->starts['wt'] ?? 0.0; + } + + /** + * Returns the end time in microseconds. + */ + public function getEndTime(): float + { + return $this->ends['wt'] ?? 0.0; + } + /** * Returns the memory usage in bytes. */ diff --git a/includes/lib/Twig/Resources/core.php b/includes/lib/Twig/Resources/core.php index e5372cd..bc0b271 100644 --- a/includes/lib/Twig/Resources/core.php +++ b/includes/lib/Twig/Resources/core.php @@ -441,7 +441,7 @@ function twig_constant_is_defined($constant, $object = null) { trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); - return CoreExtension::constantIsDefined($constant, $object); + return CoreExtension::constant($constant, $object, true); } /** @@ -537,5 +537,5 @@ function twig_check_arrow_in_sandbox(Environment $env, $arrow, $thing, $type) { trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); - return CoreExtension::checkArrowInSandbox($env, $arrow, $thing, $type); + CoreExtension::checkArrow($env, $arrow, $thing, $type); } diff --git a/includes/lib/Twig/Runtime/EscaperRuntime.php b/includes/lib/Twig/Runtime/EscaperRuntime.php index b1dac96..ce41e0a 100644 --- a/includes/lib/Twig/Runtime/EscaperRuntime.php +++ b/includes/lib/Twig/Runtime/EscaperRuntime.php @@ -26,11 +26,9 @@ final class EscaperRuntime implements RuntimeExtensionInterface /** @internal */ public $safeLookup = []; - private $charset; - - public function __construct($charset = 'UTF-8') - { - $this->charset = $charset; + public function __construct( + private $charset = 'UTF-8', + ) { } /** @@ -54,6 +52,9 @@ final class EscaperRuntime implements RuntimeExtensionInterface return $this->escapers; } + /** + * @param array, string[]> $safeClasses + */ public function setSafeClasses(array $safeClasses = []) { $this->safeClasses = []; @@ -63,6 +64,10 @@ final class EscaperRuntime implements RuntimeExtensionInterface } } + /** + * @param class-string<\Stringable> $class + * @param string[] $strategies + */ public function addSafeClass(string $class, array $strategies) { $class = ltrim($class, '\\'); @@ -93,7 +98,7 @@ final class EscaperRuntime implements RuntimeExtensionInterface } if (!\is_string($string)) { - if (\is_object($string) && method_exists($string, '__toString')) { + if ($string instanceof \Stringable) { if ($autoescape) { $c = \get_class($string); if (!isset($this->safeClasses[$c])) { diff --git a/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php b/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php index b360d7b..0510668 100644 --- a/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php +++ b/includes/lib/Twig/RuntimeLoader/ContainerRuntimeLoader.php @@ -23,11 +23,9 @@ use Psr\Container\ContainerInterface; */ class ContainerRuntimeLoader implements RuntimeLoaderInterface { - private $container; - - public function __construct(ContainerInterface $container) - { - $this->container = $container; + public function __construct( + private ContainerInterface $container, + ) { } public function load(string $class) diff --git a/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php b/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php index 1306483..5d4e70b 100644 --- a/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php +++ b/includes/lib/Twig/RuntimeLoader/FactoryRuntimeLoader.php @@ -18,14 +18,12 @@ namespace Twig\RuntimeLoader; */ class FactoryRuntimeLoader implements RuntimeLoaderInterface { - private $map; - /** * @param array $map An array where keys are class names and values factory callables */ - public function __construct(array $map = []) - { - $this->map = $map; + public function __construct( + private array $map = [], + ) { } public function load(string $class) diff --git a/includes/lib/Twig/Sandbox/SecurityPolicy.php b/includes/lib/Twig/Sandbox/SecurityPolicy.php index 417d38a..b0d0542 100644 --- a/includes/lib/Twig/Sandbox/SecurityPolicy.php +++ b/includes/lib/Twig/Sandbox/SecurityPolicy.php @@ -50,7 +50,7 @@ final class SecurityPolicy implements SecurityPolicyInterface { $this->allowedMethods = []; foreach ($methods as $class => $m) { - $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]); + $this->allowedMethods[$class] = array_map('strtolower', \is_array($m) ? $m : [$m]); } } @@ -68,7 +68,13 @@ final class SecurityPolicy implements SecurityPolicyInterface { foreach ($tags as $tag) { if (!\in_array($tag, $this->allowedTags)) { - throw new SecurityNotAllowedTagError(\sprintf('Tag "%s" is not allowed.', $tag), $tag); + if ('extends' === $tag) { + trigger_deprecation('twig/twig', '3.12', 'The "extends" tag is always allowed in sandboxes, but won\'t be in 4.0, please enable it explicitly in your sandbox policy if needed.'); + } elseif ('use' === $tag) { + trigger_deprecation('twig/twig', '3.12', 'The "use" tag is always allowed in sandboxes, but won\'t be in 4.0, please enable it explicitly in your sandbox policy if needed.'); + } else { + throw new SecurityNotAllowedTagError(\sprintf('Tag "%s" is not allowed.', $tag), $tag); + } } } @@ -92,7 +98,7 @@ final class SecurityPolicy implements SecurityPolicyInterface } $allowed = false; - $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); + $method = strtolower($method); foreach ($this->allowedMethods as $class => $methods) { if ($obj instanceof $class && \in_array($method, $methods)) { $allowed = true; diff --git a/includes/lib/Twig/Source.php b/includes/lib/Twig/Source.php index 3cb0240..0f626b6 100644 --- a/includes/lib/Twig/Source.php +++ b/includes/lib/Twig/Source.php @@ -18,20 +18,16 @@ namespace Twig; */ final class Source { - private $code; - private $name; - private $path; - /** * @param string $code The template source code * @param string $name The template logical name * @param string $path The filesystem path of the template if any */ - public function __construct(string $code, string $name, string $path = '') - { - $this->code = $code; - $this->name = $name; - $this->path = $path; + public function __construct( + private string $code, + private string $name, + private string $path = '', + ) { } public function getCode(): string diff --git a/includes/lib/Twig/Template.php b/includes/lib/Twig/Template.php index 04c530c..26f5b5d 100644 --- a/includes/lib/Twig/Template.php +++ b/includes/lib/Twig/Template.php @@ -13,7 +13,6 @@ namespace Twig; use Twig\Error\Error; -use Twig\Error\LoaderError; use Twig\Error\RuntimeError; /** @@ -35,41 +34,37 @@ abstract class Template protected $parent; protected $parents = []; - protected $env; protected $blocks = []; protected $traits = []; + protected $traitAliases = []; protected $extensions = []; protected $sandbox; private $useYield; - public function __construct(Environment $env) - { - $this->env = $env; + public function __construct( + protected Environment $env, + ) { $this->useYield = $env->useYield(); $this->extensions = $env->getExtensions(); } /** * Returns the template name. - * - * @return string The template name */ - abstract public function getTemplateName(); + abstract public function getTemplateName(): string; /** * Returns debug information about the template. * - * @return array Debug information + * @return array Debug information */ - abstract public function getDebugInfo(); + abstract public function getDebugInfo(): array; /** * Returns information about the original template source code. - * - * @return Source */ - abstract public function getSourceContext(); + abstract public function getSourceContext(): Source; /** * Returns the parent template. @@ -79,40 +74,33 @@ abstract class Template * * @return self|TemplateWrapper|false The parent template or false if there is no parent */ - public function getParent(array $context) + public function getParent(array $context): self|TemplateWrapper|false { if (null !== $this->parent) { return $this->parent; } - try { - if (!$parent = $this->doGetParent($context)) { - return false; - } + if (!$parent = $this->doGetParent($context)) { + return false; + } - if ($parent instanceof self || $parent instanceof TemplateWrapper) { - return $this->parents[$parent->getSourceContext()->getName()] = $parent; - } + if ($parent instanceof self || $parent instanceof TemplateWrapper) { + return $this->parents[$parent->getSourceContext()->getName()] = $parent; + } - if (!isset($this->parents[$parent])) { - $this->parents[$parent] = $this->loadTemplate($parent); - } - } catch (LoaderError $e) { - $e->setSourceContext(null); - $e->guess(); - - throw $e; + if (!isset($this->parents[$parent])) { + $this->parents[$parent] = $this->loadTemplate($parent); } return $this->parents[$parent]; } - protected function doGetParent(array $context) + protected function doGetParent(array $context): bool|string|self|TemplateWrapper { return false; } - public function isTraitable() + public function isTraitable(): bool { return true; } @@ -127,7 +115,7 @@ abstract class Template * @param array $context The context * @param array $blocks The current set of blocks */ - public function displayParentBlock($name, array $context, array $blocks = []) + public function displayParentBlock($name, array $context, array $blocks = []): void { foreach ($this->yieldParentBlock($name, $context, $blocks) as $data) { echo $data; @@ -145,7 +133,7 @@ abstract class Template * @param array $blocks The current set of blocks * @param bool $useBlocks Whether to use the current set of blocks */ - public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null) + public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null): void { foreach ($this->yieldBlock($name, $context, $blocks, $useBlocks, $templateContext) as $data) { echo $data; @@ -164,8 +152,19 @@ abstract class Template * * @return string The rendered block */ - public function renderParentBlock($name, array $context, array $blocks = []) + public function renderParentBlock($name, array $context, array $blocks = []): string { + if (!$this->useYield) { + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + $this->displayParentBlock($name, $context, $blocks); + + return ob_get_clean(); + } + $content = ''; foreach ($this->yieldParentBlock($name, $context, $blocks) as $data) { $content .= $data; @@ -187,8 +186,28 @@ abstract class Template * * @return string The rendered block */ - public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true) + public function renderBlock($name, array $context, array $blocks = [], $useBlocks = true): string { + if (!$this->useYield) { + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->displayBlock($name, $context, $blocks, $useBlocks); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + $content = ''; foreach ($this->yieldBlock($name, $context, $blocks, $useBlocks) as $data) { $content .= $data; @@ -209,7 +228,7 @@ abstract class Template * * @return bool true if the block exists, false otherwise */ - public function hasBlock($name, array $context, array $blocks = []) + public function hasBlock($name, array $context, array $blocks = []): bool { if (isset($blocks[$name])) { return $blocks[$name][0] instanceof self; @@ -235,9 +254,9 @@ abstract class Template * @param array $context The context * @param array $blocks The current set of blocks * - * @return array An array of block names + * @return array An array of block names */ - public function getBlockNames(array $context, array $blocks = []) + public function getBlockNames(array $context, array $blocks = []): array { $names = array_merge(array_keys($blocks), array_keys($this->blocks)); @@ -250,10 +269,8 @@ abstract class Template /** * @param string|TemplateWrapper|array $template - * - * @return self|TemplateWrapper */ - protected function loadTemplate($template, $templateName = null, $line = null, $index = null) + protected function loadTemplate($template, $templateName = null, $line = null, $index = null): self|TemplateWrapper { try { if (\is_array($template)) { @@ -301,10 +318,9 @@ abstract class Template /** * @internal - * - * @return self + * @return $this */ - public function unwrap() + public function unwrap(): self { return $this; } @@ -317,7 +333,7 @@ abstract class Template * * @return array An array of blocks */ - public function getBlocks() + public function getBlocks(): array { return $this->blocks; } @@ -331,6 +347,26 @@ abstract class Template public function render(array $context): string { + if (!$this->useYield) { + $level = ob_get_level(); + if ($this->env->isDebug()) { + ob_start(); + } else { + ob_start(function () { return ''; }); + } + try { + $this->display($context); + } catch (\Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + $content = ''; foreach ($this->yield($context) as $data) { $content .= $data; @@ -340,35 +376,15 @@ abstract class Template } /** - * @return iterable + * @return iterable */ public function yield(array $context, array $blocks = []): iterable { - $context = $this->env->mergeGlobals($context); + $context += $this->env->getGlobals(); $blocks = array_merge($this->blocks, $blocks); try { - if ($this->useYield) { - yield from $this->doDisplay($context, $blocks); - - return; - } - - $level = ob_get_level(); - ob_start(); - - foreach ($this->doDisplay($context, $blocks) as $data) { - if (ob_get_length()) { - $data = ob_get_clean().$data; - ob_start(); - } - - yield $data; - } - - if (ob_get_length()) { - yield ob_get_clean(); - } + yield from $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); @@ -386,19 +402,13 @@ abstract class Template $e->guess(); throw $e; - } finally { - if (!$this->useYield) { - while (ob_get_level() > $level) { - ob_end_clean(); - } - } } } /** - * @return iterable + * @return iterable */ - public function yieldBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null) + public function yieldBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null): iterable { if ($useBlocks && isset($blocks[$name])) { $template = $blocks[$name][0]; @@ -418,27 +428,7 @@ abstract class Template if (null !== $template) { try { - if ($this->useYield) { - yield from $template->$block($context, $blocks); - - return; - } - - $level = ob_get_level(); - ob_start(); - - foreach ($template->$block($context, $blocks) as $data) { - if (ob_get_length()) { - $data = ob_get_clean().$data; - ob_start(); - } - - yield $data; - } - - if (ob_get_length()) { - yield ob_get_clean(); - } + yield from $template->$block($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($template->getSourceContext()); @@ -456,12 +446,6 @@ abstract class Template $e->guess(); throw $e; - } finally { - if (!$this->useYield) { - while (ob_get_level() > $level) { - ob_end_clean(); - } - } } } elseif ($parent = $this->getParent($context)) { yield from $parent->unwrap()->yieldBlock($name, $context, array_merge($this->blocks, $blocks), false, $templateContext ?? $this); @@ -482,12 +466,12 @@ abstract class Template * @param array $context The context * @param array $blocks The current set of blocks * - * @return iterable + * @return iterable */ - public function yieldParentBlock($name, array $context, array $blocks = []) + public function yieldParentBlock($name, array $context, array $blocks = []): iterable { if (isset($this->traits[$name])) { - yield from $this->traits[$name][0]->yieldBlock($name, $context, $blocks, false); + yield from $this->traits[$name][0]->yieldBlock($this->traitAliases[$name] ?? $name, $context, $blocks, false); } elseif ($parent = $this->getParent($context)) { yield from $parent->unwrap()->yieldBlock($name, $context, $blocks, false); } else { @@ -495,11 +479,42 @@ abstract class Template } } + protected function hasMacro(string $name, array $context): bool + { + if (method_exists($this, $name)) { + return true; + } + + if (!$parent = $this->getParent($context)) { + return false; + } + + return $parent->hasMacro($name, $context); + } + + protected function getTemplateForMacro(string $name, array $context, int $line, Source $source): Template + { + if (method_exists($this, $name)) { + return $this; + } + + $parent = $this; + while ($parent = $parent->getParent($context)) { + if (method_exists($parent, $name)) { + return $parent; + } + } + + throw new RuntimeError(\sprintf('Macro "%s" is not defined in template "%s".', substr($name, \strlen('macro_')), $this->getTemplateName()), $line, $source); + } + /** * Auto-generated method to display the template with the given context. * * @param array $context An array of parameters to pass to the template * @param array $blocks An array of blocks to pass to the template + * + * @return iterable */ - abstract protected function doDisplay(array $context, array $blocks = []); + abstract protected function doDisplay(array $context, array $blocks = []): iterable; } diff --git a/includes/lib/Twig/TemplateWrapper.php b/includes/lib/Twig/TemplateWrapper.php index fcfb070..5528037 100644 --- a/includes/lib/Twig/TemplateWrapper.php +++ b/includes/lib/Twig/TemplateWrapper.php @@ -18,19 +18,32 @@ namespace Twig; */ final class TemplateWrapper { - private $env; - private $template; - /** * This method is for internal use only and should never be called * directly (use Twig\Environment::load() instead). * * @internal */ - public function __construct(Environment $env, Template $template) + public function __construct( + private Environment $env, + private Template $template, + ) { + } + + /** + * @return iterable + */ + public function stream(array $context = []): iterable { - $this->env = $env; - $this->template = $template; + yield from $this->template->yield($context); + } + + /** + * @return iterable + */ + public function streamBlock(string $name, array $context = []): iterable + { + yield from $this->template->yieldBlock($name, $context); } public function render(array $context = []): string @@ -60,12 +73,12 @@ final class TemplateWrapper public function renderBlock(string $name, array $context = []): string { - return $this->template->renderBlock($name, $this->env->mergeGlobals($context)); + return $this->template->renderBlock($name, $context + $this->env->getGlobals()); } public function displayBlock(string $name, array $context = []) { - $context = $this->env->mergeGlobals($context); + $context += $this->env->getGlobals(); foreach ($this->template->yieldBlock($name, $context) as $data) { echo $data; } diff --git a/includes/lib/Twig/Test/IntegrationTestCase.php b/includes/lib/Twig/Test/IntegrationTestCase.php index 5519dd0..8c9d41f 100644 --- a/includes/lib/Twig/Test/IntegrationTestCase.php +++ b/includes/lib/Twig/Test/IntegrationTestCase.php @@ -30,9 +30,19 @@ use Twig\TwigTest; abstract class IntegrationTestCase extends TestCase { /** + * @deprecated since Twig 3.13, use getFixturesDirectory() instead. + * * @return string */ - abstract protected function getFixturesDir(); + protected function getFixturesDir() + { + throw new \BadMethodCallException('Not implemented.'); + } + + protected static function getFixturesDirectory(): string + { + throw new \BadMethodCallException('Not implemented.'); + } /** * @return RuntimeLoaderInterface[] @@ -92,9 +102,19 @@ abstract class IntegrationTestCase extends TestCase $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs, $deprecation); } + /** + * @final since Twig 3.13 + */ public function getTests($name, $legacyTests = false) { - $fixturesDir = realpath($this->getFixturesDir()); + try { + $fixturesDir = static::getFixturesDirectory(); + } catch (\BadMethodCallException) { + trigger_deprecation('twig/twig', '3.13', 'Not overriding "%s::getFixturesDirectory()" in "%s" is deprecated. This method will be abstract in 4.0.', self::class, static::class); + $fixturesDir = $this->getFixturesDir(); + } + + $fixturesDir = realpath($fixturesDir); $tests = []; foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($fixturesDir), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) { @@ -126,10 +146,10 @@ abstract class IntegrationTestCase extends TestCase throw new \InvalidArgumentException(\sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file))); } - $tests[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; + $tests[str_replace($fixturesDir.'/', '', $file)] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; } - if ($legacyTests && empty($tests)) { + if ($legacyTests && !$tests) { // add a dummy test to avoid a PHPUnit message return [['not', '-', '', [], '', []]]; } @@ -137,6 +157,9 @@ abstract class IntegrationTestCase extends TestCase return $tests; } + /** + * @final since Twig 3.13 + */ public function getLegacyTests() { return $this->getTests('testLegacyIntegration', true); @@ -156,13 +179,16 @@ abstract class IntegrationTestCase extends TestCase } } - $loader = new ArrayLoader($templates); - foreach ($outputs as $i => $match) { $config = array_merge([ 'cache' => false, 'strict_variables' => true, ], $match[2] ? eval($match[2].';') : []); + // make sure that template are always compiled even if they are the same (useful when testing with more than one data/expect sections) + foreach ($templates as $j => $template) { + $templates[$j] = $template.str_repeat(' ', $i); + } + $loader = new ArrayLoader($templates); $twig = new Environment($loader, $config); $twig->addGlobal('global', 'global'); foreach ($this->getRuntimeLoaders() as $runtimeLoader) { @@ -219,7 +245,7 @@ abstract class IntegrationTestCase extends TestCase $output = trim($template->render(eval($match[1].';')), "\n "); } catch (\Exception $e) { if (false !== $exception) { - $this->assertSame(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage()))); + $this->assertStringMatchesFormat(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage()))); return; } diff --git a/includes/lib/Twig/Test/NodeTestCase.php b/includes/lib/Twig/Test/NodeTestCase.php index 4046f08..bac0ea6 100644 --- a/includes/lib/Twig/Test/NodeTestCase.php +++ b/includes/lib/Twig/Test/NodeTestCase.php @@ -11,6 +11,8 @@ namespace Twig\Test; +use PHPUnit\Framework\Attributes\BeforeClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Twig\Compiler; use Twig\Environment; @@ -24,11 +26,26 @@ abstract class NodeTestCase extends TestCase */ private $currentEnv; - abstract public function getTests(); + public function getTests() + { + return []; + } + + /** + * @return iterable + */ + public static function provideTests(): iterable + { + trigger_deprecation('twig/twig', '3.13', 'Not implementing "%s()" in "%s" is deprecated. This method will be abstract in 4.0.', __METHOD__, static::class); + + return []; + } /** * @dataProvider getTests + * @dataProvider provideTests */ + #[DataProvider('getTests'), DataProvider('provideTests')] public function testCompile($node, $source, $environment = null, $isPattern = false) { $this->assertNodeCompilation($source, $node, $environment, $isPattern); @@ -51,24 +68,58 @@ abstract class NodeTestCase extends TestCase return new Compiler($environment ?? $this->getEnvironment()); } + /** + * @final since Twig 3.13 + */ protected function getEnvironment() { - if (!$this->currentEnv) { - $this->currentEnv = new Environment(new ArrayLoader()); - } - - return $this->currentEnv; + return $this->currentEnv ??= static::createEnvironment(); } + protected static function createEnvironment(): Environment + { + return new Environment(new ArrayLoader()); + } + + /** + * @deprecated since Twig 3.13, use createVariableGetter() instead. + */ protected function getVariableGetter($name, $line = false) + { + trigger_deprecation('twig/twig', '3.13', 'Method "%s()" is deprecated, use "createVariableGetter()" instead.', __METHOD__); + + return self::createVariableGetter($name, $line); + } + + final protected static function createVariableGetter(string $name, bool $line = false): string { $line = $line > 0 ? "// line $line\n" : ''; return \sprintf('%s($context["%s"] ?? null)', $line, $name); } + /** + * @deprecated since Twig 3.13, use createAttributeGetter() instead. + */ protected function getAttributeGetter() + { + trigger_deprecation('twig/twig', '3.13', 'Method "%s()" is deprecated, use "createAttributeGetter()" instead.', __METHOD__); + + return self::createAttributeGetter(); + } + + final protected static function createAttributeGetter(): string { return 'CoreExtension::getAttribute($this->env, $this->source, '; } + + /** @beforeClass */ + #[BeforeClass] + final public static function checkDataProvider(): void + { + $r = new \ReflectionMethod(static::class, 'getTests'); + if (self::class !== $r->getDeclaringClass()->getName()) { + trigger_deprecation('twig/twig', '3.13', 'Implementing "%s::getTests()" in "%s" is deprecated, implement "provideTests()" instead.', self::class, static::class); + } + } } diff --git a/includes/lib/Twig/Token.php b/includes/lib/Twig/Token.php index 5be39bd..237634a 100644 --- a/includes/lib/Twig/Token.php +++ b/includes/lib/Twig/Token.php @@ -17,10 +17,6 @@ namespace Twig; */ final class Token { - private $value; - private $type; - private $lineno; - public const EOF_TYPE = -1; public const TEXT_TYPE = 0; public const BLOCK_START_TYPE = 1; @@ -37,11 +33,11 @@ final class Token public const ARROW_TYPE = 12; public const SPREAD_TYPE = 13; - public function __construct(int $type, $value, int $lineno) - { - $this->type = $type; - $this->value = $value; - $this->lineno = $lineno; + public function __construct( + private int $type, + private $value, + private int $lineno, + ) { } public function __toString() diff --git a/includes/lib/Twig/TokenParser/ApplyTokenParser.php b/includes/lib/Twig/TokenParser/ApplyTokenParser.php index 4dbf304..0c95074 100644 --- a/includes/lib/Twig/TokenParser/ApplyTokenParser.php +++ b/includes/lib/Twig/TokenParser/ApplyTokenParser.php @@ -11,8 +11,9 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\TempNameExpression; +use Twig\Node\Expression\Variable\LocalVariable; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\SetNode; use Twig\Token; @@ -31,21 +32,17 @@ final class ApplyTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $lineno = $token->getLine(); - $name = $this->parser->getVarName(); - - $ref = new TempNameExpression($name, $lineno); - $ref->setAttribute('always_defined', true); - - $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); + $ref = new LocalVariable(null, $lineno); + $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideApplyEnd'], true); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); - return new Node([ - new SetNode(true, $ref, $body, $lineno, $this->getTag()), - new PrintNode($filter, $lineno, $this->getTag()), - ]); + return new Nodes([ + new SetNode(true, $ref, $body, $lineno), + new PrintNode($filter, $lineno), + ], $lineno); } public function decideApplyEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php b/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php index b674bea..b50b29e 100644 --- a/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php +++ b/includes/lib/Twig/TokenParser/AutoEscapeTokenParser.php @@ -29,7 +29,7 @@ final class AutoEscapeTokenParser extends AbstractTokenParser $lineno = $token->getLine(); $stream = $this->parser->getStream(); - if ($stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + if ($stream->test(Token::BLOCK_END_TYPE)) { $value = 'html'; } else { $expr = $this->parser->getExpressionParser()->parseExpression(); @@ -39,11 +39,11 @@ final class AutoEscapeTokenParser extends AbstractTokenParser $value = $expr->getAttribute('value'); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new AutoEscapeNode($value, $body, $lineno, $this->getTag()); + return new AutoEscapeNode($value, $body, $lineno); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/BlockTokenParser.php b/includes/lib/Twig/TokenParser/BlockTokenParser.php index c654d31..3561b99 100644 --- a/includes/lib/Twig/TokenParser/BlockTokenParser.php +++ b/includes/lib/Twig/TokenParser/BlockTokenParser.php @@ -15,7 +15,9 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; +use Twig\Node\EmptyNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Token; @@ -35,17 +37,14 @@ final class BlockTokenParser extends AbstractTokenParser { $lineno = $token->getLine(); $stream = $this->parser->getStream(); - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); - if ($this->parser->hasBlock($name)) { - throw new SyntaxError(\sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getTemplateLine()), $stream->getCurrent()->getLine(), $stream->getSourceContext()); - } - $this->parser->setBlock($name, $block = new BlockNode($name, new Node([]), $lineno)); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); + $this->parser->setBlock($name, $block = new BlockNode($name, new EmptyNode(), $lineno)); $this->parser->pushLocalScope(); $this->parser->pushBlockStack($name); - if ($stream->nextIf(/* Token::BLOCK_END_TYPE */ 3)) { + if ($stream->nextIf(Token::BLOCK_END_TYPE)) { $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + if ($token = $stream->nextIf(Token::NAME_TYPE)) { $value = $token->getValue(); if ($value != $name) { @@ -53,17 +52,17 @@ final class BlockTokenParser extends AbstractTokenParser } } } else { - $body = new Node([ + $body = new Nodes([ new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno), ]); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $block->setNode('body', $body); $this->parser->popBlockStack(); $this->parser->popLocalScope(); - return new BlockReferenceNode($name, $lineno, $this->getTag()); + return new BlockReferenceNode($name, $lineno); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php b/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php index c17c4aa..164ef26 100644 --- a/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php +++ b/includes/lib/Twig/TokenParser/DeprecatedTokenParser.php @@ -35,7 +35,7 @@ final class DeprecatedTokenParser extends AbstractTokenParser $stream = $this->parser->getStream(); $expressionParser = $this->parser->getExpressionParser(); $expr = $expressionParser->parseExpression(); - $node = new DeprecatedNode($expr, $token->getLine(), $this->getTag()); + $node = new DeprecatedNode($expr, $token->getLine()); while ($stream->test(Token::NAME_TYPE)) { $k = $stream->getCurrent()->getValue(); diff --git a/includes/lib/Twig/TokenParser/DoTokenParser.php b/includes/lib/Twig/TokenParser/DoTokenParser.php index 32c8f12..8afd485 100644 --- a/includes/lib/Twig/TokenParser/DoTokenParser.php +++ b/includes/lib/Twig/TokenParser/DoTokenParser.php @@ -26,9 +26,9 @@ final class DoTokenParser extends AbstractTokenParser { $expr = $this->parser->getExpressionParser()->parseExpression(); - $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); - return new DoNode($expr, $token->getLine(), $this->getTag()); + return new DoNode($expr, $token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/EmbedTokenParser.php b/includes/lib/Twig/TokenParser/EmbedTokenParser.php index adf683c..7bf3233 100644 --- a/includes/lib/Twig/TokenParser/EmbedTokenParser.php +++ b/includes/lib/Twig/TokenParser/EmbedTokenParser.php @@ -32,19 +32,19 @@ final class EmbedTokenParser extends IncludeTokenParser [$variables, $only, $ignoreMissing] = $this->parseArguments(); - $parentToken = $fakeParentToken = new Token(/* Token::STRING_TYPE */ 7, '__parent__', $token->getLine()); + $parentToken = $fakeParentToken = new Token(Token::STRING_TYPE, '__parent__', $token->getLine()); if ($parent instanceof ConstantExpression) { - $parentToken = new Token(/* Token::STRING_TYPE */ 7, $parent->getAttribute('value'), $token->getLine()); + $parentToken = new Token(Token::STRING_TYPE, $parent->getAttribute('value'), $token->getLine()); } elseif ($parent instanceof NameExpression) { - $parentToken = new Token(/* Token::NAME_TYPE */ 5, $parent->getAttribute('name'), $token->getLine()); + $parentToken = new Token(Token::NAME_TYPE, $parent->getAttribute('name'), $token->getLine()); } // inject a fake parent to make the parent() function work $stream->injectTokens([ - new Token(/* Token::BLOCK_START_TYPE */ 1, '', $token->getLine()), - new Token(/* Token::NAME_TYPE */ 5, 'extends', $token->getLine()), + new Token(Token::BLOCK_START_TYPE, '', $token->getLine()), + new Token(Token::NAME_TYPE, 'extends', $token->getLine()), $parentToken, - new Token(/* Token::BLOCK_END_TYPE */ 3, '', $token->getLine()), + new Token(Token::BLOCK_END_TYPE, '', $token->getLine()), ]); $module = $this->parser->parse($stream, [$this, 'decideBlockEnd'], true); @@ -56,9 +56,9 @@ final class EmbedTokenParser extends IncludeTokenParser $this->parser->embedTemplate($module); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + return new EmbedNode($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine()); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/ExtendsTokenParser.php b/includes/lib/Twig/TokenParser/ExtendsTokenParser.php index 0ca46dd..a93afe8 100644 --- a/includes/lib/Twig/TokenParser/ExtendsTokenParser.php +++ b/includes/lib/Twig/TokenParser/ExtendsTokenParser.php @@ -13,6 +13,7 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Node; use Twig\Token; @@ -35,14 +36,11 @@ final class ExtendsTokenParser extends AbstractTokenParser throw new SyntaxError('Cannot use "extend" in a macro.', $token->getLine(), $stream->getSourceContext()); } - if (null !== $this->parser->getParent()) { - throw new SyntaxError('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); - } $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new Node(); + return new EmptyNode($token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/FlushTokenParser.php b/includes/lib/Twig/TokenParser/FlushTokenParser.php index 02c74aa..0d23887 100644 --- a/includes/lib/Twig/TokenParser/FlushTokenParser.php +++ b/includes/lib/Twig/TokenParser/FlushTokenParser.php @@ -26,9 +26,9 @@ final class FlushTokenParser extends AbstractTokenParser { public function parse(Token $token): Node { - $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); - return new FlushNode($token->getLine(), $this->getTag()); + return new FlushNode($token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/ForTokenParser.php b/includes/lib/Twig/TokenParser/ForTokenParser.php index 1af6da8..c0a0e3c 100644 --- a/includes/lib/Twig/TokenParser/ForTokenParser.php +++ b/includes/lib/Twig/TokenParser/ForTokenParser.php @@ -12,7 +12,7 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; use Twig\Node\ForNode; use Twig\Node\Node; use Twig\Token; @@ -35,30 +35,30 @@ final class ForTokenParser extends AbstractTokenParser $lineno = $token->getLine(); $stream = $this->parser->getStream(); $targets = $this->parser->getExpressionParser()->parseAssignmentExpression(); - $stream->expect(/* Token::OPERATOR_TYPE */ 8, 'in'); + $stream->expect(Token::OPERATOR_TYPE, 'in'); $seq = $this->parser->getExpressionParser()->parseExpression(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideForFork']); if ('else' == $stream->next()->getValue()) { - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $else = $this->parser->subparse([$this, 'decideForEnd'], true); } else { $else = null; } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); if (\count($targets) > 1) { $keyTarget = $targets->getNode('0'); - $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); + $keyTarget = new AssignContextVariable($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); $valueTarget = $targets->getNode('1'); } else { - $keyTarget = new AssignNameExpression('_key', $lineno); + $keyTarget = new AssignContextVariable('_key', $lineno); $valueTarget = $targets->getNode('0'); } - $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); + $valueTarget = new AssignContextVariable($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); - return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno, $this->getTag()); + return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno); } public function decideForFork(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/FromTokenParser.php b/includes/lib/Twig/TokenParser/FromTokenParser.php index 31b6cde..c8732df 100644 --- a/includes/lib/Twig/TokenParser/FromTokenParser.php +++ b/includes/lib/Twig/TokenParser/FromTokenParser.php @@ -11,7 +11,9 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\ImportNode; use Twig\Node\Node; use Twig\Token; @@ -19,7 +21,7 @@ use Twig\Token; /** * Imports macros. * - * {% from 'forms.html' import forms %} + * {% from 'forms.html.twig' import forms %} * * @internal */ @@ -29,31 +31,32 @@ final class FromTokenParser extends AbstractTokenParser { $macro = $this->parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); - $stream->expect(/* Token::NAME_TYPE */ 5, 'import'); + $stream->expect(Token::NAME_TYPE, 'import'); $targets = []; while (true) { - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); - $alias = $name; if ($stream->nextIf('as')) { - $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $alias = new AssignContextVariable($stream->expect(Token::NAME_TYPE)->getValue(), $token->getLine()); + } else { + $alias = new AssignContextVariable($name, $token->getLine()); } $targets[$name] = $alias; - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine()); - $node = new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + $internalRef = new AssignTemplateVariable(new TemplateVariable(null, $token->getLine()), $this->parser->isMainScope()); + $node = new ImportNode($macro, $internalRef, $token->getLine()); foreach ($targets as $name => $alias) { - $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $var); + $this->parser->addImportedSymbol('function', $alias->getAttribute('name'), 'macro_'.$name, $internalRef); } return $node; diff --git a/includes/lib/Twig/TokenParser/GuardTokenParser.php b/includes/lib/Twig/TokenParser/GuardTokenParser.php new file mode 100644 index 0000000..1fcf76c --- /dev/null +++ b/includes/lib/Twig/TokenParser/GuardTokenParser.php @@ -0,0 +1,73 @@ +parser->getStream(); + $typeToken = $stream->expect(Token::NAME_TYPE); + if (!\in_array($typeToken->getValue(), ['function', 'filter', 'test'])) { + throw new SyntaxError(\sprintf('Supported guard types are function, filter and test, "%s" given.', $typeToken->getValue()), $typeToken->getLine(), $stream->getSourceContext()); + } + $method = 'get'.$typeToken->getValue(); + + $nameToken = $stream->expect(Token::NAME_TYPE); + + try { + $exists = null !== $this->parser->getEnvironment()->$method($nameToken->getValue()); + } catch (SyntaxError) { + $exists = false; + } + + $stream->expect(Token::BLOCK_END_TYPE); + if ($exists) { + $body = $this->parser->subparse([$this, 'decideGuardFork']); + } else { + $body = new EmptyNode(); + $this->parser->subparseIgnoreUnknownTwigCallables([$this, 'decideGuardFork']); + } + $else = new EmptyNode(); + if ('else' === $stream->next()->getValue()) { + $stream->expect(Token::BLOCK_END_TYPE); + $else = $this->parser->subparse([$this, 'decideGuardEnd'], true); + } + $stream->expect(Token::BLOCK_END_TYPE); + + return new Nodes([$exists ? $body : $else]); + } + + public function decideGuardFork(Token $token): bool + { + return $token->test(['else', 'endguard']); + } + + public function decideGuardEnd(Token $token): bool + { + return $token->test(['endguard']); + } + + public function getTag(): string + { + return 'guard'; + } +} diff --git a/includes/lib/Twig/TokenParser/IfTokenParser.php b/includes/lib/Twig/TokenParser/IfTokenParser.php index 569ccfa..6b90105 100644 --- a/includes/lib/Twig/TokenParser/IfTokenParser.php +++ b/includes/lib/Twig/TokenParser/IfTokenParser.php @@ -15,6 +15,7 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; use Twig\Node\IfNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Token; /** @@ -37,7 +38,7 @@ final class IfTokenParser extends AbstractTokenParser $lineno = $token->getLine(); $expr = $this->parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideIfFork']); $tests = [$expr, $body]; $else = null; @@ -46,13 +47,13 @@ final class IfTokenParser extends AbstractTokenParser while (!$end) { switch ($stream->next()->getValue()) { case 'else': - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $else = $this->parser->subparse([$this, 'decideIfEnd']); break; case 'elseif': $expr = $this->parser->getExpressionParser()->parseExpression(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideIfFork']); $tests[] = $expr; $tests[] = $body; @@ -67,9 +68,9 @@ final class IfTokenParser extends AbstractTokenParser } } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new IfNode(new Node($tests), $else, $lineno, $this->getTag()); + return new IfNode(new Nodes($tests), $else, $lineno); } public function decideIfFork(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/ImportTokenParser.php b/includes/lib/Twig/TokenParser/ImportTokenParser.php index 44cb4da..f23584a 100644 --- a/includes/lib/Twig/TokenParser/ImportTokenParser.php +++ b/includes/lib/Twig/TokenParser/ImportTokenParser.php @@ -11,7 +11,8 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\ImportNode; use Twig\Node\Node; use Twig\Token; @@ -19,7 +20,7 @@ use Twig\Token; /** * Imports macros. * - * {% import 'forms.html' as forms %} + * {% import 'forms.html.twig' as forms %} * * @internal */ @@ -28,13 +29,13 @@ final class ImportTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $macro = $this->parser->getExpressionParser()->parseExpression(); - $this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5, 'as'); - $var = new AssignNameExpression($this->parser->getStream()->expect(/* Token::NAME_TYPE */ 5)->getValue(), $token->getLine()); - $this->parser->getStream()->expect(/* Token::BLOCK_END_TYPE */ 3); + $this->parser->getStream()->expect(Token::NAME_TYPE, 'as'); + $name = $this->parser->getStream()->expect(Token::NAME_TYPE)->getValue(); + $var = new AssignTemplateVariable(new TemplateVariable($name, $token->getLine()), $this->parser->isMainScope()); + $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + $this->parser->addImportedSymbol('template', $name); - $this->parser->addImportedSymbol('template', $var->getAttribute('name')); - - return new ImportNode($macro, $var, $token->getLine(), $this->getTag(), $this->parser->isMainScope()); + return new ImportNode($macro, $var, $token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/IncludeTokenParser.php b/includes/lib/Twig/TokenParser/IncludeTokenParser.php index fda5bfd..a72250c 100644 --- a/includes/lib/Twig/TokenParser/IncludeTokenParser.php +++ b/includes/lib/Twig/TokenParser/IncludeTokenParser.php @@ -19,9 +19,9 @@ use Twig\Token; /** * Includes a template. * - * {% include 'header.html' %} + * {% include 'header.html.twig' %} * Body - * {% include 'footer.html' %} + * {% include 'footer.html.twig' %} * * @internal */ @@ -33,7 +33,7 @@ class IncludeTokenParser extends AbstractTokenParser [$variables, $only, $ignoreMissing] = $this->parseArguments(); - return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + return new IncludeNode($expr, $variables, $only, $ignoreMissing, $token->getLine()); } protected function parseArguments() @@ -41,23 +41,23 @@ class IncludeTokenParser extends AbstractTokenParser $stream = $this->parser->getStream(); $ignoreMissing = false; - if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'ignore')) { - $stream->expect(/* Token::NAME_TYPE */ 5, 'missing'); + if ($stream->nextIf(Token::NAME_TYPE, 'ignore')) { + $stream->expect(Token::NAME_TYPE, 'missing'); $ignoreMissing = true; } $variables = null; - if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'with')) { + if ($stream->nextIf(Token::NAME_TYPE, 'with')) { $variables = $this->parser->getExpressionParser()->parseExpression(); } $only = false; - if ($stream->nextIf(/* Token::NAME_TYPE */ 5, 'only')) { + if ($stream->nextIf(Token::NAME_TYPE, 'only')) { $only = true; } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); return [$variables, $only, $ignoreMissing]; } diff --git a/includes/lib/Twig/TokenParser/MacroTokenParser.php b/includes/lib/Twig/TokenParser/MacroTokenParser.php index 1f0e3e9..33379be 100644 --- a/includes/lib/Twig/TokenParser/MacroTokenParser.php +++ b/includes/lib/Twig/TokenParser/MacroTokenParser.php @@ -13,6 +13,12 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; use Twig\Node\BodyNode; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\ArrayExpression; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Expression\Unary\NegUnary; +use Twig\Node\Expression\Unary\PosUnary; +use Twig\Node\Expression\Variable\LocalVariable; use Twig\Node\MacroNode; use Twig\Node\Node; use Twig\Token; @@ -32,14 +38,13 @@ final class MacroTokenParser extends AbstractTokenParser { $lineno = $token->getLine(); $stream = $this->parser->getStream(); - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); + $arguments = $this->parseDefinition(); - $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); - - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $this->parser->pushLocalScope(); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) { + if ($token = $stream->nextIf(Token::NAME_TYPE)) { $value = $token->getValue(); if ($value != $name) { @@ -47,11 +52,11 @@ final class MacroTokenParser extends AbstractTokenParser } } $this->parser->popLocalScope(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno, $this->getTag())); + $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno)); - return new Node(); + return new EmptyNode($lineno); } public function decideBlockEnd(Token $token): bool @@ -63,4 +68,56 @@ final class MacroTokenParser extends AbstractTokenParser { return 'macro'; } + + private function parseDefinition(): ArrayExpression + { + $arguments = new ArrayExpression([], $this->parser->getCurrentToken()->getLine()); + $stream = $this->parser->getStream(); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if (\count($arguments)) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { + break; + } + } + + $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name'); + $name = new LocalVariable($token->getValue(), $this->parser->getCurrentToken()->getLine()); + if ($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) { + $default = $this->parser->getExpressionParser()->parseExpression(); + } else { + $default = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); + $default->setAttribute('is_implicit', true); + } + + if (!$this->checkConstantExpression($default)) { + throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext()); + } + $arguments->addElement($default, $name); + } + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); + + return $arguments; + } + + // checks that the node only contains "constant" elements + private function checkConstantExpression(Node $node): bool + { + if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression + || $node instanceof NegUnary || $node instanceof PosUnary + )) { + return false; + } + + foreach ($node as $n) { + if (!$this->checkConstantExpression($n)) { + return false; + } + } + + return true; + } } diff --git a/includes/lib/Twig/TokenParser/SandboxTokenParser.php b/includes/lib/Twig/TokenParser/SandboxTokenParser.php index c919556..536c14f 100644 --- a/includes/lib/Twig/TokenParser/SandboxTokenParser.php +++ b/includes/lib/Twig/TokenParser/SandboxTokenParser.php @@ -22,7 +22,7 @@ use Twig\Token; * Marks a section of a template as untrusted code that must be evaluated in the sandbox mode. * * {% sandbox %} - * {% include 'user.html' %} + * {% include 'user.html.twig' %} * {% endsandbox %} * * @see https://twig.symfony.com/doc/api.html#sandbox-extension for details @@ -34,9 +34,11 @@ final class SandboxTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $stream = $this->parser->getStream(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + trigger_deprecation('twig/twig', '3.15', \sprintf('The "sandbox" tag is deprecated in "%s" at line %d.', $stream->getSourceContext()->getName(), $token->getLine())); + + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); // in a sandbox tag, only include tags are allowed if (!$body instanceof IncludeNode) { @@ -51,7 +53,7 @@ final class SandboxTokenParser extends AbstractTokenParser } } - return new SandboxNode($body, $token->getLine(), $this->getTag()); + return new SandboxNode($body, $token->getLine()); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/SetTokenParser.php b/includes/lib/Twig/TokenParser/SetTokenParser.php index 2fbdfe0..bb43907 100644 --- a/includes/lib/Twig/TokenParser/SetTokenParser.php +++ b/includes/lib/Twig/TokenParser/SetTokenParser.php @@ -37,10 +37,10 @@ final class SetTokenParser extends AbstractTokenParser $names = $this->parser->getExpressionParser()->parseAssignmentExpression(); $capture = false; - if ($stream->nextIf(/* Token::OPERATOR_TYPE */ 8, '=')) { + if ($stream->nextIf(Token::OPERATOR_TYPE, '=')) { $values = $this->parser->getExpressionParser()->parseMultitargetExpression(); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); if (\count($names) !== \count($values)) { throw new SyntaxError('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); @@ -52,13 +52,13 @@ final class SetTokenParser extends AbstractTokenParser throw new SyntaxError('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $values = $this->parser->subparse([$this, 'decideBlockEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); } - return new SetNode($capture, $names, $values, $lineno, $this->getTag()); + return new SetNode($capture, $names, $values, $lineno); } public function decideBlockEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenParser/TypesTokenParser.php b/includes/lib/Twig/TokenParser/TypesTokenParser.php new file mode 100644 index 0000000..02aef81 --- /dev/null +++ b/includes/lib/Twig/TokenParser/TypesTokenParser.php @@ -0,0 +1,90 @@ + + * + * @internal + */ +final class TypesTokenParser extends AbstractTokenParser +{ + public function parse(Token $token): Node + { + $stream = $this->parser->getStream(); + + $types = $this->parseSimpleMappingExpression($stream); + + $stream->expect(Token::BLOCK_END_TYPE); + + return new TypesNode($types, $token->getLine()); + } + + /** + * @return array + * + * @throws SyntaxError + */ + private function parseSimpleMappingExpression(TokenStream $stream): array + { + $stream->expect(Token::PUNCTUATION_TYPE, '{', 'A mapping element was expected'); + + $types = []; + + $first = true; + while (!$stream->test(Token::PUNCTUATION_TYPE, '}')) { + if (!$first) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'A type string must be followed by a comma'); + + // trailing ,? + if ($stream->test(Token::PUNCTUATION_TYPE, '}')) { + break; + } + } + $first = false; + + $nameToken = $stream->expect(Token::NAME_TYPE); + + if ($stream->nextIf(Token::OPERATOR_TYPE, '?:')) { + $isOptional = true; + } else { + $isOptional = null !== $stream->nextIf(Token::PUNCTUATION_TYPE, '?'); + $stream->expect(Token::PUNCTUATION_TYPE, ':', 'A type name must be followed by a colon (:)'); + } + + $valueToken = $stream->expect(Token::STRING_TYPE); + + $types[$nameToken->getValue()] = [ + 'type' => $valueToken->getValue(), + 'optional' => $isOptional, + ]; + } + $stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened mapping is not properly closed'); + + return $types; + } + + public function getTag(): string + { + return 'types'; + } +} diff --git a/includes/lib/Twig/TokenParser/UseTokenParser.php b/includes/lib/Twig/TokenParser/UseTokenParser.php index 3cdbb98..ebd95aa 100644 --- a/includes/lib/Twig/TokenParser/UseTokenParser.php +++ b/includes/lib/Twig/TokenParser/UseTokenParser.php @@ -12,8 +12,10 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Token; /** @@ -44,26 +46,26 @@ final class UseTokenParser extends AbstractTokenParser $targets = []; if ($stream->nextIf('with')) { while (true) { - $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $name = $stream->expect(Token::NAME_TYPE)->getValue(); $alias = $name; if ($stream->nextIf('as')) { - $alias = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue(); + $alias = $stream->expect(Token::NAME_TYPE)->getValue(); } $targets[$name] = new ConstantExpression($alias, -1); - if (!$stream->nextIf(/* Token::PUNCTUATION_TYPE */ 9, ',')) { + if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)])); + $this->parser->addTrait(new Nodes(['template' => $template, 'targets' => new Nodes($targets)])); - return new Node(); + return new EmptyNode($token->getLine()); } public function getTag(): string diff --git a/includes/lib/Twig/TokenParser/WithTokenParser.php b/includes/lib/Twig/TokenParser/WithTokenParser.php index 7d8cbe2..8ce4f02 100644 --- a/includes/lib/Twig/TokenParser/WithTokenParser.php +++ b/includes/lib/Twig/TokenParser/WithTokenParser.php @@ -30,18 +30,18 @@ final class WithTokenParser extends AbstractTokenParser $variables = null; $only = false; - if (!$stream->test(/* Token::BLOCK_END_TYPE */ 3)) { + if (!$stream->test(Token::BLOCK_END_TYPE)) { $variables = $this->parser->getExpressionParser()->parseExpression(); - $only = (bool) $stream->nextIf(/* Token::NAME_TYPE */ 5, 'only'); + $only = (bool) $stream->nextIf(Token::NAME_TYPE, 'only'); } - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideWithEnd'], true); - $stream->expect(/* Token::BLOCK_END_TYPE */ 3); + $stream->expect(Token::BLOCK_END_TYPE); - return new WithNode($body, $variables, $only, $token->getLine(), $this->getTag()); + return new WithNode($body, $variables, $only, $token->getLine()); } public function decideWithEnd(Token $token): bool diff --git a/includes/lib/Twig/TokenStream.php b/includes/lib/Twig/TokenStream.php index 9921f78..35aa971 100644 --- a/includes/lib/Twig/TokenStream.php +++ b/includes/lib/Twig/TokenStream.php @@ -21,14 +21,17 @@ use Twig\Error\SyntaxError; */ final class TokenStream { - private $tokens; private $current = 0; - private $source; - public function __construct(array $tokens, ?Source $source = null) - { - $this->tokens = $tokens; - $this->source = $source ?: new Source('', ''); + public function __construct( + private array $tokens, + private ?Source $source = null, + ) { + if (null === $this->source) { + trigger_deprecation('twig/twig', '3.16', \sprintf('Not passing a "%s" object to "%s" constructor is deprecated.', Source::class, __CLASS__)); + + $this->source = new Source('', ''); + } } public function __toString() @@ -110,7 +113,7 @@ final class TokenStream */ public function isEOF(): bool { - return /* Token::EOF_TYPE */ -1 === $this->tokens[$this->current]->getType(); + return Token::EOF_TYPE === $this->tokens[$this->current]->getType(); } public function getCurrent(): Token @@ -118,11 +121,6 @@ final class TokenStream return $this->tokens[$this->current]; } - /** - * Gets the source associated with this stream. - * - * @internal - */ public function getSourceContext(): Source { return $this->source; diff --git a/includes/lib/Twig/TwigCallableInterface.php b/includes/lib/Twig/TwigCallableInterface.php new file mode 100644 index 0000000..2a8ff61 --- /dev/null +++ b/includes/lib/Twig/TwigCallableInterface.php @@ -0,0 +1,53 @@ + + */ +interface TwigCallableInterface extends \Stringable +{ + public function getName(): string; + + public function getType(): string; + + public function getDynamicName(): string; + + /** + * @return callable|array{class-string, string}|null + */ + public function getCallable(); + + public function getNodeClass(): string; + + public function needsCharset(): bool; + + public function needsEnvironment(): bool; + + public function needsContext(): bool; + + public function withDynamicArguments(string $name, string $dynamicName, array $arguments): self; + + public function getArguments(): array; + + public function isVariadic(): bool; + + public function isDeprecated(): bool; + + public function getDeprecatingPackage(): string; + + public function getDeprecatedVersion(): string; + + public function getAlternative(): ?string; + + public function getMinimalNumberOfRequiredArguments(): int; +} diff --git a/includes/lib/Twig/TwigFilter.php b/includes/lib/Twig/TwigFilter.php index 2b80df9..dece518 100644 --- a/includes/lib/Twig/TwigFilter.php +++ b/includes/lib/Twig/TwigFilter.php @@ -21,79 +21,27 @@ use Twig\Node\Node; * * @see https://twig.symfony.com/doc/templates.html#filters */ -final class TwigFilter +final class TwigFilter extends AbstractTwigCallable { - private $name; - private $callable; - private $options; - private $arguments = []; - /** * @param callable|array{class-string, string}|null $callable A callable implementing the filter. If null, you need to overwrite the "node_class" option to customize compilation. */ public function __construct(string $name, $callable = null, array $options = []) { - $this->name = $name; - $this->callable = $callable; + parent::__construct($name, $callable, $options); + $this->options = array_merge([ - 'needs_environment' => false, - 'needs_context' => false, - 'needs_charset' => false, - 'is_variadic' => false, 'is_safe' => null, 'is_safe_callback' => null, 'pre_escape' => null, 'preserves_safety' => null, 'node_class' => FilterExpression::class, - 'deprecated' => false, - 'deprecating_package' => '', - 'alternative' => null, - ], $options); + ], $this->options); } - public function getName(): string + public function getType(): string { - return $this->name; - } - - /** - * Returns the callable to execute for this filter. - * - * @return callable|array{class-string, string}|null - */ - public function getCallable() - { - return $this->callable; - } - - public function getNodeClass(): string - { - return $this->options['node_class']; - } - - public function setArguments(array $arguments): void - { - $this->arguments = $arguments; - } - - public function getArguments(): array - { - return $this->arguments; - } - - public function needsCharset(): bool - { - return $this->options['needs_charset']; - } - - public function needsEnvironment(): bool - { - return $this->options['needs_environment']; - } - - public function needsContext(): bool - { - return $this->options['needs_context']; + return 'filter'; } public function getSafe(Node $filterArgs): ?array @@ -106,12 +54,12 @@ final class TwigFilter return $this->options['is_safe_callback']($filterArgs); } - return null; + return []; } - public function getPreservesSafety(): ?array + public function getPreservesSafety(): array { - return $this->options['preserves_safety']; + return $this->options['preserves_safety'] ?? []; } public function getPreEscape(): ?string @@ -119,28 +67,8 @@ final class TwigFilter return $this->options['pre_escape']; } - public function isVariadic(): bool + public function getMinimalNumberOfRequiredArguments(): int { - return $this->options['is_variadic']; - } - - public function isDeprecated(): bool - { - return (bool) $this->options['deprecated']; - } - - public function getDeprecatingPackage(): string - { - return $this->options['deprecating_package']; - } - - public function getDeprecatedVersion(): string - { - return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; - } - - public function getAlternative(): ?string - { - return $this->options['alternative']; + return parent::getMinimalNumberOfRequiredArguments() + 1; } } diff --git a/includes/lib/Twig/TwigFunction.php b/includes/lib/Twig/TwigFunction.php index bfee7eb..4a10df9 100644 --- a/includes/lib/Twig/TwigFunction.php +++ b/includes/lib/Twig/TwigFunction.php @@ -21,77 +21,31 @@ use Twig\Node\Node; * * @see https://twig.symfony.com/doc/templates.html#functions */ -final class TwigFunction +final class TwigFunction extends AbstractTwigCallable { - private $name; - private $callable; - private $options; - private $arguments = []; - /** * @param callable|array{class-string, string}|null $callable A callable implementing the function. If null, you need to overwrite the "node_class" option to customize compilation. */ public function __construct(string $name, $callable = null, array $options = []) { - $this->name = $name; - $this->callable = $callable; + parent::__construct($name, $callable, $options); + $this->options = array_merge([ - 'needs_environment' => false, - 'needs_context' => false, - 'needs_charset' => false, - 'is_variadic' => false, 'is_safe' => null, 'is_safe_callback' => null, 'node_class' => FunctionExpression::class, - 'deprecated' => false, - 'deprecating_package' => '', - 'alternative' => null, - ], $options); + 'parser_callable' => null, + ], $this->options); } - public function getName(): string + public function getType(): string { - return $this->name; + return 'function'; } - /** - * Returns the callable to execute for this function. - * - * @return callable|array{class-string, string}|null - */ - public function getCallable() + public function getParserCallable(): ?callable { - return $this->callable; - } - - public function getNodeClass(): string - { - return $this->options['node_class']; - } - - public function setArguments(array $arguments): void - { - $this->arguments = $arguments; - } - - public function getArguments(): array - { - return $this->arguments; - } - - public function needsCharset(): bool - { - return $this->options['needs_charset']; - } - - public function needsEnvironment(): bool - { - return $this->options['needs_environment']; - } - - public function needsContext(): bool - { - return $this->options['needs_context']; + return $this->options['parser_callable']; } public function getSafe(Node $functionArgs): ?array @@ -106,29 +60,4 @@ final class TwigFunction return []; } - - public function isVariadic(): bool - { - return (bool) $this->options['is_variadic']; - } - - public function isDeprecated(): bool - { - return (bool) $this->options['deprecated']; - } - - public function getDeprecatingPackage(): string - { - return $this->options['deprecating_package']; - } - - public function getDeprecatedVersion(): string - { - return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; - } - - public function getAlternative(): ?string - { - return $this->options['alternative']; - } } diff --git a/includes/lib/Twig/TwigTest.php b/includes/lib/Twig/TwigTest.php index 0b43a28..5e58ad8 100644 --- a/includes/lib/Twig/TwigTest.php +++ b/includes/lib/Twig/TwigTest.php @@ -20,87 +20,48 @@ use Twig\Node\Expression\TestExpression; * * @see https://twig.symfony.com/doc/templates.html#test-operator */ -final class TwigTest +final class TwigTest extends AbstractTwigCallable { - private $name; - private $callable; - private $options; - private $arguments = []; - /** * @param callable|array{class-string, string}|null $callable A callable implementing the test. If null, you need to overwrite the "node_class" option to customize compilation. */ public function __construct(string $name, $callable = null, array $options = []) { - $this->name = $name; - $this->callable = $callable; + parent::__construct($name, $callable, $options); + $this->options = array_merge([ - 'is_variadic' => false, 'node_class' => TestExpression::class, - 'deprecated' => false, - 'deprecating_package' => '', - 'alternative' => null, 'one_mandatory_argument' => false, - ], $options); + ], $this->options); } - public function getName(): string + public function getType(): string { - return $this->name; + return 'test'; } - /** - * Returns the callable to execute for this test. - * - * @return callable|array{class-string, string}|null - */ - public function getCallable() + public function needsCharset(): bool { - return $this->callable; + return false; } - public function getNodeClass(): string + public function needsEnvironment(): bool { - return $this->options['node_class']; + return false; } - public function setArguments(array $arguments): void + public function needsContext(): bool { - $this->arguments = $arguments; - } - - public function getArguments(): array - { - return $this->arguments; - } - - public function isVariadic(): bool - { - return (bool) $this->options['is_variadic']; - } - - public function isDeprecated(): bool - { - return (bool) $this->options['deprecated']; - } - - public function getDeprecatingPackage(): string - { - return $this->options['deprecating_package']; - } - - public function getDeprecatedVersion(): string - { - return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; - } - - public function getAlternative(): ?string - { - return $this->options['alternative']; + return false; } public function hasOneMandatoryArgument(): bool { return (bool) $this->options['one_mandatory_argument']; } + + public function getMinimalNumberOfRequiredArguments(): int + { + return parent::getMinimalNumberOfRequiredArguments() + 1; + } } diff --git a/includes/lib/Twig/Util/CallableArgumentsExtractor.php b/includes/lib/Twig/Util/CallableArgumentsExtractor.php new file mode 100644 index 0000000..d862516 --- /dev/null +++ b/includes/lib/Twig/Util/CallableArgumentsExtractor.php @@ -0,0 +1,219 @@ + + * + * @internal + */ +final class CallableArgumentsExtractor +{ + private ReflectionCallable $rc; + + public function __construct( + private Node $node, + private TwigCallableInterface $twigCallable, + ) { + $this->rc = new ReflectionCallable($twigCallable); + } + + /** + * @return array + */ + public function extractArguments(Node $arguments): array + { + $extractedArguments = []; + $extractedArgumentNameMap = []; + $named = false; + foreach ($arguments as $name => $node) { + if (!\is_int($name)) { + $named = true; + } elseif ($named) { + throw new SyntaxError(\sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + $extractedArguments[$normalizedName = $this->normalizeName($name)] = $node; + $extractedArgumentNameMap[$normalizedName] = $name; + } + + if (!$named && !$this->twigCallable->isVariadic()) { + $min = $this->twigCallable->getMinimalNumberOfRequiredArguments(); + if (\count($extractedArguments) < $this->rc->getReflector()->getNumberOfRequiredParameters() - $min) { + $argName = $this->toSnakeCase($this->rc->getReflector()->getParameters()[$min + \count($extractedArguments)]->getName()); + + throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $argName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + return $extractedArguments; + } + + if (!$callable = $this->twigCallable->getCallable()) { + if ($named) { + throw new SyntaxError(\sprintf('Named arguments are not supported for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName())); + } + + throw new SyntaxError(\sprintf('Arbitrary positional arguments are not supported for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName())); + } + + [$callableParameters, $isPhpVariadic] = $this->getCallableParameters(); + $arguments = []; + $callableParameterNames = []; + $missingArguments = []; + $optionalArguments = []; + $pos = 0; + foreach ($callableParameters as $callableParameter) { + $callableParameterName = $callableParameter->name; + if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) { + if ('start' === $callableParameterName) { + $callableParameterName = 'low'; + } elseif ('end' === $callableParameterName) { + $callableParameterName = 'high'; + } + } + + $callableParameterNames[] = $callableParameterName; + $normalizedCallableParameterName = $this->normalizeName($callableParameterName); + + if (\array_key_exists($normalizedCallableParameterName, $extractedArguments)) { + if (\array_key_exists($pos, $extractedArguments)) { + throw new SyntaxError(\sprintf('Argument "%s" is defined twice for %s "%s".', $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + if (\count($missingArguments)) { + throw new SyntaxError(\sprintf( + 'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".', + $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames)), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments) + ), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $extractedArguments[$normalizedCallableParameterName]; + unset($extractedArguments[$normalizedCallableParameterName]); + $optionalArguments = []; + } elseif (\array_key_exists($pos, $extractedArguments)) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $extractedArguments[$pos]; + unset($extractedArguments[$pos]); + $optionalArguments = []; + ++$pos; + } elseif ($callableParameter->isDefaultValueAvailable()) { + $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), $this->node->getTemplateLine()); + } elseif ($callableParameter->isOptional()) { + if (!$extractedArguments) { + break; + } + + $missingArguments[] = $callableParameterName; + } else { + throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $this->toSnakeCase($callableParameterName), $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + } + } + + if ($this->twigCallable->isVariadic()) { + $arbitraryArguments = $isPhpVariadic ? new VariadicExpression([], $this->node->getTemplateLine()) : new ArrayExpression([], $this->node->getTemplateLine()); + foreach ($extractedArguments as $key => $value) { + if (\is_int($key)) { + $arbitraryArguments->addElement($value); + } else { + $originalKey = $extractedArgumentNameMap[$key]; + if ($originalKey !== $this->toSnakeCase($originalKey)) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Using "snake_case" for variadic arguments is required for a smooth upgrade with Twig 4.0; rename "%s" to "%s" in "%s" at line %d.', $originalKey, $this->toSnakeCase($originalKey), $this->node->getSourceContext()->getName(), $this->node->getTemplateLine())); + } + $arbitraryArguments->addElement($value, new ConstantExpression($this->toSnakeCase($originalKey), $this->node->getTemplateLine())); + // I Twig 4.0, don't convert the key: + // $arbitraryArguments->addElement($value, new ConstantExpression($originalKey, $this->node->getTemplateLine())); + } + unset($extractedArguments[$key]); + } + + if ($arbitraryArguments->count()) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $arbitraryArguments; + } + } + + if ($extractedArguments) { + $unknownArgument = null; + foreach ($extractedArguments as $extractedArgument) { + if ($extractedArgument instanceof Node) { + $unknownArgument = $extractedArgument; + break; + } + } + + throw new SyntaxError( + \sprintf( + 'Unknown argument%s "%s" for %s "%s(%s)".', + \count($extractedArguments) > 1 ? 's' : '', implode('", "', array_keys($extractedArguments)), $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames)) + ), + $unknownArgument ? $unknownArgument->getTemplateLine() : $this->node->getTemplateLine(), + $unknownArgument ? $unknownArgument->getSourceContext() : $this->node->getSourceContext() + ); + } + + return $arguments; + } + + private function normalizeName(string $name): string + { + return strtolower(str_replace('_', '', $name)); + } + + private function toSnakeCase(string $name): string + { + return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z0-9])([A-Z])/'], '\1_\2', $name)); + } + + private function getCallableParameters(): array + { + $parameters = $this->rc->getReflector()->getParameters(); + if ($this->node->hasNode('node')) { + array_shift($parameters); + } + if ($this->twigCallable->needsCharset()) { + array_shift($parameters); + } + if ($this->twigCallable->needsEnvironment()) { + array_shift($parameters); + } + if ($this->twigCallable->needsContext()) { + array_shift($parameters); + } + foreach ($this->twigCallable->getArguments() as $argument) { + array_shift($parameters); + } + + $isPhpVariadic = false; + if ($this->twigCallable->isVariadic()) { + $argument = end($parameters); + $isArray = $argument && $argument->hasType() && $argument->getType() instanceof \ReflectionNamedType && 'array' === $argument->getType()->getName(); + if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) { + array_pop($parameters); + } elseif ($argument && $argument->isVariadic()) { + array_pop($parameters); + $isPhpVariadic = true; + } else { + throw new SyntaxError(\sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $this->rc->getName(), $this->twigCallable->getType(), $this->twigCallable->getName())); + } + } + + return [$parameters, $isPhpVariadic]; + } +} diff --git a/includes/lib/Twig/Util/DeprecationCollector.php b/includes/lib/Twig/Util/DeprecationCollector.php index ad53106..0ea26ed 100644 --- a/includes/lib/Twig/Util/DeprecationCollector.php +++ b/includes/lib/Twig/Util/DeprecationCollector.php @@ -20,11 +20,9 @@ use Twig\Source; */ final class DeprecationCollector { - private $twig; - - public function __construct(Environment $twig) - { - $this->twig = $twig; + public function __construct( + private Environment $twig, + ) { } /** diff --git a/includes/lib/Twig/Util/ReflectionCallable.php b/includes/lib/Twig/Util/ReflectionCallable.php index 54384e1..16734d9 100644 --- a/includes/lib/Twig/Util/ReflectionCallable.php +++ b/includes/lib/Twig/Util/ReflectionCallable.php @@ -11,6 +11,8 @@ namespace Twig\Util; +use Twig\TwigCallableInterface; + /** * @author Fabien Potencier * @@ -19,11 +21,13 @@ namespace Twig\Util; final class ReflectionCallable { private $reflector; - private $callable = null; + private $callable; private $name; - public function __construct($callable, string $debugType = 'unknown', string $debugName = 'unknown') - { + public function __construct( + TwigCallableInterface $twigCallable, + ) { + $callable = $twigCallable->getCallable(); if (\is_string($callable) && false !== $pos = strpos($callable, '::')) { $callable = [substr($callable, 0, $pos), substr($callable, 2 + $pos)]; } @@ -40,7 +44,7 @@ final class ReflectionCallable try { $closure = \Closure::fromCallable($callable); } catch (\TypeError $e) { - throw new \LogicException(\sprintf('Callback for %s "%s" is not callable in the current scope.', $debugType, $debugName), 0, $e); + throw new \LogicException(\sprintf('Callback for %s "%s" is not callable in the current scope.', $twigCallable->getType(), $twigCallable->getName()), 0, $e); } $this->reflector = $r = new \ReflectionFunction($closure); diff --git a/includes/lib/xenocrat/markdown/ChyrpMarkdown.php b/includes/lib/xenocrat/markdown/ChyrpMarkdown.php index c41a3ee..58570be 100644 --- a/includes/lib/xenocrat/markdown/ChyrpMarkdown.php +++ b/includes/lib/xenocrat/markdown/ChyrpMarkdown.php @@ -25,6 +25,7 @@ class ChyrpMarkdown extends GithubMarkdown // Include inline element parsing using traits. use inline\CiteTrait; use inline\HighlightTrait; + use inline\MediaLinkTrait; use inline\SupSubTrait; /** diff --git a/includes/lib/xenocrat/markdown/GithubMarkdown.php b/includes/lib/xenocrat/markdown/GithubMarkdown.php index 7249adb..a19540c 100644 --- a/includes/lib/xenocrat/markdown/GithubMarkdown.php +++ b/includes/lib/xenocrat/markdown/GithubMarkdown.php @@ -40,21 +40,6 @@ class GithubMarkdown extends Markdown 'Headline', ]; - /** - * @var boolean Whether to interpret newlines as `
      ` tags. - * - * This feature is useful for comments where newlines are often - * meant to be hard line breaks. - */ - public $enableNewlines = false; - - /** - * @var boolean Whether to sanitize disallowed raw HTML tags. - * - * This toggles section 6.11 of the GFM specification on or off. - */ - public $disallowedRawHTML = true; - /** * @var array Disallowed HTML elements defined in GFM spec * @see https://github.github.com/gfm/#disallowed-raw-html-extension- @@ -71,6 +56,21 @@ class GithubMarkdown extends Markdown 'xmp', ]; + /** + * @var boolean Whether to sanitize disallowed raw HTML tags. + * + * This toggles section 6.11 of the GFM specification on or off. + */ + public $disallowedRawHTML = true; + + /** + * @var boolean Whether to interpret newlines as `
      ` tags. + * + * This feature is useful for comments where newlines are often + * meant to be hard line breaks. + */ + public $enableNewlines = false; + /** * @inheritDoc */ diff --git a/includes/lib/xenocrat/markdown/Parser.php b/includes/lib/xenocrat/markdown/Parser.php index 8b75bd5..7671c37 100644 --- a/includes/lib/xenocrat/markdown/Parser.php +++ b/includes/lib/xenocrat/markdown/Parser.php @@ -18,8 +18,9 @@ use RuntimeException; */ abstract class Parser { - const VERSION_MAJOR = 3; - const VERSION_MINOR = 8; + const VERSION_MAJOR = 4; + const VERSION_MINOR = 0; + const VERSION_PATCH = 0; /** * @var integer - The maximum nesting level for language elements. @@ -175,7 +176,7 @@ abstract class Parser public function setContextId($string): string { $id = str_replace( - ['&', '<', '>', '"'], + ['&', '<', '>', '"', ' '], '', strval($string) ); diff --git a/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php b/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php index 34e7108..baed763 100644 --- a/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php +++ b/includes/lib/xenocrat/markdown/inline/EmphStrongTrait.php @@ -60,8 +60,10 @@ trait EmphStrongTrait // First and last chars of the strong text // cannot be whitespace. if ( - strspn($content, " \t\n", 0, 1) === 0 - && strspn($content, " \t\n", -1) === 0 + preg_match( + '/^(?![\s\p{Zs}]).+(?context, 1)) - && ($parts = $this->parseLinkOrImage($markdown)) !== false + && ( + $parts = $this->parseLinkOrImage($markdown) + ) !== false ) { list($text, $url, $title, $offset, $key) = $parts; return [ @@ -79,10 +94,28 @@ trait LinkTrait protected function parseImage($markdown): array { if ( - ($parts = $this->parseLinkOrImage(substr($markdown, 1))) - !== false + ( + $parts = $this->parseLinkOrImage(substr($markdown, 1)) + ) !== false ) { list($text, $url, $title, $offset, $key) = $parts; + if ( + $this->enableImageDimensions + && str_starts_with( + ($dimensions = substr($markdown, $offset + 1, 21)), + '{' + ) + && preg_match( + '/^\{([0-9]{1,9})(:([0-9]{1,9}))?\}/', + $dimensions, + $dimensionMatches + ) + ) { + // Intrinsic dimensions. + $width = $dimensionMatches[1]; + $height = $dimensionMatches[3] ?? false; + $offset += strlen($dimensionMatches[0]); + } return [ [ 'image', @@ -90,6 +123,8 @@ trait LinkTrait 'url' => $url, 'title' => $title, 'refkey' => $key, + 'width' => $width ?? false, + 'height' => $height ?? false, 'orig' => substr($markdown, 0, $offset + 1), ], $offset + 1 @@ -313,6 +348,21 @@ REGEXP; ENT_COMPAT | ENT_SUBSTITUTE ) . '"' + . ( + empty($block['width']) ? + '' : + ' width="' . $block['width'] . '"' + ) + . ( + empty($block['height']) ? + '' : + ' height="' . $block['height'] . '"' + ) + . ( + $this->renderLazyImages ? + ' loading="lazy"' : + '' + ) . ( empty($block['title']) ? '' : diff --git a/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php b/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php index d3709c2..073257e 100644 --- a/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php +++ b/includes/lib/xenocrat/markdown/inline/MediaLinkTrait.php @@ -13,6 +13,11 @@ namespace xenocrat\markdown\inline; */ trait MediaLinkTrait { + /** + * @var bool Render video and audio with a deferred loading attribute. + */ + public $renderLazyMedia = false; + protected function renderImage($block): string { if (isset($block['refkey'])) { @@ -31,8 +36,23 @@ trait MediaLinkTrait if ( preg_match('/\.(mpe?g|mp4|m4v|mov|webm|ogv)$/i', $block['url']) ) { - return '
      -{{- icon_img("help.svg", "help" | translate) -}} +{{- icon_svg("help.svg", "Help" | translate) -}} -{{ icon_img("add.svg") }}{{ "New Category" | translate("categorize") }} +{{ icon_svg("add.svg") }}{{ "New Category" | translate("categorize") }} @@ -34,7 +34,7 @@ {% if category.show_on_home %} -{{ icon_img("success.svg", "yes" | translate, "emblem") }} +{{ icon_svg("success.svg", "Yes" | translate, "emblem") }} {% endif %} @@ -44,16 +44,17 @@ {{ category.post_count }} -{{ category.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ category.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ category.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ category.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/modules/categorize/categorize.php b/modules/categorize/categorize.php index 2846249..22fbac5 100644 --- a/modules/categorize/categorize.php +++ b/modules/categorize/categorize.php @@ -6,14 +6,17 @@ # Query caches for methods. private $caches = array(); - public static function __install(): void { + public static function __install( + ): void { Category::install(); Group::add_permission("manage_categorize", "Manage Categories"); Route::current()->add("category/(name)/", "category"); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { if ($confirm) Category::uninstall(); @@ -21,12 +24,17 @@ Route::current()->remove("category/(name)/"); } - public function list_permissions($names = array()): array { + public function list_permissions( + $names = array() + ): array { $names["manage_categorize"] = __("Manage Categories", "categorize"); return $names; } - public function feed_item($post, $feed): void { + public function feed_item( + $post, + $feed + ): void { if (!empty($post->category)) $feed->category( $post->category->clean, @@ -35,7 +43,11 @@ ); } - public function related_posts($ids, $post, $limit): array { + public function related_posts( + $ids, + $post, + $limit + ): array { if (empty($post->category_id)) return $ids; @@ -57,17 +69,22 @@ return $ids; } - public function parse_urls($urls): array { + public function parse_urls( + $urls + ): array { $urls['|/category/([^/]+)/|'] = '/?action=category&name=$1'; return $urls; } - public function manage_posts_column_header(): string { + public function manage_posts_column_header( + ): string { return ''. __("Category", "categorize").''; } - public function manage_posts_column($post): string { + public function manage_posts_column( + $post + ): string { $td = ''; if (isset($post->category->name)) @@ -82,7 +99,10 @@ return $td; } - public function post_options($fields, $post = null): array { + public function post_options( + $fields, + $post = null + ): array { $options[0]["value"] = "0"; $options[0]["name"] = __("[None]", "categorize"); $options[0]["selected"] = empty($post->category_id); @@ -107,7 +127,9 @@ return $fields; } - public function post($post): void { + public function post( + $post + ): void { if (!empty($post->category_id)) { $category = new Category($post->category_id); @@ -116,7 +138,9 @@ } } - private function get_category_post_count($category_id): int { + private function get_category_post_count( + $category_id + ): int { if (!isset($this->caches["category_post_counts"])) { $counts = SQL::current()->select( tables:"post_attributes", @@ -137,14 +161,19 @@ return fallback($this->caches["category_post_counts"][$category_id], 0); } - public function category_post_count_attr($attr, $category): int { + public function category_post_count_attr( + $attr, + $category + ): int { if ($category->no_results) return 0; return $this->get_category_post_count($category->id); } - public function twig_context_main($context): array { + public function twig_context_main( + $context + ): array { $context["categorize"] = array(); foreach (Category::find() as $category) { @@ -155,7 +184,9 @@ return $context; } - public function main_category($main): void { + public function main_category( + $main + ): void { if (!isset($_GET['name'])) Flash::warning( __("You did not specify a category.", "categorize"), @@ -218,7 +249,9 @@ ); } - public function manage_nav($navs): array { + public function manage_nav( + $navs + ): array { if (Visitor::current()->group->can("manage_categorize")) $navs["manage_category"] = array( "title" => __("Categories", "categorize"), @@ -232,7 +265,9 @@ return $navs; } - public function admin_determine_action($action): ?string { + public function admin_determine_action( + $action + ): ?string { $visitor = Visitor::current(); if ($action == "manage" and $visitor->group->can("manage_categorize")) @@ -241,7 +276,9 @@ return null; } - public function admin_manage_category($admin): void { + public function admin_manage_category( + $admin + ): void { if (!Visitor::current()->group->can("manage_categorize")) show_403( __("Access Denied"), @@ -281,7 +318,9 @@ ); } - public function admin_new_category($admin): void { + public function admin_new_category( + $admin + ): void { if (!Visitor::current()->group->can("manage_categorize")) show_403( __("Access Denied"), @@ -291,7 +330,9 @@ $admin->display("pages".DIR."new_category"); } - public function admin_add_category($admin)/*: never */ { + public function admin_add_category( + $admin + ): never { if (!Visitor::current()->group->can("manage_categorize")) show_403( __("Access Denied"), @@ -311,16 +352,14 @@ code:400 ); - $clean = empty($_POST['clean']) ? - $_POST['name'] : - $_POST['clean'] ; + fallback($_POST['clean'], $_POST['name']); - $clean = sanitize($clean, true, SLUG_STRICT, 128); - - if (!preg_match("/[^\-0-9]+/", $clean)) - $clean = md5($clean); - - $clean = Category::check_clean($clean); + $clean = Category::check_clean( + oneof( + sanitize($_POST['clean'], true, SLUG_STRICT, 128), + md5($_POST['name']) + ) + ); Category::add( name:$_POST['name'], @@ -334,7 +373,9 @@ ); } - public function admin_edit_category($admin): void { + public function admin_edit_category( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -362,7 +403,9 @@ ); } - public function admin_update_category($admin)/*: never */ { + public function admin_update_category( + $admin + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -397,18 +440,18 @@ __("You do not have sufficient privileges to edit this category.", "categorize") ); - $clean = empty($_POST['clean']) ? - $_POST['name'] : - $_POST['clean'] ; + fallback($_POST['clean'], $_POST['name']); - if ($clean != $category->clean) { - $clean = sanitize($clean, true, SLUG_STRICT, 128); - - if (!preg_match("/[^\-0-9]+/", $clean)) - $clean = md5($clean); - - $clean = Category::check_clean($clean); - } + $clean = ($_POST['clean'] != $category->clean) ? + Category::check_clean( + oneof( + sanitize($_POST['clean'], true, SLUG_STRICT, 128), + md5($_POST['name']) + ) + ) + : + $category->clean + ; $category = $category->update( name:$_POST['name'], @@ -422,7 +465,9 @@ ); } - public function admin_delete_category($admin): void { + public function admin_delete_category( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -450,7 +495,8 @@ ); } - public function admin_destroy_category()/*: never */ { + public function admin_destroy_category( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), diff --git a/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.mo b/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.mo index 81983e6652a5d16da889a36b354055c7d7ee9022..58d55964ecd8e5fe610a5a7a4028a5ddc88f2a52 100644 GIT binary patch delta 363 zcmXZXze@sP9LMp`h0vLGXZGW8a1t(%KpaGkxItP>%%LHg#s8qGhTBBwPiWH7Nw}>g z+;US~of{)La`ye;Ezj%uJYT-g_jy+S(x1LqVJxY5BweGIk#6uVF~ke(fpuoTh++R+}b;9ZYN0q delta 365 zcmXZXJxhX77{>9-5>g-EOG88&1eJ(DaL^KQ5QiL69Hb8reE~;9+5|s?lZ_6+gIh~D zsZ+W;H%1~k`ak$A=Xb7ibD#U1@60;$(RKBAlF~lu1{0Qahjqs{jFCUFh$~0Sf6O(c zRj)X}0S;YKBp?OJBbF3S92e*%|KKJ51=ZID8()awc!j1=!gFk41)s5m?-;=iUgIw^ zQ^~Lt#T>fv9x17cactrfzMy%)7iMu8?i?Go9GD;O@d5KpF}a6)MpMk=49!J5Y~v$S Yjbq1uJR>*k`ANfbTDUFPF{|u30Qe{<00000 diff --git a/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po b/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po index 0779339..80953af 100644 --- a/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po +++ b/modules/categorize/locale/de_DE/LC_MESSAGES/categorize.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/categorize/admin/help/categorizing_posts.twig:3 @@ -92,7 +92,7 @@ msgid "Update" msgstr "Aktualisieren" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "Kategorien steuern" @@ -103,7 +103,7 @@ msgid "New Category" msgstr "Neuer Kategorie" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "Kategorien" @@ -115,93 +115,93 @@ msgstr "Blogposts" msgid "Add Category" msgstr "Kategorie Hinzufügen" -#: modules/categorize/categorize.php:67 modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 modules/categorize/categorize.php:121 msgid "Category" msgstr "Kategorie" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "[Keine]" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "Sie haben keine Dateien zum hochladen selektiert." -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "Die von Ihnen angegebene Kategorie wurde nicht gefunden." -#: modules/categorize/categorize.php:192 modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "Die von Ihnen angegebene Kategorie wurde nicht gefunden." -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "Blogposts in Kategorie “%s”" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kategorien." -#: modules/categorize/categorize.php:288 modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen um Kategorien hinfügen " "zu können." -#: modules/categorize/categorize.php:309 modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "Kein Name specifiziert" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "Zum Hinzufügen einer Kategorie ist ein Name erforderlich." -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "Kategorie hinzugefügt." -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "Zum Bearbeiten einer Kategorie ist eine ID erforderlich." -#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:391 modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 modules/categorize/categorize.php:521 msgid "Category not found." msgstr "Kategorie nicht gefunden." -#: modules/categorize/categorize.php:356 modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:397 modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kategorien." -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "Zum Bearbeiten einer Kategorie ist eine ID erforderlich." -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "Zum Hinzufügen einer Kategorie ist ein Name erforderlich." -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "Kategorie aktualisiert." -#: modules/categorize/categorize.php:429 modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "Zum Bearbeiten einer Kategorie ist eine ID erforderlich." -#: modules/categorize/categorize.php:444 modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Verwalten von " "Kategorien." -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "Kategorie gelöscht." diff --git a/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot b/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot index 752b2f8..342537c 100644 --- a/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot +++ b/modules/categorize/locale/en_US/LC_MESSAGES/categorize.pot @@ -64,7 +64,7 @@ msgid "Update" msgstr "" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "" @@ -75,7 +75,7 @@ msgid "New Category" msgstr "" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "" @@ -87,94 +87,94 @@ msgstr "" msgid "Add Category" msgstr "" -#: modules/categorize/categorize.php:67 -#: modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 +#: modules/categorize/categorize.php:121 msgid "Category" msgstr "" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "" -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "" -#: modules/categorize/categorize.php:192 -#: modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 +#: modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "" -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "" -#: modules/categorize/categorize.php:288 -#: modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 +#: modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "" -#: modules/categorize/categorize.php:309 -#: modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 +#: modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "" -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "" -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "" -#: modules/categorize/categorize.php:350 #: modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 -#: modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 +#: modules/categorize/categorize.php:521 msgid "Category not found." msgstr "" -#: modules/categorize/categorize.php:356 #: modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "" -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "" -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "" -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "" -#: modules/categorize/categorize.php:429 -#: modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 +#: modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "" -#: modules/categorize/categorize.php:444 -#: modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 +#: modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "" -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "" diff --git a/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.mo b/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.mo index 5d3636358195ddf91815cbed70992335fc78df5b..2fe001adf906db010700308d40126b30cb9c7338 100644 GIT binary patch delta 363 zcmXZWKTASU9LDkIR_4v?-%_zzE^?R1!c7FH99mjxQSb$XD7fe%E)EV3E``)xfN9-cT0QnEvq>mBm^m6Hiw*)2A3eG8u|c2>1N;%G&MLll!$%>#ZmkK z2IA1{7H)n55&EBe;BbCi*SR^|pLWk4HC^q1OS(9evXasvseq4;U5t^x@d{UXjaGQ? z4IYqR@Eu>V&VQaGDPnp{I>R?iU?0u=7~?p#)c${1QY0yU@dUTdK=fEDl5M=iCo~Iv zIC+TX!@1M{pr5=(jy7E9xWjuqWh*b%(Z)ukwlBUYG86->-~w})j7mYg#T4FQ30qjk c8Jc+?TbaI!W}(hx?tTb*@|pZ36?zW*0m+#rMF0Q* diff --git a/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po b/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po index 90dbd05..fa48230 100644 --- a/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po +++ b/modules/categorize/locale/it_IT/LC_MESSAGES/categorize.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/categorize/admin/help/categorizing_posts.twig:3 @@ -92,7 +92,7 @@ msgid "Update" msgstr "Aggiorna" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "Gestisci categorie" @@ -103,7 +103,7 @@ msgid "New Category" msgstr "Nuova Categoria" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "Categorie" @@ -115,87 +115,87 @@ msgstr "Post" msgid "Add Category" msgstr "Aggiungi categoria" -#: modules/categorize/categorize.php:67 modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 modules/categorize/categorize.php:121 msgid "Category" msgstr "Categoria" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "[Nessuno]" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "Non è stata specificata una categoria." -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "La categoria specificata non è stata trovata." -#: modules/categorize/categorize.php:192 modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "Non sono presenti post nella categoria specificata." -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "Post nella categoria “%s”" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "Non si dispone di privilegi sufficienti per gestire le categorie." -#: modules/categorize/categorize.php:288 modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "Non si dispone di privilegi sufficienti per aggiungere categorie." -#: modules/categorize/categorize.php:309 modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "Nessun titolo specificato" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "Per aggiungere una categoria è necessario un titolo." -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "Categoria aggiunta." -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "Per modificare una categoria è necessario un ID." -#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:391 modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 modules/categorize/categorize.php:521 msgid "Category not found." msgstr "Categoria non trovata." -#: modules/categorize/categorize.php:356 modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:397 modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "" "Non si dispone di privilegi sufficienti per modificare questa categoria." -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "Per aggiornare una categoria è necessario un ID." -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "Per aggiornare una categoria è necessario un titolo." -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "Categoria aggiornata." -#: modules/categorize/categorize.php:429 modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "Per eliminare una categoria è necessario un ID." -#: modules/categorize/categorize.php:444 modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "" "Non si dispone di privilegi sufficienti per eliminare questa categoria." -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "Categoria eliminata." diff --git a/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.mo b/modules/categorize/locale/nl_NL/LC_MESSAGES/categorize.mo index 88fd4ff802966f15319c01f052be18fe66f71d82..ef981600a87144e829b10c526e092d58fd0b2bba 100644 GIT binary patch delta 363 zcmXZWze@sP9LMp`sc4>|MoLFRi-%2`p1)8KY-l`X&ljF|cjbOQTeGdCk}Y`{V$0;rG2i1k`30N!h86t58pcm0 zJ~jC*@fPna={xG(taM3V#|s={8XvKU)2wFyhXsX0;YWi23*-%UagPmja#9|LSi%Q1 zdvi1o^)Z1TXzm5k{0qnAUo;PBGrYz@eso-TqNq|#u!FC7gF8%O;!G-I27BmXA16^> VquD#4xqlUGV(y963PQV+`U5MnB)k9s delta 365 zcmXZWJxfAi7{>9-GA%P-&`_KNk2+!aQF1 zB|eq;yX#s!*tD`&pO4*7uQ0ab=stcTjCg&swYqK_4P$9vqP2R&gagE#nqHa=qC Z$#XP&KWOeJmzy)|^4!kZ%U@r``vEMALpKPe}eDe^U+Fj5%C<65DTnhSpIi_$MjRI;e#Vg!n@WZ$@x$leEX)rKO4s){{R30 delta 357 zcmXZWu}Xqr6vpxAOO!PI6tN7VFp`kO5VR!}1l@zCMjM0%LvV8v3@<^q_C`S(q84!! zx`%GTJ?ektOuus;&U?ART6XLstpVvPJ9AMp#1 z0_luLmfxhLLu|PBX!#Rnagfq@S4=#Zxo?VeuWqK9o|Xj6kCEa=D1qK7TTg79%CPE!4#{waDP0{W~3;2bNR8?-jCF; K>&xFnC;AUdm?E_R diff --git a/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po b/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po index f6c3e70..4088e2f 100644 --- a/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po +++ b/modules/categorize/locale/zh_CN/LC_MESSAGES/categorize.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/categorize/admin/help/categorizing_posts.twig:3 @@ -88,7 +88,7 @@ msgid "Update" msgstr "更新" #: modules/categorize/admin/pages/manage_category.twig:3 -#: modules/categorize/categorize.php:25 +#: modules/categorize/categorize.php:30 msgid "Manage Categories" msgstr "管理类别" @@ -99,7 +99,7 @@ msgid "New Category" msgstr "新类别" #: modules/categorize/admin/pages/manage_category.twig:21 -#: modules/categorize/categorize.php:224 +#: modules/categorize/categorize.php:257 msgid "Categories" msgstr "类别" @@ -111,85 +111,85 @@ msgstr "所有帖子" msgid "Add Category" msgstr "添加类别" -#: modules/categorize/categorize.php:67 modules/categorize/categorize.php:101 +#: modules/categorize/categorize.php:82 modules/categorize/categorize.php:121 msgid "Category" msgstr "类别" -#: modules/categorize/categorize.php:87 +#: modules/categorize/categorize.php:107 msgid "[None]" msgstr "[空]" -#: modules/categorize/categorize.php:161 +#: modules/categorize/categorize.php:192 msgid "You did not specify a category." msgstr "您没有指定类别。" -#: modules/categorize/categorize.php:172 +#: modules/categorize/categorize.php:203 msgid "The category you specified was not found." msgstr "没有找到您指定的类别。" -#: modules/categorize/categorize.php:192 modules/categorize/categorize.php:208 +#: modules/categorize/categorize.php:223 modules/categorize/categorize.php:239 msgid "There are no posts in the category you specified." msgstr "您指定的类别中没有帖子。" -#: modules/categorize/categorize.php:217 +#: modules/categorize/categorize.php:248 #, php-format msgid "Posts in category “%s”" msgstr "“%s” 类别中的帖子" -#: modules/categorize/categorize.php:248 +#: modules/categorize/categorize.php:285 msgid "You do not have sufficient privileges to manage categories." msgstr "您没有足够的权限来管理类别。" -#: modules/categorize/categorize.php:288 modules/categorize/categorize.php:298 +#: modules/categorize/categorize.php:327 modules/categorize/categorize.php:339 msgid "You do not have sufficient privileges to add categories." msgstr "您没有足够的权限来添加类别。" -#: modules/categorize/categorize.php:309 modules/categorize/categorize.php:381 +#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:424 msgid "No Name Specified" msgstr "没有指定名称" -#: modules/categorize/categorize.php:310 +#: modules/categorize/categorize.php:351 msgid "A name is required to add a category." msgstr "添加类别需要名字。" -#: modules/categorize/categorize.php:332 +#: modules/categorize/categorize.php:371 msgid "Category added." msgstr "类别已添加。" -#: modules/categorize/categorize.php:341 +#: modules/categorize/categorize.php:382 msgid "An ID is required to edit a category." msgstr "编辑类别需要ID。" -#: modules/categorize/categorize.php:350 modules/categorize/categorize.php:391 -#: modules/categorize/categorize.php:438 modules/categorize/categorize.php:475 +#: modules/categorize/categorize.php:391 modules/categorize/categorize.php:434 +#: modules/categorize/categorize.php:483 modules/categorize/categorize.php:521 msgid "Category not found." msgstr "类别未找到。" -#: modules/categorize/categorize.php:356 modules/categorize/categorize.php:397 +#: modules/categorize/categorize.php:397 modules/categorize/categorize.php:440 msgid "You do not have sufficient privileges to edit this category." msgstr "您没有足够的权限来编辑这个类别。" -#: modules/categorize/categorize.php:375 +#: modules/categorize/categorize.php:418 msgid "An ID is required to update a category." msgstr "更新类别需要ID。" -#: modules/categorize/categorize.php:382 +#: modules/categorize/categorize.php:425 msgid "A name is required to update a category." msgstr "更新类别需要名字。" -#: modules/categorize/categorize.php:420 +#: modules/categorize/categorize.php:463 msgid "Category updated." msgstr "类别已更新。" -#: modules/categorize/categorize.php:429 modules/categorize/categorize.php:463 +#: modules/categorize/categorize.php:474 modules/categorize/categorize.php:509 msgid "An ID is required to delete a category." msgstr "删除类别需要ID。" -#: modules/categorize/categorize.php:444 modules/categorize/categorize.php:481 +#: modules/categorize/categorize.php:489 modules/categorize/categorize.php:527 msgid "You do not have sufficient privileges to delete this category." msgstr "您没有足够的权限来删除这个类别。" -#: modules/categorize/categorize.php:486 +#: modules/categorize/categorize.php:532 msgid "Category deleted." msgstr "类别已删除。" diff --git a/modules/categorize/model/Category.php b/modules/categorize/model/Category.php index bee4200..6543ecc 100644 --- a/modules/categorize/model/Category.php +++ b/modules/categorize/model/Category.php @@ -13,7 +13,10 @@ * See Also: * */ - public function __construct($category_id, $options = array()) { + public function __construct( + $category_id, + $options = array() + ) { $options["from"] = "categorize"; parent::grab($this, $category_id, $options); } @@ -51,14 +54,21 @@ * See Also: * */ - public static function add($name, $clean, $show_on_home): self { + public static function add( + $name, + $clean = null, + $show_on_home = true + ): self { $sql = SQL::current(); + fallback($clean, self::check_clean(slug(8))); + fallback($show_on_home, true); + $sql->insert( table:"categorize", data:array( - "name" => strip_tags($name), - "clean" => $clean, + "name" => sanitize_db_string($name, 128), + "clean" => sanitize_db_string($clean, 128), "show_on_home" => $show_on_home ) ); @@ -80,13 +90,20 @@ * Returns: * The updated . */ - public function update($name, $clean, $show_on_home): self|false { + public function update( + $name, + $clean = null, + $show_on_home = null + ): self|false { if ($this->no_results) return false; + fallback($clean, $this->clean); + fallback($show_on_home, $this->show_on_home); + $new_values = array( - "name" => strip_tags($name), - "clean" => $clean, + "name" => sanitize_db_string($name, 128), + "clean" => sanitize_db_string($clean, 128), "show_on_home" => $show_on_home ); @@ -114,7 +131,9 @@ * Function: delete * Deletes a category from the database. */ - public static function delete($category_id): void { + public static function delete( + $category_id + ): void { $trigger = Trigger::current(); $sql = SQL::current(); @@ -141,7 +160,9 @@ * Function: deletable * Checks if the can delete the category. */ - public function deletable($user = null): bool { + public function deletable( + $user = null + ): bool { if ($this->no_results) return false; @@ -153,7 +174,9 @@ * Function: editable * Checks if the can edit the category. */ - public function editable($user = null): bool { + public function editable( + $user = null + ): bool { if ($this->no_results) return false; @@ -172,7 +195,9 @@ * The unique version of the slug. * If it's not used, it's the same as $clean. If it is, a number is appended. */ - public static function check_clean($clean): string { + public static function check_clean( + $clean + ): string { if (empty($clean)) return $clean; @@ -185,10 +210,14 @@ conds:array("clean" => $unique) ) ) { - $count++; - $unique = substr($clean, 0, (127 - strlen($count))). - "-". - $count; + $unique = mb_strcut( + $clean, + 0, + (127 - strlen($count)), + "UTF-8" + ). + "-". + $count; } return $unique; @@ -198,7 +227,8 @@ * Function: url * Returns a category's URL. */ - public function url(): string|false { + public function url( + ): string|false { if ($this->no_results) return false; @@ -212,7 +242,8 @@ * Function: install * Creates the database table. */ - public static function install(): void { + public static function install( + ): void { SQL::current()->create( table:"categorize", cols:array( @@ -228,7 +259,8 @@ * Function: uninstall * Drops the database table. */ - public static function uninstall(): void { + public static function uninstall( + ): void { $sql = SQL::current(); $sql->drop("categorize"); diff --git a/modules/comments/admin/pages/edit_comment.twig b/modules/comments/admin/pages/edit_comment.twig index 9671bac..15fbb37 100644 --- a/modules/comments/admin/pages/edit_comment.twig +++ b/modules/comments/admin/pages/edit_comment.twig @@ -11,11 +11,13 @@ -{% if site.enable_markdown %} + +{% if site.enable_markdown %} -{{- icon_img("markdown.svg", "Markdown" | translate) -}} +{{- icon_svg("markdown.svg", "Markdown" | translate) -}} -{% endif %} +{% endif %} +

      diff --git a/modules/comments/admin/pages/manage_comments.twig b/modules/comments/admin/pages/manage_comments.twig index 8f58f92..eb33e7b 100644 --- a/modules/comments/admin/pages/manage_comments.twig +++ b/modules/comments/admin/pages/manage_comments.twig @@ -8,7 +8,7 @@ @@ -51,10 +51,10 @@ {{ trigger.call("manage_comments_column", comment) }} -{{ comment.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ comment.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ comment.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ comment.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} @@ -63,7 +63,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} @@ -86,7 +87,7 @@ {{ "Delete" | translate("comments") }} - +

      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 delta 133493 zcmZr%V{|6L68(~FoNSB@cVpW&H@0nS<4kPZwryJ*V`FP$J9+!w?>BSm^yxeIR@bRN zQ{AW9cNeyD7Zz}p6B7f0fj}T|2O1FSzwrxvEC}M?_-ZBi?~P zi2pDWd#t(}7Hd1Be>_kx2!#3e4|DtK9!zUv;P!7}Q0_n7_x~Eg^Otd30~-?%IG6sv z#kc+iDPk%Xn`3Y1ao;KROz{Dy_!nMC3hHj@j6 zrypR}7czp>T!j^+mZ+wT+b0+q9%z$kOKn%JZA++6)CN+)c%0nwqhh{E8JpS@)Kqbt zO~#HPL6*VyM8*}#lkHN74RQz&N24;*DbP`&#c{p~7HQ!p&PEp;>}3p*Kf`DIl_G>q z?4}qm+S|)>9?wr~9ZB58qv-m1VnqTu6<2sJ2^+%@6)ifdV9l4{Kq%xeVyQ%=N;rc5 zwZa9jdH~RQ2>L74;*n$!u-MpXS|@f%Z+(+O&}*L}t*1Ou#EL^0#{b$cw(!Jt0I9m%<&2Gu(BIM&S=~ z!HvgX?WN*2b%Gk0PryEx@> zpyJmR&^g5Om&L`$4p|YRwAPvwyoxO&IuhMu&>@P`M8rg+ZTQCuVMeu$x z)67*@TOAdcXxSuKV2ir1qFQnmz{?urDC_qnbg|9n8kvW(*d_VqP{)K{@V?-FZ(BCOsqE2UT(Fk@OO`#p@|>et1sRUp0T}C z!NEb@L8Dh#ZXLG3LkJ$Bx1!OQR;=M@>|O^N%20e|)liXY(mLxi=r_O^DO)W4^7j!M zFR2X_;gohlhZWUrwCo$l6Gt9yy$0phdZUV%A)`;nmKD^TFx8dJs!8A6Xn{B)U?$|ZhsK8Pk8z{gpY%#MSP#;aODF?dtA$76%q_f(wMVDcf^ z69Sk}0xA3qf^%a3tv>@YUNo z<4?PZg^2`Bba+xX;~#Ovk=u~T&;b=sJ^qx2`tpfvSAHITJ1374w!Q2>Jtb~~^=Dw- zeS}|4UQMR*@Q|-I)}x+CGB;4k8wU$XmstC%7E_r^>%`>QEz$elAWTc%ykq|i*sT8k*opDe z5|5F*oy6wUts#sjzBfC@!{7;{GsD7JVcX z4dh5Wsy3B-m8t!fQIjsIwv(nHBu(^BTSc2b)ZL#7$W$Q^A(G-hYRG_C6Oza)Qhz-0uK29Grph`=_X>y;goJFO_XtM2}3x9i_Zu!LB+a(@=o$n2o+CVVdO@Pe zi!sEvsv9z;>!g|bY%!f&20#}9$@Bx|5YV-jX)OD9PcDC&tT%Em)S~fIxq4c0qu&q4 zi}WtMeVz$`=c8h0!$;lq!wft7j4sbYwN51m?i1`3ek0`r>xjk-^y$Rza~{yhw$};b zN$_3L9cFP~vk%T6lqP-N3m*HepM-Ac=|}?UxZ6j1^0cwzRm>PfK?;nTjM5Im4sv;* zBOyQZ9S4W|DYspDx8ZNG0w*!m%YI3hQukrshV?!G6)1PQK`?@MVq=s57=htSuIroX z3Epf=j%F`?m6g;^ax}JGrx;X|;2iMQ`QOZhy00WIhrucn&HPGslPqt$#3XI^5~r|2 z+MXY!_E2IPU;geyv#mNeOW@8rG$Ryr&5+HwBp~trfRb(uQokGDYa;BZx)O#qDT~KW zoR!K4NDT6D!0KEU8(7e}nHwU{Hv@jXK7h~s7I0tz$NmxtU+rZ6Qz0IrS{sww_U6p= z4I^7v=n!A4H;A@U9ebFTqxmO&V-m+%7PlIg*;yp-W?E~$8odR4_3?_*s!(=f@?bzJ zh&mwV*fyu!#SrOxbrE4;Duh6Nbrq!qyVRV73*7dEo;7DcQW=6qiZ6~2iUNwrM}gvIIC zqBnx??EjW03(8d*DSasmh3ov8a_VJT+)14f4VN&%PPI?(+{{b|O=0X{TGy4vMt;-? zpuFu5k@NTc){P~SyzZ1cdL!d~1V^#YB=HVf(;E?qua*|?i6_<%qQNvW5`AB9gVC}F zVipZ|5TR^<7{&Q5C)F@Hifa$jDK$(=*pU|*a*8A#w<6PoxTB#Df^NFpXdA{d_>ja! z6Mb=Nc>OzQaV}a1q9da7F6bglrlbf!E`ADqJCWo>QGA_ztm9Qo_i=-8mvatHs4rx$ z;Zj2O~*W(2Ma+_>F2oQ-4GGC zBVIneHhe>vCD?>QITBq|I=j8N;sMIfW*t0Ep!Xs1hq%>jjV`6hTPz~RW)2J>o6g`Y z%zs*Fg8%hSs}^#)*KM=a1pfgsvqvVKSn{^*WYfy%aWDHZtiiIT@n6N$`8#L7TOd#W zhslf#CtQSZ)gcaczJs%4>VP@ROpxsHrZWRjoowRIYiww+KglGWpTU0c!_KufH7`(o zw#M~fMsr1XPtG<==URDfcmo<>&1f;1=;Vulzim%Gs`^9IrKOR!+2XESp{lsmd66cw zhQa2V6yMy@jn`EQ#&*|e6e%Ag^Ypo*Mlv3H38~Ws$rRmgNFQI@QpuA>SgvLq5!~+kPva3JZCFb zY$u8RiV9~$ZZrO2_hQ+B{bcBL({#B;c!&Y&nW+yUULlHRLo zX3Ro$&K8lTMEUzhjCxD9;?|_Q4j0{=>T}}y-AJiW`$w~w1pUx9-PNW*`?3HRvR{PJ zaYqxT!I5Mq0{2*+%9`ru)81d3iczY|7LqSCE02XfZ$5lTK?T5<7S8oz5}{Dx8fJ4= z|Dp)-SgfeI_l&NSasG_K2ij$Qvnzxa3A&2A^}vlNu5WJAdCpjs=`*nHCJ@=M1@r6I z>&N{K-|mMcrGuz9kJe1j{&WO3R&stQ;K2*FA};tqC+gtnpe&9gx&8F$BI041Q#cC~ z3HKNx5dDrLy2%QR6i*!cr1w7HGz;u${VcdOGtE?QnIE2v8N+S4f4iF}OrqiA{B^bT zC8+h6OhpOqB4NYxl-}H9@>mvc#cSfD+YN;6Bh87oq(|9w8XDRsm$t%cx6&VYXl68i zTXOHq_h#>*M7xp4Z{apGCBG zD%lK0pRK_ z{?hj2Tr;V0XuZ`mDB(WbK!=+&p0leXMEsp5_UqE-04s4Z5+U|UqK_nk1qF}6Y2vxt zuZ_}&S-dcttUs8V3D8w1kX4Mnu&6%RL7UeM3rWe`1SX(+Wy1EzX@b?9k>(>A?UsV= zuy++)z_mHe-Mpzo@|9_MF!~^BG*d=;d{cAI=e{27l4lX@bCIv*)$dn?C%&K0_?PD! z1ddn-hBF#dkpR1OT3y)h^K9lK#udrpSN4$q8K|1y1ku_x?1bBJN=Z# z!}>$aDQx#&J9W3Ym^J>=4t-cZmQa&AoN)3?w_QV$*l`ylu?=g3tuW_l$Yx_JWu|Da zNpSZHqWw-Y2>-H}ZQ|_}(dhJewpAzUeKLYFKO95IUn$5|jr`>2 zpro3?W~14u?oqW9I`r6n_ATKz$|D{VP&^b!_j{fjUFj8Z^o~mpVV4J0nOPkP$E=Qg z+>b>JUA1NIqx2rxn1=#A1{(?JlL=iqrk=S{P z7*r5G!qTFq;!?ZMb_Z9(J3l#D?^%m1DXbt=j=NRt$X2SY#UMPt3%sM=cq7^Xwln-B zkRbNRmhnk7QT($ZYKW+)9Gxr@!A@$Em(za!b&RpFl8;;|$e2ZkQ$Rugevr_>xx!)^ zwr?PFoUag3PWAHDiw-BGtw^n#?^D=$qHk?^uPmzYG-~u={7B0cU*%7u`5Wl`wZ*k^ z5|6RAu|8A(guOCEA%*yT7;)PPNM*%4Tp|j}P_w2xKnz^#-;H>el-JHRG57wVKxge^EmF z)-jr`GiNvAFqPsqKPG>(2EXYp#CSZ*Uzq)NX+5F@(IQ;3gnKtcP+-nrj;Bg3t~TG4 zZVzm;%#{EfWVPDDg>GSL5a?>7X8YqdCh)~E3Fc&fw!V*OMD=i~w^Bsr)GV2{ zRB-9=`T`Gk{v}u;=DB;oL|qyo7)z5M4*r>~sod&On9whI74@N&4N6(FCq5)coUCm@ zZdThZON`*pZRz%dpz$ffk zD=lZ~R;OhyW|>2OIwGlHVQ{Z>s&}^ZokmPttpnKr79?ATPvLF=dG0DI5 ztM1DXZ{)sBOOEsacuZ=qffAV9yK?yf_*X6PlmH!~W?%B%j%^ll=hiDT1ul2RJ2p?z zkhRaz>Xh9)o9ogq7D;0AF>2 z?7C?RfA)gpNHVxO50jwgO7h}%&zCSCKRWJ)Omrf3s;@18rYL)!4UGzu6VW`OpN+v< z{-1~mbAL%RI|sDLKimc#f$ufFhC9){h6dE7`>t$#vRKEV*Z2jZ0xoE4m2d9Nxmbja zxmb?MbOergC4^tYkbL}UPsZeo`8vOhs@_TTZw3atSaAvrU9DRF&^ZQq5kkS%QyggBc z=O74wM)NmvPE$htI_Lh&GaERG7eUVe^QnEeS%ER_-9uaU!y=ZXOU<_+p|FN~_d{~? znp1&%4>wYGMegY;;rElpPg5$d=o1Ub$MW4omYXs?Ag=<(hQD;jJbAV>qr(6~zCRdh z7BMu=YDNGbGg8T5S0HcC8TNJ!doGmNDL=5R(P! z+a3Dm@KGE}xBX*6x4o-$w2~K9npSFLOBN@D&;w3l`)!RPUShb+q1|W^j7QGt#OFXh zg1RmZ^5N5pV%%?yR|KRpTd7sltTX}G0BdRQf^zaKtXW&?@&q67Jk;R} z9CgC`>})<=a9i9&;m)OAb_bBf1jcF7b%MZEf|%B!k_3EFxG1DBRN!R${AkZqTU383 zeN}dpYKAXG_{ea|D4OUKcfjsY=2>A7u?*hA@!v`kIpHEjeh$>WTN=@mo{j(Zi2&{w zbX=QM&37Y}vaNLjhgd|d6IVer5O$siVDL6`230MydpmdO7UiGbx1(nTqY-N27ibx6 z8A&cVhn&`HkF{0VTJLpxfAtxlD0vX?En=4vEV>X2W9zW-g~pW`2Fo@EJ}6u>H>zRb zBht42RXRz?-^eVVV6$zBnj_Q~0u`AOdFxS@FvKuSOlQC|=XF~uvbb1t4^D7_EXPOs zL|;5VcH6?nRKh4be_-oGYM-XSX#g?E_S4X z!mXZwhjZ?cWKpv7txyks$0G(<<`uBU(R*W$@Iit+<(S6DCs=A?!F%4_=Hx`?V;Rgx zM)=AdSFrr&&VPdc{m8XN0Qb4-2VmSO-RK)`D7Zw0^P`8#Ac^-bIP<4${(a3CypVULIiy=hFCbjzvCm@>d*eD z;EH!FT}l>b&Gu{T%)kaD95CXC>Z)lw-#$Btz#%mcrXc5a7VpNRF*c^y3D*hg_?+T*LP1Z3C z(E8YZeShmjCsA2;CHDIFvfqYB>ISN4e_tXjDLYnqJ|L#|=_K5dY(^8;7r>**>!%xQd1 z?hYbXR&40+iAhaBS*;gteWJg2*V{l}S{)lZPb_zbL)Yn#{)3u4G@uIlVA_9(@Ty7< z_u7Lk(5?QFOGbdmYNhg8g+%@Wvy^lk*~c-a^``O6LMST-@S~?={!+I>4lwk8gDzv9^WO_b=f8mK`>OSa^4i8 zxgcqVe%<50qYI-xB|R&ZHojmR4MOzcAmZZam!i`%vw-%96A|l2tE(^~CJ0aWK=-Lw zo#?)qWQw5yA|u^PJMqjPg}%?&Ql>*6Shz*u&$IwGNJ#}}#@73D9S}vQZsR+?yC?(1 zXCJ#UL7U|doi#jBy8~Y{h%2i*0RS$d@BUJb@eS#*WR%-|Uxw$q;PADUTa0~RF_uF` z(i>ciP+ManMd^2=4CvkX-NDw(FIecSj6}~z^%d;BM;dG3fz#>=M5}8X(Gs6u5JLAq@fJB10yWX->`QZ`PUq@el*N)w z6mIhS?mJw}zonhj(@CiJ+l5I-SuI!(SU;I(zTWYaKEME>(-=}|sfROEG1iE+G7VT` zz1Wuk*}wfXb#qV-l+FA+iM%Elth98TC27X=S51j2hp~@5v5Y-C(MT#qqA5F2RW`5R=j zjqAkiDyu>$r90|VmdOFpiiA-Eqp)z?L~5@t=#P`_%b=`(HGA@TbNu|s ztN>ASMxJ0ZF`1L_dve%|!9<3wMURGMQ7XkR#3-T~wQ_Nms_~+Es5jG1s4wWf4A40M z!QHOnU++RQs9z)`ts>B#Bk3k^)-Qq@av$65BOh@u#GSdgEQ)gV=#^k-^>|9yD05Y@ zDd?q}j|qN`zII9h;CeLpta;YL3TX{KvbVM1Wo8OTwpyp`>N6BHv|e#&AU>q`7xX=i zW3^fp5H(GuK3yVVT_Ik|fM`mt=T2<4ppaM_=IfM4$Q8yfsX7 z21R%8kfTtMa-5fnc|$IXP$C!k*HoV=a@&`X-eilRLOdP}a>SuvZ3{`TZ}F9YgirUy4OCKU6(1X$fZh ztkrlb^3rO8wR1WZE6Rr3s#uKx(O9nnPbf_0V-qH4JapmmcXcZ7Z*YSUrD?)NrnjdF5Z$f)Dn5 z{rW?y6@s{ai`pV0p?#8^Bfct`ecyw>Gk(LSU=SvR8MrmMkS=-7u>fUk7$fRxI+N6E zypfb_#BIkiKZSiP1lj?e3eB&}h*-9d?jIdZS-3;(R`dMkpDeP+v)HE%h3uYp-i8*5 z7rj^RL2q_Fl6sYK-EMZr86o8FO%)4V4gv?m`OU)2IFW9{xSK7@?Z0X3b@6|3Z(npH z+q@RS-XnA3EcQOS?d45RI)n5TANxt>{ImG=;4EIhnG>PwdU@y6}gWSNDO& zB1VB070$=a;dU1~;`%)5ncX4~O+`<~x(st-_` z>bR{Nb_tD9K3g<4YvHfb)4mL@$XJhI3|dnS6R2mK57>j|_7R*41>NPO-)rpLXVhE- zSudB0(uM#AOmFvJ7G%H9LZ2M$CmSwGA8_NR>DqAwwI@P3yY88@ZabeRa;xQccX8n- zAJ5K^aP)e`jE@(gaVRfcw*=ka?#8Px_c&LzZ}d(R-#~& zL?I0A$be4gomIjVM3|utBaq*aTqEB01%oW3#Wj$7GjJQeMq&#g;wXul^MeL5r>3Jr zA#+xrW&Od+ywi{b%BT@V)0Txu*xZ?-?mCZAQ`o@VxbVH1{02vHN__cL5&SzQ z{^3No*2BzZDcO-LV8}HnFnHQlX4&Q1e!|^Ky>q&dDO~NmYs5>Lmhs#Zu>@0H+mh(4dPwYdM&yNft zFi9fnLN&j4wAnFghV?Ni=S@%SZ_y}5Fn-Af<+e9vd=l~E^q$*^Z@sQ}ev9TEj}+mq zYX)z@_JiuSgR{eF!v|ttPhU>1u$5F-Qrm$nZfCib7Wt3Js=2W>8TacQP>| zn3S;az)dho`;TD@yAtnYv9E<25*;bSdHcu4;R+fW$jY315xL-FhC(_Uh^$govfRA| zSWM2&8Ui8SIkQ~(d(MBN++#V_O&D@N2p~#Sc@tB|duEi`On>V8`5#oHttfX?N{Ik- z<)rRJE8OH@N1{@frc&(8DI#>7!(H){ax>G_7UBF3^9(KOz|$r=o^g6;yn~dZs6@m+KYnh|Hg1rWmw| z?HYBa-OO8reiMB8Lf@31mJ1#{oYD#ubZQlYZP3o=rdcz~pMt}EJ&N#Jf~1wGQe9KX zjGi-^8@pbW44Kb(ML=yQji}yaZi+ir!VNKYWedE>;EGN_3JIK8t2gE`hl_Xr>ChO5 zAx^qBgNo=u{K9egReS`hBU}d}f+>t|Z|J zei!UWU;kak^3&idZV~9^p_7E2Xa>VU#<0gD>0) z>3(0GGW^~j@$c0PN)9b0rIV+rth%2r_iK2966$u3;}vA4*JG$q@=mRahO`;QL2cwc zi^xHy6>KqjHd8D7U_mTHfIRD|xq_Dv&M7nl)kbMlc|TT|S2_CpR0XW!YnWvmt5hqr zEAS4!&qPZ9p!mirP-g2HO3OMF?v^m8A4>6n9Xa0GzRvI=THHdIfDbiUBJMQs=U|_K zV+4E?$^o>ZRdvQ}I-HO*wVEP}Hi+#rAIzI|WXV|UqU!O^hmVixrA*UBO;A8`x%D}C zG2r&{y!>WiICV!*uLHER<;oFG!zaA#t;w!433{O6oG@GXEx4)|82MuJGZT@%hR*tJ zTtYn_Y*+=^>-lwCMiVgixgZ`eqSmFQK^H)^G5CeHul8)B^mWQQXh9uarf>Be<$F zYB`3;XbQPMDE8+|+Y;@GSgQ(Qfw427DmpP$G7ZA z<)OMx(g>vBT>*kA_0q&$Lv$h1d_EcNvkkk5E}c6b=qb+qnnu3Jcp3+HcA`Oi0!03|*ui*PS zBCglI#soQ%fDY2{6(|;hykmCa&j(CWewzI4gKDcp!v^T;C)yjK1B7^0^}{PH&ndSsj&+hrVt2C8_E{i!ikRg0_E)#czURqRC#Rjrw22cD zL%8s9-Md1H7W^LFS4Fd?uaBvpZgeXBNyf28G16Qzj(bpD`>&^C4ASNbgA2;9Biu<`)h{LWHBU{)L+E6X)^*6dIFd+ieLelpNs zYf%f*gG&)UcR54I4paU@#MYHJTG@9oY5M#~cMov$kQl*ieF}w0$u7{c>`hy~@ltLJ zX?dF{N}(RF8+;kqIgodIn^7RrHsC#3@o1LbLg0$VSmWJiI~LvK=U3WdEGXIx0Gt)4OdggFhmOm95rje8Q#!Hzv0F+y>CX1*nGeURbJ< zVu4D@i_5UZE6V1?k8I=&sE;!IUwpDQWlow0U5I3#{))W@L!3T(*|PS}h8%mlB0rh& z)sGbs9+jqLldlcVO&cGp<-WRKTc^mRm{}V6M9*fwm7Xq5lZB8-(?3wa;M!59FDAp& z;~#FYzaZL8krNVPzn(`Fb^OZmaCqC;O9FCY$H7zzPp=ZbFV6e5)vGtx8*>>Q)_z0O z`~r?|{Vgdj0zA(4Q%y1ROHd|ZAlbZ8S_^uhN8493LskF99NQqpbf-HXt9IuZKAavd zPfv;?s^0SEY4TFk!Y!d9GFr{Y)stN*u1A8clae4Md-oIdcwV!Y$(@6_4m7Hl?k2$O ztTC=ghyRaCz3~C+39X)Pub$wnl?F>WE7=rmIB&Z8z%w#AoPyu^K@Ppc{>w>v;iHv< zG-~q%0sbY@Rw39o?dde7hx_VdUV9a@J*vu!85P3k_`9_S`is9@yL#ostrypY=MOSt z8Qs`?=6_v#)`voyumnVb#o*7nWKtvtC>18I;0oZYA+~!9+I% z##zR}(V@XV=xntp2|~5BUz~!GD=~$v#UQC3)Hy4+8A@vT8~HBf0tmd0rNFgPT=^VP zMI-GrHcef^w?Ufcg@QTDo-}VNFWc+qee_7fDic`CwtX5#(?j%s*=*^2h%SH#LWde1 zQv8%mttXMo=Zz#0-a5}qL|)yjrA`}%kIH}pZ`?Uy)pRg9mhIcvZ%~GTS~bno=lVk5 z?{)Z*9OL)o*(7x9ssnpM--QS|FYIgv6EpZ$`ze#f{PpH z^N!Ah`+;Rl{k0AVS?Z_XYdJtdx0YP4)VZjA*@9M}PWrf>-4!hBYki=^{gT|4HR$JjiIWSnrrm>%rh)NDA7S~xeKsp_~A zv&wwi$=CM|&3TK{@DeqNXwJb;;0sIStUHIo76q?H{%6K5{Wtc_arb`sPw&WY~E4Zg|fX@ z>a#n5smuXu?b$-XmpPqDl`$s=(iG}Np}bSdUijfywK3X7YY-FC5>qd8mo%kb!0 z6L3RcYutIK-EBL%SG`r{9aof1J8r$8-ri)f$-~ddM^&y8;nl)Tc=YvZf6r_3+G`Jt zfWTNArhMWoIUBeriGVlX&!4!yF%W5crd!#H7^uc>77>p57^{Q2bi6n5OiXbU`CMA! zI_N!MDEdC^;CwOCbKC2mMadkaKLlxA$rIUS(;;JlhxyydCcS9#EN2T=u1+I9ilo~| zqk)RD+TF@%B=(ROm#rT2ktQnDC~H31N}j(zd9k!M^b!zBb{~O*+$5M2TN?B&PQcq7D#q>7<%Y%s9-?N(t1$5F@PY-ZXtWZxDA4UNDH}K z@C%9Jh6^$!1eRbbxA~1!i0amKu#IWqwbBEP7043^>=dMhBXZs*O5N5~bd7>h))*}> zq$I}eaM=-Kh8u#STeuLzV_B$zR2!JWbuK_x&$}tuF3&JAYK4)_n7<)>+75dPM!%iv zi34yHCm&ys8u#bXmToWo@+^5MV)s&k6^LdRE_j6ej_1s%mz(gvGH;%Xr!PX+GEJyC zebjwItc2(Y@^7)?Gc&A8FTMjLHBYNH#T*HpyH=|#9|V01|CZU~jW>ul2$osgF!ggbh* z@{x?(9U%li2G4@;+P$7Xi~^6Xcw8IE6nz{@mMX8=bQ_?Mv>TvU)|6&$lD*K7pQsX# zRiA%#ppsgl3xe!qx3x^KYt8v#Wo z0>uu;3|k3rP|8s}qm275lkuOBG>=~Gow2&fx@4CbjiBuC#ncYT7s(BYTNRiDic6?$ zieC_MO(BsuOZZ3TmJr{|HL^FO69N#djX%fFt=166Bc-LH5L!AEyKo0fFKf$n_6mcq z%dSuVHQX|9A{u`h`L_LB>g`s-ECyml^HsZRxnNQaAGfyNNK~M~D&7+cZ&F4nk1Jw{ zMS2}aI?wu8o#!AL_P%p`Z%_YBFRa$4WDi=Lnmt?nvX1E|aSY}rM8-U2qLr@my*^*H zTKVkbHoNAe5ghCcpOqd4j^+jx|GPYVc^oZ$=_n09{F!798F{B(B}s{@Y79_FF^BVx zEFc~x(I?sG1|{H_@;IkplrO7=u`ogd+BD8W<8?wMKsdW0+4B|^I z`PgQ2_y%io5>uFZgvLAgkH!yZg#HQi{+?4;!S}I7pNo>eD?b13s-P6LHZ7>5CS^+f z;Pn^5PvrWEO$wGmugYZnceD@4CG~@Z*jARHlvocCr`UzY?4^u0AT78*;+4XN3%`#F z{o8i$FO)|@g-~nmtdEQ(j}}`elpDk*X7pjTD%p#%NNi%x$22hmqd*11c@*gV#5K2$ zVJuK*5}p!wA)IB|_SO876kfWh8T8dkWk$Iu^1B2T+`L)QlAsGD#IF|sXR7o#WSW7j z3D}iKC5m-B)zA7s|rOO81i0*)D^`P*+U;)z-BA$S3kmClFZkck~ z0uJObPSIcl0{`YIp_mWw78}!848jt8wGlK5NAbh$x|thKSC>y8@OrNiy5HbZ7;}=6 zjbahWQv|IO6R1SRC%kc&U~@nBF_q5&Z=@Em0!G3~dMdn%p$U||3?&8}GV30?Go_GC zswIQ!CGueVMg&1>O5|U>{&c+ERaFEVTzC==M_mm=M1_J_h0p+k%zg1X)lmq46snOb ztT4s0r7M^+(Xp+V#Sfo5zGzuTvpImN1e7FOIhc^Ef~44L#pGoRDo})IQ7DdwD)VCr z2VxRJMoA`!UgUm9D0zb%WaVf; zN}$)^aX?CT^7M@rb6k?I(3^z_yjRK6#WH%Hk`+P6gcTTg4GnSg#^6a7tHjxQtxeju z{B4PCJeL7PujDw#8E!rNXqIrb+D zgDg0!$iQu_<`}LZzYmHL(!NiyEmURbIm&59*rb_{)2S< zC+fJ~cdpXJ2TCO}^ELr|JS`~8Q??VxzQ9_+qB(%7Zq9rTN8PA#@#jUm%6GTLeLpzK z$gFp?us>=QdV>1t`(mp6OlvAN+U{Yn^uw;3h*ZS(x-ymH$9udvn#;Mxwh7^LDisii z5Z;eHrak%}o}plS;55faef*bxJh!mfAerC#Lgou_OQDkM7Sv5jVzQlY#~xPxM)jej}sGXrP?f2Txy5*?qhns+t_*h zxwyHfw>)Aau2e8;8Y@+zlJSUU#<}~sk5jIKH(e(UdAa!XXOX`Hd!cz9 zGypE6bK_g*Cst<4lH{HYvp73bvTUvuBu%aM5=BmktFVfiKW`~=ZLsPQaNhIxlhg)) zC^I#-`faA-(8j=%YNBGM&$J4@HWvtulUp^)EB`(*?nPtc?IMK#GkEtJj8ZB}mTsmP zWRrvgmbzrja@8qWq4@3O4GvlP2t)a2y}v2MEY6Jer{tRN$CzWiH5XPY@)cuEW8h~x zEboQzwoYto-$M=Ly?w}uGFgIu>TfonLa@qoq$Ev%#@w9@JK9}YsA<*?^^^i0I+_!< zK2pZTa2G`dBeowb3?+7mZ)^u`)W>NwM4h{3qf!-@1v5_4gxYRiL&ZND(Y9sSi0lOi zd0ygk-L0n==uWMMe%(uMXt|D6TZJG@@0X zO3m+Ne$>p#{|)b939#Wj44?(_-rh#g)xI6<8rSx4_-H#YrDDcKB#eWc=M^FY+vn1J z{`mD@gF4a)&u)W{Q|krDXB*P@Zwc6MW`s>>YUW+8C$txz^4A$6K7k}FYO3O8O zBJsG*TcaTHzfZodygJ>V+pt~O}NJ!|FYZiI6=(_T;kr|RnK zR6RDQ%{T0>^Gh<0+TQ@WXRST4ZzpAv*OE6ajr&in$5*lT&ssl4LI(_UlOf+tS^f9- zOZi25{IXM-omTfP?z9@smhQ%c+c8?ELXl?k#}eY$Ncaj|99n+-ZQBz^B4pL}F`R2v zn82b>?ErP-KhS7!Jc7Xm8b3Gaq#i6pcJn6yG#^_pg_XPZX?TEhDu?zNxaFN5-$j8z z@R&)2^i@~j=YZ8U{{{C)!Otu2H^Sur=smOj6jxyrQXerNmF17i%bWze#muTok^pF= zWU7PZw)VLr0?!n_D-JgyN8m+mw&udFx2J~sSnsp@u7=F2n)vRcxR@A13>= zhyBZ}W#d;H5iMZm)|`Ab;-NtJ7~2D~D|l1rGLQL~_>QtYuv=t#R>m3Y-PcF3r=X{I zq-F^3sRhTn7xS!lha-I+k0|Y3k0W|fJZPH#NE_l8!3a)^Oe^}L`-(IGw_GiXMZ5Kx zVy_dY({|3WM2JDBjqC))58&bE&Xm;Yn0CGiJRN4VRs+mPD)8)!?gMOuBZme3&$sDh zDq7J-@aQiTbt7j5@%Bfuiqo7UmO&jahr~IY(dXhpNc=4OF{^HP+|e**fA6z_8xAt@ zpvxXPTAizLhe>=CABGmZ*EkAv2qoL8# zQZiUxyW{&|pKYA8jomwAL|*>3ZF2Ww{n zGnwlv*kVzil-u=aK+~VlDvmGWy*h_ioTbMOzJa$oJVZNQuAepDA34&kpU==bX>~&f zJcp!jfIa_CoTpD(`dwm$vn(7vHl5nEQQp>M1;uTZMEBa^(|ADDf21zd&0dKF5e% z`BjO#h=W;%aOI&c;JeFzD;Efuk!Jyq5=5Ipzx(2W`dc{SPxMifIfMr$Z^*CQ4Zxg` zD>OP6?O5dw$^+WlcPdYAM%4M6cTl%j%dG1$`5pBO#Ct#|wh>rG?bmtqygUw6Zq9@b zD(mfi{FXr1&1=}KuPW4!n`l#+lz8>_%Y^-}3h%|duEK76QCEUW%^R4TG&oIepE3R7 zgf4j9XG3~H4Rzk8e4Z+9_lw8jCqPCIrmQP|%ganle@PBzjIQH0`Oe;;t`nQrk4z2} zHMY~Vn!p5Lu^TRZ%-2Yuo}+f4>Mxtm@14uQ>A#DeaE3A?B+-a#>%%0|>m~H?;>@Ly z=$b7buPmb+q@kqb=rDahY=6&A%lde|oMl`(St5*&+E{bD^-aC@dtSm)WdUPQ1b-dy zPM26lC#S4775(JPA6X9TaK!ufOrNlhmR|NNyB0%^=zWX1NIIoAO~f|B)VAD?IGXWM zMz57>dc5(pkYM{|{oeOCJ3f&qhKT#8-gxP|5YlgAul#o*ALfJ2a@PL&kA{Jh$6Sjs zI{zWqBrxP-+3rSaPI?_$3*?R|Q43I0euceVyj_t?DEXZ^u#oF9xA3h&kevY4Il!f! z$Q&WPNEJJi*?M1HvUEXh+|~2`guPa5CcxvHJZtFju)=arU~~0DR>vDK^g%;E{n7VpYuIP}>0!h(mtg~?-@9I^PJmZ^3s~~{>~5>_srB$P zBv)9|3TXaP5I(8?|AvMD&&rh*_n4Q<_PAG^&1HJb3qMlO0r!%EUg9Ia3ve$d_&dCu z@Dj7)YzgpbfzP<0*Q3w>Z-0M(q<;M9cOQ=QIUB9l2lJs%_??3nf4(}ivhHti-M`?! z>h=EH!6Mmr&s*z%uIB7u>;kzA=6C>9;K4_~*8w6pNTicjfcHihPUGFD-CI9aW?}}mmpI(1dKfLb0c&qMt>H5FKf8DKrKq{YDW6Q6`tjr*{dW%N zzk6W+z5Oe8_a_7C{ZHYi$&){x+JARNzdilom;So}r3AX4gP+3!&!gO0n)!#=u+<2b zGfF>~el9S#P9tEPCj3aH3H+QIe&U%)6VFYYcoyC#@N=r4AT1`Ioe0-(a}v#z7FQIR&9he0%}Ts!12l$Yz%?AzB&*8A6aE$H9pepq{m=T(tl4y1+1O?O)pW70D7Gh+&P1U=Lix~NU_#>Z=K98>8E8#iv!qy^JK zSt)TTbZXG(NsntnGb%TUYZ3?av$C){){*d`Md@c#gTfLw1U@b~qxe87Xv zci_XLeVpTqlcbbL2)f4p)Mbo9;m=~@=FQl!`B~}S=FQT*XY-f*zI4g&OP2fw?@ND7 ziHxjQFETO(AM#&GL-L;JTs%EDZ}dlP$MtMLI&H?rXZ;UTVDQ+|`-|!G_jU3k{zp@! z-#X_t>D2IlU~=mM#0Swc93`PF)ZcB1h_xG&jj;`QB~s>~>}X4dT)G1QUX;F^zP} zkrNpIn?yMEF=S~_zvtL?AC1lf>J&YZ`!BNK>>xUS&`)VW>((g;8&ZP6&f3MC1#lrlk)}@ENsI181UE%(xE1^wWJj^U0d|L7Fjy?u8fnsK1S=O8Z#CPIold2A z3f0jOf-}w?WCdQHbP~)*Ht1g5X+DvU4Fd>55 zihF%OcFq22)Ap|!`~CNY->1#(TRvxQ-_iwm@`w68qo?iPKW)?=!-s|6e^2uI&Yj<< zY~F0>!0l)(&vO@$4LQ+pcZeP76iTI5qtOc}!ibEqae|(+SVAfGp&n2r7EYnlh;ABx zO_;9aRGd=DanYAIl%@i)g#;HQIHd}N^dPshM2p1A!q>3yzy)0K=+F(Sd>HKM?U>PA0#V(sO z3vlx7G+-$N$gE`}W)EFBpy}L%{VTmOEB7bPZ8C7dfQ2KL@q2q*>`}R{X!z{h)OqU~ zH(oa{HFx&#POCve()M_) zWCbDSWd0{=E{D8pgj9B)-nx}5XTh$81DY-Lp%}j)f8c^$3vyhoT2JTqHXGq?H7}l9 zG-mkhCMhzaDNSY%AG?r?pV!Jgq8X)NZ7oo62nwU&&sLpQ;KL(SO!HHe8fFNM5|aW4 zF1!31jMEbv={RZb53R1 zoHu_`L#S#lR8w?V~MVZonNiz8lkOO`+ zxqMwOa@M$%k-Zo8C@5XjHLqTxc1q7qIT_fPIIhKz9Z}vrtp~Jj++v`EYdwCNXGdk> zLKlps(X|)&reFim>Es#i4iR>Z#uTYkhMGcSoQu?09kDP1501dyB5=ea6;?$iMPged z<|A=r$du?s(Inb2$+5tHL3)7O9fA}J>!K(e6{63#Vk-zpK%VA>IcIXwvvTNv_UZcw zY8Mk134sO)4>d1=p01FPC2)P^c6smlTS%5Hl=6ttdoPVO3?C}-e(i5$tARDetp||5 zOD30qEqJ5$Mke>9JzxdqzBS1^47)`3T)tG(;8&k7D@F<#QsvD;K3`_#cNX=CKfc!>pOzH zez#_d)BqH43#ljnnJ*(QoxE@04zU8E^<6v~Wq1fL@LfG&0x}Z=&71kiLZ+Mrh^6l2 z*a2|9Lqqh0rUS!&z3b9;o+^4aHD&gUQKM}iu%wR^fpV~`A_dK(}mdK!}*Nr z6HlJ3P`tphdG>EC`%nsXhwox(XnkB~vNwYWFekzdNb(_N-KYF2xne^)4G zY0t7z9@^~ot= zXNm3V3~Y}JzUj~5!j69lY)Nxv%BNq{Wv|56pwzbV!4x)|C~s6$&~<69+knBnw@f;l zJ#fL)<_$Y!<);>9*Sy_2(G|Wm_4%@)!^&P5+q-Ok2WO4S=#cXi_s#9n28fM&V9nJX;m*{!tXWD3Up)L{MsLZwrf!g zNqaeGumy%e^~bjdUPp$`-&JJVx*!KakHs zILOiM0f#`R^ABwkkR4SExGaSKpgN}`-;jQP@K02K#Df^eL-0&)AU6$QC=b$|r|0A) zaBiT);~G2@*MRj?S4Kop2a(9!LPXp|!D=Ewo7mX1^ne-md`D>$1tAsV{?ca9884wl zd^Gof9gaxT+MV;ONE8=~WGy)I@>oeac2tr^UE&^$zcTEYBw_C8@QafGkCAvD*O!}r zz_>o@Am?Cs(DOx23=efM9!!GzMCijujP_ku(Ry_2)q@7NZQrr7O`FR8?K_o|C#sgV z7+WxSW&5^++f-JzX*+1BFTchpMP(qr#wC=EHFRUW$@EZujS`_WkYD4HoW`L^lfd@$ zN0XmiM6Kj)?m^r0%L3;Qw+S5g3MFEHVjh9gCjjL#YAWvmrx{cpg7Rhn%4KD8F1>|6@5rO+EoKI#xA=m8G`)ok zrB48goc!kBP{s@I2cTT$6puimCAJ48=(*^}B|16)<YrHwOm@o+|8&?7b4 zsXk9-Hj^ucYA0vi4o!CamMGSLr5nXJOWvG>4aRxWw^IyFJ63Lr1nq?tIJA*2LPho{ zST0fp&b-a_pFUdpqoCN^g^cLrDrmQFvG-MaqDtFg@uZWSrj*bY2?Zcs=}LWbcZ}Vv z5EUgJg9eG%z=;kwCJxfiV|6%mDvn2H7QB=j*uP3Mmp*d71kISu5|*%kt(J6?I5{+0 zT02_0{MJI}!dRRXi>v7S0_TFa7RF0!<4JSxo7|7P4#MBA8Y`E1@+8O~O2i3Zg~TAY zJ1zu8+U&LxPnf}uHJqJ`A!gA=z#_>YcoxBgh#^$Er~7mqkTa0*FP{?i-!%1ODbnL_ z@YN0Xu+ca}`gV*=&!N(P-P`k>^JzjLoaU51(?`T|c|S_`+jRC$B?X0zTek;N-sU&$ zUa(+y;o5nR$r&u4W%2L`p-EGoV+U5t=XrmQAITo!gHjoQ;+JBYX z8x=d{8f`XzjkRyWlPrl2SuT(4daOo^B~W9u)I{jXYHScRCR@Wuz0PXv?7s`_K~uY5 z=kvg&vC-rqBBvA#JTn0EUDSJWaw0qCgr*rMf4#e?1G79!@mIKk)Bs1~&$~%8_&g~M zeO=PH(A++^4+iL-9)%Mou%=U7vdrfClImN zYTqVkW`g+-@RLU3dI@G_bp=f9!0ASl$>KzRZtBWFQlEgP50d}#Ve+Mcqv3seF(?tu zqZzRS`MCU!{TEErlb{4cG0^4L7$aoKUGAm1zP^FG&$C2R-Dz?p{G)V_vCX5I zXD=d`JWA@c#F>t5r56&?CyR|A=zxL--ETprRt1 z`(o?1_|-E9jIewqefv#pjqrWMaZA?$)l2!MfBO!=c%fGPhhRyWPzYF@si>p79>?4G z3Jpo@)D0O0TGRReW0=tOl{!NjIJ?E6YsJr2FAb{-Gfs zaY2(Q)nytN6biVL$gw1Ajvz-Qn_K;fbR|J*ut>U0rbHCX?OHKPx^8W?54Wgi(JQct zer;+oKCo~S_TUEb`Md=^DWn!beu`POb=(D%}Lg^%SttQIoOQ~n>%1O#Yl6+o? zEEQ<(z9e*|_DbytmVatH`U|DGBlxZyDK_$5cX#dDv}poIn#MHEXi7FVZNg*eu$)lL59o0ts#Wa`86SFt9Ov>Zu*HxlE96A_A#eL(Zdq&yoL)J%4bFWI|(JiwO$xL$AsQ6k}KS~v3i4k zfG1I{Q4jFMA&pTJqv2E%Hxh%R6RjPDQ?K ze>w7HZF22}9lK4xiLG0fR)#2XRHXEcoxNjy!!Et?^dU3iaMj+|&t()0Y`J#yTK9+N z=WR~!)MnfhDe#SN)u(O!0e!)r>05i9pTie|#E3?z?oi#0h6EXXW(h7UJC}csrUO66tSS6`IbZVgo_nTPE#ToyZN`dbN^Yl{)ez@u%x&Hwty(4hu~*t1n?8JcvoRBzbN4z*e_~~4=;uFb|Kd+P zoYMCg&5`#sdf$5tWw@hxe~u)F(zod3^yH%C>&ZOUjnZA$frddJBT|+{^Y8*+v5`)> zO9K$U_NDh-Ekmr4A>IRs$?gyU)|NtS8{Ia&Eh%n`QL+J`6JJu_I!KWW62)ze^z45? zYEB`wh;EVIf)uyFDB2Jm9sMszAXxmZTr0gNL)u)|%4~N$07;>ce^R1T(o>33IIK_C z=j)5~<@!Sr|B_{6X%L!b*4R97beq;8Y4I4L^$Gp}2IPKj}a$~~B4=THADAHRHpp`1m_h3k$klv{ocE4bwPf8N@B{C1kuv?ZyRR{fig z7DB-->C`Q0?=9{dA5mo7(tWtKb*IU=VIq=#9_3XLbLU0OuNQG25sOi}cA;X5NJLR3 z1Wgo_rIrCo<$iBG)i+Ck*(sD*Mv60yl5UTZzQqb0G8l&s#v#&!>c4$x(b)l^!21)i zJb1;A8E|bZe_+-@XahW!_5>rV_dOu%Lib1v2%1!yp&Fv%O*oe~Sxxb#MyA%LZl-~z z@us<^HKy&R!=|@QpP6o%?wgEqf&cp1Apbm&{ZMyXlVKWd+G^s+@!GqGO(wNEAr zn=wIV+s?0_8L;oSb+4W2zyG%{mUxzw(pOETk5bleZaj-;VAaB_Up*^5DcxJd?fCkX zv~tn+Z{i7;9_rFz(4|VGM=9K4hXpWV1Wr`&9EW|~=K^24tc-P<)56j7 z=lwnAe~`ZE@hpyRgB#&!iK{v6Ljj-W7Ix_Evg%kB=BCIW?S<&Qk%h_43j38`e;{^F^cLxWYsRLSNJdb1d9KUpGZ+1aKf1fldw@Gb@pNH1YmKIG|(u|&zU3_uY zSzPkk-E$YEr)CR^TR7u4+-vF_;Idbs52q;lkwg+g^)vqYcZBpuIj}CxK1H7u7~(Vo zaXj+p6h6$pCx8?rwY%Z_OqR}5M^CWT5kbKz`gu6BT0T!DGjM_}c3MEJB!HcjrJ!O8 ze|yfPRrg5a7F4QqU9+VZg@Wp5zxl>YhBf;n{EcDW_5Qh8R#`I3G|e)QvhU3pGHk|@ zeNScI+3XPep2ogM13&a+-|4IiuH6g27qhb?^hZ=UFp?W)#9=yesn@0_xI1|RXB?J3 zE>>WDvQ=WMiCjgu7EWcovhdLgO`|UN zoYG+KB@N~$Yj9Jz)PPViXs|}mXn4#E^w3|7`ccvMh|r^>k4hQeVWM=gkrMKcbndnE z>K^Ib-E?i5w@Dgba{qqy{`>d2fIo><@KW5na1cHyb?BH=T1dY1CMfAXa>%1}Xf9XXVfd7|Dy#zg<2TIsRlLiv2Cfq>SX3b~{PrbomLmD^BumE-Fuvt`&~Cj_VDEF)B84B(H5lrd8K0{Cw8MYkazQ7IneU zOlcHf3v`P`Q{6pKG}a2yjB=OIU2q1ucM(2<@Cyhp0B4nCf1^r7+Sxodl4`>PMchX0 zA(BiHf1&$U_qUGwK!;E2@NOMms9UciI?;xBbtFxAv^}B;w#e5crHI4?Aukx@wk+% zWM|@pKAq2Xe`sIU+?v`bF}`?A$y}U``+h2lr%%5k?T~2JS;m#@Tx+M>WK)NRD!O<= zjYfk;ZHxBhdd>IGb>rYQ8MsVx(z)%RN$%Na4epl1H${z+?(EPDSf^HUJzkl*c)sBp z)Dqd*)xPQTYrL;;U0WB`tCyCQkvzI={H&&(suzG>e_05ey+Swxc8&wIWTrbZ+*0f@ zgl`GoAI_P%@NlG5hLm`e2pLL(^700qo-Iezm=T@J27@dqlcs70u|qTEvZJ!`{R5|> z+u=6f;<1Ac-Wxk`ONLbLD8LE*H)i5(jyBdGznT3Uo`@$)g?ptU>7!?k*4&v}F=Z}4 z_NUvkf6FJ(*l#vIfeTIatU{$g(*zq3(shv$@|(;8lf3k(GZu`I<4}+z(gEEd=~e=1 zv_u>-vTVUND>i1fBAV0Qw3z7O!)KnNlgaWT2~pr|FDA!g|epI38a-Y?#Y7L6O{z3T=47>$9EeFTWv5EZ%2p=tHg z>KA*`(&AJJv2n2=8IRZAbB8*@3LAk2e^B5%ia!-Z3*Kl%vO*PyRCQx^Oc@KyHPJ(g z{A0rU@Mukx)7!@TvR3Eh2yrlKX=*3vPoGklM zNbr&t>qbj9@+Wbo-VG-Ucr)p`tB1x>C|!O#9T$9i@>0=;GpkmA=FUnS(X`EscGg7) zq*dI{_p$xP`%g%XQlnpf4wHHp2jpQ+6?H36(DY$V6|yElPNYds@M||YV-+4 zU#57OtWiWJYnGp?=DM?;30^s5$(ASb2X@-tr$OJ%`&JElwR-sv(+*V5F56y-pKsqM zKB>8|-{<#>Sv_aQyi*eqQhv&`S zb4i-=HjJf_ApGv}#cV8D1dB?~izaorXb3~d(ba>Df#f%IV}KmFV|L`o>7^5sS2e=B`9Doh>HL%Jw^Mg|pTHpxs$<$ChPX;o5n`%$>U+qvdr ze4t<7M)RZ&T(jS|_cXp11uahohWJTn3h2bRjbR*bHlR>#Xt777wX4JZeL&fPX7!bA zMwWUykx@jpC><6TSw5;Na^kO3GHbppx>0m^ziG;^6AcBOzqxjRe=OZd`gvE>+#pgF zUQ3?Y=I%#Ed!H+6TvEjGiva^G(EcT0$@(bW?cl<~L_?y{U@Y+@8H_P@(GCNWhJ!tn zbA^sL-)d{n=|ME-x$n539GCC#KiX3{vT;egg9Z~JI`L%1qdoJCGldAScycG7) z&gZ2KANUNkd^(dX8)#_REqNw6;9&YqG*-s>P?_MPFxVKShMv4w={F~X7As{#&l)iF ze5PQ~x)UQJD-kc3$a!e-@v+A>|H}ZTq7mSLtBT@KQ+H^Df4;&KYL1AonM15LD-C2d z%PZfr58js%m zg!I=H>8CWVbDDHMuj}ibpO|LR_mtPaOEJmJO?P`|@)fskNnfPqO`O-Me|xDVG>e_L zK^Gu!J>Sy7f2l`~@4<3Z7q}>4sJA;e1Y8tD2rdt)4I$+rqe6ZO;p&Ctg%El;fkp@k zQ5lW)a!<4cTZ}wXz%7MJ#g}_j7UVxPFNDpi2Tj_I8Ou)HVC$m-amuELGsYs&aZ2a! zp5&{lwok|66=}|$??V=nY&@xfbW_!*<4=R|qWYw9f2W1Z?>CZq{q*hd>Exg^t!34C zY0oYHvNQ8?vmZMF@IP~EsIR=9JyoCSfK9dc*b$SV(97BGNOM$wkJ*fkgfoI8X)2>9cKea=A836y)Te6{dklaovHBGUAUuFeTpN%mmf zmSYQle_mD6($vk-YDhLe%G>m(^QN2Pgr~Tn-k)|ZpZohfe5GSYsifm#KorIbzZ(#> zg0f0;+d~Pbx&#puRG3^qDSLeWmnfO2gLdiBTs%d<>r(- zSaE0Y&B1pD>tA}M^XfD2_2{lEwoHD44EL^)f2S@W*X?NQ2hUu>t7p z19ZZu7uh;r`e9HJsAphIb)ee=iLo zlSg6a`$Sj0k((#I{GxPs?4xsjU=D18J}qMcx0SnIY;=UkV&I*EV#Gx<0CTzwEX5e~u>&XfU=GH5aqR(WIqW;eCO8n6juCPm$i8Gr~lg zc;7Kkoq+SC1tkkpyxF8TZ}pyrR@?^>b5!u46jb4E&JO-8_nb50aAT@*qj9g1FEZjH zW4ZCVk)vmTT0^lR6#VJX$Vf+pCz3~Exu=lFc|4XiN?G6xP`X^n&Hx2tf4eLw#wsDO zGg3YTR32Rk{wWE0MuNw`UayVDVU~H5ddzOWa(zKs!Oj;3dCp9%MHM*zMOwZvV;GsH;aO1#ihmFT1r`5$sJ) zr&0>OxkWbH?qW+e9J9~Be^>_b34;aC4lg8Ka0!f-+F8b8?+(yv0VW+c#qC%OlnwIVewW3c%=4VS?MLQv)Y}5+gGS{FyXnK|b0WxM7SxsLRP^ zQch()AnSFo8gb&V8Sj6G8%k#zFOR}m(vfc*?ZZb&R{*ImYjL8qf2j2$i`Ps_byn}Y z(5E{R@QZwI+YceC&%(tPQC>B5tyzr?2VzCDcpqLZ%wns9z};`_g6dmV0#Jlh*sxcdKR zp4T7w&8kR5=+QY@f1n1FtL*gD=I*55w3z!$drM1pYw=v|8ZALuqn4<6gG$RGoti^* zi69UjNDX<)$aJ2&VTL2HxdyXU8HM6};ey!NMTLcq|Tbr+WL${K6U^@@KvB ziQIJW6tbZDpEp;q1z&dL7Ra%*$Ic8>$$rQ$*+H(Wm|Vvof7gR;`5?*8xj4?zwdR;C z*_(r8zjSPNom{Wp?;QYO$NT7QW3%hLk+1NWjYf-#&8`PxiYe87$72OtCCU!uP+o z-ccKX+B1MIEAN?0U8*; z_;Y|#eHR3jqar^T@U>pku63=0UA@4&7}G8E2+!Of0bI4Mv?|#VZ_+t&PDy^7jkX( zZ(4Y74p;;dmX;QFkw!J2fVkQ_K(uhSOktyTo!d-|{XK*rhgNF>lgS(+iwJp+NZzj! zu#Dp9Y2Cg<*nk8-J{X+MY@+GXJ8|BAASFZi^ ztaN$JA1@ZZylErU{nrc6Ec$geet)I3bOx2mFl1k5W_=%b9;RkJ#^tyclX5%?|AM)C zI1j3Yn;HRQv&Ibe8a<%aX0{lVpnafszz)&yf5CQr-^UsDInEp-o#spco1V@l@^LX- zf;@uH)yIptPdd)elDzNWiTLcW)6#D*O0!)!JYxHlgPEl9t+v=OW@Jk|PinGFdQz%g zfOj>ze{3I^AU^^29|87se{r!p*9QG%u;trE*|ykzu?YrSG<+$tEr+kK**=0>wKlbp zf3w+47S3c=gUPP8a3TFY93Pb8S*9vG0?=&s&3wwinzA*V5VS0f&lP%iVtemZZ%ugW zDf57_cd_E`Xfm@$n_+{x6pZc9(PK$dq!~|31Eg!~&Y$i#!3%Q5`^HbtpOd1N?YWI_ zLlf5f!~&hAZQu^UIdA;1!Rd{lv5&peFY>KNj zGdjybQWN1C425`<>vqQJtU9jPv(IiiBs6Vc4|@6v1Vl1?vGEo|2V&+NJL*Nsx&s+X}EKlNLK zKc%CaD%(bFAx~EHoBVy%2UGsRx25M6NI#w~$Im^3pToxI+K2xT(xT0ft#fc5jX9ua zqO$o->X$Wh#|hz~;h`m-e&M6Te~BSHI-D4}@Nm7s5LV(b81%*xkKXq0(;t1v({r{& zksbO+rHdtCELk}JCAo=rZdiuzD59m`zx3X@Fzl6K;~G^>I?ye1SH+0>y$14mSBGy3 z6(jbBMm@Wc&#Re`Qkv7;g%3zI@g?T7yw>9Jh9>^c+~<0K`_8msvhdj)+b{w!N9U zf+jS7aq9})&3mipkMU2GzdnL&+qY``A4S}BN%h`oFuQwsaxOAGrrBjVV}P8`7>)q%vdaWt)5NTq*e2SiJi04f10hZuYP96sG-kC5zY7>17Ggzv)En)qU(|Qn3fl98ekfq4?{g= z*-oWf5U5e~Paj2&fi%aF7o?h@j%4pg(r3U!QhdVsG*VstE{PaE&MWYFK11=4@D|w4 z{n)OrC30A^!C(rqocSAUl_uJ4(5Vf?Pz-v}sIe&+0@Qf%f7#5yU2G-;%QiEZ%)jHX z9+lI3Ucgb(hlQQ7PP*`ZNxL4>9l)h^`w>`>=Jd+&p244oO09secG0ObwkjFnHke>M zm<*z>*rOKhi0!ua#R`GABSg+a!puO*)#UYkf6kpecxq`vxg{YqC9inWbENtLF!UJd z(z+H(;WgDrf1Hi)R#USaY-Rpas3wFSPZ(l0sff~GwdfQWvHczFFW>JD#&LQ=eOHUa zD(0|hnm7yigJj?vxkRU3aQ*^r8&A}sjS_yvEiRm&C8Sxn)v?2hz3uos@6CdlliP3Y zLL!0UtHO4>gL+Xz-4Kpf@zA`Ps^uy|&+M`(0~9R_e}o>$`^uO!c=3XCr?)h%HwXkA z))mj|%I8(Ti$9VY0y(?k7yq?bQCA&1&ynLrp3Vgu1mDWf!&NZw`=n{Iys3Vdn@&Xz zn8;s%Nj!@OlNohohJ9H;9JFDTybP7R$0`Y_l#5L!z`T5mD7PM_xeBh0eXRgfc@KJ|@uXo;Z zWp**%vtxDpaV7QeCKxEchpqgsrU%|&`uyNje~jOrpvSYN8J168o>F^uyjB{_cYME| zS7+|C>J4bX`*c!*HK3HyBo@TY&$5^Bw}y5V|Fgf1d(1P&Xpa9jkKyTwSz|7@0GXNSz5ScoRT= zgHm7OQQGRxqBYC9Kggj__#BFWu8$*EKR)-w?|Y<@ebO%pB(+1%B{k^RsBuGZCj25s3pykWWx1oZc0flPtp#+bqnpTSwW<)c!J$%te=bth zQB*cS>oB3d1<;@l54M9~^UDX^6ZcP*E?@YqTc4P2eUjUCbK=7nuyBDa7(J!y_7Qo| zshy<62BR9fQl%t1nteV-4|&@lYUqyC*yv8zXbqsGF=_xMjYg?f8I;;O;`|F8nJ~d* z+5gGsv;W!c{TbM{Tc20@&uCgTfAJKVKYr%8Q(*rvl9XlVWdQ581gTL5N;nSncIVM8 zTLx9Mii}dtR1tc0UGZTH&A4BL3riaX;Lpc<7vX=}ZF75p8ojl1=5{&hP?5dMFbPGv#GCS`C^T8N2^Uo+r@pILky;_4#RsjAvW8aJyoAqSphf}FxVdu!YT%<_aD4oNbJ$(zF z`e+XR36w8sI5CGI@T1c>*6uSg5<;+F4ln}tTtt^I@j&XBolm_E~grsbntC?p68rbx8*s~$+KP2>%#U+J>~tEV>>o!Q_OZg zZ``wB!Jfi(v)P{Lf0_r2H$#i5CI2$r%R)+h3k$1dLrS3t7*eBvD)W6KAU7f!MnFV# z1Q``EGlI~o>k+?1zzB$lP#TS)@FO_doW_Q2MkC^|p68TGRP0gOA6i5!@B8Qopcy^{ zJ@K#TvP309hCe<*$4pe|>}7^%^ug7H1_$XH-Qm z4jQN%@lwV4*XQBzGeck5rO;d2ls&QZbWZ(VW&VAd%pmB&3>tIB51Sz|tDvz7)ZCL;R z$Ju`XMpbnGHs`jK%}Gq)_Tte)*_e4n}D?lE860D(>CG+A;lJth*U8&K-yfw>6?aYF{|IG zMULJaxP`NM<{_KsQ@EwmpJ;QRM@@Nl0S-c?fA%5(Xa5 zBW*5tI?6ll3w%n=6o7u-%4n7R~yvd13T#N$YBD6@1%!^@L^7e$Qb&54A^n$5<%DRLsdNHjxWswCe+Aqhv-9( ze|z*Q84yuQ+i{OF#_fpd>v1>~VuIm;nL=*jtGqJfd>V>n@d*?1Ep$!*B7G!7dI1XI z;~~QF-7PyPL#J;8qO)ac!<_B#DR}8rx3xnCcJK1CJ1MqBT0(sDbl4&c91f%Ac7M$~ znJK6nJ7_k!zM969~HiXsqHVoehH8wD@eTm&N)|#nxxsbAPWjd`a-F&n-!WI!t z4;*qsHtF|ft=hZb*PhW)!CAwsjyB_{>vpt+4#x!9LS*}`ryR}6G4L*gUrhS|e~djn zSFgDcT8r$K7Q`OpU%W|#qTUU4tMt}=9+e)*DLv!Z=V5sIAmKC^Z2&l=39~q22OM)a zA`O5E95d20O#uXeB9K{gYVhdsle=u6xx?HnW9aFckrStO*)e^4P}ctH4%Hi~+vSe! zNG+VVX(!3g&Hlf2n!a!YvD1wl3O!x_zJZRqcD{Papu8L2tu8G@->2 zKuQ%8&X5v{A>4#?1y66};|jrh6yEfmyqS{eaw&3r`!mO~?4sy{nN1B-Wi1Y7}^b(~`AuaJJRD`I^L-}`HpMxJjYv#hlX1D!B zW_#flJ2@3|nZa&6ff+TrmSZqO9rPwyL=E9iw_^^AA*M0G7tLTCGlSEZY0%QR z8Gj{Slg0UPNbR{WTNPy^f9LDkSB6DoFR{J7`V9S2h$HCLR%u=_Dz_&p_YbBN&5Y)5 zgPtYg706!1M!$klXf)DC9?fx}I|?j><$Dit9Qf}){3aw1)puoL=0%r_+aw+QrisCt zc*g`iLy~7zdWs|znU~mHcPRGNDWgX)^8AWf!$LssFtTWQ;mC~Ce-6n}u8fw_DPy`7 zr{z|(FUUz+kHniuW>LQ)@#2VH?i4%P!_<$^hIUQ!mF5=>jd!+W^h>>lk)WN8P*_4O zi55yhTf)PG9(lr%7u9 z-OnR>!{^ApbJtN3ROB}BI(p-)Wbn4bGSL#Ohr;=Goja; zzW3Dt#mYmVMTW>aKFXMMmnp)VuEA9(e*o$JYAx#Qx>3>oFR+o zIPR_~=%_@*ioW--CsD5vxX*;^S76H}u^WTtA-U?3q3op0md!H@$)aJ0-deGK z>CQc`Bg=3!>Xj#Gl1Y)RpGI^z6d$I*On6}?bD_eme`1l>9?mASzp(WznrAE0*fepS8TQ}rMM3D%2=wTE zW@6jO{?%up1NuxK|=#`nrxk}lyt;54Oae9XA0 ze47Ss9cWKM`w7}g;yTZ8z43X0gyBO3lYN=pWxPsX_16Nt_%TW3?-o?fNKy}ctF`4Jtis_NsroKjVb$Q zf3E8*R6J;p#D963>&v^%ruhV?KS4W&;TVm2S%g{M`GRt{mK0cwJj5hKf=At^av z7^#$!h$wDMvXY&F{lgCg*Et5O#`^R5f6nK@9XJjwrapNVMt=hib%H-MDmuxnM{buG zpJzxUa#kio78<7SLc;mW_Ggeq2Ax%7_2rNL87xL6-$7N-;lR)d7ULQM3TH9NJ3*2R zB}Ovid-Y_#OkUasNqH%K5+e6NgG%@X4IXC7#1!sgsT8mbT9OojQ;pN0p}#dwf820B z%`qwukDSZFn&LXY|I07$cb-0dIvP9X?Ynp1etXoYkpaRf(6lp(MN&!uq-eg&loEwP zgxW4^XuHsOlaI@la%yZi38aB<{rU4C=)Ax2o0_&>MYMKDh@?`noKgXmoKgU1K$yQM z2q{Am3bjn7LPJR_ScthfTW865HttQytuE2@E;`FJQq+(__crE&d_ ze1y2p7r^}ssN18#aJb6<+9EWXXg-JlS~DyX49(@|<^vW$r$Yt&`l~P-PQbQke}BZR zVQ(2p^t*t?vrYtJN!e=pTK%6O0G+JUF!NNI-u&^}THP6wY{$ zTJhIGxOEvk3i{&1R3u#$cf@7GAb$rbsW2FjKVVQRB9L)tq>??ZlN~{nBp4w)m_C{OtbutDdc2EeEf_JMD`5Oe}c0dSYAhT1K{eEfNb} z@cih#c774Cyf+X|>t8V+en0N&e2|EA%s?dDRn&74_&&-M6sjXM6w(}uhJQZGLu%09 zUjd*4{A;Ga=U8N8t1)$l7^ zRi9d4h2heNsF`SKVSi3z>;Zd!#cauN)iunY6A52ox^gUakUM#MtA1VGpO|7I)kNgs z;O(ILpXgd-Y+?G5(>yW97dT3A6>-&j1V5+_4t%f_J-G744@Tk#QD5GoUniz8&ydHY zKPFeH7?Pc-MA9|sO~Eq4UQEi2mRZu=mP?jjmrOO}d6-_Q(tn}yHZ5lbrwxxr>7y>xDa=jg9%f=XE{d|$ zNB>b@58p$oibnm%l5Y~%`CvD=ii?=n+o*W>Y2>WQdgp!y+qG(@9 z;_3dU3JMwy4mp_u%9`MRDm1iFS#)JUSu^}k`NZ0J$dlpGr+_EY}Hwl_a$EKsuP}a2nTGl(D)4kEPo$ZKB1f}$0b%Y493nE48~F*;RmAuJHQRblz_qbyzyZ8TFtR1uHvHDIWSSc zQtXUAAImMpLgDiwKdr{koX9bamLdq?Y~-(9o(b13cqvXJnlcDCW&JcJud1LtZqNZ-`#=molH&{ePB{zxTzZ{Oc z_m@&Hl!9m05Q1*PY|fYShOZprX8re^R%|juQ8_35(%ihy)s&dnPzqdyeLB7rZvMyk z)&=&a_&2%FL%7ceqdsq-I&D}lz0l_YWT)u!Wd3=MVD(=g!D_>L4`8O`309v81gin- zJtoF4C+9(NBlx;7g3F#Ohx2N>vMJ-bzm&i|4evtRn8W^vfO|%WpODEKaZ;ab;G}Ml#b?zE zT5nMRC-uGObW;-w;s#kvrhorRL41$Pj{pL|;#?_gyss20gww7ZFOc6~@s}jpAgt49 zV%gug&Sjt+q!Y>R2r6nu6d?1WDx*e3VM?J0Gf<;%ZZmb(3^?F<#i-G!sEW#p7gife zR{5&+DQbVU*F+B*sudRTIy4!aZYvczBNC9RNRSsfB9c6deh22~>VL)6R*b?Gr>4B1 z>M*Xw>c%bRp2U?O6@A&H@`XTw#;t`r-dFioktD8udF0l}1CeJUMgQN#2q%a6dcbeL zHFW&vO@x?FEJQ*ycgHsBf&YI*AgKC%XvHM4@d7iO{+L)clN5;57mU?xUuTVB#y(#fhxJVuXFh(viBHFDJNoCS%4=t046$-M_qoBn6 zT^D!hFiqg_zd)b-DkjO7+MSmanNE1k$r-Q z2Cdy8fR-vE8P>>FdxDKdBGjazL~<=*>*FUQ4WN!QaTz#x^r-EB;)*#?MkR+C{^~hw zu`_kVS0kELw&1bF?Q5oA?8L){o4||bj!W*l_)N)Q$wyPj({P zZKQ%DY&4J8P%6Wv;pP%gxFPg7Xnj<#lB(IOWN)JhD2#vhj zqtU96@PCIyJU*{cP$P$~^@9=`3Cg2+^R^E1!Fj)%H1=tyt^t7FX|sKZ-cPVJK2$Fk z=X9To!A8;;3>vA9)NzOiLM34loWgn14oacD2BNcNj=Fhq@L0QYo!9JS%0|X^baHlZN}3N`0&lFP3P~E)Xd_+ zS;l0*1mK+arVQ?oks@@A4Xl7)np~irfOiHT{0(Lr`MwdbB0*RvrAAK~Nn;5XN{5Bg zQR*OrRKPei5lZJ1%8wtRc$skDB!=XaXSV1O03$h{SDtHg2pz9tTZos1E58Dz*7r@F=_i{)In+4JAv&TLG3*baDnUujTpnux?4_xBi z697oJ5Q**}K#3?;$5wfQj5W$+v9D!cN+}CbDStT_m^MHpe;lGu2sG>}(&q9*UViRC&&nUsDs6-SdMWAb z7-7pSnlgt6zL@mGDd2(o*>E2I5@Nn|L^6IvOcF-GaOw=BvWN?hqt(Ty&Nlasjs zaGjs0k%J;?4Qia(n?&8gqaw(dkE>uLQw*eKlbSsp0Kl2gzk36oyZOoeI3*<(b^8o- zONkr2n%Yu5u-&`6;eV57upW;49FRYs?HZL5J9q<3#uMdL3HlSZ@m;;yNmetunK(d*=^DH3P0#dE;T5K@g_UOpv>t_DA<#rk)wzBXS zbJ&r2fnu`gK39s_(jX4!V=EeXzE(TDl7$6hHC}I?hhGHTxiIIm7kJAlj{`byXgkRuBq(l}Di^kd`2*rj$?|A(YccmErQ!WB>=XCc(SP z_49{!*1_+OK`BYaPMo~1c*~|O*wy-e&-Rs%=TP9oqHb{LG+|DxKy$)^JR-Dh1fe;h z4}Zr~K@o*!hMH!}JT$>!b^X--!W?jN2n;j}8qEQYe30ePPg*WsRb&%~tA3|i$9g}r z*~#qVBUfx(@Z0Lai-Kv1jTuncnR1u zegUxD{c*nx>!vLL;$AthJn8|Y_k0%EH?xJlLBqoJO;|(Ui1>bK+$qTO=PG_- zr*M73#j4v(;k(DMU|z=}u1{92U-aZrn%zev8&9=G6WOX-2M3l=@2K0P1L#C9&J!M70-= mnmiruqQwAL-zAOu*;u1m?A>8M_yh@yvnD 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 ?c@Ny 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

  • {% endif %} diff --git a/modules/comments/admin/pages/manage_spam.twig b/modules/comments/admin/pages/manage_spam.twig index ffd614e..9b4890b 100644 --- a/modules/comments/admin/pages/manage_spam.twig +++ b/modules/comments/admin/pages/manage_spam.twig @@ -8,7 +8,7 @@ @@ -41,10 +41,10 @@ {{ trigger.call("manage_comments_column", comment) }} -{{ comment.edit_link(icon_img("edit.svg", "edit" | translate), null, null, "emblem") }} +{{ comment.edit_link(icon_svg("edit.svg", "Edit" | translate), null, null, "emblem") }} -{{ comment.delete_link(icon_img("delete.svg", "delete" | translate), null, null, "emblem") }} +{{ comment.delete_link(icon_svg("delete.svg", "Delete" | translate), null, null, "emblem") }} @@ -53,7 +53,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} @@ -72,7 +73,7 @@ {{ "Delete" | translate("comments") }} - +
  • diff --git a/modules/comments/comments.php b/modules/comments/comments.php index 9fa942e..ff36fa0 100644 --- a/modules/comments/comments.php +++ b/modules/comments/comments.php @@ -16,7 +16,15 @@ "notify_post_author" => false, "default_comment_status" => Comment::STATUS_DENIED, "allowed_comment_html" => array( - "strong", "em", "blockquote", "code", "pre", "a" + "a", + "blockquote", + "code", + "em", + "li", + "ol", + "pre", + "strong", + "ul" ), "comments_per_page" => 25, "enable_reload_comments" => false, @@ -30,12 +38,14 @@ Group::add_permission("edit_own_comment", "Edit Own Comments"); Group::add_permission("delete_comment", "Delete Comments"); Group::add_permission("delete_own_comment", "Delete Own Comments"); - Group::add_permission("code_in_comments", "Can Use HTML in Comments"); + Group::add_permission("code_in_comments", "Use HTML in Comments"); Route::current()->add("comment/(id)/", "comment"); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { if ($confirm) Comment::uninstall(); @@ -52,30 +62,41 @@ Route::current()->remove("comment/(id)/"); } - public function user_logged_in($user): void { + public function user_logged_in( + $user + ): void { + unset($_SESSION['commenter']); $_SESSION['comments'] = array(); } - public function user($user): void { + public function user( + $user + ): void { $user->has_many[] = "comments"; } - public function post($post): void { + public function post( + $post + ): void { $post->has_many[] = "comments"; } - public function list_permissions($names = array()): array { + public function list_permissions( + $names = array() + ): array { $names["add_comment"] = __("Add Comments", "comments"); $names["add_comment_private"] = __("Add Comments to Private Posts", "comments"); $names["edit_comment"] = __("Edit Comments", "comments"); $names["edit_own_comment"] = __("Edit Own Comments", "comments"); $names["delete_comment"] = __("Delete Comments", "comments"); $names["delete_own_comment"] = __("Delete Own Comments", "comments"); - $names["code_in_comments"] = __("Can Use HTML in Comments", "comments"); + $names["code_in_comments"] = __("Use HTML in Comments", "comments"); return $names; } - public function main_comment($main): bool { + public function main_comment( + $main + ): bool { if (empty($_GET['id']) or !is_numeric($_GET['id'])) Flash::warning( __("Please enter an ID to find a comment.", "comments"), @@ -93,7 +114,9 @@ redirect($comment->post->url()."#comment_".$comment->id); } - public function main_most_comments($main): void { + public function main_most_comments( + $main + ): void { $posts = Post::find(array("placeholders" => true)); usort($posts[0], function ($a, $b) { @@ -113,12 +136,15 @@ ); } - public function parse_urls($urls): array { + public function parse_urls( + $urls + ): array { $urls['|/comment/([0-9]+)/|'] = '/?action=comment&id=$1'; return $urls; } - private function add_comment(): array { + private function add_comment( + ): array { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -151,7 +177,7 @@ __("Message can't be blank.", "comments") ); - if (empty($_POST['author']) or derezz($_POST['author'])) + if (empty($_POST['author'])) return array( false, __("Author can't be blank.", "comments") @@ -198,6 +224,18 @@ notify:$notify ); + if (!logged_in()) { + if (!empty($_POST['remember_me'])) { + $_SESSION['commenter'] = array( + "author" => $_POST['author'], + "author_email" => $_POST['author_email'], + "author_url" => $_POST['author_url'] + ); + } else { + unset($_SESSION['commenter']); + } + } + return array( true, ($comment->status == Comment::STATUS_APPROVED) ? @@ -206,7 +244,8 @@ ); } - private function update_comment(): array { + private function update_comment( + ): array { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -245,7 +284,7 @@ __("Message can't be blank.", "comments") ); - if (empty($_POST['author']) or derezz($_POST['author'])) + if (empty($_POST['author'])) return array( false, __("Author can't be blank.", "comments") @@ -300,7 +339,8 @@ ); } - public function admin_update_comment()/*: never */{ + public function admin_update_comment( + ): never { list($success, $message) = $this->update_comment(); if (!$success) @@ -316,17 +356,21 @@ ); } - public function ajax_add_comment(): void { + public function ajax_add_comment( + ): void { list($success, $message) = $this->add_comment(); json_response($message, $success); } - public function ajax_update_comment(): void { + public function ajax_update_comment( + ): void { list($success, $message) = $this->update_comment(); json_response($message, $success); } - public function admin_edit_comment($admin): void { + public function admin_edit_comment( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -357,7 +401,9 @@ ); } - public function admin_delete_comment($admin): void { + public function admin_delete_comment( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -385,7 +431,8 @@ ); } - public function admin_destroy_comment()/*: never */{ + public function admin_destroy_comment( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -425,7 +472,9 @@ Flash::notice(__("Comment deleted.", "comments"), $redirect); } - public function admin_manage_comments($admin): void { + public function admin_manage_comments( + $admin + ): void { if (!Comment::any_editable() and !Comment::any_deletable()) show_403( __("Access Denied"), @@ -477,7 +526,9 @@ ); } - public function admin_manage_spam($admin): void { + public function admin_manage_spam( + $admin + ): void { if (!Visitor::current()->group->can("edit_comment", "delete_comment", true)) show_403( __("Access Denied"), @@ -524,7 +575,8 @@ ); } - public function admin_bulk_comments()/*: never */{ + public function admin_bulk_comments( + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -682,7 +734,9 @@ redirect("manage_comments"); } - public function admin_comment_settings($admin): void { + public function admin_comment_settings( + $admin + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -755,7 +809,9 @@ ); } - public function admin_determine_action($action): ?string { + public function admin_determine_action( + $action + ): ?string { if ( $action == "manage" and (Comment::any_editable() or Comment::any_deletable()) @@ -765,7 +821,9 @@ return null; } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["comment_settings"] = array( "title" => __("Comments", "comments") @@ -774,7 +832,9 @@ return $navs; } - public function manage_nav($navs): array { + public function manage_nav( + $navs + ): array { if (!Comment::any_editable() and !Comment::any_deletable()) return $navs; @@ -801,13 +861,16 @@ return $navs; } - public function manage_posts_column_header(): string { + public function manage_posts_column_header( + ): string { return ''. __("Comments", "comments"). ''; } - public function manage_posts_column($post): string { + public function manage_posts_column( + $post + ): string { return 'id)). '">'. @@ -815,13 +878,16 @@ ''; } - public function manage_users_column_header(): string { + public function manage_users_column_header( + ): string { return ''. __("Comments", "comments"). ''; } - public function manage_users_column($user): string { + public function manage_users_column( + $user + ): string { return 'id)). '">'. @@ -829,7 +895,8 @@ ''; } - public function ajax_reload_comments(): void { + public function ajax_reload_comments( + ): void { if (empty($_POST['post_id']) or !is_numeric($_POST['post_id'])) error( __("No ID Specified"), @@ -879,7 +946,8 @@ ); } - public function ajax_show_comment(): void { + public function ajax_show_comment( + ): void { if (empty($_POST['comment_id']) or !is_numeric($_POST['comment_id'])) error( __("Error"), @@ -902,7 +970,8 @@ ); } - public function ajax_edit_comment(): void { + public function ajax_edit_comment( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -940,7 +1009,8 @@ ); } - public function ajax_destroy_comment(): void { + public function ajax_destroy_comment( + ): void { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -975,7 +1045,9 @@ ); } - public function links($links): array { + public function links( + $links + ): array { $config = Config::current(); $route = Route::current(); $main = MainController::current(); @@ -1002,7 +1074,8 @@ return $links; } - public function main_view(): bool { + public function main_view( + ): bool { if (isset($_POST['action'])) { if ($_POST['action'] == "add_comment") { list($success, $message) = $this->add_comment(); @@ -1029,12 +1102,22 @@ unset($_POST['author_url']); } } + } else { + if (!logged_in() and isset($_SESSION['commenter'])) { + $commenter = $_SESSION['commenter']; + $_POST['author'] = $commenter['author']; + $_POST['author_email'] = $commenter['author_email']; + $_POST['author_url'] = $commenter['author_url']; + $_POST['remember_me'] = "on"; + } } return false; } - public function main_unsubscribe($main)/*: never */{ + public function main_unsubscribe( + $main + ): never { fallback($_GET['email']); fallback($_GET['token']); @@ -1081,7 +1164,9 @@ ); } - public function view_feed($context): void { + public function view_feed( + $context + ): void { $trigger = Trigger::current(); if (!isset($context["post"])) @@ -1133,7 +1218,11 @@ $feed->display(); } - public function webmention($post, $from, $to): void { + public function webmention( + $post, + $from, + $to + ): void { $count = SQL::current()->count( tables:"comments", conds:array( @@ -1169,12 +1258,16 @@ ); } - public function javascript(): void { + public function javascript( + ): void { $config = Config::current(); include MODULES_DIR.DIR."comments".DIR."javascript.php"; } - public function post_options($fields, $post = null): array { + public function post_options( + $fields, + $post = null + ): array { $statuses = array( array( "name" => __("Open", "comments"), @@ -1216,14 +1309,18 @@ return $fields; } - public function delete_post($post): void { + public function delete_post( + $post + ): void { SQL::current()->delete( table:"comments", conds:array("post_id" => $post->id) ); } - public function delete_user($user): void { + public function delete_user( + $user + ): void { SQL::current()->update( table:"comments", conds:array("user_id" => $user->id), @@ -1231,7 +1328,9 @@ ); } - private function get_post_comment_count($post_id): int { + private function get_post_comment_count( + $post_id + ): int { if (!isset($this->caches["post_comment_counts"])) { $counts = SQL::current()->select( tables:"comments", @@ -1252,14 +1351,19 @@ return fallback($this->caches["post_comment_counts"][$post_id], 0); } - public function post_comment_count_attr($attr, $post): int { + public function post_comment_count_attr( + $attr, + $post + ): int { if ($post->no_results) return 0; return $this->get_post_comment_count($post->id); } - private function get_latest_comments($post_id): ?string { + private function get_latest_comments( + $post_id + ): ?string { if (!isset($this->caches["latest_comments"])) { $times = SQL::current()->select( tables:"comments", @@ -1280,14 +1384,19 @@ return fallback($this->caches["latest_comments"][$post_id], null); } - public function post_latest_comment_attr($attr, $post): ?string { + public function post_latest_comment_attr( + $attr, + $post + ): ?string { if ($post->no_results) return null; return $this->get_latest_comments($post->id); } - private function get_user_comment_count($user_id): int { + private function get_user_comment_count( + $user_id + ): int { if (!isset($this->caches["user_comment_counts"])) { $this->caches["user_comment_counts"] = array(); @@ -1308,27 +1417,39 @@ return fallback($this->caches["user_comment_counts"][$user_id], 0); } - public function user_comment_count_attr($attr, $user): int { + public function user_comment_count_attr( + $attr, + $user + ): int { if ($user->no_results) return 0; return $this->get_user_comment_count($user->id); } - public function visitor_comment_count_attr($attr, $visitor): int { + public function visitor_comment_count_attr( + $attr, + $visitor + ): int { return ($visitor->id == 0) ? count(fallback($_SESSION['comments'], array())) : $this->user_comment_count_attr($attr, $visitor) ; } - public function post_commentable_attr($attr, $post): bool { + public function post_commentable_attr( + $attr, + $post + ): bool { if ($post->no_results) return false; return Comment::creatable($post); } - public function import_chyrp_post($entry, $post): void { + public function import_chyrp_post( + $entry, + $post + ): void { $chyrp = $entry->children("http://chyrp.net/export/1.0/"); if (!isset($chyrp->comment)) @@ -1368,7 +1489,10 @@ } } - public function posts_export($atom, $post): string { + public function posts_export( + $atom, + $post + ): string { $comments = Comment::find( array("where" => array("post_id" => $post->id)), array("filter" => false) @@ -1418,7 +1542,9 @@ return $atom; } - public static function email_site_new_comment($comment): bool { + public static function email_site_new_comment( + $comment + ): bool { $config = Config::current(); $trigger = Trigger::current(); $mailto = $config->email; @@ -1443,7 +1569,10 @@ return email($mailto, $subject, $message, $headers); } - public static function email_user_new_comment($comment, $user): bool { + public static function email_user_new_comment( + $comment, + $user + ): bool { $config = Config::current(); $trigger = Trigger::current(); $mailto = $user->email; @@ -1468,7 +1597,10 @@ return email($mailto, $subject, $message, $headers); } - public static function email_peer_new_comment($comment, $peer): bool { + public static function email_peer_new_comment( + $comment, + $peer + ): bool { $config = Config::current(); $trigger = Trigger::current(); $mailto = $peer->author_email; diff --git a/modules/comments/info.php b/modules/comments/info.php index 7525eab..76be16d 100644 --- a/modules/comments/info.php +++ b/modules/comments/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Comments", "comments"), "url" => "http://chyrplite.net/", - "version" => "2024.03", + "version" => "2025.01", "description" => __("Adds commenting functionality to your posts, with webmention support.", "comments"), "author" => array( "name" => "Chyrp Team", diff --git a/modules/comments/javascript.php b/modules/comments/javascript.php index 6e5637e..b4b20e4 100644 --- a/modules/comments/javascript.php +++ b/modules/comments/javascript.php @@ -10,7 +10,8 @@ var ChyrpComment = { reload: module_comments["enable_reload_comments"]); ?>, delay: Math.abs(module_comments["auto_reload_comments"] * 1000); ?>), per_page: module_comments["comments_per_page"]); ?>, - init: function() { + init: function( + ) { if (ChyrpComment.reload && ChyrpComment.delay > 0) ChyrpComment.interval = setInterval(ChyrpComment.fetch, ChyrpComment.delay); @@ -76,7 +77,8 @@ var ChyrpComment = { } ); }, - fetch: function() { + fetch: function( + ) { if ( ChyrpComment.failed || $("ol.comments").attr("data-post_id") == undefined @@ -129,7 +131,9 @@ var ChyrpComment = { ); } }, - edit: function(id) { + edit: function( + id + ) { ChyrpComment.editing++; var thisItem = $("#comment_" + id).loader(); @@ -235,7 +239,9 @@ var ChyrpComment = { "html" ).fail(ChyrpComment.panic); }, - destroy: function(id) { + destroy: function( + id + ) { var thisItem = $("#comment_" + id).loader(); $.post( @@ -257,7 +263,9 @@ var ChyrpComment = { "json" ).fail(ChyrpComment.panic); }, - panic: function(message) { + panic: function( + message + ) { message = (typeof message === "string") ? message : Oops.message ; diff --git a/modules/comments/locale/de_DE/LC_MESSAGES/comments.mo b/modules/comments/locale/de_DE/LC_MESSAGES/comments.mo index 0ee2d45ddb30484a0ed940a56f977d7a636afc83..aebea92b2b0442a40c52541cd5605030eb0158bf 100644 GIT binary patch delta 2421 zcma*oe@xVM9LMp`fuJFxf_R7mUy};rhfslvU>ruGfI^5t`J3ndt%t=1qh!x!L!F%v+EW;z1iC|J~UA;YNCEr zDMv8}-$#{x0?Tj)m*P#-0^Gc;%2c8jupXJxbYYY}W|z}p5S78pj$^0^CvY{MMwR|A z)Iw`1m$q&#deDn{eiXH3AEPGx)N#u3D^$O8S=3)Ey}*NfbkTbWF2m(mi|eolwFU2@ zUObK*6LS((+Ee%tPC3u7p(=C>mHBe^k=-@5$W+FI7IrM4{tYyq=fPS$iMqdnXm7AQf9#x4AxB)vc4aZP>JdV6#K0#$Zg{t@rvWq5qg@y+F6ZOJv z=MNd29G!(cq>84>xo<=b*n`@tA?Nu)R0YOS{g0#ieTGFi<9HSGxS!A9e2b!{ga*l* zYR6{O3VTrl4xj_LA-^UxP)1B1{zS`3NLEn!+dDr#}fDK z{}c_9Hs7OGeib$F-&ly*^i~Gds58)sBw_a9c07#R@G@#EJglY~Td@}ppnfmTq7Lgh z)I1k)5%ZfrXegsh($)ZlsMBBKxC!s&eh_t--ojQqg~~LIUmI;1An~Xm!PYPIs%crjk%?nh6euSw%cas1CaLo+rNe&)|BZo6yxmJWA9P7QtCa zoF*`JgihKTLI-CZv5UBKX-_Dpx+Je+(3kCL;&DQ!qlnO^>uQXBINP1}1g-6{$=NF! zI%(}BI2VZ{4~e=rpf>W(#r~Tn=f>l>I$kj6y_ALCNZ)|f5eoL%;jn26`bOhlXIyf{ zrZaz!ZVpELdq%CufNkv!h9j1DI5H3nS-VFqd&uh_v_=N(faSINfEJTa3I&0LIUMS^YUDcO?JTBHxTmo4MhC?thdW=TR!v*N65uz zhpnc;V1FXNy>`fIu4pHiP#b?LH&` delta 2099 zcmXxkduWqa7{~FG)-<(h?W$Q~=QL^StzE61ZM4;ByI$0_t{UrYPEBjyva&UWn!;4t zAp1wEY=dkd%)-WmIT^b}lucK>f`Z5<2#R$eL*{S_gH;$J`u(NHL!S3@-oyKz%X7|~ z@5A?N5`W}R_{>nE#7sq|F(1k-E|mG%h;b~%L7a@o@l`y9ZoGkwcpG2B zATJf+Vw{VcvDlb|8Kg3YhOfpO%oY2bImd~=IR9u4t%pzpA4N^@Bx=h}V;$bL?M0+d z6PS-0V3D=fx(@Yz6g4p?m;4t{*-yg^Jc2B4-A0X&Ui9K~f=kVpR2u!#fk8h(oE@EjK7e>jFSSiV*~mD%XID%1cS zSdKlY)DGhU{0WuOQQU}sBR{i}{aT6<4B^3qZ8(oQ)laYrtLRM+zK2@*QPhCnpfYd* zSK$b{G0Usd%%Dh<@uOB=hD!BvR6koVfZI{eCkCmoeP#%?=ZBH(m>=x@SyYENQCsxT zwtF~Hn$T?2^ChU~YH&8TT6gO)%EBFUB0Y4WlpaON@%*CtkzmtkquopGJ5YED3)Jo2v z&cY}%H{+rgZGj&vun@Om8)}8$p$_LMRKFvr30^}jCvaCX^M;)Rr zY{pMe9gL#(@LyC1k5L0DeL4#s)SkAY`rC%e!~kkx2XGO7j$836cDGTP%iopUhvoPi zHlY4hG@(Xx;hV$;LS+k~gSU-XP0&}mEa%GO>7s1RBUqn#D>;zm3%8`(jaiGzrShX( zYx+%umYYdvRF!&SBM~B^$=|a|-D{{tk}i)g(MoM0p_Hhw&*@KQ6KeS?e7@;eGcqd|R;IqlZ^!wP@W@`tdo#tf5Ln@!lfKc}B(eb4Lnd(Q9oJm2U0Jg3tIrwYz|2#qwx zyo@&{7W*&`KVbs)V=@k65+=|oGg19Hn1V~}`!XEPeLZU2oj4lzp&O537GA`3e2`#5 z(FuF#7)8fx+b=kV`$1GfNr^)VrePlUnaH0h$e2_vav4Pl6eDw*D&!fn74>~HY6VAa&!Z;1iHook7vmpPB|VgB8s=jmHlX@1 zqYJO1=IaRA7msXTpdNgW%Jd^6 z75a->Sj8kZlI=AfWG+*P7M7zI_h3HWu}oPQJZ@TGw>3sH1|=Z>PhER zsmT5IgFlh1O*}iOnvO#yv=CJ*ALe2SYE$>yoCk{zP%FQSCq~!V)}=O1K;6;VZ1gM3$>f zZ$vG47i#?7Aucq*F}vd;YAf#GM0|j=@hvLRc+yq{vT-HWqPC8;`XyI1W1V?ZcKC>OguT-aL1M2&exCFbALuJ+y)x>sU z6QLxw5UYuDLQM(rxLQ*5z+`hprOf*9p*Xj9ibv=Cnpdpuu>@{oWx{8Z8@PL zdx*MlcihZjYq+WkJ6!H2E~52PZM0FU^+I9;p`)v&6PHhHBZ`R{LTw|llqeu9g1wI( z0*Eeo1}-L4M_>4;%bmkTv`ytxKY-1Iij+raH+96+mW3a?+>Xj{uPfVI!F@f!2AlbW z+8n}5=pWqw#>SZ<`=-!#QN%m^T+HZ(w#Hpn`QAXIKNvJcfgJ}TKjJ?-B7KRK&eWQq z-zuptE47+ht>QpSi@&uk7@3!RFvhVUaw{dpnQFfmu(oR$Q|%A71tOo**2P48840mz WHNl3V_gnoH&?5RXf)hK~9OrEOiUn zxG>wY|1Op#W?n7?FSJoFCKnTpVwA;TJS>|R9^&E3%|rA?{r>8^H$46P-?!yGJkQ%6 ztoyF+hdaq>#+WNP#+2d>^x}V*i!acRS#%1p#2Q46hj1n~+5Se%rk}uk?88DlfC2mw z%W(ut@LaA*rWd@)zzhcNTA$)u^t1BbY^V&iQ3tCri2Ruiyl9~vsD=9QJsd*)|8Mv< zo=m*Q1ihBHW) zHXOkqwqqj>*zpsn4gH?vK?{ysr>wV86Ff%k^f}JLB0gM(RX7JDSdY6J@_FWvHb_Qh<+u<)`U^4z;Ds#F=o`Q z&Kyr>F>EbJP#O3W*_-(rnaeyz6(g5pXuJw_!d2LWo3I5B zqZWLCAK)Wgj};tSMc=W>RB5i@`}hR4(YfqenP|XO*o`X9 zanu6mQ5n00n&%p7BmbZ-Q6ZBk6UlNOG!Q|ZIEoI&P!oTR%{XB#sr+gnzgnwMMgtKRG{FpP?AM1-d qEz!1Cr#qf-w)gDb9q%4Uq^=jYXLy_X<2wfvsbFc|v{ZBXSMRj>;H diff --git a/modules/comments/locale/it_IT/LC_MESSAGES/comments.po b/modules/comments/locale/it_IT/LC_MESSAGES/comments.po index 78cd110..bea4006 100644 --- a/modules/comments/locale/it_IT/LC_MESSAGES/comments.po +++ b/modules/comments/locale/it_IT/LC_MESSAGES/comments.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/comments/admin/pages/comment_settings.twig:3 @@ -94,54 +94,54 @@ msgstr "Modifica del commento “%s”" msgid "Body" msgstr "Testo" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "Autore" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "Email dell'autore" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "Sito dell'autore" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "Date e ora" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "Stato" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "Approvato" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "Negato" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "Spam" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "Notifiche email" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "Salva" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "Elimina" @@ -150,8 +150,8 @@ msgid "Manage Comments" msgstr "Gestisci commenti" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 modules/comments/comments.php:806 -#: modules/comments/comments.php:820 modules/comments/info.php:3 +#: modules/comments/comments.php:829 modules/comments/comments.php:867 +#: modules/comments/comments.php:884 modules/comments/info.php:3 msgid "Comments" msgstr "Commenti" @@ -169,252 +169,252 @@ msgstr "Aggiunto" msgid "Webmention" msgstr "Webmention" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "Selezionati:" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "Rifiutare" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "Approva" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "Contrassegna come spam" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" -msgstr "Esegui" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" +msgstr "Processo batch" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "Gestire spam" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "Aggiungi commenti" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "Aggiungere commenti ai post privati" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "Modifica commenti" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "Modificare i propri commenti" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "Elimina commenti" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "Eliminare i propri commenti" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" -msgstr "Si può usare HTML nei commenti" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" +msgstr "Usa HTML nei commenti" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "Si prega di inserire un ID per trovare un commento." -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "I post più commentati" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "Per aggiungere un commento è necessario un ID." -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "Non puoi commentare questo post." -#: modules/comments/comments.php:151 modules/comments/comments.php:245 +#: modules/comments/comments.php:177 modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "Il messaggio non può essere vuoto." -#: modules/comments/comments.php:157 modules/comments/comments.php:251 +#: modules/comments/comments.php:183 modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "La casella dell'autore non può essere vuota." -#: modules/comments/comments.php:163 modules/comments/comments.php:257 +#: modules/comments/comments.php:189 modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "La casella dell'indirizzo email non può essere vuota." -#: modules/comments/comments.php:169 modules/comments/comments.php:263 +#: modules/comments/comments.php:195 modules/comments/comments.php:302 msgid "Invalid email address." msgstr "Indirizzo email non valido." -#: modules/comments/comments.php:175 modules/comments/comments.php:269 +#: modules/comments/comments.php:201 modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "URL del sito web non valido." -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "Risposta Captcha errata." -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "Commento aggiunto." -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "Questo commento è in attesa di verifica da un moderatore." -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "Per aggiornare un commento è necessario un ID." -#: modules/comments/comments.php:228 modules/comments/comments.php:345 -#: modules/comments/comments.php:373 modules/comments/comments.php:410 -#: modules/comments/comments.php:895 modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 modules/comments/comments.php:389 +#: modules/comments/comments.php:419 modules/comments/comments.php:457 +#: modules/comments/comments.php:963 modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "Il commento non è stato trovato." -#: modules/comments/comments.php:234 modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "" "Non si dispone di privilegi sufficienti per modificare questo commento." -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "Commento aggiornato." -#: modules/comments/comments.php:333 modules/comments/comments.php:915 +#: modules/comments/comments.php:377 modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "Per modificare un commento è necessario un ID." -#: modules/comments/comments.php:364 modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "Per eliminare un commento è necessario un ID." -#: modules/comments/comments.php:379 modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "Non si dispone di privilegi sufficienti per eliminare questo commento." -#: modules/comments/comments.php:425 modules/comments/comments.php:973 +#: modules/comments/comments.php:472 modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "Commento cancellato." -#: modules/comments/comments.php:432 modules/comments/comments.php:484 +#: modules/comments/comments.php:481 modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "" "Non si dispone di privilegi sufficienti per gestire eventuali commenti." -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "I commenti selezionati sono stati cancellati." -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "Commenti selezionati negati." -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "Commenti selezionati approvati." -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "Commenti selezionati contrassegnati come spam." -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "Commenti (%d)" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "Spam (%d)" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "Per ricaricare i commenti è necessario un ID." -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "Commenti aggiunti dal %s" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "È necessario un ID per visualizzare un commento." -#: modules/comments/comments.php:992 modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "Commenti “%s”" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "Hai annullato l'iscrizione a questa conversazione." -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "Commento #%d" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "Un ping dall'URL è già registrato." -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "Il tuo URL è troppo lungo per essere memorizzato nel nostro database." -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "Menzionato questo post." -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "Aperto" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "Chiuso" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "Privato" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "Solo utenti registrati" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "Stato del commento" -#: modules/comments/comments.php:1435 modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "Nuovo commento a %s" -#: modules/comments/comments.php:1436 modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "%s ha aggiunto un commento sul blog post:" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "Annulla l'iscrizione a questa conversazione:" @@ -433,10 +433,10 @@ msgstr "" msgid "Do you want to remove comments from the database?" msgstr "Si desidera rimuovere i commenti dal database?" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "Sei sicuro di voler eliminare definitivamente questo commento?" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "Anonimo" diff --git a/modules/comments/locale/nl_NL/LC_MESSAGES/comments.mo b/modules/comments/locale/nl_NL/LC_MESSAGES/comments.mo index 718acc85e6ea48aae4cd51534cfe852f59e2fd5f..d36c36bbb73468a4ef7261153c661422795baca3 100644 GIT binary patch delta 1689 zcmX}rOKeP09LMog$FSmyD=H>#F=1Z zz-Kg!qT!Y8Cmc(C5H+EMkwX(q!d&WU$j_AVr-ABG12y9m>_YWFgBjS1+4va8<1f?% zT=79;#&MCuTQmVLGN!3Qo-tcc_jjUJu;2DHYQSDxfcJ4B{zhf8fHY0RLM*{XRQm;V z;w990*Mj!NUE3$92VbLR`WDmB;^|aO$4OX##aM^hf|ICzS8xROpfYz0=i*(v{Rb*T ze^3isKZ%WGdrbi{mMK9uR-gxWVIlU|^#PnkJ(K0@#kDvU58*?+8p?It4=Q&rlZK|$ zk2)0}k@T4Fn1b2?US?8}CX;2m1a-gGuKQ7Yasc)GG2~~?^EVN1+4iAM*Uw~5m2!~G zj%kf<)ByRYoUTFLZ$@p#E}Vm1r~xjca(Wvzkw-Wk-=PMMr*Q&KMWw=v+M5p4c!yIs zReG?S2EFJ8Y6TBa1H3@Z^c`wK4ti@P6H)yZV*}P=6JAGcZVD%%05h->t5KP~h}!IH zsQ29ra-o?#Lmkr(_5*{cl~_Eb<2e(xd22BT1E>Mcqx$us1|C3V>?>-ZL0pa&tI)zq zQSYfjZkga-E_AAnqh8dFGq4wRs`_vdy7)RZU?pbbAzX;pQ4{)t7Oo+x31wp=F^t$u ztRgB1l{|vSRT3g;(ST&mtPAanae2zQY9!VYN-`fnWEWRrDN#l^h{=S?GNP8y^y))T zW3q>>=Bg@WIbAJWM5d?QC=VPAGoRQ%=<8I`Mi&xW2`^DYsMHaQi6X*Ha0Vh@Bt%k@ zg-U@=Y;kD6)0N3Zq$tDsfHn~;h+IO)MhR9~61wMfS(Twa=M2w!>N-MfxS2<&=!|;^ z?byGf-CAl_N^BQ|J;P5$jc(k%ZHK#})4$CZ2$-e*?Oow-u^+AQn~{}{aWw&-du4Tb znY*Rk?e({{`Pz2}!g-0_C@VkQHD-$=QJrUZL^==k{gbpQD%_NkA3eU**VMVErS*S* Ue@C0Iv$dtY+1DOEk$%Mb3zS&2>i_@% delta 1676 zcmXxkTWm~09LMq5ZnxW3Z%S=jx1&^}l}cHy(nU+ri@LRxMp2e*8e3VdkdP&5NJJ1T zAs!?=2*T3}5|^YZyhugdLd1hh)Qg8AArkTZogS0^_j6{>IWu!+{?qeS7phKviY6Lk zUZfh6i*GOqhj0Y`#w_$u$-ps=g{XEvW@D{WZ^dNlAxy^zj>LoL!&5j8ui_YdJi3?$Xa9$W;^n%i8%M8s4qF~cnvl1L!5)Juo5#_E={-&3$Y2SvD<0C ziJH)zC>I*A-|@NQM^p#jQ8WF8`8b+~^Kb@E!aAIfov5w2ihA!Jrr-nAmOjCm_}pnv zV*j*KtFpLYn~fhC!z@4xn=pV~I1jHo^{+UcdJ&(k4x4cb9>D>;7Atf2+gbHGXLyS5 zP+9R8SsvqM>y>ReNN1)Lxn&kOwmA1Yoq8{7FV3N!zl8jmTl`GK0mpBs?8@+wRr>Z4 zc1oK%8#O>ZYArXT?(au!!eN|&$58{^N3G>k)I>kvRQ!V)xPZn9Sc&SV6}2QCsJ%In zOIB&%D>UeZ`=}0IqP}DhHP8>#j6J-ii4~x}Xg=z_c5KHU?7$bO&8;94%CQPp<8IUn zKSFKx(v=5snVPz#peF|5SfsEG`r3mb_RLS+NtAvO~A z1aq@X6~8>Ll3_2024uy|%GiMONh#k|94q62`m@MJ>0;<%bJ%rT04Rrk)BXzFl>dwR@bhb!ANH)ydxNn59YKbq_l*(_jCm# PRBLj}6XU1H9d-Q!W=*U0 diff --git a/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po b/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po index ccff94a..27ca806 100644 --- a/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po +++ b/modules/comments/locale/nl_NL/LC_MESSAGES/comments.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/comments/admin/pages/comment_settings.twig:3 @@ -96,54 +96,54 @@ msgstr "Wijzigen Opmerking op “%s”" msgid "Body" msgstr "Body" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "Schrijver" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "Schrijver email" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "Schrijver website" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "Tijdstempel" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "Status" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "Goedgekeurd" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "Verworpen" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "Spam" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "Notificaties per email" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "Sla op" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "Verwijder" @@ -152,8 +152,8 @@ msgid "Manage Comments" msgstr "Beheer Opmerkingen" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 modules/comments/comments.php:806 -#: modules/comments/comments.php:820 modules/comments/info.php:3 +#: modules/comments/comments.php:829 modules/comments/comments.php:867 +#: modules/comments/comments.php:884 modules/comments/info.php:3 msgid "Comments" msgstr "Opmerkingen" @@ -171,250 +171,250 @@ msgstr "Toegevoegd" msgid "Webmention" msgstr "Webmention" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "Met geselecteerd:" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "Verwerp" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "Keur goed" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "Markeer als spam" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" -msgstr "Uitvoeren" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" +msgstr "Batch-proces" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "Beheer spam" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "Voeg opmerkingen toe" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "Opmerkingen toevoegen aan privé-berichten" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "Wijzig Opmerkingen" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "Wijzig Eigen Opmerkingen" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "Verwijder Opmerkingen" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "Verwijder Eigen Opmerkingen" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" -msgstr "Kan HTML gebruiken in opmerkingen" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" +msgstr "Gebruik HTML in opmerkingen" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "Geef alsjeblieft een ID in om een opmerking te vinden." -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "Meeste opmerkingen op blogposts" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "Een ID is verplicht om een opmerking toe te voegen." -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "Je kunt niet reageren op deze blogpost." -#: modules/comments/comments.php:151 modules/comments/comments.php:245 +#: modules/comments/comments.php:177 modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "Bericht kan niet leeg zijn." -#: modules/comments/comments.php:157 modules/comments/comments.php:251 +#: modules/comments/comments.php:183 modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "Schrijver kan niet leeg zijn." -#: modules/comments/comments.php:163 modules/comments/comments.php:257 +#: modules/comments/comments.php:189 modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "Emailadres kan niet leeg zijn." -#: modules/comments/comments.php:169 modules/comments/comments.php:263 +#: modules/comments/comments.php:195 modules/comments/comments.php:302 msgid "Invalid email address." msgstr "Ongeldig emailadres." -#: modules/comments/comments.php:175 modules/comments/comments.php:269 +#: modules/comments/comments.php:201 modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "Ongeldige website URL." -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "Onjuiste Captcha reactie." -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "Opmerking toegevoegd." -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "Je opmerking is in afwachting van goedkeuring." -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "Een ID is noodzakelijk om een opmerking te updaten." -#: modules/comments/comments.php:228 modules/comments/comments.php:345 -#: modules/comments/comments.php:373 modules/comments/comments.php:410 -#: modules/comments/comments.php:895 modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 modules/comments/comments.php:389 +#: modules/comments/comments.php:419 modules/comments/comments.php:457 +#: modules/comments/comments.php:963 modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "Opmerking niet gevonden." -#: modules/comments/comments.php:234 modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "Je hebt onvoldoende rechten om deze opmerking te wijzigen." -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "Opmerking bijgewerkt." -#: modules/comments/comments.php:333 modules/comments/comments.php:915 +#: modules/comments/comments.php:377 modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "Een ID is noodzakelijk om een opmerking te wijzigen." -#: modules/comments/comments.php:364 modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "Een ID is noodzakelijk om een opmerking te verwijderen." -#: modules/comments/comments.php:379 modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "Je hebt onvoldoende rechten om deze opmerking te verwijderen." -#: modules/comments/comments.php:425 modules/comments/comments.php:973 +#: modules/comments/comments.php:472 modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "Opmerking verwijderd." -#: modules/comments/comments.php:432 modules/comments/comments.php:484 +#: modules/comments/comments.php:481 modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "Je hebt onvoldoende rechten om opmerkingen te beheren." -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "Geselecteerde opmerkingen verwijderd." -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "Geselecteerde opmerkingen verworpen." -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "Geselecteerde opmerkingen goedgekeurd." -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "Geselecteerde opmerkingen als spam gemarkeerd." -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "Opmerkingen (%d)" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "Spam (%d)" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "Een ID is noodzakelijk om opmerkingen te herladen." -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "Opmerkingen toegevoegd vanaf %s" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "Een ID is noodzakelijk om een opmerking te tonen." -#: modules/comments/comments.php:992 modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "Opmerkingen op “%s”" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "Je bent uitgeschreven van deze conversatie." -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "Opmerking #%d" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "Een ping van je URL is reeds geregistreerd." -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "Je URL is te lang om in de database te worden opgeslagen." -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "Heeft deze blogpost genoemd." -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "Open" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "Gesloten" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "Privé" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "Uitsluitend geregistreerden" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "Status Opmerking" -#: modules/comments/comments.php:1435 modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "Nieuwe opmerking op %s" -#: modules/comments/comments.php:1436 modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "%s heeft een opmerking geplaatst op een blogpost:" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "Schrijf je uit van deze conversatie:" @@ -434,10 +434,10 @@ msgstr "" msgid "Do you want to remove comments from the database?" msgstr "Wil je opmerkingen uit de database verwijderen?" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "Weet je zeker dat je deze opmerking definitief wilt verwijderen?" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "Anoniem" diff --git a/modules/comments/locale/zh_CN/LC_MESSAGES/comments.mo b/modules/comments/locale/zh_CN/LC_MESSAGES/comments.mo index ca5eb25c81a96fabeb52570df5c83c4a4972262e..8bc80016c6381ddba8dd250b48ac40f18b4db01d 100644 GIT binary patch delta 1661 zcmXxkZ%oZm9LMoTisB+1HpD zY{OXW#5nwl1MnBdV;qe#1=XI81966}7h-Sf8&Km`Vj}KCFCN8Iyo4US6K6t^3185V zK*L+>XH2603zblOzkdlPV;1!kwz;O!qW zW)K&djG_dB$egAa>0>sc?(amsL9O*1YQkomjt?;x|DaaV&oYg{nV5&=sP=kvV*_fw z>mhq_-})TY@jWWj4opE8y@y~brlB8aV;O1-&Y+&VihZyNwQ?;u1@GJTZqy3(pk8c6 z8XL*>8b30Z$wMC&VE}jIOl-3CFF1jEI>J_q`w3wkGJrSZsxg4=QPNBBzG7iTU)Dy2!{l6gZV}77Uj-oS{CIM9+ zgX%X0$6>B*FSk~q`XBUg9(7($*c(l#UATi2@wM$3%UKvqJr(s}4r-#MsKm-_`wmpU zT3bJF>(^2J9-|-Mp^i_|V9uj5E#xU}Qwfg8{iybO>s8d6Hlqf*ZGCF*e?TSPWsTwN zsP03JHw&||5|#J`YeR?&or@c&37??OTPsF36&cg?AW0h!hf~KV6LmiqwM9XkjGL{F z^${wOpEwH>sc8IV=)%BK{*@4$iM2#8Vm+~#C?Zspxwc6~zc<=b@-fSuL$TgKAy?(Z zGJ^ezoD8M3h*(Gz5Yfa)LS-INN@ye2IIXc6y_RrQ?6}~{HGPDZO?#>`gU~+Y5;{P$om#gyor_4(_rwp0Sw}1&vWO7` zpID^Kbso6Au9eOk_qf0cS~d`@rW|3!ES@{vr&oVd$(-! z7450sQc+W5@~gKV2!HSU$rWzvw=#Ors+tPlqLRV_-}WkBuzJ_7imJUe;p_pGQLdbD z-N4mR3CCJGt{m<>e#CsdR{!zz(Xc1^l`Gus2}FB4E;e*E9qwwp)qe9@``vq;CmSLo Kg(sy1U4H?Q9k?w3 delta 1646 zcmXxkTWpL$7{>A0uI<*LlpfaEwls}HOW7<{RmIX$b*k1O#Gxf3A!#b%LRJ$Z5<&VQ z1Q&v6q~&4}K_f~?5F)5>;X=2p^hPSqiTFR;G3ndi%Sc3Jo{{||d z+hHnN@V@n>wF5Q5S5&4yaVVxScnD6!Of18hxD9m_mr>8PVsC6i9qCh?j4y3}BIl=_ zTAD(IV>SU~4O5JMtiU4NfrZ#&+n;d)?Hs9own_3w*442uEWPY3{v?{hwe`CR%KW;u4fR4iM%E-K~33PNQy;UU%%3kW@^q6c+MD*CUS+Af`?N+F^BpHArF6gv%G-`J_tRP;XaLt@qt^ND<7 z6u~PNFD1@Bug|sIdF#z7T1L-0LZ=vrf69*o&Ls2;_P?;-W{z#lwiZN+l1?Th?Woyp z=4{yRcQRAbBcJ-jT;9;G+D$v_Ya`G4Eq6zPDVr1AfxJNE?4as|td{d1PaH6vN3KS1 xU+g^76uY`FcI8&|W=pj7?x$l-rIm}yBkuHem*?Q6*ttWIHyOq5NZ!!du776-vseHC diff --git a/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po b/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po index 73c2198..df287af 100644 --- a/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po +++ b/modules/comments/locale/zh_CN/LC_MESSAGES/comments.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/comments/admin/pages/comment_settings.twig:3 @@ -93,54 +93,54 @@ msgstr "编辑评论 “%s”" msgid "Body" msgstr "正文" -#: modules/comments/admin/pages/edit_comment.twig:24 +#: modules/comments/admin/pages/edit_comment.twig:26 msgid "Author" msgstr "作者" -#: modules/comments/admin/pages/edit_comment.twig:29 +#: modules/comments/admin/pages/edit_comment.twig:31 msgid "Author Email" msgstr "作者的电子邮件" -#: modules/comments/admin/pages/edit_comment.twig:33 +#: modules/comments/admin/pages/edit_comment.twig:35 msgid "Author Website" msgstr "作者的网站" -#: modules/comments/admin/pages/edit_comment.twig:40 +#: modules/comments/admin/pages/edit_comment.twig:42 msgid "Timestamp" msgstr "时间戳" -#: modules/comments/admin/pages/edit_comment.twig:45 +#: modules/comments/admin/pages/edit_comment.twig:47 #: modules/comments/admin/pages/manage_comments.twig:26 msgid "Status" msgstr "状态" -#: modules/comments/admin/pages/edit_comment.twig:48 -#: modules/comments/comments.php:698 +#: modules/comments/admin/pages/edit_comment.twig:50 +#: modules/comments/comments.php:752 msgid "Approved" msgstr "已批准的" -#: modules/comments/admin/pages/edit_comment.twig:50 -#: modules/comments/comments.php:699 +#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/comments.php:753 msgid "Denied" msgstr "已否决的" -#: modules/comments/admin/pages/edit_comment.twig:52 +#: modules/comments/admin/pages/edit_comment.twig:54 #: modules/comments/admin/pages/manage_spam.twig:18 -#: modules/comments/comments.php:700 +#: modules/comments/comments.php:754 msgid "Spam" msgstr "垃圾评论" -#: modules/comments/admin/pages/edit_comment.twig:59 +#: modules/comments/admin/pages/edit_comment.twig:61 msgid "Email Notifications" msgstr "邮件通知" -#: modules/comments/admin/pages/edit_comment.twig:69 +#: modules/comments/admin/pages/edit_comment.twig:71 msgid "Save" msgstr "保存" -#: modules/comments/admin/pages/edit_comment.twig:71 -#: modules/comments/admin/pages/manage_comments.twig:86 -#: modules/comments/admin/pages/manage_spam.twig:72 +#: modules/comments/admin/pages/edit_comment.twig:73 +#: modules/comments/admin/pages/manage_comments.twig:87 +#: modules/comments/admin/pages/manage_spam.twig:73 msgid "Delete" msgstr "删除" @@ -149,8 +149,8 @@ msgid "Manage Comments" msgstr "管理评论" #: modules/comments/admin/pages/manage_comments.twig:18 -#: modules/comments/comments.php:771 modules/comments/comments.php:806 -#: modules/comments/comments.php:820 modules/comments/info.php:3 +#: modules/comments/comments.php:829 modules/comments/comments.php:867 +#: modules/comments/comments.php:884 modules/comments/info.php:3 msgid "Comments" msgstr "评论" @@ -168,250 +168,250 @@ msgstr "增加" msgid "Webmention" msgstr "Webmention" -#: modules/comments/admin/pages/manage_comments.twig:74 -#: modules/comments/admin/pages/manage_spam.twig:63 +#: modules/comments/admin/pages/manage_comments.twig:75 +#: modules/comments/admin/pages/manage_spam.twig:64 msgid "With selected:" msgstr "选择:" -#: modules/comments/admin/pages/manage_comments.twig:77 -#: modules/comments/admin/pages/manage_spam.twig:66 +#: modules/comments/admin/pages/manage_comments.twig:78 +#: modules/comments/admin/pages/manage_spam.twig:67 msgid "Deny" msgstr "否决" -#: modules/comments/admin/pages/manage_comments.twig:80 -#: modules/comments/admin/pages/manage_spam.twig:69 +#: modules/comments/admin/pages/manage_comments.twig:81 +#: modules/comments/admin/pages/manage_spam.twig:70 msgid "Approve" msgstr "批准" -#: modules/comments/admin/pages/manage_comments.twig:83 +#: modules/comments/admin/pages/manage_comments.twig:84 msgid "Mark as Spam" msgstr "标记为垃圾评论" -#: modules/comments/admin/pages/manage_comments.twig:89 -#: modules/comments/admin/pages/manage_spam.twig:75 -msgid "Execute" -msgstr "执行" +#: modules/comments/admin/pages/manage_comments.twig:90 +#: modules/comments/admin/pages/manage_spam.twig:76 +msgid "Batch Process" +msgstr "批处理" #: modules/comments/admin/pages/manage_spam.twig:3 msgid "Manage Spam" msgstr "管理垃圾评论" -#: modules/comments/comments.php:68 +#: modules/comments/comments.php:87 msgid "Add Comments" msgstr "增加评论" -#: modules/comments/comments.php:69 +#: modules/comments/comments.php:88 msgid "Add Comments to Private Posts" msgstr "增加评论到私人帖子" -#: modules/comments/comments.php:70 +#: modules/comments/comments.php:89 msgid "Edit Comments" msgstr "编辑评论" -#: modules/comments/comments.php:71 +#: modules/comments/comments.php:90 msgid "Edit Own Comments" msgstr "编辑自己的评论" -#: modules/comments/comments.php:72 +#: modules/comments/comments.php:91 msgid "Delete Comments" msgstr "删除评论" -#: modules/comments/comments.php:73 +#: modules/comments/comments.php:92 msgid "Delete Own Comments" msgstr "删除自己的评论" -#: modules/comments/comments.php:74 -msgid "Can Use HTML in Comments" -msgstr "可以在评论中使用HTML" +#: modules/comments/comments.php:93 +msgid "Use HTML in Comments" +msgstr "在评论中使用 HTML" -#: modules/comments/comments.php:81 +#: modules/comments/comments.php:102 msgid "Please enter an ID to find a comment." msgstr "请输入需要查找的评论ID。" -#: modules/comments/comments.php:112 +#: modules/comments/comments.php:135 msgid "Most commented on posts" msgstr "对帖子的评论最多" -#: modules/comments/comments.php:131 +#: modules/comments/comments.php:157 msgid "An ID is required to add a comment." msgstr "添加评论必须要一个ID。" -#: modules/comments/comments.php:145 +#: modules/comments/comments.php:171 msgid "You cannot comment on this post." msgstr "您不能评论这篇帖子。" -#: modules/comments/comments.php:151 modules/comments/comments.php:245 +#: modules/comments/comments.php:177 modules/comments/comments.php:284 msgid "Message can't be blank." msgstr "消息不能为空。" -#: modules/comments/comments.php:157 modules/comments/comments.php:251 +#: modules/comments/comments.php:183 modules/comments/comments.php:290 msgid "Author can't be blank." msgstr "作者不能为空。" -#: modules/comments/comments.php:163 modules/comments/comments.php:257 +#: modules/comments/comments.php:189 modules/comments/comments.php:296 msgid "Email address can't be blank." msgstr "邮件地址不能为空。" -#: modules/comments/comments.php:169 modules/comments/comments.php:263 +#: modules/comments/comments.php:195 modules/comments/comments.php:302 msgid "Invalid email address." msgstr "无效的邮件地址。" -#: modules/comments/comments.php:175 modules/comments/comments.php:269 +#: modules/comments/comments.php:201 modules/comments/comments.php:308 msgid "Invalid website URL." msgstr "无效的网站URL。" -#: modules/comments/comments.php:184 +#: modules/comments/comments.php:210 msgid "Incorrect captcha response." msgstr "验证码不正确。" -#: modules/comments/comments.php:204 +#: modules/comments/comments.php:242 msgid "Comment added." msgstr "评论已增加。" -#: modules/comments/comments.php:205 +#: modules/comments/comments.php:243 msgid "Your comment is awaiting moderation." msgstr "您的评论正在等待审核。" -#: modules/comments/comments.php:219 +#: modules/comments/comments.php:258 msgid "An ID is required to update a comment." msgstr "更新评论必须要一个ID。" -#: modules/comments/comments.php:228 modules/comments/comments.php:345 -#: modules/comments/comments.php:373 modules/comments/comments.php:410 -#: modules/comments/comments.php:895 modules/comments/comments.php:927 -#: modules/comments/comments.php:962 +#: modules/comments/comments.php:267 modules/comments/comments.php:389 +#: modules/comments/comments.php:419 modules/comments/comments.php:457 +#: modules/comments/comments.php:963 modules/comments/comments.php:996 +#: modules/comments/comments.php:1032 msgid "Comment not found." msgstr "评论未找到。" -#: modules/comments/comments.php:234 modules/comments/comments.php:351 -#: modules/comments/comments.php:933 +#: modules/comments/comments.php:273 modules/comments/comments.php:395 +#: modules/comments/comments.php:1002 msgid "You do not have sufficient privileges to edit this comment." msgstr "你没有足够的权限来编辑这段评论。" -#: modules/comments/comments.php:299 +#: modules/comments/comments.php:338 msgid "Comment updated." msgstr "评论已更新。" -#: modules/comments/comments.php:333 modules/comments/comments.php:915 +#: modules/comments/comments.php:377 modules/comments/comments.php:984 msgid "An ID is required to edit a comment." msgstr "编辑评论必须要一个ID。" -#: modules/comments/comments.php:364 modules/comments/comments.php:398 -#: modules/comments/comments.php:953 +#: modules/comments/comments.php:410 modules/comments/comments.php:445 +#: modules/comments/comments.php:1023 msgid "An ID is required to delete a comment." msgstr "删除评论必须要一个ID。" -#: modules/comments/comments.php:379 modules/comments/comments.php:416 -#: modules/comments/comments.php:968 +#: modules/comments/comments.php:425 modules/comments/comments.php:463 +#: modules/comments/comments.php:1038 msgid "You do not have sufficient privileges to delete this comment." msgstr "你没有足够的权限来删除这段评论。" -#: modules/comments/comments.php:425 modules/comments/comments.php:973 +#: modules/comments/comments.php:472 modules/comments/comments.php:1043 msgid "Comment deleted." msgstr "评论已删除。" -#: modules/comments/comments.php:432 modules/comments/comments.php:484 +#: modules/comments/comments.php:481 modules/comments/comments.php:535 msgid "You do not have sufficient privileges to manage any comments." msgstr "你没有足够的权限来管理任何评论。" -#: modules/comments/comments.php:564 +#: modules/comments/comments.php:616 msgid "Selected comments deleted." msgstr "选择的评论已删除。" -#: modules/comments/comments.php:600 +#: modules/comments/comments.php:652 msgid "Selected comments denied." msgstr "选择的评论已否决。" -#: modules/comments/comments.php:636 +#: modules/comments/comments.php:688 msgid "Selected comments approved." msgstr "选择的评论已批准。" -#: modules/comments/comments.php:670 +#: modules/comments/comments.php:722 msgid "Selected comments marked as spam." msgstr "选择的评论已标记为垃圾评论。" -#: modules/comments/comments.php:792 +#: modules/comments/comments.php:852 #, php-format msgid "Comments (%d)" msgstr "评论数 (%d)" -#: modules/comments/comments.php:798 +#: modules/comments/comments.php:858 #, php-format msgid "Spam (%d)" msgstr "垃圾评论数 (%d)" -#: modules/comments/comments.php:836 +#: modules/comments/comments.php:903 msgid "An ID is required to reload comments." msgstr "重新加载评论必须要一个ID。" -#: modules/comments/comments.php:854 +#: modules/comments/comments.php:921 #, php-format msgid "Comments added since %s" msgstr "自 %s 添加了评论" -#: modules/comments/comments.php:886 +#: modules/comments/comments.php:954 msgid "An ID is required to show a comment." msgstr "显示评论必须要一个ID。" -#: modules/comments/comments.php:992 modules/comments/comments.php:1097 +#: modules/comments/comments.php:1064 modules/comments/comments.php:1182 #, php-format msgid "Comments on “%s”" msgstr "对 “%s” 的评论" -#: modules/comments/comments.php:1079 +#: modules/comments/comments.php:1162 msgid "You have unsubscribed from the conversation." msgstr "您已取消订阅对话。" -#: modules/comments/comments.php:1120 +#: modules/comments/comments.php:1205 #, php-format msgid "Comment #%d" msgstr "评论 #%d" -#: modules/comments/comments.php:1149 +#: modules/comments/comments.php:1238 msgid "A ping from your URL is already registered." msgstr "您的URL中的ping已被注册。" -#: modules/comments/comments.php:1156 +#: modules/comments/comments.php:1245 msgid "Your URL is too long to be stored in our database." msgstr "您的网址太长,无法存储在我们的数据库中。" -#: modules/comments/comments.php:1161 +#: modules/comments/comments.php:1250 msgid "Mentioned this post." msgstr "提到了这个帖子。" -#: modules/comments/comments.php:1180 +#: modules/comments/comments.php:1273 msgid "Open" msgstr "打开" -#: modules/comments/comments.php:1187 +#: modules/comments/comments.php:1280 msgid "Closed" msgstr "已关闭" -#: modules/comments/comments.php:1194 +#: modules/comments/comments.php:1287 msgid "Private" msgstr "私人" -#: modules/comments/comments.php:1201 +#: modules/comments/comments.php:1294 msgid "Registered Only" msgstr "仅注册" -#: modules/comments/comments.php:1211 +#: modules/comments/comments.php:1304 msgid "Comment Status" msgstr "评论状态" -#: modules/comments/comments.php:1435 modules/comments/comments.php:1460 -#: modules/comments/comments.php:1490 +#: modules/comments/comments.php:1561 modules/comments/comments.php:1589 +#: modules/comments/comments.php:1622 #, php-format msgid "New Comment at %s" msgstr "%s 上的新注释" -#: modules/comments/comments.php:1436 modules/comments/comments.php:1461 -#: modules/comments/comments.php:1491 +#: modules/comments/comments.php:1562 modules/comments/comments.php:1590 +#: modules/comments/comments.php:1623 #, php-format msgid "%s commented on a blog post:" msgstr "%s 在博客文章上评论:" -#: modules/comments/comments.php:1499 +#: modules/comments/comments.php:1631 msgid "Unsubscribe from this conversation:" msgstr "取消订阅此对话:" @@ -427,10 +427,10 @@ msgstr "请记住更新每个组的权限设置。" msgid "Do you want to remove comments from the database?" msgstr "您想从数据库中删除评论吗?" -#: modules/comments/javascript.php:63 +#: modules/comments/javascript.php:64 msgid "Are you sure you want to permanently delete this comment?" msgstr "您确定要永久删除这个评论?" -#: modules/comments/model/Comment.php:568 +#: modules/comments/model/Comment.php:584 msgid "Anon" msgstr "不久" diff --git a/modules/comments/model/Comment.php b/modules/comments/model/Comment.php index fa5ead8..85af445 100644 --- a/modules/comments/model/Comment.php +++ b/modules/comments/model/Comment.php @@ -26,7 +26,10 @@ * See Also: * */ - public function __construct($comment_id, $options = array()) { + public function __construct( + $comment_id, + $options = array() + ) { $skip_where = ( ADMIN or (isset($options["skip_where"]) and $options["skip_where"]) @@ -198,9 +201,9 @@ table:"comments", data:array( "body" => $body, - "author" => strip_tags($author), - "author_url" => strip_tags($author_url), - "author_email" => strip_tags($author_email), + "author" => sanitize_db_string($author, 250), + "author_url" => sanitize_db_string($author_url, 2048), + "author_email" => sanitize_db_string($author_email, 128), "author_ip" => $ip, "author_agent" => $agent, "status" => $status, @@ -321,9 +324,9 @@ $new_values = array( "body" => $body, - "author" => strip_tags($author), - "author_url" => strip_tags($author_url), - "author_email" => strip_tags($author_email), + "author" => sanitize_db_string($author, 250), + "author_url" => sanitize_db_string($author_url, 2048), + "author_email" => sanitize_db_string($author_email, 128), "status" => fallback($status, $this->status), "notify" => fallback($notify, $this->notify), "created_at" => fallback($created_at, $this->created_at), @@ -395,7 +398,9 @@ * See Also: * */ - public static function delete($comment_id): void { + public static function delete( + $comment_id + ): void { parent::destroy( self::class, $comment_id, @@ -407,7 +412,9 @@ * Function: editable * Checks if the can edit the comment. */ - public function editable($user = null): bool { + public function editable( + $user = null + ): bool { if ($this->no_results) return false; @@ -426,7 +433,9 @@ * Function: deletable * Checks if the can delete the comment. */ - public function deletable($user = null): bool { + public function deletable( + $user = null + ): bool { if ($this->no_results) return false; @@ -445,7 +454,8 @@ * Function: any_editable * Checks if the can edit any comments. */ - public static function any_editable(): bool { + public static function any_editable( + ): bool { $visitor = Visitor::current(); # Can they edit comments? @@ -469,7 +479,8 @@ * Function: any_deletable * Checks if the can delete any comments. */ - public static function any_deletable(): bool { + public static function any_deletable( + ): bool { $visitor = Visitor::current(); # Can they delete comments? @@ -493,7 +504,9 @@ * Function: creatable * Checks if the can comment on a post. */ - public static function creatable($post): bool { + public static function creatable( + $post + ): bool { $visitor = Visitor::current(); if (!$visitor->group->can("add_comment")) @@ -520,7 +533,8 @@ * Function: redactions * Returns a SQL query "chunk" that hides some comments from the . */ - public static function redactions(): string { + public static function redactions( + ): string { $user_id = (int) Visitor::current()->id; $id_list = "(0)"; @@ -547,7 +561,8 @@ * Function: url * Returns a comment's URL. */ - public function url(): string|false { + public function url( + ): string|false { if ($this->no_results) return false; @@ -560,33 +575,36 @@ * Function: author_link * Returns the commenter's name enclosed in a hyperlink to their website. */ - public function author_link(): string|false { + public function author_link( + ): string|false { if ($this->no_results) return false; if (empty($this->author)) return __("Anon", "comments"); - if (is_url($this->author_url)) - return ''. - $this->author. - ''; - else - return $this->author; + return is_url($this->author_url) ? + ''. + $this->author. + '' + : + $this->author + ; } /** * Function: filter * Filters the comment through filter_comment and markup filters. */ - private function filter(): void { + private function filter( + ): void { $trigger = Trigger::current(); $trigger->filter($this, "filter_comment"); $this->body_unfiltered = $this->body; - $trigger->filter($this->body, array("markup_comment_text", "markup_text")); + $trigger->filter($this->body, array("markup_comment_text", "markup_text"), $this); $config = Config::current(); @@ -594,16 +612,19 @@ $this->user->group : new Group($config->guest_group) ; - if ( - $this->status != "pingback" and - !$group->can("code_in_comments") - ) { - $allowed = $config->module_comments["allowed_comment_html"]; - $this->body = strip_tags( - $this->body, - "<".implode("><", $allowed).">" - ); - } + $allowed_basic_html = array("br", "p"); + + $allowed_extra_html = array_merge( + $allowed_basic_html, + $config->module_comments["allowed_comment_html"] + ); + + $this->body = strip_tags( + $this->body, + $group->can("code_in_comments") ? + $allowed_extra_html : + $allowed_basic_html + ); $this->body = sanitize_html($this->body); } @@ -612,7 +633,8 @@ * Function: install * Creates the database table. */ - public static function install(): void { + public static function install( + ): void { SQL::current()->create( table:"comments", cols:array( @@ -638,7 +660,8 @@ * Function: uninstall * Drops the database table. */ - public static function uninstall(): void { + public static function uninstall( + ): void { $sql = SQL::current(); $sql->drop("comments"); diff --git a/modules/comments/upgrades.php b/modules/comments/upgrades.php index 487eb90..bd9e658 100644 --- a/modules/comments/upgrades.php +++ b/modules/comments/upgrades.php @@ -8,7 +8,8 @@ * * Versions: 2017.01 => 2017.02 */ - function comments_migrate_config(): void { + function comments_migrate_config( + ): void { $config = Config::current(); if ( @@ -56,7 +57,8 @@ * * Versions: 2022.01 => 2022.02, 2024.01 */ - function fix_comment_updated(): void { + function fix_comment_updated( + ): void { $sql = SQL::current(); $values = ($sql->adapter == "pgsql") ? @@ -90,7 +92,8 @@ * * Versions: 2023.02 => 2023.03 */ - function comments_update_config(): void { + function comments_update_config( + ): void { $config = Config::current(); $array = $config->module_comments; diff --git a/modules/easy_embed/easy_embed.php b/modules/easy_embed/easy_embed.php index 35a2afe..d3bc46b 100644 --- a/modules/easy_embed/easy_embed.php +++ b/modules/easy_embed/easy_embed.php @@ -1,34 +1,117 @@ setPriority("markup_text", 4); } - public function markup_text($text): string { + public function markup_text( + $text + ): string { $urls = array( - '||i' - => 'https://www.youtube.com/embed/$1', + # YouTube: + '||i' + => '', - '||i' - => 'https://www.youtube.com/embed/$1', + '||i' + => '', - '||i' - => 'https://player.vimeo.com/video/$1', + '||i' + => '', - '||i' - => 'https://player.twitch.tv/?video=v$1', + # Vimeo: + '||i' + => '', - '||i' - => 'https://archive.org/embed/$1' + '||i' + => '', + + # Twitch: + '||i' + => '', + + '||i' + => '', + + # Internet Archive: + '||i' + => '', + + '||i' + => '', + + # Spotify: + '||i' + => '', + + # Bandcamp: + '||i' + => '', + + '||i' + => '', + + '||i' + => '' ); - foreach ($urls as $view => &$embed) { - $embed = ''; - } - - return preg_replace(array_keys($urls), array_values($urls), $text); + return preg_replace( + array_keys($urls), + array_values($urls), + $text + ); } } diff --git a/modules/easy_embed/info.php b/modules/easy_embed/info.php index af62e41..a95bceb 100644 --- a/modules/easy_embed/info.php +++ b/modules/easy_embed/info.php @@ -2,8 +2,8 @@ return array( "name" => __("Easy Embed", "easy_embed"), "url" => "http://chyrplite.net/", - "version" => "2023.01", - "description" => __("Embed a video in your blog content by pasting its URL surrounded by <!-- and -->.", "easy_embed"), + "version" => "2025.01", + "description" => __("Embed content in your blog by pasting its URL surrounded by <!-- and -->.", "easy_embed"), "author" => array( "name" => "Daniel Pimley", "url" => "http://www.pimley.net/" diff --git a/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.mo index 58097956a39d8845e21713a359700e51d93bb934..500a26b8dcd5fab9c910e28c64eeaff64bbdf90b 100644 GIT binary patch literal 1129 zcmZ`%%We}f6gAKSjl=>ZR^{PtDj{$RLP%8-DhM4QQY)%9tzd@zXYQdy9k5>lOdH|0??W*1OK1!KbM0el5WDIVn7M2zC1SCllEL`J~5@` zgWRNiFySNVywWLG-toiz9qvkNO{o(~LbMZ`gtpdm-(C}SPuWVm@lu%S4zh_5BZQ*5D7r=?6u^hp*~qp98E3BBEp8oRyS=xp?Z=KaRA>5GZ}WQ56{ z-usPFE|qTcIFr_qe|*?~E;i5d!d64FBGPy#ylIPX4wP@a7B5JXovyoQC{dn2Y(8qR zNa-O~=3p0RxgzICvo3iEg&!#5J)OziQ_xH=vv78UXh`XMa3xe!Nl8^!X{Rhw8X#?K z^kU^eSBsPrS`NRRq@MzR$O#=V` delta 197 zcmaFK@qwlOo)F7a1|VPtVi_Pd0b*7l_5orLNC09kAWj70LLklo;?F>Q4~Rv9_!1)n zLpzXu0i=NlYz~kD111pZnpj+^;F_D1n!*4k6%rN7GE-9X6*BV_D)aeEixiS_^3xTP z^Ycnl^GYVOF$PQ)WctWxGMSlKSuPc*C=90BGovUqPr(VOTGul#BQd9BvNdx&0Ar~s AvH$=8 diff --git a/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po index bdaa809..533dcb6 100644 --- a/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/de_DE/LC_MESSAGES/easy_embed.po @@ -9,17 +9,43 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "Eingebettete Inhalte von YouTube" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "Eingebettete Inhalte von Vimeo" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "Eingebettete Inhalte von Twitch" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "Eingebettete Inhalte aus dem Internetarchiv" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "Eingebettete Inhalte von Spotify" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "Eingebettete Inhalte von Bandcamp" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "Einfach Einschliessen" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"Betten Sie ein Video in Ihren Blog-Inhalt ein, indem Sie dessen URL " -"umgeben von <!-- und --> einfügen." +"Betten Sie Inhalte in Ihren Blog ein, indem Sie dessen URL umgeben von " +"<!-- und --> einfügen." diff --git a/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot b/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot index 94d4aba..ff2e573 100644 --- a/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot +++ b/modules/easy_embed/locale/en_US/LC_MESSAGES/easy_embed.pot @@ -1,10 +1,41 @@ #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 +#: modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "" + +#: modules/easy_embed/easy_embed.php:40 +#: modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "" + +#: modules/easy_embed/easy_embed.php:55 +#: modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "" + +#: modules/easy_embed/easy_embed.php:70 +#: modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "" + +#: modules/easy_embed/easy_embed.php:93 +#: modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "" #: modules/easy_embed/info.php:6 -msgid "Embed a video in your blog content by pasting its URL surrounded by <!-- and -->." +msgid "Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" diff --git a/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.mo index ae25b034c2b022f3542f8c66cd70ef1436081eb2..114b91d45953a7eeb63a8ca6d854a82347d72677 100644 GIT binary patch literal 1118 zcmZ`%O>Yx15H-;9v4R6!H~?iTp+FCADF~@b8YCzQiqwdxY$G@!XV=*p?b<7^UC7Vi zz>S~4jT?W26A13yxFgwZ#?7mydT$=J~FIJz)c_qt^l8ba{UAX;1{5P z-@pnmKEqfG?7_FdpTOn$uizWtZ;SXJ@G@}qEMu1uzkZIf6nqD~3jP3I1AhS%_&fME z_%FEZv$9mhyI_=I=Yeuz%aFn@04U9tf#a+Eo{MFmCyE*MvWbk@{Ffr5oz#w$rkU}U zCaFniGNW7+PU(b{D`#TCVy)oaB(D6dxyp_1lBEDXA zDo@tUrq*Qi6#0?J@&UMEt=hSIyGc_L*o`WS^N z7N?s>o^GA$6+8~Ax@}eDzk3=pP8g^$v-VJ(ppG?D<&76Ms`V3>shm{HCyv)<`Uif- BNId`m delta 218 zcmcb|@tURno)F7a1|VPtVi_Pd0b*7l_5orLNC09kAWj70LLkloVs=IbhI>Go2Z)~m z+2ug`Gmr)%usJ{q446QqYhrPwf@^M4Y6=6GR7g}P%S=hlSIEp$sLbatEmBCz$xl~E z&d)1J%`2JA#u%_!kcpYm!bs1Ei@_~1IWs2}s@*d$IlrhNzbLUNRiQKwYD!*e4peVx ONxni#YR+VP<{$u7@-NK* diff --git a/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po index a4b6bfa..d9f65d7 100644 --- a/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/it_IT/LC_MESSAGES/easy_embed.po @@ -10,17 +10,43 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "Contenuti incorporati da YouTube" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "Contenuto incorporato da Vimeo" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "Contenuti incorporati da Twitch" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "Contenuto incorporato da Internet Archive" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "Contenuto incorporato da Spotify" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "Contenuto incorporato da Bandcamp" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "Facile Embed" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"Incorporare un video nel contenuto del blog aggiungendo l'URL circondato da " +"Incorpora contenuti nel tuo blog aggiungendo l'URL circondato da " "<!-- e -->." diff --git a/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.mo index a2e71eb7fdc38092d6dacc173ab4571606262f42..e7ce4f56f43a08a03a281370f796145847ef0b27 100644 GIT binary patch literal 1051 zcmZ`%J#Q015M3aAokRhYd}wK0u?`3!MRq{q!yrozSjokLDq7!;&zs!sT6=pAZul2; zv~>IeT3UL#DD+g&Qt;Mi%NE!xJ-^#|b2D?EcXDmx1H-ut+yoSG1^5hva|%Sj4?qJy zf!jdu3}ZEL3BCpX2oCRm0p9?BpT&QJzu|uMEMwQfC*TbH3mobkoU7`*2ZuVJz@g4p zaHw+%4tamTD8()S;cNg1v5NpovGc(43Ey)m1X{9~@K)X@#iqYJvBs0}TpK>IrQ`j~ zro2DlBUyNDQm%c$_jfzID4nyVQKW*pomfSWYngA}5n_9DdgIclnIJ?h_03tlUUdp@ z&YKOK&G}R0Co&(ck=vNd8S?yzONM$(Ytr^c*6YD!jT#?opA6TCJ)M(XqrJ6dT=t1| zojs()i?$Lya)q|0!K3bLu}fneZsNK0gir^6mx!G-MJBy<(}+n+nUaV}=1cbmH`&3f zPPEhBX)S8ruiuNFRjUy3WQ3BQ-ucZ@CbenuWGG!h{?UH?LToMaLc0Mu(K1*7met@} zeeI(+;w2e!)f`<*N_+mG{xD)KGGkjRjjdwNQe*LKFEH*y2*Cv9ab*EKDr+5AG+nNPiagueWep1R`Gv~&^9R*nML1u$FVdEBdnJHGs5b$xe->YGb5}PD2&91sYz~kD111pZnpj+^;F_D1n!*4k6%rN7GE-9X6*BV_D)aeEixiS_^3xTP t^Ycnl^GYVOF$PQ)WIDxctY diff --git a/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po index 2f8263f..c57ed12 100644 --- a/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/nl_NL/LC_MESSAGES/easy_embed.po @@ -9,17 +9,43 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "Ingesloten content van YouTube" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "Ingesloten inhoud van Vimeo" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "Ingesloten inhoud van Twitch" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "Ingesloten inhoud van Internet Archive" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "Ingesloten inhoud van Spotify" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "Ingesloten inhoud van Bandcamp" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" msgstr "Eenvoudig insluiten" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"Sluit een video in, in je blogcontent door de URL te plakken, " -"omgeven door <!-- en -->." +"Sluit inhoud in uw blog in door de URL te plakken, omgeven door <!--" +" en -->." diff --git a/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.mo b/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.mo index 3cf5a7c60b93ae692100e39aaf5f3e901ba5272d..f208551a2503c83ed2f521417e7733d6cd894f23 100644 GIT binary patch literal 1102 zcmaKqTWb?R6vxL}Z;Mj&)!WpE_%un22qkF*t*HcB4K)q=B%9qyGLp=!v$NIsREueS zhzNop(Y_Q5;-wUc;HByp@ZC32bkhi;f?vS1yNL~@>A*j~oXeau$vL0*_1;5pc7YCn zOwbRz=ObtK=1w=;C|qzmj5sC57>Kq5ZVpw*^1B= zU?1=Z@CNWG@DZ>d_z{SKzkr85SGmgu`kvLlvd7Ld{OScu{dCZiJCnv_R?MNvcZc@{W4jaOxCqhLP z>nCJ5;#*kfW-CBQD6e8Ie>mvm-E23@Nm0V5Am7kSR+n%R-X%Fz_@p!nY>IYCJ8uca za^)`3^i`&eLYH8Mm8j?vyC|Hrlcgvn#bs(Jk~B$%N}CBD#aikdnV?h5v&d;(QE-jH z-$l|==XOz7Li!$_cl10ZX{whx>?pooxHNKB8&8fW)@lxh2egr36eL}?proSLRKzOk zjK{E1(4|dPd@?;shSu`Db~!3Zg2Mn{SW!HbWlBpG9jO<|sE{Q)in-;Rc6=~~gRk*{ zn0A4jp`6O#ttmlGrtq=waSb)!y=~0DcVAZB$|CwPU2A@rTYYiAS+6%2o^CvL_ilBg zv17MdaUaxIYd5|9`MpwgmuKDCio5hWDDK``Zp=J}uzS1aE-ie2_59oP3~J0THs_xF w-wo`={kOO)cY@pPl=b`3k?MD8=d~83BfP#+uq2x#_=~bhytOPH8Nmzw0m&$bCjbBd delta 227 zcmX@dv5KYso)F7a1|VPpVi_RT0b*7lwgF-g2msL-E8zTb)5TO8& z84RwuNvSCci3(+zDXIAinRyD8`K3h)NjdrH3d#9-C8>EO3Q3g;1&PHanR)37lZ6;v zCJQpX6ExB@;$nE&Fzdzs_UD^syx6j3vK+JIWJg9}8wG`@J+05W*F2xq5*p<5eoxQS w4Q(%$x4m36@#)r{r>#q$c5Haov;rvmw0G9ib&H<1wLV?9^U032j~kj80FxF?MF0Q* diff --git a/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po b/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po index 2fdfa64..d4a0e9f 100644 --- a/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po +++ b/modules/easy_embed/locale/zh_CN/LC_MESSAGES/easy_embed.po @@ -10,17 +10,43 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. +#: modules/easy_embed/easy_embed.php:18 modules/easy_embed/easy_embed.php:25 +#: modules/easy_embed/easy_embed.php:32 +msgid "Embedded content from YouTube" +msgstr "来自 YouTube 的嵌入内容" + +#: modules/easy_embed/easy_embed.php:40 modules/easy_embed/easy_embed.php:47 +msgid "Embedded content from Vimeo" +msgstr "来自 Vimeo 的嵌入式内容" + +#: modules/easy_embed/easy_embed.php:55 modules/easy_embed/easy_embed.php:62 +msgid "Embedded content from Twitch" +msgstr "来自 Twitch 的嵌入式内容" + +#: modules/easy_embed/easy_embed.php:70 modules/easy_embed/easy_embed.php:77 +msgid "Embedded content from Internet Archive" +msgstr "来自 Internet Archive 的嵌入内容" + +#: modules/easy_embed/easy_embed.php:85 +msgid "Embedded content from Spotify" +msgstr "来自 Spotify 的嵌入式内容" + +#: modules/easy_embed/easy_embed.php:93 modules/easy_embed/easy_embed.php:100 +#: modules/easy_embed/easy_embed.php:107 +msgid "Embedded content from Bandcamp" +msgstr "来自 Bandcamp 的嵌入式内容" + #: modules/easy_embed/info.php:3 msgid "Easy Embed" -msgstr "" +msgstr "轻松嵌入" #: modules/easy_embed/info.php:6 msgid "" -"Embed a video in your blog content by pasting its URL surrounded by " -"<!-- and -->." +"Embed content in your blog by pasting its URL surrounded by <!-- and -->." msgstr "" -"通过粘贴 <!----> 包括的URL,将视" -"频嵌入到您的博客内容中。" +"通过粘贴被 <!----> 包围的 URL,将内容嵌" +"入到您的博客中。" diff --git a/modules/highlighter/highlight.min.js b/modules/highlighter/highlight.min.js index e63d91b..24fbe17 100644 --- a/modules/highlighter/highlight.min.js +++ b/modules/highlighter/highlight.min.js @@ -1,6 +1,6 @@ /*! - Highlight.js v11.9.0 (git: f47103d4f1) - (c) 2006-2023 undefined and other contributors + Highlight.js v11.10.0 (git: 366a8bd012) + (c) 2006-2024 Josh Goebel and other contributors License: BSD-3-Clause */ var hljs=function(){"use strict";function e(t){ @@ -302,33 +302,34 @@ e["before:highlightBlock"](Object.assign({block:t.el},t)) }),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)}, removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{ -r=!1},n.safeMode=()=>{r=!0},n.versionString="11.9.0",n.regex={concat:h, +r=!1},n.safeMode=()=>{r=!0},n.versionString="11.10.0",n.regex={concat:h, lookahead:g,either:f,optional:d,anyNumberOfTimes:u} ;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n },ne=te({});return ne.newInstance=()=>te({}),ne}() -;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.9.0 */ +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ className:"variable",variants:[{ begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ -className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE] +},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={ begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, -end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$?\(\(/, +end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/, end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] -},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 -}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ -name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], literal:["true","false"], -built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] -},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{ -match:/\\"/},{className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() -;hljs.registerLanguage("bash",e)})();/*! `c` grammar compiled for Highlight.js 11.9.0 */ +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{ +className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() +;hljs.registerLanguage("bash",e)})();/*! `c` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,t=e.COMMENT("//","$",{ contains:[{begin:/\\\n/}] -}),s="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",r="("+s+"|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",i={ +}),a="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",i="("+a+"|"+n.optional(s)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ match:/\batomic_[a-z]{3,6}\b/}]},l={className:"string",variants:[{ begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ @@ -340,31 +341,31 @@ begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l| },{ begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" }],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ -keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include" },contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{ className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={ -className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0 -},g=n.optional(a)+e.IDENT_RE+"\\s*\\(",u={ -keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], -type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +className:"title",begin:n.optional(s)+e.IDENT_RE,relevance:0 +},_=n.optional(s)+e.IDENT_RE+"\\s*\\(",u={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"], literal:"true false NULL", built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" -},m=[c,i,t,e.C_BLOCK_COMMENT_MODE,o,l],_={variants:[{begin:/=/,end:/;/},{ +},g=[c,r,t,e.C_BLOCK_COMMENT_MODE,o,l],m={variants:[{begin:/=/,end:/;/},{ begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], -keywords:u,contains:m.concat([{begin:/\(/,end:/\)/,keywords:u, -contains:m.concat(["self"]),relevance:0}]),relevance:0},p={ -begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, -keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:u,relevance:0},{ -begin:g,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})], +keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:g.concat(["self"]),relevance:0}]),relevance:0},p={ +begin:"("+i+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{ +begin:_,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})], relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/, -keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,l,o,i,{begin:/\(/, -end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,l,o,i] -}]},i,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:u, -disableAutodetect:!0,illegal:"=]/,contains:[{ beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c, -strings:l,keywords:u}}}})();hljs.registerLanguage("c",e)})();/*! `cpp` grammar compiled for Highlight.js 11.9.0 */ +strings:l,keywords:u}}}})();hljs.registerLanguage("c",e)})();/*! `cpp` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,a=e.COMMENT("//","$",{ contains:[{begin:/\\\n/}] }),n="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",i="(?!struct)("+n+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",s={ @@ -373,16 +374,16 @@ begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={ -className:"number",variants:[{begin:"\\b(0b[01']+)"},{ -begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +className:"number",variants:[{ +begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)" },{ -begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)" }],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" },contains:[{begin:/\\\n/,relevance:0},e.inherit(c,{className:"string"}),{ -className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},d={ +className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},u={ className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0 -},u=t.optional(r)+e.IDENT_RE+"\\s*\\(",p={ +},d=t.optional(r)+e.IDENT_RE+"\\s*\\(",p={ type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"], keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"], literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"], @@ -391,13 +392,13 @@ _type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","c _hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"] }, begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/)) -},m=[_,l,s,a,e.C_BLOCK_COMMENT_MODE,o,c],g={variants:[{begin:/=/,end:/;/},{ +},m=[_,l,s,a,e.C_BLOCK_COMMENT_MODE,o,c],f={variants:[{begin:/=/,end:/;/},{ begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], keywords:p,contains:m.concat([{begin:/\(/,end:/\)/,keywords:p, -contains:m.concat(["self"]),relevance:0}]),relevance:0},f={className:"function", -begin:"("+i+"[\\*&\\s]+)+"+u,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +contains:m.concat(["self"]),relevance:0}]),relevance:0},g={className:"function", +begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, keywords:p,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:p,relevance:0},{ -begin:u,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{ +begin:d,returnBegin:!0,contains:[u],relevance:0},{begin:/::/,relevance:0},{ begin:/:/,endsWithParent:!0,contains:[c,o]},{relevance:0,match:/,/},{ className:"params",begin:/\(/,end:/\)/,keywords:p,relevance:0, contains:[a,e.C_BLOCK_COMMENT_MODE,c,o,s,{begin:/\(/,end:/\)/,keywords:p, @@ -405,12 +406,12 @@ relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,c,o,s]}] },s,a,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++", aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:p,illegal:"",keywords:p,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:p},{ match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/], className:{1:"keyword",3:"title.class"}}])}}})();hljs.registerLanguage("cpp",e) -})();/*! `csharp` grammar compiled for Highlight.js 11.9.0 */ +})();/*! `csharp` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n={ keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]), built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"], @@ -428,8 +429,10 @@ begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/, contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]}) ;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE], l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{ -illegal:/\n/})];const g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a] +illegal:/\n/})];const g={variants:[{className:"string", +begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1 +},o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={begin:"<",end:">", +contains:[{beginKeywords:"in out"},a] },_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={ begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"], keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0, @@ -456,9 +459,9 @@ contains:[e.TITLE_MODE,E],relevance:0},{match:/\(\)/},{className:"params", begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0, contains:[g,i,e.C_BLOCK_COMMENT_MODE] },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})() -;hljs.registerLanguage("csharp",e)})();/*! `css` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("csharp",e)})();/*! `css` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" -;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],i=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],r=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],t=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),t=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),o=["accent-color","align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-end-end-radius","border-end-start-radius","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","kerning","justify-content","justify-items","justify-self","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-offset","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse() ;return n=>{const a=n.regex,l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ @@ -475,7 +478,7 @@ begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l.CSS_NUMBER_MODE,{ className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{ className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 },l.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ -begin:":("+r.join("|")+")"},{begin:":(:)?("+t.join("|")+")"}]},l.CSS_VARIABLE,{ +begin:":("+t.join("|")+")"},{begin:":(:)?("+i.join("|")+")"}]},l.CSS_VARIABLE,{ className:"attribute",begin:"\\b("+o.join("|")+")\\b"},{begin:/:/,end:/[;}{]/, contains:[l.BLOCK_COMMENT,l.HEXCOLOR,l.IMPORTANT,l.CSS_NUMBER_MODE,...s,{ begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" @@ -483,10 +486,10 @@ begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" excludeEnd:!0}]},l.FUNCTION_DISPATCH]},{begin:a.lookahead(/@/),end:"[{;]", relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/ },{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ -$pattern:/[a-z-]+/,keyword:"and or not only",attribute:i.join(" ")},contains:[{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:r.join(" ")},contains:[{ begin:/[a-z-]+(?=:)/,className:"attribute"},...s,l.CSS_NUMBER_MODE]}]},{ className:"selector-tag",begin:"\\b("+e.join("|")+")\\b"}]}}})() -;hljs.registerLanguage("css",e)})();/*! `diff` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("css",e)})();/*! `diff` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"Diff", aliases:["patch"],contains:[{className:"meta",relevance:10, match:a.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) @@ -494,20 +497,26 @@ match:a.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^-- begin:a.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, -end:/$/}]}}})();hljs.registerLanguage("diff",e)})();/*! `go` grammar compiled for Highlight.js 11.9.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const n={ +end:/$/}]}}})();hljs.registerLanguage("diff",e)})();/*! `go` grammar compiled for Highlight.js 11.10.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const a={ keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"], type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"], literal:["true","false","iota","nil"], built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"] -};return{name:"Go",aliases:["golang"],keywords:n,illegal:"{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"GraphQL", aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{ keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"], @@ -518,7 +527,7 @@ begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/, end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{ scope:"symbol",begin:a.concat(/[_A-Za-z][_0-9A-Za-z]*/,a.lookahead(/\s*:/)), relevance:0}],illegal:[/[;<']/,/BEGIN/]}}})();hljs.registerLanguage("graphql",e) -})();/*! `ini` grammar compiled for Highlight.js 11.9.0 */ +})();/*! `ini` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={className:"number", relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}] },s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={ @@ -532,7 +541,7 @@ name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/, contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{ begin:n.concat(c,"(\\s*\\.\\s*",c,")*",n.lookahead(/\s*=\s*[^#\s]/)), className:"attr",starts:{end:/$/,contains:[s,l,t,i,r,a]}}]}}})() -;hljs.registerLanguage("ini",e)})();/*! `java` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("ini",e)})();/*! `java` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;var e="[0-9](_*[0-9])*",a=`\\.(${e})`,n="[0-9a-fA-F](_*[0-9a-fA-F])*",s={ className:"number",variants:[{ @@ -545,7 +554,7 @@ begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], relevance:0};function t(e,a,n){return-1===n?"":e.replace(a,(s=>t(e,a,n-1)))} return e=>{ const a=e.regex,n="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",i=n+t("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),r={ -keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"], +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto"], literal:["false","true","null"], type:["char","boolean","long","float","int","byte","short","double"], built_in:["super","this"]},l={className:"meta",begin:"@"+n,contains:[{ @@ -569,7 +578,7 @@ begin:["(?:"+i+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ end:/\)/,keywords:r,relevance:0, contains:[l,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.C_BLOCK_COMMENT_MODE] },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},s,l]}}})() -;hljs.registerLanguage("java",e)})();/*! `javascript` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("java",e)})();/*! `javascript` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],i=[].concat(r,t,s) ;return o=>{const l=o.regex,b=e,d={begin:/<[A-Za-z0-9\\._:-]+/, @@ -589,24 +598,24 @@ begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{ begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{ begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{ begin:"\\b0[0-7]+n?\\b"}],relevance:0},y={className:"subst",begin:"\\$\\{", -end:"\\}",keywords:g,contains:[]},h={begin:"html`",end:"",starts:{end:"`", +end:"\\}",keywords:g,contains:[]},h={begin:".?html`",end:"",starts:{end:"`", returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"xml"}},N={ -begin:"css`",end:"",starts:{end:"`",returnEnd:!1, -contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},_={begin:"gql`",end:"", +begin:".?css`",end:"",starts:{end:"`",returnEnd:!1, +contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},_={begin:".?gql`",end:"", starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y], subLanguage:"graphql"}},f={className:"string",begin:"`",end:"`", -contains:[o.BACKSLASH_ESCAPE,y]},v={className:"comment", +contains:[o.BACKSLASH_ESCAPE,y]},p={className:"comment", variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{ begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag", begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0, excludeBegin:!0,relevance:0},{className:"variable",begin:b+"(?=\\s*(-)|$)", endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}] }),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE] -},p=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,{match:/\$\d+/},A] -;y.contains=p.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(p) -});const S=[].concat(v,y.contains),w=S.concat([{begin:/\(/,end:/\)/,keywords:g, -contains:["self"].concat(S)}]),R={className:"params",begin:/\(/,end:/\)/, -excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},O={variants:[{ +},v=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,{match:/\$\d+/},A] +;y.contains=v.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(v) +});const S=[].concat(p,y.contains),w=S.concat([{begin:/(\s*)\(/,end:/\)/, +keywords:g,contains:["self"].concat(S)}]),R={className:"params",begin:/(\s*)\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},O={variants:[{ match:[/class/,/\s+/,b,/\s+/,/extends/,/\s+/,l.concat(b,"(",l.concat(/\./,b),")*")], scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{ match:[/class/,/\s+/,b],scope:{1:"keyword",3:"title.class"}}]},k={relevance:0, @@ -615,7 +624,8 @@ className:"title.class",keywords:{_:[...t,...s]}},I={variants:[{ match:[/function/,/\s+/,b,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R], illegal:/%/},x={ -match:l.concat(/\b/,(T=[...r,"super","import"],l.concat("(?!",T.join("|"),")")),b,l.lookahead(/\(/)), +match:l.concat(/\b/,(T=[...r,"super","import"].map((e=>e+"\\s*\\(")), +l.concat("(?!",T.join("|"),")")),b,l.lookahead(/\s*\(/)), className:"title.function",relevance:0};var T;const C={ begin:l.concat(/\./,l.lookahead(l.concat(b,/(?![0-9A-Za-z$_(])/))),end:b, excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},M={ @@ -629,15 +639,15 @@ PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/, contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ label:"use_strict",className:"meta",relevance:10, begin:/^\s*['"]use (strict|asm)['"]/ -},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,v,{match:/\$\d+/},A,k,{ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,p,{match:/\$\d+/},A,k,{ className:"attr",begin:b+l.lookahead(":"),relevance:0},$,{ begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", -keywords:"return throw case",relevance:0,contains:[v,o.REGEXP_MODE,{ +keywords:"return throw case",relevance:0,contains:[p,o.REGEXP_MODE,{ className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{ className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ -className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, -excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0},{match:/\s+/, -relevance:0},{variants:[{begin:"<>",end:""},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0 +},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{ match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:d.begin, "on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{ begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},I,{ @@ -648,13 +658,14 @@ className:"title.function"})]},{match:/\.\.\./,relevance:0},C,{match:"\\$"+b, relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, contains:[R]},x,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, className:"variable.constant"},O,M,{match:/\$[(.]/}]}}})() -;hljs.registerLanguage("javascript",e)})();/*! `json` grammar compiled for Highlight.js 11.9.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],n={ -scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",keywords:{ -literal:a},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/, -relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0 -},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], -illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `kotlin` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("javascript",e)})();/*! `json` grammar compiled for Highlight.js 11.10.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],s={ +scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",aliases:["jsonc"], +keywords:{literal:a},contains:[{className:"attr", +begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/, +className:"punctuation",relevance:0 +},e.QUOTE_STRING_MODE,s,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], +illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `kotlin` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;var e="[0-9](_*[0-9])*",n=`\\.(${e})`,a="[0-9a-fA-F](_*[0-9a-fA-F])*",i={ className:"number",variants:[{ @@ -699,9 +710,9 @@ beginKeywords:"public protected internal private constructor" },e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/, excludeBegin:!0,returnEnd:!0},l,c]},r,{className:"meta",begin:"^#!/usr/bin/env", -end:"$",illegal:"\n"},o]}}})();hljs.registerLanguage("kotlin",e)})();/*! `less` grammar compiled for Highlight.js 11.9.0 */ +end:"$",illegal:"\n"},o]}}})();hljs.registerLanguage("kotlin",e)})();/*! `less` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" -;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],r=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),n=r.concat(i) +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),r=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),o=["accent-color","align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-end-end-radius","border-end-start-radius","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","kerning","justify-content","justify-items","justify-self","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-offset","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse(),n=r.concat(i).sort().reverse() ;return a=>{const l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ @@ -713,25 +724,25 @@ begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|ra relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/} }))(a),s=n,d="[\\w-]+",c="("+d+"|@\\{"+d+"\\})",g=[],b=[],m=e=>({ className:"string",begin:"~?"+e+".*?"+e}),p=(e,t,r)=>({className:e,begin:t, -relevance:r}),u={$pattern:/[a-z-]+/,keyword:"and or not only", -attribute:t.join(" ")},h={begin:"\\(",end:"\\)",contains:b,keywords:u, +relevance:r}),f={$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},u={begin:"\\(",end:"\\)",contains:b,keywords:f, relevance:0} ;b.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,m("'"),m('"'),l.CSS_NUMBER_MODE,{ begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]", excludeEnd:!0} -},l.HEXCOLOR,h,p("variable","@@?"+d,10),p("variable","@\\{"+d+"\\}"),p("built_in","~?`[^`]*?`"),{ +},l.HEXCOLOR,u,p("variable","@@?"+d,10),p("variable","@\\{"+d+"\\}"),p("built_in","~?`[^`]*?`"),{ className:"attribute",begin:d+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0 -},l.IMPORTANT,{beginKeywords:"and not"},l.FUNCTION_DISPATCH);const f=b.concat({ +},l.IMPORTANT,{beginKeywords:"and not"},l.FUNCTION_DISPATCH);const h=b.concat({ begin:/\{/,end:/\}/,contains:g}),k={beginKeywords:"when",endsWithParent:!0, contains:[{beginKeywords:"and not"}].concat(b)},v={begin:c+"\\s*:", returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/ },l.CSS_VARIABLE,{className:"attribute",begin:"\\b("+o.join("|")+")\\b", end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:b}}] -},w={className:"keyword", +},y={className:"keyword", begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b", -starts:{end:"[;{}]",keywords:u,returnEnd:!0,contains:b,relevance:0}},y={ +starts:{end:"[;{}]",keywords:f,returnEnd:!0,contains:b,relevance:0}},w={ className:"variable",variants:[{begin:"@"+d+"\\s*:",relevance:15},{begin:"@"+d -}],starts:{end:"[;}]",returnEnd:!0,contains:f}},x={variants:[{ +}],starts:{end:"[;}]",returnEnd:!0,contains:h}},x={variants:[{ begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:c,end:/\{/}],returnBegin:!0, returnEnd:!0,illegal:"[<='$\"]",relevance:0, contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,k,p("keyword","all\\b"),p("variable","@\\{"+d+"\\}"),{ @@ -739,11 +750,11 @@ begin:"\\b("+e.join("|")+")\\b",className:"selector-tag" },l.CSS_NUMBER_MODE,p("selector-tag",c,0),p("selector-id","#"+c),p("selector-class","\\."+c,0),p("selector-tag","&",0),l.ATTRIBUTE_SELECTOR_MODE,{ className:"selector-pseudo",begin:":("+r.join("|")+")"},{ className:"selector-pseudo",begin:":(:)?("+i.join("|")+")"},{begin:/\(/, -end:/\)/,relevance:0,contains:f},{begin:"!important"},l.FUNCTION_DISPATCH]},_={ +end:/\)/,relevance:0,contains:h},{begin:"!important"},l.FUNCTION_DISPATCH]},_={ begin:d+":(:)?"+`(${s.join("|")})`,returnBegin:!0,contains:[x]} -;return g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,w,y,_,v,x,k,l.FUNCTION_DISPATCH), +;return g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,y,w,_,v,x,k,l.FUNCTION_DISPATCH), {name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:g}}})() -;hljs.registerLanguage("less",e)})();/*! `lua` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("less",e)})();/*! `lua` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const t="\\[=*\\[",a="\\]=*\\]",n={ begin:t,end:a,contains:["self"] },o=[e.COMMENT("--(?!"+t+")","$"),e.COMMENT("--"+t,a,{contains:[n],relevance:10 @@ -757,7 +768,7 @@ begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params", begin:"\\(",endsWithParent:!0,contains:o}].concat(o) },e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string", begin:t,end:a,contains:[n],relevance:5}])}}})();hljs.registerLanguage("lua",e) -})();/*! `makefile` grammar compiled for Highlight.js 11.9.0 */ +})();/*! `makefile` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const i={className:"variable", variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)", contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, relevance:0},{ @@ -799,8 +810,9 @@ begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ -className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() -;hljs.registerLanguage("markdown",e)})();/*! `objectivec` grammar compiled for Highlight.js 11.9.0 */ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},{scope:"literal", +match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}})() +;hljs.registerLanguage("markdown",e)})();/*! `objectivec` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={ $pattern:n,keyword:["@interface","@class","@protocol","@implementation"]} ;return{name:"Objective-C", @@ -822,42 +834,47 @@ className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n" },e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", begin:"("+_.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:_, contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, -relevance:0}]}}})();hljs.registerLanguage("objectivec",e)})();/*! `perl` grammar compiled for Highlight.js 11.9.0 */ +relevance:0}]}}})();hljs.registerLanguage("objectivec",e)})();/*! `perl` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ -const n=e.regex,t=/[dualxmsipngr]{0,12}/,r={$pattern:/[\w.]+/, -keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" -},s={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:r},i={begin:/->\{/, -end:/\}/},a={variants:[{begin:/\$\d/},{ -begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") -},{begin:/[$%@][^\s\w{]/,relevance:0}] -},c=[e.BACKSLASH_ESCAPE,s,a],o=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],g=(e,r,s="\\1")=>{ -const i="\\1"===s?s:n.concat(s,r) -;return n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,t) -},l=(e,r,s)=>n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,s,t),d=[a,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ -endsWithParent:!0}),i,{className:"string",contains:c,variants:[{ +const n=e.regex,t=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/, +keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot class close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl field fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map method mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0" +},r={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},a={begin:/->\{/, +end:/\}/},i={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},c={scope:"variable", +variants:[{begin:/\$\d/},{ +begin:n.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])") +},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[i]},o={ +className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{ +match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{ +match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{ +match:/\b0b[0-1][0-1_]*\b/}],relevance:0 +},l=[e.BACKSLASH_ESCAPE,r,c],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],d=(e,s,r="\\1")=>{ +const a="\\1"===r?r:n.concat(r,s) +;return n.concat(n.concat("(?:",e,")"),s,/(?:\\.|[^\\\/])*?/,a,/(?:\\.|[^\\\/])*?/,r,t) +},m=(e,s,r)=>n.concat(n.concat("(?:",e,")"),s,/(?:\\.|[^\\\/])*?/,r,t),p=[c,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{ +endsWithParent:!0}),a,{className:"string",contains:l,variants:[{ begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[", end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{ begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">", relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'", contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`", contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{ -begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number", -begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", -relevance:0},{ +begin:"-?\\w+\\s*=>",relevance:0}]},o,{ begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*", keywords:"split return print reverse grep",relevance:0, contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{ -begin:g("s|tr|y",n.either(...o,{capture:!0}))},{begin:g("s|tr|y","\\(","\\)")},{ -begin:g("s|tr|y","\\[","\\]")},{begin:g("s|tr|y","\\{","\\}")}],relevance:2},{ +begin:d("s|tr|y",n.either(...g,{capture:!0}))},{begin:d("s|tr|y","\\(","\\)")},{ +begin:d("s|tr|y","\\[","\\]")},{begin:d("s|tr|y","\\{","\\}")}],relevance:2},{ className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{ -begin:l("(?:m|qr)?",/\//,/\//)},{begin:l("m|qr",n.either(...o,{capture:!0 -}),/\1/)},{begin:l("m|qr",/\(/,/\)/)},{begin:l("m|qr",/\[/,/\]/)},{ -begin:l("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub", -end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{ -begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$", -subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}] -}];return s.contains=d,i.contains=d,{name:"Perl",aliases:["pl","pm"],keywords:r, -contains:d}}})();hljs.registerLanguage("perl",e)})();/*! `php` grammar compiled for Highlight.js 11.9.0 */ +begin:m("(?:m|qr)?",/\//,/\//)},{begin:m("m|qr",n.either(...g,{capture:!0 +}),/\1/)},{begin:m("m|qr",/\(/,/\)/)},{begin:m("m|qr",/\[/,/\]/)},{ +begin:m("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method", +end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,i] +},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5, +contains:[e.TITLE_MODE,i,o]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$", +end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$", +className:"comment"}]}];return r.contains=p,a.contains=p,{name:"Perl", +aliases:["pl","pm"],keywords:s,contains:p}}})();hljs.registerLanguage("perl",e) +})();/*! `php` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const t=e.regex,a=/(?![A-Za-z0-9])(?![$])/,r=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,a),n=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,a),o={ scope:"variable",match:"\\$+"+r},c={scope:"subst",variants:[{begin:/\$\w+/},{ @@ -914,61 +931,62 @@ beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/, contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{ beginKeywords:"use",relevance:0,end:";",contains:[{ match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},l,d]} -}})();hljs.registerLanguage("php",e)})();/*! `php-template` grammar compiled for Highlight.js 11.9.0 */ +}})();hljs.registerLanguage("php",e)})();/*! `php-template` grammar compiled for Highlight.js 11.10.0 */ (()=>{var n=(()=>{"use strict";return n=>({name:"PHP template", subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php", contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{ begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null, className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{ illegal:null,className:null,contains:null,skip:!0})]}]})})() -;hljs.registerLanguage("php-template",n)})();/*! `plaintext` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("php-template",n)})();/*! `plaintext` grammar compiled for Highlight.js 11.10.0 */ (()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", aliases:["text","txt"],disableAutodetect:!0})})() -;hljs.registerLanguage("plaintext",t)})();/*! `python` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("plaintext",t)})();/*! `python` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ -const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={ -$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i, +const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],t={ +$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s, built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] -},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, -end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={ +},i={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, +end:/\}/,keywords:t,illegal:/#/},l={begin:/\{\{/,relevance:0},o={ className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{ begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, -end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,i,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,i,l,r]},{begin:/([uU]|[rR])'/,end:/'/, relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={ +},b="[0-9](_?[0-9])*",c=`(\\b(${b}))?\\.(${b})|\\b(${b})\\.`,d="\\b|"+s.join("|"),g={ className:"number",relevance:0,variants:[{ -begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ +begin:`(\\b(${b})|(${c}))[eE][+-]?(${b})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{ begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})` -},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})` -}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s, +},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${b})[jJ](?=${d})` +}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:t, contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={ className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, -end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s, -contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{ -name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s, -illegal:/(<\/|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if", -relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{ -1:"keyword",3:"title.function"},contains:[m]},{variants:[{ +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t, +contains:["self",i,g,o,e.HASH_COMMENT_MODE]}]};return r.contains=[o,g,i],{ +name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:t, +illegal:/(<\/|\?)|=>/,contains:[i,g,{scope:"variable.language",match:/\bself\b/ +},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword" +},o,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{1:"keyword", +3:"title.function"},contains:[m]},{variants:[{ match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}], scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ -className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})() -;hljs.registerLanguage("python",e)})();/*! `python-repl` grammar compiled for Highlight.js 11.9.0 */ +className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,o]}]}}})() +;hljs.registerLanguage("python",e)})();/*! `python-repl` grammar compiled for Highlight.js 11.10.0 */ (()=>{var a=(()=>{"use strict";return a=>({aliases:["pycon"],contains:[{ className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"} },variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]})})() -;hljs.registerLanguage("python-repl",a)})();/*! `r` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("python-repl",a)})();/*! `r` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,i=a.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),s=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,t=a.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/) ;return{name:"R",keywords:{$pattern:n, @@ -993,7 +1011,7 @@ match:[/%[^%]*%/,i]},{scope:{1:"punctuation",2:"number"},match:[t,i]},{scope:{ 2:"number"},match:[/[^a-zA-Z0-9._]|^/,i]}]},{scope:{3:"operator"}, match:[n,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:s},{ match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:t},{begin:"`",end:"`", -contains:[{begin:/\\./}]}]}}})();hljs.registerLanguage("r",e)})();/*! `ruby` grammar compiled for Highlight.js 11.9.0 */ +contains:[{begin:/\\./}]}]}}})();hljs.registerLanguage("r",e)})();/*! `ruby` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(s,/(::\w+)*/),t={ "variable.constant":["__FILE__","__LINE__","__ENCODING__"], @@ -1046,36 +1064,35 @@ begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+) starts:{end:"$",keywords:t,contains:u}}];return b.unshift(r),{name:"Ruby", aliases:["rb","gemspec","podspec","thor","irb"],keywords:t,illegal:/\/\*/, contains:[e.SHEBANG({binary:"ruby"})].concat(m).concat(b).concat(u)}}})() -;hljs.registerLanguage("ruby",e)})();/*! `rust` grammar compiled for Highlight.js 11.9.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,n={ +;hljs.registerLanguage("ruby",e)})();/*! `rust` grammar compiled for Highlight.js 11.10.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const t=e.regex,n=/(r#)?/,a=t.concat(n,e.UNDERSCORE_IDENT_RE),i=t.concat(n,e.IDENT_RE),r={ className:"title.function.invoke",relevance:0, -begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,e.IDENT_RE,t.lookahead(/\s*\(/)) -},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],r=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"] -;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:r, -keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"], -literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:""},n]}}})() -;hljs.registerLanguage("rust",e)})();/*! `scss` grammar compiled for Highlight.js 11.9.0 */ +keyword:"Self",built_in:l,type:o}},{className:"punctuation",begin:"->"},r]}}})() +;hljs.registerLanguage("rust",e)})();/*! `scss` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" -;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],t=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),t=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),i=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),o=["accent-color","align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-end-end-radius","border-end-start-radius","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","kerning","justify-content","justify-items","justify-self","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-offset","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse() ;return n=>{const a=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ @@ -1085,7 +1102,7 @@ contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ scope:"number", begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/} -}))(n),l=t,s=i,d="@[a-z-]+",c={className:"variable", +}))(n),l=i,s=t,d="@[a-z-]+",c={className:"variable", begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS", case_insensitive:!0,illegal:"[=/|']", contains:[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,a.CSS_NUMBER_MODE,{ @@ -1105,11 +1122,11 @@ begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/, keyword:"and or not only",attribute:r.join(" ")},contains:[{begin:d, className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute" },c,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,a.HEXCOLOR,a.CSS_NUMBER_MODE] -},a.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})();/*! `shell` grammar compiled for Highlight.js 11.9.0 */ +},a.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})();/*! `shell` grammar compiled for Highlight.js 11.10.0 */ (()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", aliases:["console","shellsession"],contains:[{className:"meta.prompt", begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, -subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `sql` grammar compiled for Highlight.js 11.9.0 */ +subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `sql` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const r=e.regex,t=e.COMMENT("--","$"),n=["true","false","unknown"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],i=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=i,c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!i.includes(e))),l={ begin:r.concat(/\b/,r.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} @@ -1125,71 +1142,72 @@ begin:r.either("double precision","large object","with timezone","without timezo variants:[{begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/, contains:[{begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{ className:"operator",begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/, -relevance:0}]}}})();hljs.registerLanguage("sql",e)})();/*! `swift` grammar compiled for Highlight.js 11.9.0 */ +relevance:0}]}}})();hljs.registerLanguage("sql",e)})();/*! `swift` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";function e(e){ return e?"string"==typeof e?e:e.source:null}function n(e){return t("(?=",e,")")} function t(...n){return n.map((n=>e(n))).join("")}function a(...n){const t=(e=>{ const n=e[e.length-1] ;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} })(n);return"("+(t.capture?"":"?:")+n.map((n=>e(n))).join("|")+")"} -const i=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),s=["Protocol","Type"].map(i),c=["init","self"].map(i),u=["Any","Self"],r=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],o=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],d=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),F=a(d,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(d,F,"*"),h=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),f=a(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w=t(h,f,"*"),g=t(/[A-Z]/,f,"*"),y=["attached","autoclosure",t(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,w,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],E=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +const i=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),s=["Protocol","Type"].map(i),c=["init","self"].map(i),u=["Any","Self"],o=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],r=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],d=a(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),F=a(d,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(d,F,"*"),h=a(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),f=a(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w=t(h,f,"*"),g=t(/[A-Z]/,f,"*"),y=["attached","autoclosure",t(/convention\(/,a("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,w,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],v=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] ;return e=>{const d={match:/\s+/,relevance:0},h=e.COMMENT("/\\*","\\*/",{ -contains:["self"]}),A=[e.C_LINE_COMMENT_MODE,h],v={match:[/\./,a(...s,...c)], -className:{2:"keyword"}},C={match:t(/\./,a(...r)),relevance:0 -},N=r.filter((e=>"string"==typeof e)).concat(["_|0"]),k={variants:[{ +contains:["self"]}),E=[e.C_LINE_COMMENT_MODE,h],A={match:[/\./,a(...s,...c)], +className:{2:"keyword"}},C={match:t(/\./,a(...o)),relevance:0 +},k=o.filter((e=>"string"==typeof e)).concat(["_|0"]),N={variants:[{ className:"keyword", -match:a(...r.filter((e=>"string"!=typeof e)).concat(u).map(i),...c)}]},B={ -$pattern:a(/\b\w+/,/#\w+/),keyword:N.concat(m),literal:o},S=[v,C,k],D=[{ +match:a(...o.filter((e=>"string"!=typeof e)).concat(u).map(i),...c)}]},S={ +$pattern:a(/\b\w+/,/#\w+/),keyword:k.concat(m),literal:r},B=[A,C,N],D=[{ match:t(/\./,a(...p)),relevance:0},{className:"built_in", match:t(/\b/,a(...p),/(?=\()/)}],_={match:/->/,relevance:0},M=[_,{ className:"operator",relevance:0,variants:[{match:b},{match:`\\.(\\.|${F})+`}] -}],x="([0-9]_*)+",$="([0-9a-fA-F]_*)+",L={className:"number",relevance:0, +}],x="([0-9]_*)+",L="([0-9a-fA-F]_*)+",$={className:"number",relevance:0, variants:[{match:`\\b(${x})(\\.(${x}))?([eE][+-]?(${x}))?\\b`},{ -match:`\\b0x(${$})(\\.(${$}))?([pP][+-]?(${x}))?\\b`},{match:/\b0o([0-7]_*)+\b/ +match:`\\b0x(${L})(\\.(${L}))?([pP][+-]?(${x}))?\\b`},{match:/\b0o([0-7]_*)+\b/ },{match:/\b0b([01]_*)+\b/}]},I=(e="")=>({className:"subst",variants:[{ match:t(/\\/,e,/[0\\tnr"']/)},{match:t(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}] }),O=(e="")=>({className:"subst",match:t(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/) }),P=(e="")=>({className:"subst",label:"interpol",begin:t(/\\/,e,/\(/),end:/\)/ -}),T=(e="")=>({begin:t(e,/"""/),end:t(/"""/,e),contains:[I(e),O(e),P(e)] -}),K=(e="")=>({begin:t(e,/"/),end:t(/"/,e),contains:[I(e),P(e)]}),j={ +}),j=(e="")=>({begin:t(e,/"""/),end:t(/"""/,e),contains:[I(e),O(e),P(e)] +}),K=(e="")=>({begin:t(e,/"/),end:t(/"/,e),contains:[I(e),P(e)]}),T={ className:"string", -variants:[T(),T("#"),T("##"),T("###"),K(),K("#"),K("##"),K("###")] -},z=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0, -contains:[e.BACKSLASH_ESCAPE]}],q={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//, -contains:z},U=e=>{const n=t(e,/\//),a=t(/\//,e);return{begin:n,end:a, -contains:[...z,{scope:"comment",begin:`#(?!.*${a})`,end:/$/}]}},Z={ -scope:"regexp",variants:[U("###"),U("##"),U("#"),q]},V={match:t(/`/,w,/`/) -},W=[V,{className:"variable",match:/\$\d+/},{className:"variable", +variants:[j(),j("#"),j("##"),j("###"),K(),K("#"),K("##"),K("###")] +},q=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0, +contains:[e.BACKSLASH_ESCAPE]}],U={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//, +contains:q},z=e=>{const n=t(e,/\//),a=t(/\//,e);return{begin:n,end:a, +contains:[...q,{scope:"comment",begin:`#(?!.*${a})`,end:/$/}]}},V={ +scope:"regexp",variants:[z("###"),z("##"),z("#"),U]},W={match:t(/`/,w,/`/) +},Z=[W,{className:"variable",match:/\$\d+/},{className:"variable", match:`\\$${f}+`}],G=[{match:/(@|#(un)?)available/,scope:"keyword",starts:{ -contains:[{begin:/\(/,end:/\)/,keywords:E,contains:[...M,L,j]}]}},{ -scope:"keyword",match:t(/@/,a(...y))},{scope:"meta",match:t(/@/,w)}],H={ -match:n(/\b[A-Z]/),relevance:0,contains:[{className:"type", +contains:[{begin:/\(/,end:/\)/,keywords:v,contains:[...M,$,T]}]}},{ +scope:"keyword",match:t(/@/,a(...y),n(a(/\(/,/\s+/)))},{scope:"meta", +match:t(/@/,w)}],H={match:n(/\b[A-Z]/),relevance:0,contains:[{className:"type", match:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,"+") },{className:"type",match:g,relevance:0},{match:/[?!]+/,relevance:0},{ match:/\.\.\./,relevance:0},{match:t(/\s+&\s+/,n(g)),relevance:0}]},R={ -begin://,keywords:B,contains:[...A,...S,...G,_,H]};H.contains.push(R) -;const X={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",{ +begin://,keywords:S,contains:[...E,...B,...G,_,H]};H.contains.push(R) +;const X={begin:/\(/,end:/\)/,relevance:0,keywords:S,contains:["self",{ match:t(w,/\s*:/),keywords:"_|0",relevance:0 -},...A,Z,...S,...D,...M,L,j,...W,...G,H]},J={begin://, -keywords:"repeat each",contains:[...A,H]},Q={begin:/\(/,end:/\)/,keywords:B, +},...E,V,...B,...D,...M,$,T,...Z,...G,H]},J={begin://, +keywords:"repeat each",contains:[...E,H]},Q={begin:/\(/,end:/\)/,keywords:S, contains:[{begin:a(n(t(w,/\s*:/)),n(t(w,/\s+/,w,/\s*:/))),end:/:/,relevance:0, contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:w}] -},...A,...S,...M,L,j,...G,H,X],endsParent:!0,illegal:/["']/},Y={ -match:[/(func|macro)/,/\s+/,a(V.match,w,b)],className:{1:"keyword", +},...E,...B,...M,$,T,...G,H,X],endsParent:!0,illegal:/["']/},Y={ +match:[/(func|macro)/,/\s+/,a(W.match,w,b)],className:{1:"keyword", 3:"title.function"},contains:[J,Q,d],illegal:[/\[/,/%/]},ee={ match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, contains:[J,Q,d],illegal:/\[|%/},ne={match:[/operator/,/\s+/,b],className:{ 1:"keyword",3:"title"}},te={begin:[/precedencegroup/,/\s+/,g],className:{ -1:"keyword",3:"title"},contains:[H],keywords:[...l,...o],end:/}/} -;for(const e of j.variants){const n=e.contains.find((e=>"interpol"===e.label)) -;n.keywords=B;const t=[...S,...D,...M,L,j,...W];n.contains=[...t,{begin:/\(/, -end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:B, -contains:[...A,Y,ee,{beginKeywords:"struct protocol class extension enum actor", -end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{ -className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...S] -},ne,te,{beginKeywords:"import",end:/$/,contains:[...A],relevance:0 -},Z,...S,...D,...M,L,j,...W,...G,H,X]}}})();hljs.registerLanguage("swift",e) -})();/*! `twig` grammar compiled for Highlight.js 11.9.0 */ +1:"keyword",3:"title"},contains:[H],keywords:[...l,...r],end:/}/},ae={ +begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,w,/\s*/], +beginScope:{1:"keyword",3:"title.class"},keywords:S,contains:[J,...B,{begin:/:/, +end:/\{/,keywords:S,contains:[{scope:"title.class.inherited",match:g},...B], +relevance:0}]};for(const e of T.variants){ +const n=e.contains.find((e=>"interpol"===e.label));n.keywords=S +;const t=[...B,...D,...M,$,T,...Z];n.contains=[...t,{begin:/\(/,end:/\)/, +contains:["self",...t]}]}return{name:"Swift",keywords:S, +contains:[...E,Y,ee,ae,ne,te,{beginKeywords:"import",end:/$/,contains:[...E], +relevance:0},V,...B,...D,...M,$,T,...Z,...G,H,X]}}})() +;hljs.registerLanguage("swift",e)})();/*! `twig` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,t=["absolute_url","asset|0","asset_version","attribute","block","constant","controller|0","country_timezones","csrf_token","cycle","date","dump","expression","form|0","form_end","form_errors","form_help","form_label","form_rest","form_row","form_start","form_widget","html_classes","include","is_granted","logout_path","logout_url","max","min","parent","path|0","random","range","relative_path","render","render_esi","source","template_from_string","url|0"] ;let r=["apply","autoescape","block","cache","deprecated","do","embed","extends","filter","flush","for","form_theme","from","if","import","include","macro","sandbox","set","stopwatch","trans","trans_default_domain","transchoice","use","verbatim","with"] @@ -1206,7 +1224,7 @@ end:/%\}/,keywords:"in",contains:[m,c,n,o]}),l=i(r,{relevance:2 }),_=i([/[a-z_]+/],{relevance:1});return{name:"Twig",aliases:["craftcms"], case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT(/\{#/,/#\}/),l,_,{ className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:["self",m,c,n,o] -}]}}})();hljs.registerLanguage("twig",e)})();/*! `typescript` grammar compiled for Highlight.js 11.9.0 */ +}]}}})();hljs.registerLanguage("twig",e)})();/*! `typescript` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict" ;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],i=[].concat(r,t,s) ;function o(o){const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/, @@ -1218,42 +1236,43 @@ const a=e[0].length+e.index,t=e.input[a] ;const r=e.input.substring(a) ;((s=r.match(/^\s*=/))||(s=r.match(/^\s+extends\s+/))&&0===s.index)&&n.ignoreMatch() }},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c -},u="[0-9](_?[0-9])*",m=`\\.(${u})`,E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",y={ +},u="[0-9](_?[0-9])*",m=`\\.(${u})`,E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",A={ className:"number",variants:[{ begin:`(\\b(${E})((${m})|\\.)?|(${m}))[eE][+-]?(${u})\\b`},{ begin:`\\b(${E})\\b((${m})\\b|\\.)?|(${m})\\b`},{ begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{ begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{ begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{ -begin:"\\b0[0-7]+n?\\b"}],relevance:0},A={className:"subst",begin:"\\$\\{", -end:"\\}",keywords:g,contains:[]},p={begin:"html`",end:"",starts:{end:"`", -returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"xml"}},N={ -begin:"css`",end:"",starts:{end:"`",returnEnd:!1, -contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"css"}},f={begin:"gql`",end:"", -starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A], +begin:"\\b0[0-7]+n?\\b"}],relevance:0},y={className:"subst",begin:"\\$\\{", +end:"\\}",keywords:g,contains:[]},p={begin:".?html`",end:"",starts:{end:"`", +returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"xml"}},N={ +begin:".?css`",end:"",starts:{end:"`",returnEnd:!1, +contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},f={begin:".?gql`",end:"", +starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y], subLanguage:"graphql"}},_={className:"string",begin:"`",end:"`", -contains:[o.BACKSLASH_ESCAPE,A]},h={className:"comment", +contains:[o.BACKSLASH_ESCAPE,y]},h={className:"comment", variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{ begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag", begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0, excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)", endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}] }),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE] -},S=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,{match:/\$\d+/},y] -;A.contains=S.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(S) -});const v=[].concat(h,A.contains),w=v.concat([{begin:/\(/,end:/\)/,keywords:g, -contains:["self"].concat(v)}]),R={className:"params",begin:/\(/,end:/\)/, -excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},x={variants:[{ +},S=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,{match:/\$\d+/},A] +;y.contains=S.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(S) +});const v=[].concat(h,y.contains),w=v.concat([{begin:/(\s*)\(/,end:/\)/, +keywords:g,contains:["self"].concat(v)}]),R={className:"params",begin:/(\s*)\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},k={variants:[{ match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,l.concat(d,"(",l.concat(/\./,d),")*")], scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{ -match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},k={relevance:0, +match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},x={relevance:0, match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/), className:"title.class",keywords:{_:[...t,...s]}},O={variants:[{ match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}], className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R], -illegal:/%/},C={ -match:l.concat(/\b/,(I=[...r,"super","import"],l.concat("(?!",I.join("|"),")")),d,l.lookahead(/\(/)), -className:"title.function",relevance:0};var I;const T={ +illegal:/%/},I={ +match:l.concat(/\b/,(C=[...r,"super","import"].map((e=>e+"\\s*\\(")), +l.concat("(?!",C.join("|"),")")),d,l.lookahead(/\s*\(/)), +className:"title.function",relevance:0};var C;const T={ begin:l.concat(/\./,l.lookahead(l.concat(d,/(?![0-9A-Za-z$_(])/))),end:d, excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},M={ match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"}, @@ -1262,19 +1281,19 @@ contains:[{begin:/\(\)/},R] match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(B)], keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]} ;return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{ -PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/, +PARAMS_CONTAINS:w,CLASS_REFERENCE:x},illegal:/#(?![$_A-z])/, contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ label:"use_strict",className:"meta",relevance:10, begin:/^\s*['"]use (strict|asm)['"]/ -},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,h,{match:/\$\d+/},y,k,{ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,p,N,f,_,h,{match:/\$\d+/},A,x,{ className:"attr",begin:d+l.lookahead(":"),relevance:0},$,{ begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", keywords:"return throw case",relevance:0,contains:[h,o.REGEXP_MODE,{ className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{ className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ -className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, -excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0},{match:/\s+/, -relevance:0},{variants:[{begin:"<>",end:""},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0 +},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{ match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin, "on:begin":b.isTrulyOpeningTag,end:b.end}],subLanguage:"xml",contains:[{ begin:b.begin,end:b.end,skip:!0,contains:["self"]}]}]},O,{ @@ -1283,24 +1302,26 @@ begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[ returnBegin:!0,label:"func.def",contains:[R,o.inherit(o.TITLE_MODE,{begin:d, className:"title.function"})]},{match:/\.\.\./,relevance:0},T,{match:"\\$"+d, relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, -contains:[R]},C,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, -className:"variable.constant"},x,M,{match:/\$[(.]/}]}}return t=>{ +contains:[R]},I,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},k,M,{match:/\$[(.]/}]}}return t=>{ const s=o(t),r=e,l=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],d={ -beginKeywords:"namespace",end:/\{/,excludeEnd:!0, -contains:[s.exports.CLASS_REFERENCE]},b={beginKeywords:"interface",end:/\{/, -excludeEnd:!0,keywords:{keyword:"interface extends",built_in:l}, -contains:[s.exports.CLASS_REFERENCE]},g={$pattern:e, -keyword:n.concat(["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"]), +begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"} +},b={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{ +keyword:"interface extends",built_in:l},contains:[s.exports.CLASS_REFERENCE] +},g={$pattern:e, +keyword:n.concat(["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"]), literal:a,built_in:i.concat(l),"variable.language":c},u={className:"meta", begin:"@"+r},m=(e,n,a)=>{const t=e.contains.findIndex((e=>e.label===n)) ;if(-1===t)throw Error("can not find mode to replace");e.contains.splice(t,1,a)} -;return Object.assign(s.keywords,g), -s.exports.PARAMS_CONTAINS.push(u),s.contains=s.contains.concat([u,d,b]), +;Object.assign(s.keywords,g),s.exports.PARAMS_CONTAINS.push(u) +;const E=s.contains.find((e=>"attr"===e.className)) +;return s.exports.PARAMS_CONTAINS.push([s.exports.CLASS_REFERENCE,E]), +s.contains=s.contains.concat([u,d,b]), m(s,"shebang",t.SHEBANG()),m(s,"use_strict",{className:"meta",relevance:10, begin:/^\s*['"]use strict['"]/ }),s.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(s,{ name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),s}})() -;hljs.registerLanguage("typescript",e)})();/*! `vbnet` grammar compiled for Highlight.js 11.9.0 */ +;hljs.registerLanguage("typescript",e)})();/*! `vbnet` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,s=/\d{1,2}(:\d{1,2}){1,2}/,r={ className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{ @@ -1324,7 +1345,7 @@ className:"label",begin:/^\w+:/},l,o,{className:"meta", begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, end:/$/,keywords:{ keyword:"const disable else elseif enable end externalsource if region then"}, -contains:[o]}]}}})();hljs.registerLanguage("vbnet",e)})();/*! `wasm` grammar compiled for Highlight.js 11.9.0 */ +contains:[o]}]}}})();hljs.registerLanguage("vbnet",e)})();/*! `wasm` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{e.regex;const a=e.COMMENT(/\(;/,/;\)/) ;return a.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/, keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"] @@ -1337,7 +1358,7 @@ className:"type"},{className:"keyword", match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/ },{className:"number",relevance:0, match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/ -}]}}})();hljs.registerLanguage("wasm",e)})();/*! `xml` grammar compiled for Highlight.js 11.9.0 */ +}]}}})();hljs.registerLanguage("wasm",e)})();/*! `xml` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, @@ -1365,7 +1386,7 @@ begin:a.concat(//,/>/,/\s/)))), end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:r}]},{ className:"tag",begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{ className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}} -})();hljs.registerLanguage("xml",e)})();/*! `yaml` grammar compiled for Highlight.js 11.9.0 */ +})();hljs.registerLanguage("xml",e)})();/*! `yaml` grammar compiled for Highlight.js 11.10.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={ className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ @@ -1375,8 +1396,8 @@ variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={ end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\{/, end:/\}/,contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]", contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{ -begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ -begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", +begin:/\w[\w :()\./-]*:(?=[ \t]|$)/},{begin:/"\w[\w :()\./-]*":(?=[ \t]|$)/},{ +begin:/'\w[\w :()\./-]*':(?=[ \t]|$)/}]},{className:"meta",begin:"^---\\s*$", relevance:10},{className:"string", begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, diff --git a/modules/highlighter/highlighter.php b/modules/highlighter/highlighter.php index 9ad5e74..e88337f 100644 --- a/modules/highlighter/highlighter.php +++ b/modules/highlighter/highlighter.php @@ -1,6 +1,7 @@ set( @@ -9,22 +10,28 @@ ); } - public static function __uninstall(): void { + public static function __uninstall( + ): void { Config::current()->remove("module_highlighter"); } - public function scripts($scripts): array { + public function scripts( + $scripts + ): array { $scripts[] = Config::current()->chyrp_url. "/modules/highlighter/highlight.min.js"; return $scripts; } - public function javascript(): void { + public function javascript( + ): void { include MODULES_DIR.DIR."highlighter".DIR."javascript.php"; } - public function stylesheets($stylesheets): array { + public function stylesheets( + $stylesheets + ): array { $config = Config::current(); $stylesheet = $config->module_highlighter["stylesheet"]; @@ -35,7 +42,9 @@ return $stylesheets; } - public function admin_highlighter_settings($admin): void { + public function admin_highlighter_settings( + $admin + ): void { $config = Config::current(); if (!Visitor::current()->group->can("change_settings")) @@ -74,7 +83,9 @@ ); } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["highlighter_settings"] = array( "title" => __("Syntax Highlighting", "highlighter") @@ -83,7 +94,10 @@ return $navs; } - private function highlighter_stylesheets($base = null, $prefix = ""): array { + private function highlighter_stylesheets( + $base = null, + $prefix = "" + ): array { fallback($base, MODULES_DIR.DIR."highlighter".DIR."styles"); $styles = array(); $dir = new DirectoryIterator($base); diff --git a/modules/highlighter/javascript.php b/modules/highlighter/javascript.php index 8dc3099..ffc6da2 100644 --- a/modules/highlighter/javascript.php +++ b/modules/highlighter/javascript.php @@ -3,7 +3,8 @@ exit; ?> var ChyrpHighlighter = { - init: function() { + init: function( + ) { $("pre > code").each( function(index, block) { hljs.highlightElement(block); @@ -11,7 +12,8 @@ var ChyrpHighlighter = { ); ChyrpHighlighter.watch(); }, - watch: function() { + watch: function( + ) { // Watch for DOM additions on blog pages. if (!!window.MutationObserver && $(".post").length) { var target = $(".post").last().parent()[0]; diff --git a/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.mo index 85f91ff94a66ff1d7a3e1094676847704cf2aec3..3c792fad7109fe31b05399e1f92483835d78ca87 100644 GIT binary patch delta 13 UcmZ3_x}J3d8xy1HWOk+%02^%sn*aa+ delta 13 UcmZ3_x}J3d8xy0+WOk+%02^onng9R* diff --git a/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po index 0e4f064..1cba1d2 100644 --- a/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/de_DE/LC_MESSAGES/highlighter.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -21,7 +21,7 @@ msgstr "Einstellungen für die Syntaxhervorhebung" msgid "Stylesheet" msgstr "Stylesheet" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "Syntaxhervorhebung" diff --git a/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot b/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot index a2f09df..e12396f 100644 --- a/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot +++ b/modules/highlighter/locale/en_US/LC_MESSAGES/highlighter.pot @@ -9,7 +9,7 @@ msgstr "" msgid "Stylesheet" msgstr "" -#: modules/highlighter/highlighter.php:80 +#: modules/highlighter/highlighter.php:91 #: modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "" diff --git a/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.mo index 33f8d5874c2a9ebe142d0d18793f1921ff6c5ad0..476726ba369604ed3f04b4a3c3e9769a216c0163 100644 GIT binary patch delta 54 zcmcc1dYg5Eiz+K41A{0KCo?cGNHZ}o@B`_3AT0}|`+>ABkY2knb3G%Y>11i9Ljd5U B2;u+$ delta 56 zcmcc3dY5&Aiz+)K1A{0KCo?cG$TBf7@B`^aAT0}|Cjx0*AiaKL=6XhEBR!+Zl1zsH D@~sI; diff --git a/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po index 1be3b78..d18ff91 100644 --- a/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/it_IT/LC_MESSAGES/highlighter.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -22,7 +22,7 @@ msgstr "Impostazioni di evidenziazione della sintassi" msgid "Stylesheet" msgstr "Foglio di stile" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "Evidenziazione della sintassi" diff --git a/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.mo index fde9a24faa35a50af9b56eb00d6694426b79983d..9c84b0f3dca258454d3a50a341ecb0ae0d46d0eb 100644 GIT binary patch delta 54 zcmeyt@{MJJi|QE$1_n_^28KW&{Rl|&0BI8@1_l8j?FgimfppNu%rZts)5(t*rvU&I C&I#iH delta 56 zcmeyy@`Gi9i|RQB1_n_^28KW&{RBw!0BJKO1_l8j?F^)qfpo~m%rZu1V?CqE4;ZHb E04J;pO8@`> diff --git a/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po index e9305dc..b3e5a33 100644 --- a/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/nl_NL/LC_MESSAGES/highlighter.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -21,7 +21,7 @@ msgstr "Instellingen voor syntaxismarkering" msgid "Stylesheet" msgstr "Stijlbestand" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "Syntax Markering" @@ -30,5 +30,5 @@ msgid "" "Adds syntax highlighting to nested <pre><code> " "blocks." msgstr "" -"Pas syntaxmarkering toe aan geneste <pre><code> blokken." +"Pas syntaxmarkering toe aan geneste <pre><code> " +"blokken." diff --git a/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.mo b/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.mo index fd8493a9d32831775dc5facd0f5044949c1b2a8b..e7a45e0e061e0b5493e9074dbd0e3124ac1e89a7 100644 GIT binary patch delta 54 zcmey)@|9(Ri|Pjk1_n_^1_l=(&BnyQzzL+ifiw@04h7OeKssq-<}5}=)5&a1g#i3c B2xI^N delta 64 zcmey$@||UZi|Qu^1_n_^1_l=(&B4ULzzL*%fiw@04hPagKsse(<}5}IBRwN7hNtUy MPF$@vS)a)b0BZCMi2wiq diff --git a/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po b/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po index 5e79277..7644ffa 100644 --- a/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po +++ b/modules/highlighter/locale/zh_CN/LC_MESSAGES/highlighter.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/highlighter/admin/pages/highlighter_settings.twig:3 @@ -22,7 +22,7 @@ msgstr "语法高亮设置" msgid "Stylesheet" msgstr "样式表" -#: modules/highlighter/highlighter.php:80 modules/highlighter/info.php:3 +#: modules/highlighter/highlighter.php:91 modules/highlighter/info.php:3 msgid "Syntax Highlighting" msgstr "语法高亮" diff --git a/modules/highlighter/styles/1c-light.css b/modules/highlighter/styles/1c-light.css new file mode 100644 index 0000000..e35ff89 --- /dev/null +++ b/modules/highlighter/styles/1c-light.css @@ -0,0 +1,107 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: 1c-light + Description: Style IDE 1C:Enterprise 8 + Author: (c) Barilko Vitaliy + Maintainer: @Diversus23 + Website: https://softonit.ru/ + License: see project LICENSE + Touched: 2023 +*/ +/* end baseline CSS */ +.hljs { + color: #0000ff; + background: #ffffff +} +/* Base color: saturation 0; */ +.hljs-subst { + /* default */ + +} +/* purposely ignored */ +.hljs-formula, +.hljs-attr, +.hljs-property { + +} +.hljs-comment { + color: #008000 +} +.hljs-tag { + color: #444a +} +.hljs-tag .hljs-name, +.hljs-tag .hljs-attr { + color: #444 +} +.hljs-punctuation, +.hljs-function, +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #ff0000 +} +.hljs-type, +.hljs-params { + color: #0000ff +} +/* User color: hue: 0 */ +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-symbol, +.hljs-deletion { + color: #000000 +} +.hljs-title, +.hljs-section { + color: #0000ff +} +.hljs-regexp, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-operator, +.hljs-selector-pseudo { + color: #ab5656 +} +/* Language color: hue: 90; */ +.hljs-literal { + color: #ff0000 +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0000ff +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #963200 +} +.hljs-meta .hljs-string { + color: #963200 +} +.hljs-meta .hljs-keyword { + color: #963200 +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/1c-light.min.css b/modules/highlighter/styles/1c-light.min.css new file mode 100644 index 0000000..a9d9bf9 --- /dev/null +++ b/modules/highlighter/styles/1c-light.min.css @@ -0,0 +1,9 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: 1c-light + Description: Style IDE 1C:Enterprise 8 + Author: (c) Barilko Vitaliy + Maintainer: @Diversus23 + Website: https://softonit.ru/ + License: see project LICENSE + Touched: 2023 +*/.hljs{color:#00f;background:#fff}.hljs-comment{color:green}.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-function,.hljs-keyword,.hljs-name,.hljs-punctuation,.hljs-selector-tag{color:red}.hljs-params,.hljs-type{color:#00f}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-symbol,.hljs-template-tag{color:#000}.hljs-section,.hljs-title{color:#00f}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:red}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#00f}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#963200}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/modules/highlighter/styles/a11y-dark.css b/modules/highlighter/styles/a11y-dark.css new file mode 100644 index 0000000..0d11216 --- /dev/null +++ b/modules/highlighter/styles/a11y-dark.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/ +.hljs { + background: #2b2b2b; + color: #f8f8f2 +} +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #d4d0ab +} +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ffa07a +} +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5ab35 +} +/* Yellow */ +.hljs-attribute { + color: #ffd700 +} +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #abe338 +} +/* Blue */ +.hljs-title, +.hljs-section { + color: #00e0e0 +} +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #dcc6e0 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +@media screen and (-ms-high-contrast: active) { + .hljs-addition, + .hljs-attribute, + .hljs-built_in, + .hljs-bullet, + .hljs-comment, + .hljs-link, + .hljs-literal, + .hljs-meta, + .hljs-number, + .hljs-params, + .hljs-string, + .hljs-symbol, + .hljs-type, + .hljs-quote { + color: highlight + } + .hljs-keyword, + .hljs-selector-tag { + font-weight: bold + } +} \ No newline at end of file diff --git a/modules/highlighter/styles/a11y-light.css b/modules/highlighter/styles/a11y-light.css new file mode 100644 index 0000000..a8af1d1 --- /dev/null +++ b/modules/highlighter/styles/a11y-light.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: a11y-light + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/ +.hljs { + background: #fefefe; + color: #545454 +} +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #696969 +} +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d91e18 +} +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #aa5d00 +} +/* Yellow */ +.hljs-attribute { + color: #aa5d00 +} +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #008000 +} +/* Blue */ +.hljs-title, +.hljs-section { + color: #007faa +} +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7928a1 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +@media screen and (-ms-high-contrast: active) { + .hljs-addition, + .hljs-attribute, + .hljs-built_in, + .hljs-bullet, + .hljs-comment, + .hljs-link, + .hljs-literal, + .hljs-meta, + .hljs-number, + .hljs-params, + .hljs-string, + .hljs-symbol, + .hljs-type, + .hljs-quote { + color: highlight + } + .hljs-keyword, + .hljs-selector-tag { + font-weight: bold + } +} \ No newline at end of file diff --git a/modules/highlighter/styles/agate.css b/modules/highlighter/styles/agate.css new file mode 100644 index 0000000..8da5740 --- /dev/null +++ b/modules/highlighter/styles/agate.css @@ -0,0 +1,127 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Agate + Author: (c) Taufik Nurrohman + Maintainer: @taufik-nurrohman + Updated: 2021-04-24 + + #333 + #62c8f3 + #7bd694 + #888 + #a2fca2 + #ade5fc + #b8d8a2 + #c6b4f0 + #d36363 + #fc9b9b + #fcc28c + #ffa + #fff +*/ +.hljs { + background: #333; + color: #fff +} +.hljs-doctag, +.hljs-meta-keyword, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-code, +.hljs-emphasis { + font-style: italic +} +.hljs-section, +.hljs-tag { + color: #62c8f3 +} +.hljs-selector-class, +.hljs-selector-id, +.hljs-template-variable, +.hljs-variable { + color: #ade5fc +} +.hljs-meta-string, +.hljs-string { + color: #a2fca2 +} +.hljs-attr, +.hljs-quote, +.hljs-selector-attr { + color: #7bd694 +} +.hljs-tag .hljs-attr { + color: inherit +} +.hljs-attribute, +.hljs-title, +.hljs-type { + color: #ffa +} +.hljs-number, +.hljs-symbol { + color: #d36363 +} +.hljs-bullet, +.hljs-template-tag { + color: #b8d8a2 +} +.hljs-built_in, +.hljs-keyword, +.hljs-literal, +.hljs-selector-tag { + color: #fcc28c +} +.hljs-code, +.hljs-comment, +.hljs-formula { + color: #888 +} +.hljs-link, +.hljs-selector-pseudo, +.hljs-regexp { + color: #c6b4f0 +} +.hljs-meta { + color: #fc9b9b +} +.hljs-deletion { + background: #fc9b9b; + color: #333 +} +.hljs-addition { + background: #a2fca2; + color: #333 +} +/* Purposely ignored */ +.hljs-operator, +.hljs-params, +.hljs-property, +.hljs-punctuation { + +} +.hljs-subst { + color: #fff +} +/* This applies only if HTML auto-merging plugin is enabled by user (#2889) */ +.hljs a { + color: inherit +} +.hljs a:focus, +.hljs a:hover { + color: inherit; + text-decoration: underline +} +.hljs mark { + background: #555; + color: inherit +} \ No newline at end of file diff --git a/modules/highlighter/styles/an-old-hope.css b/modules/highlighter/styles/an-old-hope.css new file mode 100644 index 0000000..6ecfe53 --- /dev/null +++ b/modules/highlighter/styles/an-old-hope.css @@ -0,0 +1,75 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: An Old Hope – Star Wars Syntax + Author: (c) Gustavo Costa + Maintainer: @gusbemacbe + + Original theme - Ocean Dark Theme – by https://github.com/gavsiu + Based on Jesse Leite's Atom syntax theme 'An Old Hope' + https://github.com/JesseLeite/an-old-hope-syntax-atom +*/ +/* Millenium Falcon */ +.hljs { + background: #1C1D21; + color: #c0c5ce +} +/* Death Star Comment */ +.hljs-comment, +.hljs-quote { + color: #B6B18B +} +/* Darth Vader */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #EB3C54 +} +/* Threepio */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #E7CE56 +} +/* Luke Skywalker */ +.hljs-attribute { + color: #EE7C2B +} +/* Obi Wan Kenobi */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #4FB4D7 +} +/* Yoda */ +.hljs-title, +.hljs-section { + color: #78BB65 +} +/* Mace Windu */ +.hljs-keyword, +.hljs-selector-tag { + color: #B45EA4 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/androidstudio.css b/modules/highlighter/styles/androidstudio.css new file mode 100644 index 0000000..979dad2 --- /dev/null +++ b/modules/highlighter/styles/androidstudio.css @@ -0,0 +1,60 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Date: 24 Fev 2015 +Author: Pedro Oliveira +*/ +.hljs { + color: #a9b7c6; + background: #282b2e +} +.hljs-number, +.hljs-literal, +.hljs-symbol, +.hljs-bullet { + color: #6897BB +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-deletion { + color: #cc7832 +} +.hljs-variable, +.hljs-template-variable, +.hljs-link { + color: #629755 +} +.hljs-comment, +.hljs-quote { + color: #808080 +} +.hljs-meta { + color: #bbb529 +} +.hljs-string, +.hljs-attribute, +.hljs-addition { + color: #6A8759 +} +.hljs-section, +.hljs-title, +.hljs-type { + color: #ffc66d +} +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e8bf6a +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/arduino-light.css b/modules/highlighter/styles/arduino-light.css new file mode 100644 index 0000000..743ce34 --- /dev/null +++ b/modules/highlighter/styles/arduino-light.css @@ -0,0 +1,78 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Arduino® Light Theme - Stefania Mellai + +*/ +.hljs { + background: white; + color: #434f54 +} +.hljs-subst { + color: #434f54 +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #00979D +} +.hljs-built_in, +.hljs-literal, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #D35400 +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #00979D +} +.hljs-type, +.hljs-string, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #005C5F +} +.hljs-comment { + color: rgba(149,165,166,.8) +} +.hljs-meta .hljs-keyword { + color: #728E00 +} +.hljs-meta { + color: #434f54 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-function { + color: #728E00 +} +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold +} +.hljs-number { + color: #8A7B52 +} \ No newline at end of file diff --git a/modules/highlighter/styles/arta.css b/modules/highlighter/styles/arta.css new file mode 100644 index 0000000..98a5b2b --- /dev/null +++ b/modules/highlighter/styles/arta.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Date: 17.V.2011 +Author: pumbur +*/ +.hljs { + background: #222; + color: #aaa +} +.hljs-subst { + color: #aaa +} +.hljs-section { + color: #fff +} +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #444 +} +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-regexp { + color: #ffcc33 +} +.hljs-number, +.hljs-addition { + color: #00cc66 +} +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-template-variable, +.hljs-attribute, +.hljs-link { + color: #32aaee +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #6644aa +} +.hljs-title, +.hljs-variable, +.hljs-deletion, +.hljs-template-tag { + color: #bb1166 +} +.hljs-section, +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/ascetic.css b/modules/highlighter/styles/ascetic.css new file mode 100644 index 0000000..27a4dbe --- /dev/null +++ b/modules/highlighter/styles/ascetic.css @@ -0,0 +1,45 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ +.hljs { + background: white; + color: black +} +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-symbol, +.hljs-bullet, +.hljs-section, +.hljs-addition, +.hljs-attribute, +.hljs-link { + color: #888 +} +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #ccc +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-name, +.hljs-type, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/atom-one-dark-reasonable.css b/modules/highlighter/styles/atom-one-dark-reasonable.css new file mode 100644 index 0000000..ccfab91 --- /dev/null +++ b/modules/highlighter/styles/atom-one-dark-reasonable.css @@ -0,0 +1,105 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage + +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +*/ +.hljs { + color: #abb2bf; + background: #282c34 +} +.hljs-keyword, +.hljs-operator { + color: #F92672 +} +.hljs-pattern-match { + color: #F92672 +} +.hljs-pattern-match .hljs-constructor { + color: #61aeee +} +.hljs-function { + color: #61aeee +} +.hljs-function .hljs-params { + color: #A6E22E +} +.hljs-function .hljs-params .hljs-typing { + color: #FD971F +} +.hljs-module-access .hljs-module { + color: #7e57c2 +} +.hljs-constructor { + color: #e2b93d +} +.hljs-constructor .hljs-string { + color: #9CCC65 +} +.hljs-comment, +.hljs-quote { + color: #b18eb1; + font-style: italic +} +.hljs-doctag, +.hljs-formula { + color: #c678dd +} +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75 +} +.hljs-literal { + color: #56b6c2 +} +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta .hljs-string { + color: #98c379 +} +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #e6c07b +} +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} \ No newline at end of file diff --git a/modules/highlighter/styles/atom-one-dark.css b/modules/highlighter/styles/atom-one-dark.css new file mode 100644 index 0000000..3c51ce6 --- /dev/null +++ b/modules/highlighter/styles/atom-one-dark.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Atom One Dark by Daniel Gamage +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +base: #282c34 +mono-1: #abb2bf +mono-2: #818896 +mono-3: #5c6370 +hue-1: #56b6c2 +hue-2: #61aeee +hue-3: #c678dd +hue-4: #98c379 +hue-5: #e06c75 +hue-5-2: #be5046 +hue-6: #d19a66 +hue-6-2: #e6c07b + +*/ +.hljs { + color: #abb2bf; + background: #282c34 +} +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic +} +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c678dd +} +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75 +} +.hljs-literal { + color: #56b6c2 +} +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta .hljs-string { + color: #98c379 +} +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee +} +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #e6c07b +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} \ No newline at end of file diff --git a/modules/highlighter/styles/atom-one-light.css b/modules/highlighter/styles/atom-one-light.css new file mode 100644 index 0000000..26dd7ec --- /dev/null +++ b/modules/highlighter/styles/atom-one-light.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ +.hljs { + color: #383a42; + background: #fafafa +} +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic +} +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4 +} +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649 +} +.hljs-literal { + color: #0184bb +} +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta .hljs-string { + color: #50a14f +} +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2 +} +.hljs-built_in, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #c18401 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/3024.css b/modules/highlighter/styles/base16/3024.css new file mode 100644 index 0000000..b7f4ea3 --- /dev/null +++ b/modules/highlighter/styles/base16/3024.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: 3024 + Author: Jan T. Sott (http://github.com/idleberg) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme 3024 + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #090300 Default Background +base01 #3a3432 Lighter Background (Used for status bars, line number and folding marks) +base02 #4a4543 Selection Background +base03 #5c5855 Comments, Invisibles, Line Highlighting +base04 #807d7c Dark Foreground (Used for status bars) +base05 #a5a2a2 Default Foreground, Caret, Delimiters, Operators +base06 #d6d5d4 Light Foreground (Not often used) +base07 #f7f7f7 Light Background (Not often used) +base08 #db2d20 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e8bbd0 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fded02 Classes, Markup Bold, Search Text Background +base0B #01a252 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #b5e4f4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #01a0e4 Functions, Methods, Attribute IDs, Headings +base0E #a16a94 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cdab53 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a5a2a2; + background: #090300 +} +.hljs::selection, +.hljs ::selection { + background-color: #4a4543; + color: #a5a2a2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5c5855 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5c5855 +} +/* base04 - #807d7c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #807d7c +} +/* base05 - #a5a2a2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a5a2a2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #db2d20 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e8bbd0 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fded02 +} +.hljs-strong { + font-weight: bold; + color: #fded02 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #01a252 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #b5e4f4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #01a0e4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a16a94 +} +.hljs-emphasis { + color: #a16a94; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cdab53 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/apathy.css b/modules/highlighter/styles/base16/apathy.css new file mode 100644 index 0000000..7aa2b7b --- /dev/null +++ b/modules/highlighter/styles/base16/apathy.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Apathy + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme apathy + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #031A16 Default Background +base01 #0B342D Lighter Background (Used for status bars, line number and folding marks) +base02 #184E45 Selection Background +base03 #2B685E Comments, Invisibles, Line Highlighting +base04 #5F9C92 Dark Foreground (Used for status bars) +base05 #81B5AC Default Foreground, Caret, Delimiters, Operators +base06 #A7CEC8 Light Foreground (Not often used) +base07 #D2E7E4 Light Background (Not often used) +base08 #3E9688 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #3E7996 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #3E4C96 Classes, Markup Bold, Search Text Background +base0B #883E96 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #963E4C Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #96883E Functions, Methods, Attribute IDs, Headings +base0E #4C963E Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3E965B Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #81B5AC; + background: #031A16 +} +.hljs::selection, +.hljs ::selection { + background-color: #184E45; + color: #81B5AC +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #2B685E - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #2B685E +} +/* base04 - #5F9C92 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5F9C92 +} +/* base05 - #81B5AC - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #81B5AC +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #3E9688 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #3E7996 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #3E4C96 +} +.hljs-strong { + font-weight: bold; + color: #3E4C96 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #883E96 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #963E4C +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #96883E +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4C963E +} +.hljs-emphasis { + color: #4C963E; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3E965B +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/apprentice.css b/modules/highlighter/styles/base16/apprentice.css new file mode 100644 index 0000000..6f92cfd --- /dev/null +++ b/modules/highlighter/styles/base16/apprentice.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Apprentice + Author: romainl + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme apprentice + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #262626 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #333333 Selection Background +base03 #6C6C6C Comments, Invisibles, Line Highlighting +base04 #787878 Dark Foreground (Used for status bars) +base05 #BCBCBC Default Foreground, Caret, Delimiters, Operators +base06 #C9C9C9 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #5F8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FF8700 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #5F8787 Classes, Markup Bold, Search Text Background +base0B #87AF87 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5F875F Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #FFFFAF Functions, Methods, Attribute IDs, Headings +base0E #87AFD7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5F87AF Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #BCBCBC; + background: #262626 +} +.hljs::selection, +.hljs ::selection { + background-color: #333333; + color: #BCBCBC +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6C6C6C - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6C6C6C +} +/* base04 - #787878 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #787878 +} +/* base05 - #BCBCBC - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #BCBCBC +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5F8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FF8700 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #5F8787 +} +.hljs-strong { + font-weight: bold; + color: #5F8787 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #87AF87 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5F875F +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #FFFFAF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #87AFD7 +} +.hljs-emphasis { + color: #87AFD7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5F87AF +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ashes.css b/modules/highlighter/styles/base16/ashes.css new file mode 100644 index 0000000..84a6ab4 --- /dev/null +++ b/modules/highlighter/styles/base16/ashes.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Ashes + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ashes + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1C2023 Default Background +base01 #393F45 Lighter Background (Used for status bars, line number and folding marks) +base02 #565E65 Selection Background +base03 #747C84 Comments, Invisibles, Line Highlighting +base04 #ADB3BA Dark Foreground (Used for status bars) +base05 #C7CCD1 Default Foreground, Caret, Delimiters, Operators +base06 #DFE2E5 Light Foreground (Not often used) +base07 #F3F4F5 Light Background (Not often used) +base08 #C7AE95 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #C7C795 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #AEC795 Classes, Markup Bold, Search Text Background +base0B #95C7AE Strings, Inherited Class, Markup Code, Diff Inserted +base0C #95AEC7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #AE95C7 Functions, Methods, Attribute IDs, Headings +base0E #C795AE Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #C79595 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C7CCD1; + background: #1C2023 +} +.hljs::selection, +.hljs ::selection { + background-color: #565E65; + color: #C7CCD1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #747C84 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #747C84 +} +/* base04 - #ADB3BA - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ADB3BA +} +/* base05 - #C7CCD1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C7CCD1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #C7AE95 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #C7C795 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #AEC795 +} +.hljs-strong { + font-weight: bold; + color: #AEC795 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #95C7AE +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #95AEC7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #AE95C7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C795AE +} +.hljs-emphasis { + color: #C795AE; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #C79595 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-cave-light.css b/modules/highlighter/styles/base16/atelier-cave-light.css new file mode 100644 index 0000000..d38a679 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-cave-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Cave Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-cave-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #efecf4 Default Background +base01 #e2dfe7 Lighter Background (Used for status bars, line number and folding marks) +base02 #8b8792 Selection Background +base03 #7e7887 Comments, Invisibles, Line Highlighting +base04 #655f6d Dark Foreground (Used for status bars) +base05 #585260 Default Foreground, Caret, Delimiters, Operators +base06 #26232a Light Foreground (Not often used) +base07 #19171c Light Background (Not often used) +base08 #be4678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aa573c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #2a9292 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #398bc6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #576ddb Functions, Methods, Attribute IDs, Headings +base0E #955ae7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf40bf Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #585260; + background: #efecf4 +} +.hljs::selection, +.hljs ::selection { + background-color: #8b8792; + color: #585260 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7e7887 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7e7887 +} +/* base04 - #655f6d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #655f6d +} +/* base05 - #585260 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #585260 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #be4678 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aa573c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2a9292 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #398bc6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #576ddb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #955ae7 +} +.hljs-emphasis { + color: #955ae7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf40bf +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-cave.css b/modules/highlighter/styles/base16/atelier-cave.css new file mode 100644 index 0000000..74374e3 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-cave.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Cave + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-cave + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #19171c Default Background +base01 #26232a Lighter Background (Used for status bars, line number and folding marks) +base02 #585260 Selection Background +base03 #655f6d Comments, Invisibles, Line Highlighting +base04 #7e7887 Dark Foreground (Used for status bars) +base05 #8b8792 Default Foreground, Caret, Delimiters, Operators +base06 #e2dfe7 Light Foreground (Not often used) +base07 #efecf4 Light Background (Not often used) +base08 #be4678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aa573c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #2a9292 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #398bc6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #576ddb Functions, Methods, Attribute IDs, Headings +base0E #955ae7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf40bf Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8b8792; + background: #19171c +} +.hljs::selection, +.hljs ::selection { + background-color: #585260; + color: #8b8792 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #655f6d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #655f6d +} +/* base04 - #7e7887 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7887 +} +/* base05 - #8b8792 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8b8792 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #be4678 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aa573c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2a9292 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #398bc6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #576ddb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #955ae7 +} +.hljs-emphasis { + color: #955ae7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf40bf +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-dune-light.css b/modules/highlighter/styles/base16/atelier-dune-light.css new file mode 100644 index 0000000..7a1123e --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-dune-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Dune Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-dune-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fefbec Default Background +base01 #e8e4cf Lighter Background (Used for status bars, line number and folding marks) +base02 #a6a28c Selection Background +base03 #999580 Comments, Invisibles, Line Highlighting +base04 #7d7a68 Dark Foreground (Used for status bars) +base05 #6e6b5e Default Foreground, Caret, Delimiters, Operators +base06 #292824 Light Foreground (Not often used) +base07 #20201d Light Background (Not often used) +base08 #d73737 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b65611 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ae9513 Classes, Markup Bold, Search Text Background +base0B #60ac39 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1fad83 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6684e1 Functions, Methods, Attribute IDs, Headings +base0E #b854d4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d43552 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #6e6b5e; + background: #fefbec +} +.hljs::selection, +.hljs ::selection { + background-color: #a6a28c; + color: #6e6b5e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #999580 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #999580 +} +/* base04 - #7d7a68 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7d7a68 +} +/* base05 - #6e6b5e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #6e6b5e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d73737 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b65611 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ae9513 +} +.hljs-strong { + font-weight: bold; + color: #ae9513 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #60ac39 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1fad83 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6684e1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b854d4 +} +.hljs-emphasis { + color: #b854d4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d43552 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-dune.css b/modules/highlighter/styles/base16/atelier-dune.css new file mode 100644 index 0000000..d3b3388 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-dune.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Dune + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-dune + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #20201d Default Background +base01 #292824 Lighter Background (Used for status bars, line number and folding marks) +base02 #6e6b5e Selection Background +base03 #7d7a68 Comments, Invisibles, Line Highlighting +base04 #999580 Dark Foreground (Used for status bars) +base05 #a6a28c Default Foreground, Caret, Delimiters, Operators +base06 #e8e4cf Light Foreground (Not often used) +base07 #fefbec Light Background (Not often used) +base08 #d73737 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b65611 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ae9513 Classes, Markup Bold, Search Text Background +base0B #60ac39 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1fad83 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6684e1 Functions, Methods, Attribute IDs, Headings +base0E #b854d4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d43552 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a6a28c; + background: #20201d +} +.hljs::selection, +.hljs ::selection { + background-color: #6e6b5e; + color: #a6a28c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7d7a68 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7d7a68 +} +/* base04 - #999580 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999580 +} +/* base05 - #a6a28c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a6a28c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d73737 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b65611 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ae9513 +} +.hljs-strong { + font-weight: bold; + color: #ae9513 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #60ac39 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1fad83 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6684e1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b854d4 +} +.hljs-emphasis { + color: #b854d4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d43552 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-estuary-light.css b/modules/highlighter/styles/base16/atelier-estuary-light.css new file mode 100644 index 0000000..02128ac --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-estuary-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Estuary Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-estuary-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f4f3ec Default Background +base01 #e7e6df Lighter Background (Used for status bars, line number and folding marks) +base02 #929181 Selection Background +base03 #878573 Comments, Invisibles, Line Highlighting +base04 #6c6b5a Dark Foreground (Used for status bars) +base05 #5f5e4e Default Foreground, Caret, Delimiters, Operators +base06 #302f27 Light Foreground (Not often used) +base07 #22221b Light Background (Not often used) +base08 #ba6236 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ae7313 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a5980d Classes, Markup Bold, Search Text Background +base0B #7d9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5b9d48 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #36a166 Functions, Methods, Attribute IDs, Headings +base0E #5f9182 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9d6c7c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5f5e4e; + background: #f4f3ec +} +.hljs::selection, +.hljs ::selection { + background-color: #929181; + color: #5f5e4e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #878573 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #878573 +} +/* base04 - #6c6b5a - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6c6b5a +} +/* base05 - #5f5e4e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5f5e4e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ba6236 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ae7313 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a5980d +} +.hljs-strong { + font-weight: bold; + color: #a5980d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7d9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5b9d48 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #36a166 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #5f9182 +} +.hljs-emphasis { + color: #5f9182; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9d6c7c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-estuary.css b/modules/highlighter/styles/base16/atelier-estuary.css new file mode 100644 index 0000000..07e1506 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-estuary.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Estuary + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-estuary + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #22221b Default Background +base01 #302f27 Lighter Background (Used for status bars, line number and folding marks) +base02 #5f5e4e Selection Background +base03 #6c6b5a Comments, Invisibles, Line Highlighting +base04 #878573 Dark Foreground (Used for status bars) +base05 #929181 Default Foreground, Caret, Delimiters, Operators +base06 #e7e6df Light Foreground (Not often used) +base07 #f4f3ec Light Background (Not often used) +base08 #ba6236 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ae7313 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a5980d Classes, Markup Bold, Search Text Background +base0B #7d9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5b9d48 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #36a166 Functions, Methods, Attribute IDs, Headings +base0E #5f9182 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9d6c7c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #929181; + background: #22221b +} +.hljs::selection, +.hljs ::selection { + background-color: #5f5e4e; + color: #929181 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6c6b5a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6c6b5a +} +/* base04 - #878573 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #878573 +} +/* base05 - #929181 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #929181 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ba6236 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ae7313 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a5980d +} +.hljs-strong { + font-weight: bold; + color: #a5980d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7d9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5b9d48 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #36a166 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #5f9182 +} +.hljs-emphasis { + color: #5f9182; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9d6c7c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-forest-light.css b/modules/highlighter/styles/base16/atelier-forest-light.css new file mode 100644 index 0000000..ecff451 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-forest-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Forest Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-forest-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f1efee Default Background +base01 #e6e2e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #a8a19f Selection Background +base03 #9c9491 Comments, Invisibles, Line Highlighting +base04 #766e6b Dark Foreground (Used for status bars) +base05 #68615e Default Foreground, Caret, Delimiters, Operators +base06 #2c2421 Light Foreground (Not often used) +base07 #1b1918 Light Background (Not often used) +base08 #f22c40 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5320 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c38418 Classes, Markup Bold, Search Text Background +base0B #7b9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3d97b8 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #407ee7 Functions, Methods, Attribute IDs, Headings +base0E #6666ea Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c33ff3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #68615e; + background: #f1efee +} +.hljs::selection, +.hljs ::selection { + background-color: #a8a19f; + color: #68615e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9c9491 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9c9491 +} +/* base04 - #766e6b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #766e6b +} +/* base05 - #68615e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #68615e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f22c40 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5320 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c38418 +} +.hljs-strong { + font-weight: bold; + color: #c38418 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7b9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3d97b8 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #407ee7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6666ea +} +.hljs-emphasis { + color: #6666ea; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c33ff3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-forest.css b/modules/highlighter/styles/base16/atelier-forest.css new file mode 100644 index 0000000..3ab07be --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-forest.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Forest + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-forest + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1b1918 Default Background +base01 #2c2421 Lighter Background (Used for status bars, line number and folding marks) +base02 #68615e Selection Background +base03 #766e6b Comments, Invisibles, Line Highlighting +base04 #9c9491 Dark Foreground (Used for status bars) +base05 #a8a19f Default Foreground, Caret, Delimiters, Operators +base06 #e6e2e0 Light Foreground (Not often used) +base07 #f1efee Light Background (Not often used) +base08 #f22c40 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5320 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c38418 Classes, Markup Bold, Search Text Background +base0B #7b9726 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3d97b8 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #407ee7 Functions, Methods, Attribute IDs, Headings +base0E #6666ea Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c33ff3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a8a19f; + background: #1b1918 +} +.hljs::selection, +.hljs ::selection { + background-color: #68615e; + color: #a8a19f +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #766e6b - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #766e6b +} +/* base04 - #9c9491 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9c9491 +} +/* base05 - #a8a19f - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a8a19f +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f22c40 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5320 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c38418 +} +.hljs-strong { + font-weight: bold; + color: #c38418 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7b9726 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3d97b8 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #407ee7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6666ea +} +.hljs-emphasis { + color: #6666ea; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c33ff3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-heath-light.css b/modules/highlighter/styles/base16/atelier-heath-light.css new file mode 100644 index 0000000..4add108 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-heath-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Heath Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-heath-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f7f3f7 Default Background +base01 #d8cad8 Lighter Background (Used for status bars, line number and folding marks) +base02 #ab9bab Selection Background +base03 #9e8f9e Comments, Invisibles, Line Highlighting +base04 #776977 Dark Foreground (Used for status bars) +base05 #695d69 Default Foreground, Caret, Delimiters, Operators +base06 #292329 Light Foreground (Not often used) +base07 #1b181b Light Background (Not often used) +base08 #ca402b Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a65926 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8a35 Classes, Markup Bold, Search Text Background +base0B #918b3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #159393 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #516aec Functions, Methods, Attribute IDs, Headings +base0E #7b59c0 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cc33cc Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #695d69; + background: #f7f3f7 +} +.hljs::selection, +.hljs ::selection { + background-color: #ab9bab; + color: #695d69 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9e8f9e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9e8f9e +} +/* base04 - #776977 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #776977 +} +/* base05 - #695d69 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #695d69 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca402b +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a65926 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8a35 +} +.hljs-strong { + font-weight: bold; + color: #bb8a35 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #918b3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #159393 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #516aec +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7b59c0 +} +.hljs-emphasis { + color: #7b59c0; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cc33cc +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-heath.css b/modules/highlighter/styles/base16/atelier-heath.css new file mode 100644 index 0000000..a95e42a --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-heath.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Heath + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-heath + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1b181b Default Background +base01 #292329 Lighter Background (Used for status bars, line number and folding marks) +base02 #695d69 Selection Background +base03 #776977 Comments, Invisibles, Line Highlighting +base04 #9e8f9e Dark Foreground (Used for status bars) +base05 #ab9bab Default Foreground, Caret, Delimiters, Operators +base06 #d8cad8 Light Foreground (Not often used) +base07 #f7f3f7 Light Background (Not often used) +base08 #ca402b Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a65926 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8a35 Classes, Markup Bold, Search Text Background +base0B #918b3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #159393 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #516aec Functions, Methods, Attribute IDs, Headings +base0E #7b59c0 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cc33cc Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #ab9bab; + background: #1b181b +} +.hljs::selection, +.hljs ::selection { + background-color: #695d69; + color: #ab9bab +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #776977 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #776977 +} +/* base04 - #9e8f9e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9e8f9e +} +/* base05 - #ab9bab - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #ab9bab +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca402b +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a65926 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8a35 +} +.hljs-strong { + font-weight: bold; + color: #bb8a35 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #918b3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #159393 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #516aec +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7b59c0 +} +.hljs-emphasis { + color: #7b59c0; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cc33cc +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-lakeside-light.css b/modules/highlighter/styles/base16/atelier-lakeside-light.css new file mode 100644 index 0000000..8355cbe --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-lakeside-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Lakeside Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-lakeside-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ebf8ff Default Background +base01 #c1e4f6 Lighter Background (Used for status bars, line number and folding marks) +base02 #7ea2b4 Selection Background +base03 #7195a8 Comments, Invisibles, Line Highlighting +base04 #5a7b8c Dark Foreground (Used for status bars) +base05 #516d7b Default Foreground, Caret, Delimiters, Operators +base06 #1f292e Light Foreground (Not often used) +base07 #161b1d Light Background (Not often used) +base08 #d22d72 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #935c25 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8a8a0f Classes, Markup Bold, Search Text Background +base0B #568c3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d8f6f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #257fad Functions, Methods, Attribute IDs, Headings +base0E #6b6bb8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b72dd2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #516d7b; + background: #ebf8ff +} +.hljs::selection, +.hljs ::selection { + background-color: #7ea2b4; + color: #516d7b +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7195a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7195a8 +} +/* base04 - #5a7b8c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5a7b8c +} +/* base05 - #516d7b - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #516d7b +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d22d72 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #935c25 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8a8a0f +} +.hljs-strong { + font-weight: bold; + color: #8a8a0f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #568c3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d8f6f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #257fad +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6b6bb8 +} +.hljs-emphasis { + color: #6b6bb8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b72dd2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-lakeside.css b/modules/highlighter/styles/base16/atelier-lakeside.css new file mode 100644 index 0000000..b25999c --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-lakeside.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Lakeside + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-lakeside + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #161b1d Default Background +base01 #1f292e Lighter Background (Used for status bars, line number and folding marks) +base02 #516d7b Selection Background +base03 #5a7b8c Comments, Invisibles, Line Highlighting +base04 #7195a8 Dark Foreground (Used for status bars) +base05 #7ea2b4 Default Foreground, Caret, Delimiters, Operators +base06 #c1e4f6 Light Foreground (Not often used) +base07 #ebf8ff Light Background (Not often used) +base08 #d22d72 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #935c25 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8a8a0f Classes, Markup Bold, Search Text Background +base0B #568c3b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d8f6f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #257fad Functions, Methods, Attribute IDs, Headings +base0E #6b6bb8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b72dd2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #7ea2b4; + background: #161b1d +} +.hljs::selection, +.hljs ::selection { + background-color: #516d7b; + color: #7ea2b4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5a7b8c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5a7b8c +} +/* base04 - #7195a8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7195a8 +} +/* base05 - #7ea2b4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #7ea2b4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d22d72 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #935c25 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8a8a0f +} +.hljs-strong { + font-weight: bold; + color: #8a8a0f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #568c3b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d8f6f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #257fad +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6b6bb8 +} +.hljs-emphasis { + color: #6b6bb8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b72dd2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-plateau-light.css b/modules/highlighter/styles/base16/atelier-plateau-light.css new file mode 100644 index 0000000..307bfa7 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-plateau-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Plateau Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-plateau-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f4ecec Default Background +base01 #e7dfdf Lighter Background (Used for status bars, line number and folding marks) +base02 #8a8585 Selection Background +base03 #7e7777 Comments, Invisibles, Line Highlighting +base04 #655d5d Dark Foreground (Used for status bars) +base05 #585050 Default Foreground, Caret, Delimiters, Operators +base06 #292424 Light Foreground (Not often used) +base07 #1b1818 Light Background (Not often used) +base08 #ca4949 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b45a3c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #4b8b8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5485b6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7272ca Functions, Methods, Attribute IDs, Headings +base0E #8464c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bd5187 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #585050; + background: #f4ecec +} +.hljs::selection, +.hljs ::selection { + background-color: #8a8585; + color: #585050 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7e7777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7e7777 +} +/* base04 - #655d5d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #655d5d +} +/* base05 - #585050 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #585050 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca4949 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b45a3c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4b8b8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5485b6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7272ca +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8464c4 +} +.hljs-emphasis { + color: #8464c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bd5187 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-plateau.css b/modules/highlighter/styles/base16/atelier-plateau.css new file mode 100644 index 0000000..53aeebd --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-plateau.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Plateau + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-plateau + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1b1818 Default Background +base01 #292424 Lighter Background (Used for status bars, line number and folding marks) +base02 #585050 Selection Background +base03 #655d5d Comments, Invisibles, Line Highlighting +base04 #7e7777 Dark Foreground (Used for status bars) +base05 #8a8585 Default Foreground, Caret, Delimiters, Operators +base06 #e7dfdf Light Foreground (Not often used) +base07 #f4ecec Light Background (Not often used) +base08 #ca4949 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b45a3c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06e3b Classes, Markup Bold, Search Text Background +base0B #4b8b8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5485b6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7272ca Functions, Methods, Attribute IDs, Headings +base0E #8464c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bd5187 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8a8585; + background: #1b1818 +} +.hljs::selection, +.hljs ::selection { + background-color: #585050; + color: #8a8585 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #655d5d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #655d5d +} +/* base04 - #7e7777 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7777 +} +/* base05 - #8a8585 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8a8585 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca4949 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b45a3c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06e3b +} +.hljs-strong { + font-weight: bold; + color: #a06e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4b8b8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5485b6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7272ca +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8464c4 +} +.hljs-emphasis { + color: #8464c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bd5187 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-savanna-light.css b/modules/highlighter/styles/base16/atelier-savanna-light.css new file mode 100644 index 0000000..b26d6f7 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-savanna-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Savanna Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-savanna-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ecf4ee Default Background +base01 #dfe7e2 Lighter Background (Used for status bars, line number and folding marks) +base02 #87928a Selection Background +base03 #78877d Comments, Invisibles, Line Highlighting +base04 #5f6d64 Dark Foreground (Used for status bars) +base05 #526057 Default Foreground, Caret, Delimiters, Operators +base06 #232a25 Light Foreground (Not often used) +base07 #171c19 Light Background (Not often used) +base08 #b16139 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #9f713c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a07e3b Classes, Markup Bold, Search Text Background +base0B #489963 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1c9aa0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #478c90 Functions, Methods, Attribute IDs, Headings +base0E #55859b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #867469 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #526057; + background: #ecf4ee +} +.hljs::selection, +.hljs ::selection { + background-color: #87928a; + color: #526057 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #78877d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #78877d +} +/* base04 - #5f6d64 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5f6d64 +} +/* base05 - #526057 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #526057 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b16139 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #9f713c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a07e3b +} +.hljs-strong { + font-weight: bold; + color: #a07e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #489963 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1c9aa0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #478c90 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #55859b +} +.hljs-emphasis { + color: #55859b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #867469 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-savanna.css b/modules/highlighter/styles/base16/atelier-savanna.css new file mode 100644 index 0000000..47998da --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-savanna.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Savanna + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-savanna + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #171c19 Default Background +base01 #232a25 Lighter Background (Used for status bars, line number and folding marks) +base02 #526057 Selection Background +base03 #5f6d64 Comments, Invisibles, Line Highlighting +base04 #78877d Dark Foreground (Used for status bars) +base05 #87928a Default Foreground, Caret, Delimiters, Operators +base06 #dfe7e2 Light Foreground (Not often used) +base07 #ecf4ee Light Background (Not often used) +base08 #b16139 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #9f713c Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a07e3b Classes, Markup Bold, Search Text Background +base0B #489963 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1c9aa0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #478c90 Functions, Methods, Attribute IDs, Headings +base0E #55859b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #867469 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #87928a; + background: #171c19 +} +.hljs::selection, +.hljs ::selection { + background-color: #526057; + color: #87928a +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f6d64 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f6d64 +} +/* base04 - #78877d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #78877d +} +/* base05 - #87928a - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #87928a +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b16139 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #9f713c +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a07e3b +} +.hljs-strong { + font-weight: bold; + color: #a07e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #489963 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1c9aa0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #478c90 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #55859b +} +.hljs-emphasis { + color: #55859b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #867469 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-seaside-light.css b/modules/highlighter/styles/base16/atelier-seaside-light.css new file mode 100644 index 0000000..c95fffb --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-seaside-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Seaside Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-seaside-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f4fbf4 Default Background +base01 #cfe8cf Lighter Background (Used for status bars, line number and folding marks) +base02 #8ca68c Selection Background +base03 #809980 Comments, Invisibles, Line Highlighting +base04 #687d68 Dark Foreground (Used for status bars) +base05 #5e6e5e Default Foreground, Caret, Delimiters, Operators +base06 #242924 Light Foreground (Not often used) +base07 #131513 Light Background (Not often used) +base08 #e6193c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #87711d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #98981b Classes, Markup Bold, Search Text Background +base0B #29a329 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1999b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d62f5 Functions, Methods, Attribute IDs, Headings +base0E #ad2bee Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e619c3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5e6e5e; + background: #f4fbf4 +} +.hljs::selection, +.hljs ::selection { + background-color: #8ca68c; + color: #5e6e5e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #809980 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #809980 +} +/* base04 - #687d68 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #687d68 +} +/* base05 - #5e6e5e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5e6e5e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e6193c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #87711d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #98981b +} +.hljs-strong { + font-weight: bold; + color: #98981b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #29a329 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1999b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d62f5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ad2bee +} +.hljs-emphasis { + color: #ad2bee; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e619c3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-seaside.css b/modules/highlighter/styles/base16/atelier-seaside.css new file mode 100644 index 0000000..7144e8b --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-seaside.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Seaside + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-seaside + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #131513 Default Background +base01 #242924 Lighter Background (Used for status bars, line number and folding marks) +base02 #5e6e5e Selection Background +base03 #687d68 Comments, Invisibles, Line Highlighting +base04 #809980 Dark Foreground (Used for status bars) +base05 #8ca68c Default Foreground, Caret, Delimiters, Operators +base06 #cfe8cf Light Foreground (Not often used) +base07 #f4fbf4 Light Background (Not often used) +base08 #e6193c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #87711d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #98981b Classes, Markup Bold, Search Text Background +base0B #29a329 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1999b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d62f5 Functions, Methods, Attribute IDs, Headings +base0E #ad2bee Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e619c3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8ca68c; + background: #131513 +} +.hljs::selection, +.hljs ::selection { + background-color: #5e6e5e; + color: #8ca68c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #687d68 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #687d68 +} +/* base04 - #809980 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #809980 +} +/* base05 - #8ca68c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8ca68c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e6193c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #87711d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #98981b +} +.hljs-strong { + font-weight: bold; + color: #98981b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #29a329 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1999b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d62f5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ad2bee +} +.hljs-emphasis { + color: #ad2bee; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e619c3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-sulphurpool-light.css b/modules/highlighter/styles/base16/atelier-sulphurpool-light.css new file mode 100644 index 0000000..77e7847 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-sulphurpool-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Sulphurpool Light + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-sulphurpool-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f5f7ff Default Background +base01 #dfe2f1 Lighter Background (Used for status bars, line number and folding marks) +base02 #979db4 Selection Background +base03 #898ea4 Comments, Invisibles, Line Highlighting +base04 #6b7394 Dark Foreground (Used for status bars) +base05 #5e6687 Default Foreground, Caret, Delimiters, Operators +base06 #293256 Light Foreground (Not often used) +base07 #202746 Light Background (Not often used) +base08 #c94922 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c76b29 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c08b30 Classes, Markup Bold, Search Text Background +base0B #ac9739 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #22a2c9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d8fd1 Functions, Methods, Attribute IDs, Headings +base0E #6679cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9c637a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5e6687; + background: #f5f7ff +} +.hljs::selection, +.hljs ::selection { + background-color: #979db4; + color: #5e6687 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #898ea4 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #898ea4 +} +/* base04 - #6b7394 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6b7394 +} +/* base05 - #5e6687 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5e6687 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c94922 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c76b29 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c08b30 +} +.hljs-strong { + font-weight: bold; + color: #c08b30 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ac9739 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #22a2c9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d8fd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6679cc +} +.hljs-emphasis { + color: #6679cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9c637a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atelier-sulphurpool.css b/modules/highlighter/styles/base16/atelier-sulphurpool.css new file mode 100644 index 0000000..fb95c32 --- /dev/null +++ b/modules/highlighter/styles/base16/atelier-sulphurpool.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atelier Sulphurpool + Author: Bram de Haan (http://atelierbramdehaan.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atelier-sulphurpool + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #202746 Default Background +base01 #293256 Lighter Background (Used for status bars, line number and folding marks) +base02 #5e6687 Selection Background +base03 #6b7394 Comments, Invisibles, Line Highlighting +base04 #898ea4 Dark Foreground (Used for status bars) +base05 #979db4 Default Foreground, Caret, Delimiters, Operators +base06 #dfe2f1 Light Foreground (Not often used) +base07 #f5f7ff Light Background (Not often used) +base08 #c94922 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c76b29 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c08b30 Classes, Markup Bold, Search Text Background +base0B #ac9739 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #22a2c9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3d8fd1 Functions, Methods, Attribute IDs, Headings +base0E #6679cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9c637a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #979db4; + background: #202746 +} +.hljs::selection, +.hljs ::selection { + background-color: #5e6687; + color: #979db4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6b7394 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6b7394 +} +/* base04 - #898ea4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #898ea4 +} +/* base05 - #979db4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #979db4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c94922 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c76b29 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c08b30 +} +.hljs-strong { + font-weight: bold; + color: #c08b30 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ac9739 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #22a2c9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3d8fd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6679cc +} +.hljs-emphasis { + color: #6679cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9c637a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/atlas.css b/modules/highlighter/styles/base16/atlas.css new file mode 100644 index 0000000..e0c83aa --- /dev/null +++ b/modules/highlighter/styles/base16/atlas.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Atlas + Author: Alex Lende (https://ajlende.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme atlas + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #002635 Default Background +base01 #00384d Lighter Background (Used for status bars, line number and folding marks) +base02 #517F8D Selection Background +base03 #6C8B91 Comments, Invisibles, Line Highlighting +base04 #869696 Dark Foreground (Used for status bars) +base05 #a1a19a Default Foreground, Caret, Delimiters, Operators +base06 #e6e6dc Light Foreground (Not often used) +base07 #fafaf8 Light Background (Not often used) +base08 #ff5a67 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f08e48 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffcc1b Classes, Markup Bold, Search Text Background +base0B #7fc06e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #14747e Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5dd7b9 Functions, Methods, Attribute IDs, Headings +base0E #9a70a4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c43060 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a1a19a; + background: #002635 +} +.hljs::selection, +.hljs ::selection { + background-color: #517F8D; + color: #a1a19a +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6C8B91 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6C8B91 +} +/* base04 - #869696 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #869696 +} +/* base05 - #a1a19a - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a1a19a +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff5a67 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f08e48 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffcc1b +} +.hljs-strong { + font-weight: bold; + color: #ffcc1b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7fc06e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #14747e +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5dd7b9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9a70a4 +} +.hljs-emphasis { + color: #9a70a4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c43060 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/bespin.css b/modules/highlighter/styles/base16/bespin.css new file mode 100644 index 0000000..02c08cc --- /dev/null +++ b/modules/highlighter/styles/base16/bespin.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Bespin + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme bespin + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #28211c Default Background +base01 #36312e Lighter Background (Used for status bars, line number and folding marks) +base02 #5e5d5c Selection Background +base03 #666666 Comments, Invisibles, Line Highlighting +base04 #797977 Dark Foreground (Used for status bars) +base05 #8a8986 Default Foreground, Caret, Delimiters, Operators +base06 #9d9b97 Light Foreground (Not often used) +base07 #baae9e Light Background (Not often used) +base08 #cf6a4c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cf7d34 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f9ee98 Classes, Markup Bold, Search Text Background +base0B #54be0d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #afc4db Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5ea6ea Functions, Methods, Attribute IDs, Headings +base0E #9b859d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #937121 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8a8986; + background: #28211c +} +.hljs::selection, +.hljs ::selection { + background-color: #5e5d5c; + color: #8a8986 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #666666 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #666666 +} +/* base04 - #797977 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #797977 +} +/* base05 - #8a8986 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8a8986 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cf6a4c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cf7d34 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f9ee98 +} +.hljs-strong { + font-weight: bold; + color: #f9ee98 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #54be0d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #afc4db +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5ea6ea +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9b859d +} +.hljs-emphasis { + color: #9b859d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #937121 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-bathory.css b/modules/highlighter/styles/base16/black-metal-bathory.css new file mode 100644 index 0000000..05265a6 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-bathory.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Bathory) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-bathory + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e78a53 Classes, Markup Bold, Search Text Background +base0B #fbcb97 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e78a53 +} +.hljs-strong { + font-weight: bold; + color: #e78a53 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #fbcb97 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-burzum.css b/modules/highlighter/styles/base16/black-metal-burzum.css new file mode 100644 index 0000000..1ec27ec --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-burzum.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Burzum) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-burzum + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #99bbaa Classes, Markup Bold, Search Text Background +base0B #ddeecc Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #99bbaa +} +.hljs-strong { + font-weight: bold; + color: #99bbaa +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ddeecc +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-dark-funeral.css b/modules/highlighter/styles/base16/black-metal-dark-funeral.css new file mode 100644 index 0000000..97d59f3 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-dark-funeral.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Dark Funeral) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-dark-funeral + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #5f81a5 Classes, Markup Bold, Search Text Background +base0B #d0dfee Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #5f81a5 +} +.hljs-strong { + font-weight: bold; + color: #5f81a5 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #d0dfee +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-gorgoroth.css b/modules/highlighter/styles/base16/black-metal-gorgoroth.css new file mode 100644 index 0000000..a819c58 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-gorgoroth.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Gorgoroth) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-gorgoroth + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8c7f70 Classes, Markup Bold, Search Text Background +base0B #9b8d7f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8c7f70 +} +.hljs-strong { + font-weight: bold; + color: #8c7f70 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #9b8d7f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-immortal.css b/modules/highlighter/styles/base16/black-metal-immortal.css new file mode 100644 index 0000000..b6ed971 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-immortal.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Immortal) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-immortal + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #556677 Classes, Markup Bold, Search Text Background +base0B #7799bb Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #556677 +} +.hljs-strong { + font-weight: bold; + color: #556677 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7799bb +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-khold.css b/modules/highlighter/styles/base16/black-metal-khold.css new file mode 100644 index 0000000..645949a --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-khold.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Khold) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-khold + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #974b46 Classes, Markup Bold, Search Text Background +base0B #eceee3 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #974b46 +} +.hljs-strong { + font-weight: bold; + color: #974b46 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #eceee3 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-marduk.css b/modules/highlighter/styles/base16/black-metal-marduk.css new file mode 100644 index 0000000..23bd563 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-marduk.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Marduk) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-marduk + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #626b67 Classes, Markup Bold, Search Text Background +base0B #a5aaa7 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #626b67 +} +.hljs-strong { + font-weight: bold; + color: #626b67 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a5aaa7 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-mayhem.css b/modules/highlighter/styles/base16/black-metal-mayhem.css new file mode 100644 index 0000000..29537c9 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-mayhem.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Mayhem) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-mayhem + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #eecc6c Classes, Markup Bold, Search Text Background +base0B #f3ecd4 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #eecc6c +} +.hljs-strong { + font-weight: bold; + color: #eecc6c +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f3ecd4 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-nile.css b/modules/highlighter/styles/base16/black-metal-nile.css new file mode 100644 index 0000000..25cd2a7 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-nile.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Nile) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-nile + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #777755 Classes, Markup Bold, Search Text Background +base0B #aa9988 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #777755 +} +.hljs-strong { + font-weight: bold; + color: #777755 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #aa9988 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal-venom.css b/modules/highlighter/styles/base16/black-metal-venom.css new file mode 100644 index 0000000..9148f3e --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal-venom.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal (Venom) + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal-venom + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #79241f Classes, Markup Bold, Search Text Background +base0B #f8f7f2 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #79241f +} +.hljs-strong { + font-weight: bold; + color: #79241f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f8f7f2 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/black-metal.css b/modules/highlighter/styles/base16/black-metal.css new file mode 100644 index 0000000..cf86944 --- /dev/null +++ b/modules/highlighter/styles/base16/black-metal.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Black Metal + Author: metalelf0 (https://github.com/metalelf0) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme black-metal + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #121212 Lighter Background (Used for status bars, line number and folding marks) +base02 #222222 Selection Background +base03 #333333 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #c1c1c1 Default Foreground, Caret, Delimiters, Operators +base06 #999999 Light Foreground (Not often used) +base07 #c1c1c1 Light Background (Not often used) +base08 #5f8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aaaaaa Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a06666 Classes, Markup Bold, Search Text Background +base0B #dd9999 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #aaaaaa Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #888888 Functions, Methods, Attribute IDs, Headings +base0E #999999 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #444444 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c1c1; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #222222; + color: #c1c1c1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #333333 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #333333 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #c1c1c1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c1c1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #5f8787 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aaaaaa +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a06666 +} +.hljs-strong { + font-weight: bold; + color: #a06666 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #dd9999 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #aaaaaa +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #888888 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #999999 +} +.hljs-emphasis { + color: #999999; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #444444 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brewer.css b/modules/highlighter/styles/base16/brewer.css new file mode 100644 index 0000000..900e867 --- /dev/null +++ b/modules/highlighter/styles/base16/brewer.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brewer + Author: Timothée Poisot (http://github.com/tpoisot) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brewer + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0c0d0e Default Background +base01 #2e2f30 Lighter Background (Used for status bars, line number and folding marks) +base02 #515253 Selection Background +base03 #737475 Comments, Invisibles, Line Highlighting +base04 #959697 Dark Foreground (Used for status bars) +base05 #b7b8b9 Default Foreground, Caret, Delimiters, Operators +base06 #dadbdc Light Foreground (Not often used) +base07 #fcfdfe Light Background (Not often used) +base08 #e31a1c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e6550d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dca060 Classes, Markup Bold, Search Text Background +base0B #31a354 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #80b1d3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3182bd Functions, Methods, Attribute IDs, Headings +base0E #756bb1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b15928 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b7b8b9; + background: #0c0d0e +} +.hljs::selection, +.hljs ::selection { + background-color: #515253; + color: #b7b8b9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #737475 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #737475 +} +/* base04 - #959697 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #959697 +} +/* base05 - #b7b8b9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b7b8b9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e31a1c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e6550d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dca060 +} +.hljs-strong { + font-weight: bold; + color: #dca060 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #31a354 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #80b1d3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3182bd +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #756bb1 +} +.hljs-emphasis { + color: #756bb1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b15928 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/bright.css b/modules/highlighter/styles/base16/bright.css new file mode 100644 index 0000000..a320ce8 --- /dev/null +++ b/modules/highlighter/styles/base16/bright.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Bright + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme bright + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #505050 Selection Background +base03 #b0b0b0 Comments, Invisibles, Line Highlighting +base04 #d0d0d0 Dark Foreground (Used for status bars) +base05 #e0e0e0 Default Foreground, Caret, Delimiters, Operators +base06 #f5f5f5 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #fb0120 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fc6d24 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fda331 Classes, Markup Bold, Search Text Background +base0B #a1c659 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #76c7b7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6fb3d2 Functions, Methods, Attribute IDs, Headings +base0E #d381c3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #be643c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0e0e0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #505050; + color: #e0e0e0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b0b0b0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b0b0b0 +} +/* base04 - #d0d0d0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #d0d0d0 +} +/* base05 - #e0e0e0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0e0e0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb0120 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fc6d24 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fda331 +} +.hljs-strong { + font-weight: bold; + color: #fda331 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1c659 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #76c7b7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6fb3d2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d381c3 +} +.hljs-emphasis { + color: #d381c3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #be643c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brogrammer.css b/modules/highlighter/styles/base16/brogrammer.css new file mode 100644 index 0000000..ee6cc74 --- /dev/null +++ b/modules/highlighter/styles/base16/brogrammer.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brogrammer + Author: Vik Ramanujam (http://github.com/piggyslasher) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brogrammer + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1f1f1f Default Background +base01 #f81118 Lighter Background (Used for status bars, line number and folding marks) +base02 #2dc55e Selection Background +base03 #ecba0f Comments, Invisibles, Line Highlighting +base04 #2a84d2 Dark Foreground (Used for status bars) +base05 #4e5ab7 Default Foreground, Caret, Delimiters, Operators +base06 #1081d6 Light Foreground (Not often used) +base07 #d6dbe5 Light Background (Not often used) +base08 #d6dbe5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #de352e Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #1dd361 Classes, Markup Bold, Search Text Background +base0B #f3bd09 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1081d6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5350b9 Functions, Methods, Attribute IDs, Headings +base0E #0f7ddb Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ffffff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #4e5ab7; + background: #1f1f1f +} +.hljs::selection, +.hljs ::selection { + background-color: #2dc55e; + color: #4e5ab7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #ecba0f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #ecba0f +} +/* base04 - #2a84d2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #2a84d2 +} +/* base05 - #4e5ab7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #4e5ab7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d6dbe5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #de352e +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #1dd361 +} +.hljs-strong { + font-weight: bold; + color: #1dd361 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f3bd09 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1081d6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5350b9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #0f7ddb +} +.hljs-emphasis { + color: #0f7ddb; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ffffff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brush-trees-dark.css b/modules/highlighter/styles/base16/brush-trees-dark.css new file mode 100644 index 0000000..d3e310e --- /dev/null +++ b/modules/highlighter/styles/base16/brush-trees-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brush Trees Dark + Author: Abraham White + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brush-trees-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #485867 Default Background +base01 #5A6D7A Lighter Background (Used for status bars, line number and folding marks) +base02 #6D828E Selection Background +base03 #8299A1 Comments, Invisibles, Line Highlighting +base04 #98AFB5 Dark Foreground (Used for status bars) +base05 #B0C5C8 Default Foreground, Caret, Delimiters, Operators +base06 #C9DBDC Light Foreground (Not often used) +base07 #E3EFEF Light Background (Not often used) +base08 #b38686 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d8bba2 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #aab386 Classes, Markup Bold, Search Text Background +base0B #87b386 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86b3b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #868cb3 Functions, Methods, Attribute IDs, Headings +base0E #b386b2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b39f9f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #B0C5C8; + background: #485867 +} +.hljs::selection, +.hljs ::selection { + background-color: #6D828E; + color: #B0C5C8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #8299A1 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #8299A1 +} +/* base04 - #98AFB5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #98AFB5 +} +/* base05 - #B0C5C8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #B0C5C8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b38686 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d8bba2 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #aab386 +} +.hljs-strong { + font-weight: bold; + color: #aab386 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #87b386 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86b3b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #868cb3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b386b2 +} +.hljs-emphasis { + color: #b386b2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b39f9f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/brush-trees.css b/modules/highlighter/styles/base16/brush-trees.css new file mode 100644 index 0000000..15ecfc5 --- /dev/null +++ b/modules/highlighter/styles/base16/brush-trees.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Brush Trees + Author: Abraham White + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme brush-trees + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #E3EFEF Default Background +base01 #C9DBDC Lighter Background (Used for status bars, line number and folding marks) +base02 #B0C5C8 Selection Background +base03 #98AFB5 Comments, Invisibles, Line Highlighting +base04 #8299A1 Dark Foreground (Used for status bars) +base05 #6D828E Default Foreground, Caret, Delimiters, Operators +base06 #5A6D7A Light Foreground (Not often used) +base07 #485867 Light Background (Not often used) +base08 #b38686 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d8bba2 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #aab386 Classes, Markup Bold, Search Text Background +base0B #87b386 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86b3b3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #868cb3 Functions, Methods, Attribute IDs, Headings +base0E #b386b2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b39f9f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #6D828E; + background: #E3EFEF +} +.hljs::selection, +.hljs ::selection { + background-color: #B0C5C8; + color: #6D828E +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #98AFB5 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #98AFB5 +} +/* base04 - #8299A1 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8299A1 +} +/* base05 - #6D828E - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #6D828E +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b38686 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d8bba2 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #aab386 +} +.hljs-strong { + font-weight: bold; + color: #aab386 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #87b386 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86b3b3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #868cb3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b386b2 +} +.hljs-emphasis { + color: #b386b2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b39f9f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/chalk.css b/modules/highlighter/styles/base16/chalk.css new file mode 100644 index 0000000..c0dfadd --- /dev/null +++ b/modules/highlighter/styles/base16/chalk.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Chalk + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme chalk + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151515 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #b0b0b0 Dark Foreground (Used for status bars) +base05 #d0d0d0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #f5f5f5 Light Background (Not often used) +base08 #fb9fb1 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eda987 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ddb26f Classes, Markup Bold, Search Text Background +base0B #acc267 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #12cfc0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6fc2ef Functions, Methods, Attribute IDs, Headings +base0E #e1a3ee Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #deaf8f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0d0d0; + background: #151515 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #d0d0d0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #b0b0b0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b0b0b0 +} +/* base05 - #d0d0d0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0d0d0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb9fb1 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eda987 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ddb26f +} +.hljs-strong { + font-weight: bold; + color: #ddb26f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #acc267 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #12cfc0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6fc2ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #e1a3ee +} +.hljs-emphasis { + color: #e1a3ee; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #deaf8f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/circus.css b/modules/highlighter/styles/base16/circus.css new file mode 100644 index 0000000..25efd46 --- /dev/null +++ b/modules/highlighter/styles/base16/circus.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Circus + Author: Stephan Boyer (https://github.com/stepchowfun) and Esther Wang (https://github.com/ewang12) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme circus + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #191919 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #5f5a60 Comments, Invisibles, Line Highlighting +base04 #505050 Dark Foreground (Used for status bars) +base05 #a7a7a7 Default Foreground, Caret, Delimiters, Operators +base06 #808080 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dc657d Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #4bb1a7 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c3ba63 Classes, Markup Bold, Search Text Background +base0B #84b97c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4bb1a7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #639ee4 Functions, Methods, Attribute IDs, Headings +base0E #b888e2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b888e2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a7a7a7; + background: #191919 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #a7a7a7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f5a60 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f5a60 +} +/* base04 - #505050 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #505050 +} +/* base05 - #a7a7a7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a7a7a7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dc657d +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #4bb1a7 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c3ba63 +} +.hljs-strong { + font-weight: bold; + color: #c3ba63 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #84b97c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4bb1a7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #639ee4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b888e2 +} +.hljs-emphasis { + color: #b888e2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b888e2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/classic-dark.css b/modules/highlighter/styles/base16/classic-dark.css new file mode 100644 index 0000000..ca1ea2d --- /dev/null +++ b/modules/highlighter/styles/base16/classic-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Classic Dark + Author: Jason Heeris (http://heeris.id.au) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme classic-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151515 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #B0B0B0 Dark Foreground (Used for status bars) +base05 #D0D0D0 Default Foreground, Caret, Delimiters, Operators +base06 #E0E0E0 Light Foreground (Not often used) +base07 #F5F5F5 Light Background (Not often used) +base08 #AC4142 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D28445 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F4BF75 Classes, Markup Bold, Search Text Background +base0B #90A959 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #75B5AA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6A9FB5 Functions, Methods, Attribute IDs, Headings +base0E #AA759F Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8F5536 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0D0; + background: #151515 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #D0D0D0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #B0B0B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B0B0B0 +} +/* base05 - #D0D0D0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0D0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #AC4142 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D28445 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F4BF75 +} +.hljs-strong { + font-weight: bold; + color: #F4BF75 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #90A959 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #75B5AA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6A9FB5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AA759F +} +.hljs-emphasis { + color: #AA759F; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8F5536 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/classic-light.css b/modules/highlighter/styles/base16/classic-light.css new file mode 100644 index 0000000..3e9a627 --- /dev/null +++ b/modules/highlighter/styles/base16/classic-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Classic Light + Author: Jason Heeris (http://heeris.id.au) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme classic-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #F5F5F5 Default Background +base01 #E0E0E0 Lighter Background (Used for status bars, line number and folding marks) +base02 #D0D0D0 Selection Background +base03 #B0B0B0 Comments, Invisibles, Line Highlighting +base04 #505050 Dark Foreground (Used for status bars) +base05 #303030 Default Foreground, Caret, Delimiters, Operators +base06 #202020 Light Foreground (Not often used) +base07 #151515 Light Background (Not often used) +base08 #AC4142 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D28445 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F4BF75 Classes, Markup Bold, Search Text Background +base0B #90A959 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #75B5AA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6A9FB5 Functions, Methods, Attribute IDs, Headings +base0E #AA759F Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8F5536 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #303030; + background: #F5F5F5 +} +.hljs::selection, +.hljs ::selection { + background-color: #D0D0D0; + color: #303030 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #B0B0B0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #B0B0B0 +} +/* base04 - #505050 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #505050 +} +/* base05 - #303030 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #303030 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #AC4142 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D28445 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F4BF75 +} +.hljs-strong { + font-weight: bold; + color: #F4BF75 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #90A959 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #75B5AA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6A9FB5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AA759F +} +.hljs-emphasis { + color: #AA759F; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8F5536 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/codeschool.css b/modules/highlighter/styles/base16/codeschool.css new file mode 100644 index 0000000..1ae0db7 --- /dev/null +++ b/modules/highlighter/styles/base16/codeschool.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Codeschool + Author: blockloop + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme codeschool + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #232c31 Default Background +base01 #1c3657 Lighter Background (Used for status bars, line number and folding marks) +base02 #2a343a Selection Background +base03 #3f4944 Comments, Invisibles, Line Highlighting +base04 #84898c Dark Foreground (Used for status bars) +base05 #9ea7a6 Default Foreground, Caret, Delimiters, Operators +base06 #a7cfa3 Light Foreground (Not often used) +base07 #b5d8f6 Light Background (Not often used) +base08 #2a5491 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #43820d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a03b1e Classes, Markup Bold, Search Text Background +base0B #237986 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #b02f30 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #484d79 Functions, Methods, Attribute IDs, Headings +base0E #c59820 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c98344 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #9ea7a6; + background: #232c31 +} +.hljs::selection, +.hljs ::selection { + background-color: #2a343a; + color: #9ea7a6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #3f4944 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #3f4944 +} +/* base04 - #84898c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #84898c +} +/* base05 - #9ea7a6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #9ea7a6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #2a5491 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #43820d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a03b1e +} +.hljs-strong { + font-weight: bold; + color: #a03b1e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #237986 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #b02f30 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #484d79 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c59820 +} +.hljs-emphasis { + color: #c59820; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c98344 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/colors.css b/modules/highlighter/styles/base16/colors.css new file mode 100644 index 0000000..12bf433 --- /dev/null +++ b/modules/highlighter/styles/base16/colors.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Colors + Author: mrmrs (http://clrs.cc) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme colors + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #111111 Default Background +base01 #333333 Lighter Background (Used for status bars, line number and folding marks) +base02 #555555 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #999999 Dark Foreground (Used for status bars) +base05 #bbbbbb Default Foreground, Caret, Delimiters, Operators +base06 #dddddd Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff4136 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff851b Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffdc00 Classes, Markup Bold, Search Text Background +base0B #2ecc40 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7fdbff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0074d9 Functions, Methods, Attribute IDs, Headings +base0E #b10dc9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #85144b Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #bbbbbb; + background: #111111 +} +.hljs::selection, +.hljs ::selection { + background-color: #555555; + color: #bbbbbb +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #999999 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #999999 +} +/* base05 - #bbbbbb - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #bbbbbb +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff4136 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff851b +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffdc00 +} +.hljs-strong { + font-weight: bold; + color: #ffdc00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2ecc40 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7fdbff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0074d9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b10dc9 +} +.hljs-emphasis { + color: #b10dc9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #85144b +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/cupcake.css b/modules/highlighter/styles/base16/cupcake.css new file mode 100644 index 0000000..a292e27 --- /dev/null +++ b/modules/highlighter/styles/base16/cupcake.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Cupcake + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme cupcake + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fbf1f2 Default Background +base01 #f2f1f4 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d5dd Selection Background +base03 #bfb9c6 Comments, Invisibles, Line Highlighting +base04 #a59daf Dark Foreground (Used for status bars) +base05 #8b8198 Default Foreground, Caret, Delimiters, Operators +base06 #72677E Light Foreground (Not often used) +base07 #585062 Light Background (Not often used) +base08 #D57E85 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #EBB790 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #DCB16C Classes, Markup Bold, Search Text Background +base0B #A3B367 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #69A9A7 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7297B9 Functions, Methods, Attribute IDs, Headings +base0E #BB99B4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #BAA58C Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #8b8198; + background: #fbf1f2 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d5dd; + color: #8b8198 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bfb9c6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bfb9c6 +} +/* base04 - #a59daf - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a59daf +} +/* base05 - #8b8198 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #8b8198 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #D57E85 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #EBB790 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #DCB16C +} +.hljs-strong { + font-weight: bold; + color: #DCB16C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #A3B367 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #69A9A7 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7297B9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #BB99B4 +} +.hljs-emphasis { + color: #BB99B4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #BAA58C +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/cupertino.css b/modules/highlighter/styles/base16/cupertino.css new file mode 100644 index 0000000..53e947c --- /dev/null +++ b/modules/highlighter/styles/base16/cupertino.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Cupertino + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme cupertino + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #c0c0c0 Lighter Background (Used for status bars, line number and folding marks) +base02 #c0c0c0 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #404040 Default Foreground, Caret, Delimiters, Operators +base06 #404040 Light Foreground (Not often used) +base07 #5e5e5e Light Background (Not often used) +base08 #c41a15 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb8500 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #826b28 Classes, Markup Bold, Search Text Background +base0B #007400 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #318495 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000ff Functions, Methods, Attribute IDs, Headings +base0E #a90d91 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #826b28 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #404040; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c0c0c0; + color: #404040 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #404040 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #404040 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c41a15 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb8500 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #826b28 +} +.hljs-strong { + font-weight: bold; + color: #826b28 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #007400 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #318495 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a90d91 +} +.hljs-emphasis { + color: #a90d91; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #826b28 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/danqing.css b/modules/highlighter/styles/base16/danqing.css new file mode 100644 index 0000000..aa8cd17 --- /dev/null +++ b/modules/highlighter/styles/base16/danqing.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: DanQing + Author: Wenhan Zhu (Cosmos) (zhuwenhan950913@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme danqing + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d302f Default Background +base01 #434846 Lighter Background (Used for status bars, line number and folding marks) +base02 #5a605d Selection Background +base03 #9da8a3 Comments, Invisibles, Line Highlighting +base04 #cad8d2 Dark Foreground (Used for status bars) +base05 #e0f0eF Default Foreground, Caret, Delimiters, Operators +base06 #ecf6f2 Light Foreground (Not often used) +base07 #fcfefd Light Background (Not often used) +base08 #F9906F Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #B38A61 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F0C239 Classes, Markup Bold, Search Text Background +base0B #8AB361 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #30DFF3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #B0A4E3 Functions, Methods, Attribute IDs, Headings +base0E #CCA4E3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #CA6924 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0f0eF; + background: #2d302f +} +.hljs::selection, +.hljs ::selection { + background-color: #5a605d; + color: #e0f0eF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9da8a3 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9da8a3 +} +/* base04 - #cad8d2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #cad8d2 +} +/* base05 - #e0f0eF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0f0eF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F9906F +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #B38A61 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F0C239 +} +.hljs-strong { + font-weight: bold; + color: #F0C239 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8AB361 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #30DFF3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #B0A4E3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #CCA4E3 +} +.hljs-emphasis { + color: #CCA4E3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #CA6924 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/darcula.css b/modules/highlighter/styles/base16/darcula.css new file mode 100644 index 0000000..e9fa32d --- /dev/null +++ b/modules/highlighter/styles/base16/darcula.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Darcula + Author: jetbrains + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme darcula + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2b2b2b Default Background +base01 #323232 Lighter Background (Used for status bars, line number and folding marks) +base02 #323232 Selection Background +base03 #606366 Comments, Invisibles, Line Highlighting +base04 #a4a3a3 Dark Foreground (Used for status bars) +base05 #a9b7c6 Default Foreground, Caret, Delimiters, Operators +base06 #ffc66d Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #4eade5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #689757 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bbb529 Classes, Markup Bold, Search Text Background +base0B #6a8759 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #629755 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #9876aa Functions, Methods, Attribute IDs, Headings +base0E #cc7832 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #808080 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a9b7c6; + background: #2b2b2b +} +.hljs::selection, +.hljs ::selection { + background-color: #323232; + color: #a9b7c6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #606366 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #606366 +} +/* base04 - #a4a3a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a4a3a3 +} +/* base05 - #a9b7c6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a9b7c6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #4eade5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #689757 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bbb529 +} +.hljs-strong { + font-weight: bold; + color: #bbb529 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6a8759 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #629755 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #9876aa +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc7832 +} +.hljs-emphasis { + color: #cc7832; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #808080 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/dark-violet.css b/modules/highlighter/styles/base16/dark-violet.css new file mode 100644 index 0000000..8f6e6cf --- /dev/null +++ b/modules/highlighter/styles/base16/dark-violet.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Dark Violet + Author: ruler501 (https://github.com/ruler501/base16-darkviolet) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme dark-violet + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #231a40 Lighter Background (Used for status bars, line number and folding marks) +base02 #432d59 Selection Background +base03 #593380 Comments, Invisibles, Line Highlighting +base04 #00ff00 Dark Foreground (Used for status bars) +base05 #b08ae6 Default Foreground, Caret, Delimiters, Operators +base06 #9045e6 Light Foreground (Not often used) +base07 #a366ff Light Background (Not often used) +base08 #a82ee6 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bb66cc Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f29df2 Classes, Markup Bold, Search Text Background +base0B #4595e6 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #40dfff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4136d9 Functions, Methods, Attribute IDs, Headings +base0E #7e5ce6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a886bf Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b08ae6; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #432d59; + color: #b08ae6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #593380 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #593380 +} +/* base04 - #00ff00 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #00ff00 +} +/* base05 - #b08ae6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b08ae6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #a82ee6 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bb66cc +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f29df2 +} +.hljs-strong { + font-weight: bold; + color: #f29df2 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4595e6 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #40dfff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4136d9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7e5ce6 +} +.hljs-emphasis { + color: #7e5ce6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a886bf +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/darkmoss.css b/modules/highlighter/styles/base16/darkmoss.css new file mode 100644 index 0000000..5a619df --- /dev/null +++ b/modules/highlighter/styles/base16/darkmoss.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: darkmoss + Author: Gabriel Avanzi (https://github.com/avanzzzi) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme darkmoss + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #171e1f Default Background +base01 #252c2d Lighter Background (Used for status bars, line number and folding marks) +base02 #373c3d Selection Background +base03 #555e5f Comments, Invisibles, Line Highlighting +base04 #818f80 Dark Foreground (Used for status bars) +base05 #c7c7a5 Default Foreground, Caret, Delimiters, Operators +base06 #e3e3c8 Light Foreground (Not often used) +base07 #e1eaef Light Background (Not often used) +base08 #ff4658 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e6db74 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fdb11f Classes, Markup Bold, Search Text Background +base0B #499180 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #66d9ef Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #498091 Functions, Methods, Attribute IDs, Headings +base0E #9bc0c8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d27b53 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c7c7a5; + background: #171e1f +} +.hljs::selection, +.hljs ::selection { + background-color: #373c3d; + color: #c7c7a5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555e5f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555e5f +} +/* base04 - #818f80 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #818f80 +} +/* base05 - #c7c7a5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c7c7a5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff4658 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e6db74 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fdb11f +} +.hljs-strong { + font-weight: bold; + color: #fdb11f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #499180 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #66d9ef +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #498091 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9bc0c8 +} +.hljs-emphasis { + color: #9bc0c8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d27b53 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/darktooth.css b/modules/highlighter/styles/base16/darktooth.css new file mode 100644 index 0000000..bffff9c --- /dev/null +++ b/modules/highlighter/styles/base16/darktooth.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Darktooth + Author: Jason Milkins (https://github.com/jasonm23) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme darktooth + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1D2021 Default Background +base01 #32302F Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665C54 Comments, Invisibles, Line Highlighting +base04 #928374 Dark Foreground (Used for status bars) +base05 #A89984 Default Foreground, Caret, Delimiters, Operators +base06 #D5C4A1 Light Foreground (Not often used) +base07 #FDF4C1 Light Background (Not often used) +base08 #FB543F Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FE8625 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FAC03B Classes, Markup Bold, Search Text Background +base0B #95C085 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8BA59B Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0D6678 Functions, Methods, Attribute IDs, Headings +base0E #8F4673 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #A87322 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #A89984; + background: #1D2021 +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #A89984 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665C54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665C54 +} +/* base04 - #928374 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #928374 +} +/* base05 - #A89984 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #A89984 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FB543F +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FE8625 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FAC03B +} +.hljs-strong { + font-weight: bold; + color: #FAC03B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #95C085 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8BA59B +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0D6678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8F4673 +} +.hljs-emphasis { + color: #8F4673; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #A87322 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/decaf.css b/modules/highlighter/styles/base16/decaf.css new file mode 100644 index 0000000..bccfa1c --- /dev/null +++ b/modules/highlighter/styles/base16/decaf.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Decaf + Author: Alex Mirrington (https://github.com/alexmirrington) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme decaf + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff7f7b Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffbf70 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffd67c Classes, Markup Bold, Search Text Background +base0B #beda78 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #bed6ff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #90bee1 Functions, Methods, Attribute IDs, Headings +base0E #efb3f7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ff93b3 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff7f7b +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffbf70 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffd67c +} +.hljs-strong { + font-weight: bold; + color: #ffd67c +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #beda78 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #bed6ff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #90bee1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #efb3f7 +} +.hljs-emphasis { + color: #efb3f7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ff93b3 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/default-dark.css b/modules/highlighter/styles/base16/default-dark.css new file mode 100644 index 0000000..0b7cb99 --- /dev/null +++ b/modules/highlighter/styles/base16/default-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Default Dark + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme default-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #181818 Default Background +base01 #282828 Lighter Background (Used for status bars, line number and folding marks) +base02 #383838 Selection Background +base03 #585858 Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #d8d8d8 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #ab4642 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f7ca88 Classes, Markup Bold, Search Text Background +base0B #a1b56c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86c1b9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cafc2 Functions, Methods, Attribute IDs, Headings +base0E #ba8baf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d8d8d8; + background: #181818 +} +.hljs::selection, +.hljs ::selection { + background-color: #383838; + color: #d8d8d8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #585858 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #585858 +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #d8d8d8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d8d8d8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ab4642 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f7ca88 +} +.hljs-strong { + font-weight: bold; + color: #f7ca88 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1b56c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86c1b9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cafc2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ba8baf +} +.hljs-emphasis { + color: #ba8baf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/default-light.css b/modules/highlighter/styles/base16/default-light.css new file mode 100644 index 0000000..16d5e9e --- /dev/null +++ b/modules/highlighter/styles/base16/default-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Default Light + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme default-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f8 Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d8d8 Selection Background +base03 #b8b8b8 Comments, Invisibles, Line Highlighting +base04 #585858 Dark Foreground (Used for status bars) +base05 #383838 Default Foreground, Caret, Delimiters, Operators +base06 #282828 Light Foreground (Not often used) +base07 #181818 Light Background (Not often used) +base08 #ab4642 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f7ca88 Classes, Markup Bold, Search Text Background +base0B #a1b56c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #86c1b9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cafc2 Functions, Methods, Attribute IDs, Headings +base0E #ba8baf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383838; + background: #f8f8f8 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d8d8; + color: #383838 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b8b8b8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b8b8b8 +} +/* base04 - #585858 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #585858 +} +/* base05 - #383838 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383838 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ab4642 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f7ca88 +} +.hljs-strong { + font-weight: bold; + color: #f7ca88 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1b56c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #86c1b9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cafc2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ba8baf +} +.hljs-emphasis { + color: #ba8baf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/dirtysea.css b/modules/highlighter/styles/base16/dirtysea.css new file mode 100644 index 0000000..6011c9e --- /dev/null +++ b/modules/highlighter/styles/base16/dirtysea.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: dirtysea + Author: Kahlil (Kal) Hodgson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme dirtysea + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #e0e0e0 Default Background +base01 #d0dad0 Lighter Background (Used for status bars, line number and folding marks) +base02 #d0d0d0 Selection Background +base03 #707070 Comments, Invisibles, Line Highlighting +base04 #202020 Dark Foreground (Used for status bars) +base05 #000000 Default Foreground, Caret, Delimiters, Operators +base06 #f8f8f8 Light Foreground (Not often used) +base07 #c4d9c4 Light Background (Not often used) +base08 #840000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #006565 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #755B00 Classes, Markup Bold, Search Text Background +base0B #730073 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #755B00 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #007300 Functions, Methods, Attribute IDs, Headings +base0E #000090 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #755B00 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #000000; + background: #e0e0e0 +} +.hljs::selection, +.hljs ::selection { + background-color: #d0d0d0; + color: #000000 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #707070 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #707070 +} +/* base04 - #202020 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #202020 +} +/* base05 - #000000 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #000000 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #840000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #006565 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #755B00 +} +.hljs-strong { + font-weight: bold; + color: #755B00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #730073 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #755B00 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #007300 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #000090 +} +.hljs-emphasis { + color: #000090; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #755B00 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/dracula.css b/modules/highlighter/styles/base16/dracula.css new file mode 100644 index 0000000..d29e4b3 --- /dev/null +++ b/modules/highlighter/styles/base16/dracula.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Dracula + Author: Mike Barkmin (http://github.com/mikebarkmin) based on Dracula Theme (http://github.com/dracula) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme dracula + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282936 Default Background +base01 #3a3c4e Lighter Background (Used for status bars, line number and folding marks) +base02 #4d4f68 Selection Background +base03 #626483 Comments, Invisibles, Line Highlighting +base04 #62d6e8 Dark Foreground (Used for status bars) +base05 #e9e9f4 Default Foreground, Caret, Delimiters, Operators +base06 #f1f2f8 Light Foreground (Not often used) +base07 #f7f7fb Light Background (Not often used) +base08 #ea51b2 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b45bcf Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #00f769 Classes, Markup Bold, Search Text Background +base0B #ebff87 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #a1efe4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #62d6e8 Functions, Methods, Attribute IDs, Headings +base0E #b45bcf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #00f769 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e9e9f4; + background: #282936 +} +.hljs::selection, +.hljs ::selection { + background-color: #4d4f68; + color: #e9e9f4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #626483 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #626483 +} +/* base04 - #62d6e8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #62d6e8 +} +/* base05 - #e9e9f4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e9e9f4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ea51b2 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b45bcf +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #00f769 +} +.hljs-strong { + font-weight: bold; + color: #00f769 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ebff87 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #a1efe4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #62d6e8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b45bcf +} +.hljs-emphasis { + color: #b45bcf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #00f769 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/edge-dark.css b/modules/highlighter/styles/base16/edge-dark.css new file mode 100644 index 0000000..76b650b --- /dev/null +++ b/modules/highlighter/styles/base16/edge-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Edge Dark + Author: cjayross (https://github.com/cjayross) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme edge-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #262729 Default Background +base01 #88909f Lighter Background (Used for status bars, line number and folding marks) +base02 #b7bec9 Selection Background +base03 #3e4249 Comments, Invisibles, Line Highlighting +base04 #73b3e7 Dark Foreground (Used for status bars) +base05 #b7bec9 Default Foreground, Caret, Delimiters, Operators +base06 #d390e7 Light Foreground (Not often used) +base07 #3e4249 Light Background (Not often used) +base08 #e77171 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e77171 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dbb774 Classes, Markup Bold, Search Text Background +base0B #a1bf78 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5ebaa5 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #73b3e7 Functions, Methods, Attribute IDs, Headings +base0E #d390e7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5ebaa5 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b7bec9; + background: #262729 +} +.hljs::selection, +.hljs ::selection { + background-color: #b7bec9; + color: #b7bec9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #3e4249 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #3e4249 +} +/* base04 - #73b3e7 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #73b3e7 +} +/* base05 - #b7bec9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b7bec9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e77171 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e77171 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dbb774 +} +.hljs-strong { + font-weight: bold; + color: #dbb774 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a1bf78 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5ebaa5 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #73b3e7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d390e7 +} +.hljs-emphasis { + color: #d390e7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5ebaa5 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/edge-light.css b/modules/highlighter/styles/base16/edge-light.css new file mode 100644 index 0000000..1f85ab2 --- /dev/null +++ b/modules/highlighter/styles/base16/edge-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Edge Light + Author: cjayross (https://github.com/cjayross) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme edge-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fafafa Default Background +base01 #7c9f4b Lighter Background (Used for status bars, line number and folding marks) +base02 #d69822 Selection Background +base03 #5e646f Comments, Invisibles, Line Highlighting +base04 #6587bf Dark Foreground (Used for status bars) +base05 #5e646f Default Foreground, Caret, Delimiters, Operators +base06 #b870ce Light Foreground (Not often used) +base07 #5e646f Light Background (Not often used) +base08 #db7070 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #db7070 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #d69822 Classes, Markup Bold, Search Text Background +base0B #7c9f4b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #509c93 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6587bf Functions, Methods, Attribute IDs, Headings +base0E #b870ce Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #509c93 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5e646f; + background: #fafafa +} +.hljs::selection, +.hljs ::selection { + background-color: #d69822; + color: #5e646f +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5e646f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5e646f +} +/* base04 - #6587bf - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6587bf +} +/* base05 - #5e646f - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5e646f +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #db7070 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #db7070 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #d69822 +} +.hljs-strong { + font-weight: bold; + color: #d69822 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7c9f4b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #509c93 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6587bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b870ce +} +.hljs-emphasis { + color: #b870ce; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #509c93 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/eighties.css b/modules/highlighter/styles/base16/eighties.css new file mode 100644 index 0000000..149acef --- /dev/null +++ b/modules/highlighter/styles/base16/eighties.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Eighties + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme eighties + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #747369 Comments, Invisibles, Line Highlighting +base04 #a09f93 Dark Foreground (Used for status bars) +base05 #d3d0c8 Default Foreground, Caret, Delimiters, Operators +base06 #e8e6df Light Foreground (Not often used) +base07 #f2f0ec Light Background (Not often used) +base08 #f2777a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f99157 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffcc66 Classes, Markup Bold, Search Text Background +base0B #99cc99 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #66cccc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6699cc Functions, Methods, Attribute IDs, Headings +base0E #cc99cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d27b53 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d3d0c8; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #d3d0c8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #747369 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #747369 +} +/* base04 - #a09f93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a09f93 +} +/* base05 - #d3d0c8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d3d0c8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f2777a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f99157 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffcc66 +} +.hljs-strong { + font-weight: bold; + color: #ffcc66 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99cc99 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #66cccc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6699cc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc99cc +} +.hljs-emphasis { + color: #cc99cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d27b53 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/embers.css b/modules/highlighter/styles/base16/embers.css new file mode 100644 index 0000000..4172ef6 --- /dev/null +++ b/modules/highlighter/styles/base16/embers.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Embers + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme embers + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #16130F Default Background +base01 #2C2620 Lighter Background (Used for status bars, line number and folding marks) +base02 #433B32 Selection Background +base03 #5A5047 Comments, Invisibles, Line Highlighting +base04 #8A8075 Dark Foreground (Used for status bars) +base05 #A39A90 Default Foreground, Caret, Delimiters, Operators +base06 #BEB6AE Light Foreground (Not often used) +base07 #DBD6D1 Light Background (Not often used) +base08 #826D57 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #828257 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #6D8257 Classes, Markup Bold, Search Text Background +base0B #57826D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #576D82 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6D5782 Functions, Methods, Attribute IDs, Headings +base0E #82576D Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #825757 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #A39A90; + background: #16130F +} +.hljs::selection, +.hljs ::selection { + background-color: #433B32; + color: #A39A90 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5A5047 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5A5047 +} +/* base04 - #8A8075 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8A8075 +} +/* base05 - #A39A90 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #A39A90 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #826D57 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #828257 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #6D8257 +} +.hljs-strong { + font-weight: bold; + color: #6D8257 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #57826D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #576D82 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6D5782 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #82576D +} +.hljs-emphasis { + color: #82576D; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #825757 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-dark.css b/modules/highlighter/styles/base16/equilibrium-dark.css new file mode 100644 index 0000000..608a02e --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Dark + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0c1118 Default Background +base01 #181c22 Lighter Background (Used for status bars, line number and folding marks) +base02 #22262d Selection Background +base03 #7b776e Comments, Invisibles, Line Highlighting +base04 #949088 Dark Foreground (Used for status bars) +base05 #afaba2 Default Foreground, Caret, Delimiters, Operators +base06 #cac6bd Light Foreground (Not often used) +base07 #e7e2d9 Light Background (Not often used) +base08 #f04339 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5923 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8801 Classes, Markup Bold, Search Text Background +base0B #7f8b00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00948b Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #008dd1 Functions, Methods, Attribute IDs, Headings +base0E #6a7fd2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e3488e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #afaba2; + background: #0c1118 +} +.hljs::selection, +.hljs ::selection { + background-color: #22262d; + color: #afaba2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7b776e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7b776e +} +/* base04 - #949088 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #949088 +} +/* base05 - #afaba2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #afaba2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f04339 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5923 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8801 +} +.hljs-strong { + font-weight: bold; + color: #bb8801 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7f8b00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00948b +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #008dd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6a7fd2 +} +.hljs-emphasis { + color: #6a7fd2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e3488e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-gray-dark.css b/modules/highlighter/styles/base16/equilibrium-gray-dark.css new file mode 100644 index 0000000..5e4b619 --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-gray-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Gray Dark + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-gray-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #111111 Default Background +base01 #1b1b1b Lighter Background (Used for status bars, line number and folding marks) +base02 #262626 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #919191 Dark Foreground (Used for status bars) +base05 #ababab Default Foreground, Caret, Delimiters, Operators +base06 #c6c6c6 Light Foreground (Not often used) +base07 #e2e2e2 Light Background (Not often used) +base08 #f04339 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #df5923 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #bb8801 Classes, Markup Bold, Search Text Background +base0B #7f8b00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00948b Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #008dd1 Functions, Methods, Attribute IDs, Headings +base0E #6a7fd2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e3488e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #ababab; + background: #111111 +} +.hljs::selection, +.hljs ::selection { + background-color: #262626; + color: #ababab +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #919191 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #919191 +} +/* base05 - #ababab - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #ababab +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f04339 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #df5923 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #bb8801 +} +.hljs-strong { + font-weight: bold; + color: #bb8801 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7f8b00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00948b +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #008dd1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6a7fd2 +} +.hljs-emphasis { + color: #6a7fd2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e3488e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-gray-light.css b/modules/highlighter/styles/base16/equilibrium-gray-light.css new file mode 100644 index 0000000..6f50e3d --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-gray-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Gray Light + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-gray-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f1f1f1 Default Background +base01 #e2e2e2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d4d4d4 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #5e5e5e Dark Foreground (Used for status bars) +base05 #474747 Default Foreground, Caret, Delimiters, Operators +base06 #303030 Light Foreground (Not often used) +base07 #1b1b1b Light Background (Not often used) +base08 #d02023 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bf3e05 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #9d6f00 Classes, Markup Bold, Search Text Background +base0B #637200 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #007a72 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0073b5 Functions, Methods, Attribute IDs, Headings +base0E #4e66b6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c42775 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #474747; + background: #f1f1f1 +} +.hljs::selection, +.hljs ::selection { + background-color: #d4d4d4; + color: #474747 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #5e5e5e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5e5e5e +} +/* base05 - #474747 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #474747 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d02023 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bf3e05 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #9d6f00 +} +.hljs-strong { + font-weight: bold; + color: #9d6f00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #637200 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #007a72 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0073b5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4e66b6 +} +.hljs-emphasis { + color: #4e66b6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c42775 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/equilibrium-light.css b/modules/highlighter/styles/base16/equilibrium-light.css new file mode 100644 index 0000000..23341cb --- /dev/null +++ b/modules/highlighter/styles/base16/equilibrium-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Equilibrium Light + Author: Carlo Abelli + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme equilibrium-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f5f0e7 Default Background +base01 #e7e2d9 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d4cb Selection Background +base03 #73777f Comments, Invisibles, Line Highlighting +base04 #5a5f66 Dark Foreground (Used for status bars) +base05 #43474e Default Foreground, Caret, Delimiters, Operators +base06 #2c3138 Light Foreground (Not often used) +base07 #181c22 Light Background (Not often used) +base08 #d02023 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bf3e05 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #9d6f00 Classes, Markup Bold, Search Text Background +base0B #637200 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #007a72 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0073b5 Functions, Methods, Attribute IDs, Headings +base0E #4e66b6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c42775 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #43474e; + background: #f5f0e7 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d4cb; + color: #43474e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #73777f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #73777f +} +/* base04 - #5a5f66 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5a5f66 +} +/* base05 - #43474e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #43474e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d02023 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bf3e05 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #9d6f00 +} +.hljs-strong { + font-weight: bold; + color: #9d6f00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #637200 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #007a72 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0073b5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4e66b6 +} +.hljs-emphasis { + color: #4e66b6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c42775 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/espresso.css b/modules/highlighter/styles/base16/espresso.css new file mode 100644 index 0000000..ca25f04 --- /dev/null +++ b/modules/highlighter/styles/base16/espresso.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Espresso + Author: Unknown. Maintained by Alex Mirrington (https://github.com/alexmirrington) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme espresso + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #777777 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #d25252 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f9a959 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffc66d Classes, Markup Bold, Search Text Background +base0B #a5c261 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #bed6ff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6c99bb Functions, Methods, Attribute IDs, Headings +base0E #d197d9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #f97394 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #777777 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #777777 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d25252 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f9a959 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffc66d +} +.hljs-strong { + font-weight: bold; + color: #ffc66d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a5c261 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #bed6ff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6c99bb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d197d9 +} +.hljs-emphasis { + color: #d197d9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #f97394 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/eva-dim.css b/modules/highlighter/styles/base16/eva-dim.css new file mode 100644 index 0000000..fca06f4 --- /dev/null +++ b/modules/highlighter/styles/base16/eva-dim.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Eva Dim + Author: kjakapat (https://github.com/kjakapat) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme eva-dim + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2a3b4d Default Background +base01 #3d566f Lighter Background (Used for status bars, line number and folding marks) +base02 #4b6988 Selection Background +base03 #55799c Comments, Invisibles, Line Highlighting +base04 #7e90a3 Dark Foreground (Used for status bars) +base05 #9fa2a6 Default Foreground, Caret, Delimiters, Operators +base06 #d6d7d9 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #c4676c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9966 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #cfd05d Classes, Markup Bold, Search Text Background +base0B #5de561 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4b8f77 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #1ae1dc Functions, Methods, Attribute IDs, Headings +base0E #9c6cd3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bb64a9 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #9fa2a6; + background: #2a3b4d +} +.hljs::selection, +.hljs ::selection { + background-color: #4b6988; + color: #9fa2a6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #55799c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #55799c +} +/* base04 - #7e90a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e90a3 +} +/* base05 - #9fa2a6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #9fa2a6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c4676c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9966 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #cfd05d +} +.hljs-strong { + font-weight: bold; + color: #cfd05d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5de561 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4b8f77 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #1ae1dc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9c6cd3 +} +.hljs-emphasis { + color: #9c6cd3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bb64a9 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/eva.css b/modules/highlighter/styles/base16/eva.css new file mode 100644 index 0000000..46f1955 --- /dev/null +++ b/modules/highlighter/styles/base16/eva.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Eva + Author: kjakapat (https://github.com/kjakapat) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme eva + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2a3b4d Default Background +base01 #3d566f Lighter Background (Used for status bars, line number and folding marks) +base02 #4b6988 Selection Background +base03 #55799c Comments, Invisibles, Line Highlighting +base04 #7e90a3 Dark Foreground (Used for status bars) +base05 #9fa2a6 Default Foreground, Caret, Delimiters, Operators +base06 #d6d7d9 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #c4676c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9966 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffff66 Classes, Markup Bold, Search Text Background +base0B #66ff66 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4b8f77 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #15f4ee Functions, Methods, Attribute IDs, Headings +base0E #9c6cd3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bb64a9 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #9fa2a6; + background: #2a3b4d +} +.hljs::selection, +.hljs ::selection { + background-color: #4b6988; + color: #9fa2a6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #55799c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #55799c +} +/* base04 - #7e90a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e90a3 +} +/* base05 - #9fa2a6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #9fa2a6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c4676c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9966 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffff66 +} +.hljs-strong { + font-weight: bold; + color: #ffff66 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #66ff66 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4b8f77 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #15f4ee +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9c6cd3 +} +.hljs-emphasis { + color: #9c6cd3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bb64a9 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/flat.css b/modules/highlighter/styles/base16/flat.css new file mode 100644 index 0000000..0859bad --- /dev/null +++ b/modules/highlighter/styles/base16/flat.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Flat + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme flat + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2C3E50 Default Background +base01 #34495E Lighter Background (Used for status bars, line number and folding marks) +base02 #7F8C8D Selection Background +base03 #95A5A6 Comments, Invisibles, Line Highlighting +base04 #BDC3C7 Dark Foreground (Used for status bars) +base05 #e0e0e0 Default Foreground, Caret, Delimiters, Operators +base06 #f5f5f5 Light Foreground (Not often used) +base07 #ECF0F1 Light Background (Not often used) +base08 #E74C3C Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E67E22 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F1C40F Classes, Markup Bold, Search Text Background +base0B #2ECC71 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1ABC9C Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3498DB Functions, Methods, Attribute IDs, Headings +base0E #9B59B6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #be643c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0e0e0; + background: #2C3E50 +} +.hljs::selection, +.hljs ::selection { + background-color: #7F8C8D; + color: #e0e0e0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #95A5A6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #95A5A6 +} +/* base04 - #BDC3C7 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #BDC3C7 +} +/* base05 - #e0e0e0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0e0e0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #E74C3C +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E67E22 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F1C40F +} +.hljs-strong { + font-weight: bold; + color: #F1C40F +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #2ECC71 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1ABC9C +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3498DB +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9B59B6 +} +.hljs-emphasis { + color: #9B59B6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #be643c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/framer.css b/modules/highlighter/styles/base16/framer.css new file mode 100644 index 0000000..3c90bf9 --- /dev/null +++ b/modules/highlighter/styles/base16/framer.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Framer + Author: Framer (Maintained by Jesse Hoyos) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme framer + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #181818 Default Background +base01 #151515 Lighter Background (Used for status bars, line number and folding marks) +base02 #464646 Selection Background +base03 #747474 Comments, Invisibles, Line Highlighting +base04 #B9B9B9 Dark Foreground (Used for status bars) +base05 #D0D0D0 Default Foreground, Caret, Delimiters, Operators +base06 #E8E8E8 Light Foreground (Not often used) +base07 #EEEEEE Light Background (Not often used) +base08 #FD886B Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FC4769 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FECB6E Classes, Markup Bold, Search Text Background +base0B #32CCDC Strings, Inherited Class, Markup Code, Diff Inserted +base0C #ACDDFD Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #20BCFC Functions, Methods, Attribute IDs, Headings +base0E #BA8CFC Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #B15F4A Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0D0; + background: #181818 +} +.hljs::selection, +.hljs ::selection { + background-color: #464646; + color: #D0D0D0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #747474 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #747474 +} +/* base04 - #B9B9B9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B9B9B9 +} +/* base05 - #D0D0D0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0D0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FD886B +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FC4769 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FECB6E +} +.hljs-strong { + font-weight: bold; + color: #FECB6E +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #32CCDC +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #ACDDFD +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #20BCFC +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #BA8CFC +} +.hljs-emphasis { + color: #BA8CFC; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #B15F4A +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/fruit-soda.css b/modules/highlighter/styles/base16/fruit-soda.css new file mode 100644 index 0000000..396faaa --- /dev/null +++ b/modules/highlighter/styles/base16/fruit-soda.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Fruit Soda + Author: jozip + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme fruit-soda + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f1ecf1 Default Background +base01 #e0dee0 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d5d5 Selection Background +base03 #b5b4b6 Comments, Invisibles, Line Highlighting +base04 #979598 Dark Foreground (Used for status bars) +base05 #515151 Default Foreground, Caret, Delimiters, Operators +base06 #474545 Light Foreground (Not often used) +base07 #2d2c2c Light Background (Not often used) +base08 #fe3e31 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe6d08 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f7e203 Classes, Markup Bold, Search Text Background +base0B #47f74c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0f9cfd Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #2931df Functions, Methods, Attribute IDs, Headings +base0E #611fce Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b16f40 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #515151; + background: #f1ecf1 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d5d5; + color: #515151 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b5b4b6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b5b4b6 +} +/* base04 - #979598 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #979598 +} +/* base05 - #515151 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #515151 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fe3e31 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe6d08 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f7e203 +} +.hljs-strong { + font-weight: bold; + color: #f7e203 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #47f74c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0f9cfd +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #2931df +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #611fce +} +.hljs-emphasis { + color: #611fce; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b16f40 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gigavolt.css b/modules/highlighter/styles/base16/gigavolt.css new file mode 100644 index 0000000..89de247 --- /dev/null +++ b/modules/highlighter/styles/base16/gigavolt.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gigavolt + Author: Aidan Swope (http://github.com/Whillikers) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gigavolt + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #202126 Default Background +base01 #2d303d Lighter Background (Used for status bars, line number and folding marks) +base02 #5a576e Selection Background +base03 #a1d2e6 Comments, Invisibles, Line Highlighting +base04 #cad3ff Dark Foreground (Used for status bars) +base05 #e9e7e1 Default Foreground, Caret, Delimiters, Operators +base06 #eff0f9 Light Foreground (Not often used) +base07 #f2fbff Light Background (Not often used) +base08 #ff661a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #19f988 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffdc2d Classes, Markup Bold, Search Text Background +base0B #f2e6a9 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #fb6acb Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #40bfff Functions, Methods, Attribute IDs, Headings +base0E #ae94f9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #6187ff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e9e7e1; + background: #202126 +} +.hljs::selection, +.hljs ::selection { + background-color: #5a576e; + color: #e9e7e1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a1d2e6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a1d2e6 +} +/* base04 - #cad3ff - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #cad3ff +} +/* base05 - #e9e7e1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e9e7e1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff661a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #19f988 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffdc2d +} +.hljs-strong { + font-weight: bold; + color: #ffdc2d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f2e6a9 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #fb6acb +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #40bfff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ae94f9 +} +.hljs-emphasis { + color: #ae94f9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #6187ff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/github.css b/modules/highlighter/styles/base16/github.css new file mode 100644 index 0000000..b3aa5d0 --- /dev/null +++ b/modules/highlighter/styles/base16/github.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Github + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme github + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #f5f5f5 Lighter Background (Used for status bars, line number and folding marks) +base02 #c8c8fa Selection Background +base03 #969896 Comments, Invisibles, Line Highlighting +base04 #e8e8e8 Dark Foreground (Used for status bars) +base05 #333333 Default Foreground, Caret, Delimiters, Operators +base06 #ffffff Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ed6a43 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #0086b3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #795da3 Classes, Markup Bold, Search Text Background +base0B #183691 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #183691 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #795da3 Functions, Methods, Attribute IDs, Headings +base0E #a71d5d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #333333 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #333333; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c8c8fa; + color: #333333 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #969896 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #969896 +} +/* base04 - #e8e8e8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #e8e8e8 +} +/* base05 - #333333 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #333333 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ed6a43 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #0086b3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #795da3 +} +.hljs-strong { + font-weight: bold; + color: #795da3 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #183691 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #183691 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #795da3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a71d5d +} +.hljs-emphasis { + color: #a71d5d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #333333 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/google-dark.css b/modules/highlighter/styles/base16/google-dark.css new file mode 100644 index 0000000..e43136f --- /dev/null +++ b/modules/highlighter/styles/base16/google-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Google Dark + Author: Seth Wright (http://sethawright.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme google-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1d1f21 Default Background +base01 #282a2e Lighter Background (Used for status bars, line number and folding marks) +base02 #373b41 Selection Background +base03 #969896 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #c5c8c6 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #CC342B Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F96A38 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FBA922 Classes, Markup Bold, Search Text Background +base0B #198844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3971ED Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3971ED Functions, Methods, Attribute IDs, Headings +base0E #A36AC7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3971ED Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c5c8c6; + background: #1d1f21 +} +.hljs::selection, +.hljs ::selection { + background-color: #373b41; + color: #c5c8c6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #969896 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #969896 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #c5c8c6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c5c8c6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #CC342B +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F96A38 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FBA922 +} +.hljs-strong { + font-weight: bold; + color: #FBA922 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #198844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3971ED +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3971ED +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A36AC7 +} +.hljs-emphasis { + color: #A36AC7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3971ED +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/google-light.css b/modules/highlighter/styles/base16/google-light.css new file mode 100644 index 0000000..ff94198 --- /dev/null +++ b/modules/highlighter/styles/base16/google-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Google Light + Author: Seth Wright (http://sethawright.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme google-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #c5c8c6 Selection Background +base03 #b4b7b4 Comments, Invisibles, Line Highlighting +base04 #969896 Dark Foreground (Used for status bars) +base05 #373b41 Default Foreground, Caret, Delimiters, Operators +base06 #282a2e Light Foreground (Not often used) +base07 #1d1f21 Light Background (Not often used) +base08 #CC342B Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F96A38 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FBA922 Classes, Markup Bold, Search Text Background +base0B #198844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3971ED Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3971ED Functions, Methods, Attribute IDs, Headings +base0E #A36AC7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3971ED Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #373b41; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c5c8c6; + color: #373b41 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b4b7b4 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b4b7b4 +} +/* base04 - #969896 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #969896 +} +/* base05 - #373b41 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #373b41 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #CC342B +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F96A38 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FBA922 +} +.hljs-strong { + font-weight: bold; + color: #FBA922 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #198844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3971ED +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3971ED +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A36AC7 +} +.hljs-emphasis { + color: #A36AC7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3971ED +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/grayscale-dark.css b/modules/highlighter/styles/base16/grayscale-dark.css new file mode 100644 index 0000000..c97e81e --- /dev/null +++ b/modules/highlighter/styles/base16/grayscale-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Grayscale Dark + Author: Alexandre Gavioli (https://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme grayscale-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #101010 Default Background +base01 #252525 Lighter Background (Used for status bars, line number and folding marks) +base02 #464646 Selection Background +base03 #525252 Comments, Invisibles, Line Highlighting +base04 #ababab Dark Foreground (Used for status bars) +base05 #b9b9b9 Default Foreground, Caret, Delimiters, Operators +base06 #e3e3e3 Light Foreground (Not often used) +base07 #f7f7f7 Light Background (Not often used) +base08 #7c7c7c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #999999 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a0a0a0 Classes, Markup Bold, Search Text Background +base0B #8e8e8e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #868686 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #686868 Functions, Methods, Attribute IDs, Headings +base0E #747474 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5e5e5e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b9b9b9; + background: #101010 +} +.hljs::selection, +.hljs ::selection { + background-color: #464646; + color: #b9b9b9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #525252 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #525252 +} +/* base04 - #ababab - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ababab +} +/* base05 - #b9b9b9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b9b9b9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #7c7c7c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #999999 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a0a0a0 +} +.hljs-strong { + font-weight: bold; + color: #a0a0a0 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8e8e8e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #868686 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #686868 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #747474 +} +.hljs-emphasis { + color: #747474; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5e5e5e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/grayscale-light.css b/modules/highlighter/styles/base16/grayscale-light.css new file mode 100644 index 0000000..af0c2f5 --- /dev/null +++ b/modules/highlighter/styles/base16/grayscale-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Grayscale Light + Author: Alexandre Gavioli (https://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme grayscale-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f7f7f7 Default Background +base01 #e3e3e3 Lighter Background (Used for status bars, line number and folding marks) +base02 #b9b9b9 Selection Background +base03 #ababab Comments, Invisibles, Line Highlighting +base04 #525252 Dark Foreground (Used for status bars) +base05 #464646 Default Foreground, Caret, Delimiters, Operators +base06 #252525 Light Foreground (Not often used) +base07 #101010 Light Background (Not often used) +base08 #7c7c7c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #999999 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a0a0a0 Classes, Markup Bold, Search Text Background +base0B #8e8e8e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #868686 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #686868 Functions, Methods, Attribute IDs, Headings +base0E #747474 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5e5e5e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #464646; + background: #f7f7f7 +} +.hljs::selection, +.hljs ::selection { + background-color: #b9b9b9; + color: #464646 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #ababab - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #ababab +} +/* base04 - #525252 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #525252 +} +/* base05 - #464646 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #464646 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #7c7c7c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #999999 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a0a0a0 +} +.hljs-strong { + font-weight: bold; + color: #a0a0a0 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8e8e8e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #868686 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #686868 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #747474 +} +.hljs-emphasis { + color: #747474; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5e5e5e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/green-screen.css b/modules/highlighter/styles/base16/green-screen.css new file mode 100644 index 0000000..884ee20 --- /dev/null +++ b/modules/highlighter/styles/base16/green-screen.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Green Screen + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme green-screen + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #001100 Default Background +base01 #003300 Lighter Background (Used for status bars, line number and folding marks) +base02 #005500 Selection Background +base03 #007700 Comments, Invisibles, Line Highlighting +base04 #009900 Dark Foreground (Used for status bars) +base05 #00bb00 Default Foreground, Caret, Delimiters, Operators +base06 #00dd00 Light Foreground (Not often used) +base07 #00ff00 Light Background (Not often used) +base08 #007700 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #009900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #007700 Classes, Markup Bold, Search Text Background +base0B #00bb00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #005500 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #009900 Functions, Methods, Attribute IDs, Headings +base0E #00bb00 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #005500 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #00bb00; + background: #001100 +} +.hljs::selection, +.hljs ::selection { + background-color: #005500; + color: #00bb00 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #007700 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #007700 +} +/* base04 - #009900 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #009900 +} +/* base05 - #00bb00 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #00bb00 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #007700 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #009900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #007700 +} +.hljs-strong { + font-weight: bold; + color: #007700 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00bb00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #005500 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #009900 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #00bb00 +} +.hljs-emphasis { + color: #00bb00; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #005500 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-hard.css b/modules/highlighter/styles/base16/gruvbox-dark-hard.css new file mode 100644 index 0000000..0c3e7e6 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-hard.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, hard + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-hard + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1d2021 Default Background +base01 #3c3836 Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #bdae93 Dark Foreground (Used for status bars) +base05 #d5c4a1 Default Foreground, Caret, Delimiters, Operators +base06 #ebdbb2 Light Foreground (Not often used) +base07 #fbf1c7 Light Background (Not often used) +base08 #fb4934 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe8019 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fabd2f Classes, Markup Bold, Search Text Background +base0B #b8bb26 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8ec07c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d3869b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5c4a1; + background: #1d2021 +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #d5c4a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #bdae93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #bdae93 +} +/* base05 - #d5c4a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5c4a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb4934 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe8019 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fabd2f +} +.hljs-strong { + font-weight: bold; + color: #fabd2f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b8bb26 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8ec07c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3869b +} +.hljs-emphasis { + color: #d3869b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-medium.css b/modules/highlighter/styles/base16/gruvbox-dark-medium.css new file mode 100644 index 0000000..9e76d5a --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-medium.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, medium + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-medium + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282828 Default Background +base01 #3c3836 Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #bdae93 Dark Foreground (Used for status bars) +base05 #d5c4a1 Default Foreground, Caret, Delimiters, Operators +base06 #ebdbb2 Light Foreground (Not often used) +base07 #fbf1c7 Light Background (Not often used) +base08 #fb4934 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe8019 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fabd2f Classes, Markup Bold, Search Text Background +base0B #b8bb26 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8ec07c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d3869b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5c4a1; + background: #282828 +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #d5c4a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #bdae93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #bdae93 +} +/* base05 - #d5c4a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5c4a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb4934 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe8019 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fabd2f +} +.hljs-strong { + font-weight: bold; + color: #fabd2f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b8bb26 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8ec07c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3869b +} +.hljs-emphasis { + color: #d3869b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-pale.css b/modules/highlighter/styles/base16/gruvbox-dark-pale.css new file mode 100644 index 0000000..4377322 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-pale.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, pale + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-pale + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #262626 Default Background +base01 #3a3a3a Lighter Background (Used for status bars, line number and folding marks) +base02 #4e4e4e Selection Background +base03 #8a8a8a Comments, Invisibles, Line Highlighting +base04 #949494 Dark Foreground (Used for status bars) +base05 #dab997 Default Foreground, Caret, Delimiters, Operators +base06 #d5c4a1 Light Foreground (Not often used) +base07 #ebdbb2 Light Background (Not often used) +base08 #d75f5f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff8700 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffaf00 Classes, Markup Bold, Search Text Background +base0B #afaf00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #85ad85 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83adad Functions, Methods, Attribute IDs, Headings +base0E #d485ad Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #dab997; + background: #262626 +} +.hljs::selection, +.hljs ::selection { + background-color: #4e4e4e; + color: #dab997 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #8a8a8a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #8a8a8a +} +/* base04 - #949494 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #949494 +} +/* base05 - #dab997 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #dab997 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d75f5f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff8700 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffaf00 +} +.hljs-strong { + font-weight: bold; + color: #ffaf00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #afaf00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #85ad85 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83adad +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d485ad +} +.hljs-emphasis { + color: #d485ad; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-dark-soft.css b/modules/highlighter/styles/base16/gruvbox-dark-soft.css new file mode 100644 index 0000000..d56d820 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-dark-soft.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox dark, soft + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-dark-soft + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #32302f Default Background +base01 #3c3836 Lighter Background (Used for status bars, line number and folding marks) +base02 #504945 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #bdae93 Dark Foreground (Used for status bars) +base05 #d5c4a1 Default Foreground, Caret, Delimiters, Operators +base06 #ebdbb2 Light Foreground (Not often used) +base07 #fbf1c7 Light Background (Not often used) +base08 #fb4934 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fe8019 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fabd2f Classes, Markup Bold, Search Text Background +base0B #b8bb26 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8ec07c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d3869b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5c4a1; + background: #32302f +} +.hljs::selection, +.hljs ::selection { + background-color: #504945; + color: #d5c4a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #bdae93 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #bdae93 +} +/* base05 - #d5c4a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5c4a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb4934 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fe8019 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fabd2f +} +.hljs-strong { + font-weight: bold; + color: #fabd2f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b8bb26 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8ec07c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3869b +} +.hljs-emphasis { + color: #d3869b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-light-hard.css b/modules/highlighter/styles/base16/gruvbox-light-hard.css new file mode 100644 index 0000000..4bcf047 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-light-hard.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox light, hard + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-light-hard + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f9f5d7 Default Background +base01 #ebdbb2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d5c4a1 Selection Background +base03 #bdae93 Comments, Invisibles, Line Highlighting +base04 #665c54 Dark Foreground (Used for status bars) +base05 #504945 Default Foreground, Caret, Delimiters, Operators +base06 #3c3836 Light Foreground (Not often used) +base07 #282828 Light Background (Not often used) +base08 #9d0006 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #af3a03 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b57614 Classes, Markup Bold, Search Text Background +base0B #79740e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #427b58 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #076678 Functions, Methods, Attribute IDs, Headings +base0E #8f3f71 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #504945; + background: #f9f5d7 +} +.hljs::selection, +.hljs ::selection { + background-color: #d5c4a1; + color: #504945 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bdae93 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bdae93 +} +/* base04 - #665c54 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #665c54 +} +/* base05 - #504945 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #504945 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9d0006 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #af3a03 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b57614 +} +.hljs-strong { + font-weight: bold; + color: #b57614 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #79740e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #427b58 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #076678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8f3f71 +} +.hljs-emphasis { + color: #8f3f71; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-light-medium.css b/modules/highlighter/styles/base16/gruvbox-light-medium.css new file mode 100644 index 0000000..f9ef0b5 --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-light-medium.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox light, medium + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-light-medium + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fbf1c7 Default Background +base01 #ebdbb2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d5c4a1 Selection Background +base03 #bdae93 Comments, Invisibles, Line Highlighting +base04 #665c54 Dark Foreground (Used for status bars) +base05 #504945 Default Foreground, Caret, Delimiters, Operators +base06 #3c3836 Light Foreground (Not often used) +base07 #282828 Light Background (Not often used) +base08 #9d0006 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #af3a03 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b57614 Classes, Markup Bold, Search Text Background +base0B #79740e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #427b58 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #076678 Functions, Methods, Attribute IDs, Headings +base0E #8f3f71 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #504945; + background: #fbf1c7 +} +.hljs::selection, +.hljs ::selection { + background-color: #d5c4a1; + color: #504945 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bdae93 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bdae93 +} +/* base04 - #665c54 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #665c54 +} +/* base05 - #504945 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #504945 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9d0006 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #af3a03 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b57614 +} +.hljs-strong { + font-weight: bold; + color: #b57614 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #79740e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #427b58 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #076678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8f3f71 +} +.hljs-emphasis { + color: #8f3f71; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/gruvbox-light-soft.css b/modules/highlighter/styles/base16/gruvbox-light-soft.css new file mode 100644 index 0000000..35a6aed --- /dev/null +++ b/modules/highlighter/styles/base16/gruvbox-light-soft.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Gruvbox light, soft + Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme gruvbox-light-soft + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f2e5bc Default Background +base01 #ebdbb2 Lighter Background (Used for status bars, line number and folding marks) +base02 #d5c4a1 Selection Background +base03 #bdae93 Comments, Invisibles, Line Highlighting +base04 #665c54 Dark Foreground (Used for status bars) +base05 #504945 Default Foreground, Caret, Delimiters, Operators +base06 #3c3836 Light Foreground (Not often used) +base07 #282828 Light Background (Not often used) +base08 #9d0006 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #af3a03 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b57614 Classes, Markup Bold, Search Text Background +base0B #79740e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #427b58 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #076678 Functions, Methods, Attribute IDs, Headings +base0E #8f3f71 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d65d0e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #504945; + background: #f2e5bc +} +.hljs::selection, +.hljs ::selection { + background-color: #d5c4a1; + color: #504945 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #bdae93 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #bdae93 +} +/* base04 - #665c54 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #665c54 +} +/* base05 - #504945 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #504945 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9d0006 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #af3a03 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b57614 +} +.hljs-strong { + font-weight: bold; + color: #b57614 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #79740e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #427b58 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #076678 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8f3f71 +} +.hljs-emphasis { + color: #8f3f71; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d65d0e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/hardcore.css b/modules/highlighter/styles/base16/hardcore.css new file mode 100644 index 0000000..666d145 --- /dev/null +++ b/modules/highlighter/styles/base16/hardcore.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Hardcore + Author: Chris Caller + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme hardcore + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #212121 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #353535 Selection Background +base03 #4A4A4A Comments, Invisibles, Line Highlighting +base04 #707070 Dark Foreground (Used for status bars) +base05 #cdcdcd Default Foreground, Caret, Delimiters, Operators +base06 #e5e5e5 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #f92672 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fd971f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e6db74 Classes, Markup Bold, Search Text Background +base0B #a6e22e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #708387 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #66d9ef Functions, Methods, Attribute IDs, Headings +base0E #9e6ffe Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e8b882 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cdcdcd; + background: #212121 +} +.hljs::selection, +.hljs ::selection { + background-color: #353535; + color: #cdcdcd +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4A4A4A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4A4A4A +} +/* base04 - #707070 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #707070 +} +/* base05 - #cdcdcd - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cdcdcd +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f92672 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fd971f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e6db74 +} +.hljs-strong { + font-weight: bold; + color: #e6db74 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a6e22e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #708387 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #66d9ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9e6ffe +} +.hljs-emphasis { + color: #9e6ffe; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e8b882 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/harmonic16-dark.css b/modules/highlighter/styles/base16/harmonic16-dark.css new file mode 100644 index 0000000..7f194a0 --- /dev/null +++ b/modules/highlighter/styles/base16/harmonic16-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Harmonic16 Dark + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme harmonic16-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0b1c2c Default Background +base01 #223b54 Lighter Background (Used for status bars, line number and folding marks) +base02 #405c79 Selection Background +base03 #627e99 Comments, Invisibles, Line Highlighting +base04 #aabcce Dark Foreground (Used for status bars) +base05 #cbd6e2 Default Foreground, Caret, Delimiters, Operators +base06 #e5ebf1 Light Foreground (Not often used) +base07 #f7f9fb Light Background (Not often used) +base08 #bf8b56 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bfbf56 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8bbf56 Classes, Markup Bold, Search Text Background +base0B #56bf8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #568bbf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8b56bf Functions, Methods, Attribute IDs, Headings +base0E #bf568b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf5656 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cbd6e2; + background: #0b1c2c +} +.hljs::selection, +.hljs ::selection { + background-color: #405c79; + color: #cbd6e2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #627e99 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #627e99 +} +/* base04 - #aabcce - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #aabcce +} +/* base05 - #cbd6e2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cbd6e2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bf8b56 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bfbf56 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8bbf56 +} +.hljs-strong { + font-weight: bold; + color: #8bbf56 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #56bf8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #568bbf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8b56bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bf568b +} +.hljs-emphasis { + color: #bf568b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf5656 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/harmonic16-light.css b/modules/highlighter/styles/base16/harmonic16-light.css new file mode 100644 index 0000000..71bd4b6 --- /dev/null +++ b/modules/highlighter/styles/base16/harmonic16-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Harmonic16 Light + Author: Jannik Siebert (https://github.com/janniks) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme harmonic16-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f7f9fb Default Background +base01 #e5ebf1 Lighter Background (Used for status bars, line number and folding marks) +base02 #cbd6e2 Selection Background +base03 #aabcce Comments, Invisibles, Line Highlighting +base04 #627e99 Dark Foreground (Used for status bars) +base05 #405c79 Default Foreground, Caret, Delimiters, Operators +base06 #223b54 Light Foreground (Not often used) +base07 #0b1c2c Light Background (Not often used) +base08 #bf8b56 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bfbf56 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8bbf56 Classes, Markup Bold, Search Text Background +base0B #56bf8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #568bbf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8b56bf Functions, Methods, Attribute IDs, Headings +base0E #bf568b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bf5656 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #405c79; + background: #f7f9fb +} +.hljs::selection, +.hljs ::selection { + background-color: #cbd6e2; + color: #405c79 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #aabcce - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #aabcce +} +/* base04 - #627e99 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #627e99 +} +/* base05 - #405c79 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #405c79 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bf8b56 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bfbf56 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8bbf56 +} +.hljs-strong { + font-weight: bold; + color: #8bbf56 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #56bf8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #568bbf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8b56bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bf568b +} +.hljs-emphasis { + color: #bf568b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bf5656 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/heetch-dark.css b/modules/highlighter/styles/base16/heetch-dark.css new file mode 100644 index 0000000..628c66f --- /dev/null +++ b/modules/highlighter/styles/base16/heetch-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Heetch Dark + Author: Geoffrey Teale (tealeg@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme heetch-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #190134 Default Background +base01 #392551 Lighter Background (Used for status bars, line number and folding marks) +base02 #5A496E Selection Background +base03 #7B6D8B Comments, Invisibles, Line Highlighting +base04 #9C92A8 Dark Foreground (Used for status bars) +base05 #BDB6C5 Default Foreground, Caret, Delimiters, Operators +base06 #DEDAE2 Light Foreground (Not often used) +base07 #FEFFFF Light Background (Not often used) +base08 #27D9D5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #5BA2B6 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #8F6C97 Classes, Markup Bold, Search Text Background +base0B #C33678 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #F80059 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #BD0152 Functions, Methods, Attribute IDs, Headings +base0E #82034C Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #470546 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #BDB6C5; + background: #190134 +} +.hljs::selection, +.hljs ::selection { + background-color: #5A496E; + color: #BDB6C5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7B6D8B - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7B6D8B +} +/* base04 - #9C92A8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9C92A8 +} +/* base05 - #BDB6C5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #BDB6C5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #27D9D5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #5BA2B6 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #8F6C97 +} +.hljs-strong { + font-weight: bold; + color: #8F6C97 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C33678 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #F80059 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #BD0152 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #82034C +} +.hljs-emphasis { + color: #82034C; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #470546 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/heetch-light.css b/modules/highlighter/styles/base16/heetch-light.css new file mode 100644 index 0000000..b41d5e9 --- /dev/null +++ b/modules/highlighter/styles/base16/heetch-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Heetch Light + Author: Geoffrey Teale (tealeg@gmail.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme heetch-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #feffff Default Background +base01 #392551 Lighter Background (Used for status bars, line number and folding marks) +base02 #7b6d8b Selection Background +base03 #9c92a8 Comments, Invisibles, Line Highlighting +base04 #ddd6e5 Dark Foreground (Used for status bars) +base05 #5a496e Default Foreground, Caret, Delimiters, Operators +base06 #470546 Light Foreground (Not often used) +base07 #190134 Light Background (Not often used) +base08 #27d9d5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #bdb6c5 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #5ba2b6 Classes, Markup Bold, Search Text Background +base0B #f80059 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #c33678 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #47f9f5 Functions, Methods, Attribute IDs, Headings +base0E #bd0152 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #dedae2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5a496e; + background: #feffff +} +.hljs::selection, +.hljs ::selection { + background-color: #7b6d8b; + color: #5a496e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9c92a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9c92a8 +} +/* base04 - #ddd6e5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ddd6e5 +} +/* base05 - #5a496e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5a496e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #27d9d5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #bdb6c5 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #5ba2b6 +} +.hljs-strong { + font-weight: bold; + color: #5ba2b6 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #f80059 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #c33678 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #47f9f5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bd0152 +} +.hljs-emphasis { + color: #bd0152; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #dedae2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/helios.css b/modules/highlighter/styles/base16/helios.css new file mode 100644 index 0000000..572dc41 --- /dev/null +++ b/modules/highlighter/styles/base16/helios.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Helios + Author: Alex Meyer (https://github.com/reyemxela) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme helios + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1d2021 Default Background +base01 #383c3e Lighter Background (Used for status bars, line number and folding marks) +base02 #53585b Selection Background +base03 #6f7579 Comments, Invisibles, Line Highlighting +base04 #cdcdcd Dark Foreground (Used for status bars) +base05 #d5d5d5 Default Foreground, Caret, Delimiters, Operators +base06 #dddddd Light Foreground (Not often used) +base07 #e5e5e5 Light Background (Not often used) +base08 #d72638 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb8413 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f19d1a Classes, Markup Bold, Search Text Background +base0B #88b92d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1ba595 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #1e8bac Functions, Methods, Attribute IDs, Headings +base0E #be4264 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c85e0d Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d5d5d5; + background: #1d2021 +} +.hljs::selection, +.hljs ::selection { + background-color: #53585b; + color: #d5d5d5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6f7579 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6f7579 +} +/* base04 - #cdcdcd - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #cdcdcd +} +/* base05 - #d5d5d5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d5d5d5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d72638 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb8413 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f19d1a +} +.hljs-strong { + font-weight: bold; + color: #f19d1a +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #88b92d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1ba595 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #1e8bac +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #be4264 +} +.hljs-emphasis { + color: #be4264; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c85e0d +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/hopscotch.css b/modules/highlighter/styles/base16/hopscotch.css new file mode 100644 index 0000000..6742d89 --- /dev/null +++ b/modules/highlighter/styles/base16/hopscotch.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Hopscotch + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme hopscotch + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #322931 Default Background +base01 #433b42 Lighter Background (Used for status bars, line number and folding marks) +base02 #5c545b Selection Background +base03 #797379 Comments, Invisibles, Line Highlighting +base04 #989498 Dark Foreground (Used for status bars) +base05 #b9b5b8 Default Foreground, Caret, Delimiters, Operators +base06 #d5d3d5 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dd464c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fd8b19 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fdcc59 Classes, Markup Bold, Search Text Background +base0B #8fc13e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #149b93 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #1290bf Functions, Methods, Attribute IDs, Headings +base0E #c85e7c Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b33508 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b9b5b8; + background: #322931 +} +.hljs::selection, +.hljs ::selection { + background-color: #5c545b; + color: #b9b5b8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #797379 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #797379 +} +/* base04 - #989498 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #989498 +} +/* base05 - #b9b5b8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b9b5b8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dd464c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fd8b19 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fdcc59 +} +.hljs-strong { + font-weight: bold; + color: #fdcc59 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8fc13e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #149b93 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #1290bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c85e7c +} +.hljs-emphasis { + color: #c85e7c; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b33508 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/horizon-dark.css b/modules/highlighter/styles/base16/horizon-dark.css new file mode 100644 index 0000000..c4c77f7 --- /dev/null +++ b/modules/highlighter/styles/base16/horizon-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Horizon Dark + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme horizon-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1C1E26 Default Background +base01 #232530 Lighter Background (Used for status bars, line number and folding marks) +base02 #2E303E Selection Background +base03 #6F6F70 Comments, Invisibles, Line Highlighting +base04 #9DA0A2 Dark Foreground (Used for status bars) +base05 #CBCED0 Default Foreground, Caret, Delimiters, Operators +base06 #DCDFE4 Light Foreground (Not often used) +base07 #E3E6EE Light Background (Not often used) +base08 #E93C58 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E58D7D Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #EFB993 Classes, Markup Bold, Search Text Background +base0B #EFAF8E Strings, Inherited Class, Markup Code, Diff Inserted +base0C #24A8B4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #DF5273 Functions, Methods, Attribute IDs, Headings +base0E #B072D1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #E4A382 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #CBCED0; + background: #1C1E26 +} +.hljs::selection, +.hljs ::selection { + background-color: #2E303E; + color: #CBCED0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6F6F70 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6F6F70 +} +/* base04 - #9DA0A2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9DA0A2 +} +/* base05 - #CBCED0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #CBCED0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #E93C58 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E58D7D +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #EFB993 +} +.hljs-strong { + font-weight: bold; + color: #EFB993 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #EFAF8E +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #24A8B4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #DF5273 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #B072D1 +} +.hljs-emphasis { + color: #B072D1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #E4A382 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/horizon-light.css b/modules/highlighter/styles/base16/horizon-light.css new file mode 100644 index 0000000..91b6c4a --- /dev/null +++ b/modules/highlighter/styles/base16/horizon-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Horizon Light + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme horizon-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #FDF0ED Default Background +base01 #FADAD1 Lighter Background (Used for status bars, line number and folding marks) +base02 #F9CBBE Selection Background +base03 #BDB3B1 Comments, Invisibles, Line Highlighting +base04 #948C8A Dark Foreground (Used for status bars) +base05 #403C3D Default Foreground, Caret, Delimiters, Operators +base06 #302C2D Light Foreground (Not often used) +base07 #201C1D Light Background (Not often used) +base08 #E95678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F9CEC3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FADAD1 Classes, Markup Bold, Search Text Background +base0B #29D398 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #59E1E3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #26BBD9 Functions, Methods, Attribute IDs, Headings +base0E #EE64AC Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F9CBBE Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #403C3D; + background: #FDF0ED +} +.hljs::selection, +.hljs ::selection { + background-color: #F9CBBE; + color: #403C3D +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #BDB3B1 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #BDB3B1 +} +/* base04 - #948C8A - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #948C8A +} +/* base05 - #403C3D - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #403C3D +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #E95678 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F9CEC3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FADAD1 +} +.hljs-strong { + font-weight: bold; + color: #FADAD1 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #29D398 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #59E1E3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #26BBD9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #EE64AC +} +.hljs-emphasis { + color: #EE64AC; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F9CBBE +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/humanoid-dark.css b/modules/highlighter/styles/base16/humanoid-dark.css new file mode 100644 index 0000000..6fc6bcf --- /dev/null +++ b/modules/highlighter/styles/base16/humanoid-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Humanoid dark + Author: Thomas (tasmo) Friese + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme humanoid-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #232629 Default Background +base01 #333b3d Lighter Background (Used for status bars, line number and folding marks) +base02 #484e54 Selection Background +base03 #60615d Comments, Invisibles, Line Highlighting +base04 #c0c0bd Dark Foreground (Used for status bars) +base05 #f8f8f2 Default Foreground, Caret, Delimiters, Operators +base06 #fcfcf6 Light Foreground (Not often used) +base07 #fcfcfc Light Background (Not often used) +base08 #f11235 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9505 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffb627 Classes, Markup Bold, Search Text Background +base0B #02d849 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0dd9d6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #00a6fb Functions, Methods, Attribute IDs, Headings +base0E #f15ee3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b27701 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #f8f8f2; + background: #232629 +} +.hljs::selection, +.hljs ::selection { + background-color: #484e54; + color: #f8f8f2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #60615d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #60615d +} +/* base04 - #c0c0bd - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #c0c0bd +} +/* base05 - #f8f8f2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #f8f8f2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f11235 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9505 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffb627 +} +.hljs-strong { + font-weight: bold; + color: #ffb627 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #02d849 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0dd9d6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #00a6fb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #f15ee3 +} +.hljs-emphasis { + color: #f15ee3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b27701 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/humanoid-light.css b/modules/highlighter/styles/base16/humanoid-light.css new file mode 100644 index 0000000..c702d22 --- /dev/null +++ b/modules/highlighter/styles/base16/humanoid-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Humanoid light + Author: Thomas (tasmo) Friese + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme humanoid-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f2 Default Background +base01 #efefe9 Lighter Background (Used for status bars, line number and folding marks) +base02 #deded8 Selection Background +base03 #c0c0bd Comments, Invisibles, Line Highlighting +base04 #60615d Dark Foreground (Used for status bars) +base05 #232629 Default Foreground, Caret, Delimiters, Operators +base06 #2f3337 Light Foreground (Not often used) +base07 #070708 Light Background (Not often used) +base08 #b0151a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff3d00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffb627 Classes, Markup Bold, Search Text Background +base0B #388e3c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #008e8e Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0082c9 Functions, Methods, Attribute IDs, Headings +base0E #700f98 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b27701 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #232629; + background: #f8f8f2 +} +.hljs::selection, +.hljs ::selection { + background-color: #deded8; + color: #232629 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #c0c0bd - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #c0c0bd +} +/* base04 - #60615d - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #60615d +} +/* base05 - #232629 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #232629 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b0151a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff3d00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffb627 +} +.hljs-strong { + font-weight: bold; + color: #ffb627 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #388e3c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #008e8e +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0082c9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #700f98 +} +.hljs-emphasis { + color: #700f98; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b27701 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ia-dark.css b/modules/highlighter/styles/base16/ia-dark.css new file mode 100644 index 0000000..77014c2 --- /dev/null +++ b/modules/highlighter/styles/base16/ia-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: iA Dark + Author: iA Inc. (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ia-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1a1a1a Default Background +base01 #222222 Lighter Background (Used for status bars, line number and folding marks) +base02 #1d414d Selection Background +base03 #767676 Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #d88568 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d86868 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b99353 Classes, Markup Bold, Search Text Background +base0B #83a471 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7c9cae Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8eccdd Functions, Methods, Attribute IDs, Headings +base0E #b98eb2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8b6c37 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #1a1a1a +} +.hljs::selection, +.hljs ::selection { + background-color: #1d414d; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #767676 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #767676 +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d88568 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d86868 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b99353 +} +.hljs-strong { + font-weight: bold; + color: #b99353 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #83a471 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7c9cae +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8eccdd +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b98eb2 +} +.hljs-emphasis { + color: #b98eb2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8b6c37 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ia-light.css b/modules/highlighter/styles/base16/ia-light.css new file mode 100644 index 0000000..d39fff4 --- /dev/null +++ b/modules/highlighter/styles/base16/ia-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: iA Light + Author: iA Inc. (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ia-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f6f6f6 Default Background +base01 #dedede Lighter Background (Used for status bars, line number and folding marks) +base02 #bde5f2 Selection Background +base03 #898989 Comments, Invisibles, Line Highlighting +base04 #767676 Dark Foreground (Used for status bars) +base05 #181818 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #9c5a02 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c43e18 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c48218 Classes, Markup Bold, Search Text Background +base0B #38781c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d6bb1 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #48bac2 Functions, Methods, Attribute IDs, Headings +base0E #a94598 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8b6c37 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #181818; + background: #f6f6f6 +} +.hljs::selection, +.hljs ::selection { + background-color: #bde5f2; + color: #181818 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #898989 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #898989 +} +/* base04 - #767676 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #767676 +} +/* base05 - #181818 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #181818 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #9c5a02 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c43e18 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c48218 +} +.hljs-strong { + font-weight: bold; + color: #c48218 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #38781c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d6bb1 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #48bac2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a94598 +} +.hljs-emphasis { + color: #a94598; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8b6c37 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/icy-dark.css b/modules/highlighter/styles/base16/icy-dark.css new file mode 100644 index 0000000..491cfd4 --- /dev/null +++ b/modules/highlighter/styles/base16/icy-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Icy Dark + Author: icyphox (https://icyphox.ga) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme icy-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #021012 Default Background +base01 #031619 Lighter Background (Used for status bars, line number and folding marks) +base02 #041f23 Selection Background +base03 #052e34 Comments, Invisibles, Line Highlighting +base04 #064048 Dark Foreground (Used for status bars) +base05 #095b67 Default Foreground, Caret, Delimiters, Operators +base06 #0c7c8c Light Foreground (Not often used) +base07 #109cb0 Light Background (Not often used) +base08 #16c1d9 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b3ebf2 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #80deea Classes, Markup Bold, Search Text Background +base0B #4dd0e1 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #26c6da Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #00bcd4 Functions, Methods, Attribute IDs, Headings +base0E #00acc1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #0097a7 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #095b67; + background: #021012 +} +.hljs::selection, +.hljs ::selection { + background-color: #041f23; + color: #095b67 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #052e34 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #052e34 +} +/* base04 - #064048 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #064048 +} +/* base05 - #095b67 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #095b67 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #16c1d9 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b3ebf2 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #80deea +} +.hljs-strong { + font-weight: bold; + color: #80deea +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4dd0e1 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #26c6da +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #00bcd4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #00acc1 +} +.hljs-emphasis { + color: #00acc1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #0097a7 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ir-black.css b/modules/highlighter/styles/base16/ir-black.css new file mode 100644 index 0000000..65653e5 --- /dev/null +++ b/modules/highlighter/styles/base16/ir-black.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: IR Black + Author: Timothée Poisot (http://timotheepoisot.fr) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ir-black + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #242422 Lighter Background (Used for status bars, line number and folding marks) +base02 #484844 Selection Background +base03 #6c6c66 Comments, Invisibles, Line Highlighting +base04 #918f88 Dark Foreground (Used for status bars) +base05 #b5b3aa Default Foreground, Caret, Delimiters, Operators +base06 #d9d7cc Light Foreground (Not often used) +base07 #fdfbee Light Background (Not often used) +base08 #ff6c60 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e9c062 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffffb6 Classes, Markup Bold, Search Text Background +base0B #a8ff60 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #c6c5fe Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #96cbfe Functions, Methods, Attribute IDs, Headings +base0E #ff73fd Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b18a3d Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b5b3aa; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #484844; + color: #b5b3aa +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6c6c66 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6c6c66 +} +/* base04 - #918f88 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #918f88 +} +/* base05 - #b5b3aa - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b5b3aa +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff6c60 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e9c062 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffffb6 +} +.hljs-strong { + font-weight: bold; + color: #ffffb6 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a8ff60 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #c6c5fe +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #96cbfe +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff73fd +} +.hljs-emphasis { + color: #ff73fd; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b18a3d +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/isotope.css b/modules/highlighter/styles/base16/isotope.css new file mode 100644 index 0000000..0bad052 --- /dev/null +++ b/modules/highlighter/styles/base16/isotope.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Isotope + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme isotope + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #404040 Lighter Background (Used for status bars, line number and folding marks) +base02 #606060 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #c0c0c0 Dark Foreground (Used for status bars) +base05 #d0d0d0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff0000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ff0099 Classes, Markup Bold, Search Text Background +base0B #33ff00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00ffff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0066ff Functions, Methods, Attribute IDs, Headings +base0E #cc00ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #3300ff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0d0d0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #606060; + color: #d0d0d0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #c0c0c0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #c0c0c0 +} +/* base05 - #d0d0d0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0d0d0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff0000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ff0099 +} +.hljs-strong { + font-weight: bold; + color: #ff0099 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #33ff00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00ffff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0066ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc00ff +} +.hljs-emphasis { + color: #cc00ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #3300ff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/kimber.css b/modules/highlighter/styles/base16/kimber.css new file mode 100644 index 0000000..9a8d97d --- /dev/null +++ b/modules/highlighter/styles/base16/kimber.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Kimber + Author: Mishka Nguyen (https://github.com/akhsiM) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme kimber + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #222222 Default Background +base01 #313131 Lighter Background (Used for status bars, line number and folding marks) +base02 #555D55 Selection Background +base03 #644646 Comments, Invisibles, Line Highlighting +base04 #5A5A5A Dark Foreground (Used for status bars) +base05 #DEDEE7 Default Foreground, Caret, Delimiters, Operators +base06 #C3C3B4 Light Foreground (Not often used) +base07 #FFFFE6 Light Background (Not often used) +base08 #C88C8C Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #476C88 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #D8B56D Classes, Markup Bold, Search Text Background +base0B #99C899 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #78B4B4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #537C9C Functions, Methods, Attribute IDs, Headings +base0E #86CACD Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #704F4F Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #DEDEE7; + background: #222222 +} +.hljs::selection, +.hljs ::selection { + background-color: #555D55; + color: #DEDEE7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #644646 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #644646 +} +/* base04 - #5A5A5A - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5A5A5A +} +/* base05 - #DEDEE7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #DEDEE7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #C88C8C +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #476C88 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #D8B56D +} +.hljs-strong { + font-weight: bold; + color: #D8B56D +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99C899 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #78B4B4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #537C9C +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #86CACD +} +.hljs-emphasis { + color: #86CACD; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #704F4F +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/london-tube.css b/modules/highlighter/styles/base16/london-tube.css new file mode 100644 index 0000000..2b285b2 --- /dev/null +++ b/modules/highlighter/styles/base16/london-tube.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: London Tube + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme london-tube + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #231f20 Default Background +base01 #1c3f95 Lighter Background (Used for status bars, line number and folding marks) +base02 #5a5758 Selection Background +base03 #737171 Comments, Invisibles, Line Highlighting +base04 #959ca1 Dark Foreground (Used for status bars) +base05 #d9d8d8 Default Foreground, Caret, Delimiters, Operators +base06 #e7e7e8 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ee2e24 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f386a1 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffd204 Classes, Markup Bold, Search Text Background +base0B #00853e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #85cebc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #009ddc Functions, Methods, Attribute IDs, Headings +base0E #98005d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b06110 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d9d8d8; + background: #231f20 +} +.hljs::selection, +.hljs ::selection { + background-color: #5a5758; + color: #d9d8d8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #737171 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #737171 +} +/* base04 - #959ca1 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #959ca1 +} +/* base05 - #d9d8d8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d9d8d8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ee2e24 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f386a1 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffd204 +} +.hljs-strong { + font-weight: bold; + color: #ffd204 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00853e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #85cebc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #009ddc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #98005d +} +.hljs-emphasis { + color: #98005d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b06110 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/macintosh.css b/modules/highlighter/styles/base16/macintosh.css new file mode 100644 index 0000000..9895b7b --- /dev/null +++ b/modules/highlighter/styles/base16/macintosh.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Macintosh + Author: Rebecca Bettencourt (http://www.kreativekorp.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme macintosh + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #404040 Lighter Background (Used for status bars, line number and folding marks) +base02 #404040 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #c0c0c0 Default Foreground, Caret, Delimiters, Operators +base06 #c0c0c0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dd0907 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff6403 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fbf305 Classes, Markup Bold, Search Text Background +base0B #1fb714 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #02abea Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000d3 Functions, Methods, Attribute IDs, Headings +base0E #4700a5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #90713a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c0c0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #404040; + color: #c0c0c0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #c0c0c0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c0c0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dd0907 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff6403 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fbf305 +} +.hljs-strong { + font-weight: bold; + color: #fbf305 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #1fb714 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #02abea +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000d3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #4700a5 +} +.hljs-emphasis { + color: #4700a5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #90713a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/marrakesh.css b/modules/highlighter/styles/base16/marrakesh.css new file mode 100644 index 0000000..5f86b58 --- /dev/null +++ b/modules/highlighter/styles/base16/marrakesh.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Marrakesh + Author: Alexandre Gavioli (http://github.com/Alexx2/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme marrakesh + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #201602 Default Background +base01 #302e00 Lighter Background (Used for status bars, line number and folding marks) +base02 #5f5b17 Selection Background +base03 #6c6823 Comments, Invisibles, Line Highlighting +base04 #86813b Dark Foreground (Used for status bars) +base05 #948e48 Default Foreground, Caret, Delimiters, Operators +base06 #ccc37a Light Foreground (Not often used) +base07 #faf0a5 Light Background (Not often used) +base08 #c35359 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b36144 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a88339 Classes, Markup Bold, Search Text Background +base0B #18974e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #75a738 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #477ca1 Functions, Methods, Attribute IDs, Headings +base0E #8868b3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b3588e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #948e48; + background: #201602 +} +.hljs::selection, +.hljs ::selection { + background-color: #5f5b17; + color: #948e48 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6c6823 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6c6823 +} +/* base04 - #86813b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #86813b +} +/* base05 - #948e48 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #948e48 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c35359 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b36144 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a88339 +} +.hljs-strong { + font-weight: bold; + color: #a88339 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #18974e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #75a738 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #477ca1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8868b3 +} +.hljs-emphasis { + color: #8868b3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b3588e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/materia.css b/modules/highlighter/styles/base16/materia.css new file mode 100644 index 0000000..1a24854 --- /dev/null +++ b/modules/highlighter/styles/base16/materia.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Materia + Author: Defman21 + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme materia + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #263238 Default Background +base01 #2C393F Lighter Background (Used for status bars, line number and folding marks) +base02 #37474F Selection Background +base03 #707880 Comments, Invisibles, Line Highlighting +base04 #C9CCD3 Dark Foreground (Used for status bars) +base05 #CDD3DE Default Foreground, Caret, Delimiters, Operators +base06 #D5DBE5 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #EC5F67 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #EA9560 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCC00 Classes, Markup Bold, Search Text Background +base0B #8BD649 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #80CBC4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #89DDFF Functions, Methods, Attribute IDs, Headings +base0E #82AAFF Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #EC5F67 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #CDD3DE; + background: #263238 +} +.hljs::selection, +.hljs ::selection { + background-color: #37474F; + color: #CDD3DE +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #707880 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #707880 +} +/* base04 - #C9CCD3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #C9CCD3 +} +/* base05 - #CDD3DE - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #CDD3DE +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EC5F67 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #EA9560 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCC00 +} +.hljs-strong { + font-weight: bold; + color: #FFCC00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8BD649 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #80CBC4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #89DDFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #82AAFF +} +.hljs-emphasis { + color: #82AAFF; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #EC5F67 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-darker.css b/modules/highlighter/styles/base16/material-darker.css new file mode 100644 index 0000000..95c9063 --- /dev/null +++ b/modules/highlighter/styles/base16/material-darker.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Darker + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-darker + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #212121 Default Background +base01 #303030 Lighter Background (Used for status bars, line number and folding marks) +base02 #353535 Selection Background +base03 #4A4A4A Comments, Invisibles, Line Highlighting +base04 #B2CCD6 Dark Foreground (Used for status bars) +base05 #EEFFFF Default Foreground, Caret, Delimiters, Operators +base06 #EEFFFF Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #F07178 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F78C6C Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCB6B Classes, Markup Bold, Search Text Background +base0B #C3E88D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #89DDFF Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #82AAFF Functions, Methods, Attribute IDs, Headings +base0E #C792EA Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #FF5370 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #EEFFFF; + background: #212121 +} +.hljs::selection, +.hljs ::selection { + background-color: #353535; + color: #EEFFFF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4A4A4A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4A4A4A +} +/* base04 - #B2CCD6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B2CCD6 +} +/* base05 - #EEFFFF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #EEFFFF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F07178 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F78C6C +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCB6B +} +.hljs-strong { + font-weight: bold; + color: #FFCB6B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C3E88D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #89DDFF +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #82AAFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C792EA +} +.hljs-emphasis { + color: #C792EA; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #FF5370 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-lighter.css b/modules/highlighter/styles/base16/material-lighter.css new file mode 100644 index 0000000..548688c --- /dev/null +++ b/modules/highlighter/styles/base16/material-lighter.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Lighter + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-lighter + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #FAFAFA Default Background +base01 #E7EAEC Lighter Background (Used for status bars, line number and folding marks) +base02 #CCEAE7 Selection Background +base03 #CCD7DA Comments, Invisibles, Line Highlighting +base04 #8796B0 Dark Foreground (Used for status bars) +base05 #80CBC4 Default Foreground, Caret, Delimiters, Operators +base06 #80CBC4 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #FF5370 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F76D47 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFB62C Classes, Markup Bold, Search Text Background +base0B #91B859 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #39ADB5 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6182B8 Functions, Methods, Attribute IDs, Headings +base0E #7C4DFF Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #E53935 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #80CBC4; + background: #FAFAFA +} +.hljs::selection, +.hljs ::selection { + background-color: #CCEAE7; + color: #80CBC4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #CCD7DA - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #CCD7DA +} +/* base04 - #8796B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8796B0 +} +/* base05 - #80CBC4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #80CBC4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF5370 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F76D47 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFB62C +} +.hljs-strong { + font-weight: bold; + color: #FFB62C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #91B859 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #39ADB5 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6182B8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7C4DFF +} +.hljs-emphasis { + color: #7C4DFF; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #E53935 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-palenight.css b/modules/highlighter/styles/base16/material-palenight.css new file mode 100644 index 0000000..53177cb --- /dev/null +++ b/modules/highlighter/styles/base16/material-palenight.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Palenight + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-palenight + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #292D3E Default Background +base01 #444267 Lighter Background (Used for status bars, line number and folding marks) +base02 #32374D Selection Background +base03 #676E95 Comments, Invisibles, Line Highlighting +base04 #8796B0 Dark Foreground (Used for status bars) +base05 #959DCB Default Foreground, Caret, Delimiters, Operators +base06 #959DCB Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #F07178 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F78C6C Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCB6B Classes, Markup Bold, Search Text Background +base0B #C3E88D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #89DDFF Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #82AAFF Functions, Methods, Attribute IDs, Headings +base0E #C792EA Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #FF5370 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #959DCB; + background: #292D3E +} +.hljs::selection, +.hljs ::selection { + background-color: #32374D; + color: #959DCB +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #676E95 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #676E95 +} +/* base04 - #8796B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8796B0 +} +/* base05 - #959DCB - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #959DCB +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F07178 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F78C6C +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCB6B +} +.hljs-strong { + font-weight: bold; + color: #FFCB6B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C3E88D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #89DDFF +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #82AAFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C792EA +} +.hljs-emphasis { + color: #C792EA; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #FF5370 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material-vivid.css b/modules/highlighter/styles/base16/material-vivid.css new file mode 100644 index 0000000..002917e --- /dev/null +++ b/modules/highlighter/styles/base16/material-vivid.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material Vivid + Author: joshyrobot + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material-vivid + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #202124 Default Background +base01 #27292c Lighter Background (Used for status bars, line number and folding marks) +base02 #323639 Selection Background +base03 #44464d Comments, Invisibles, Line Highlighting +base04 #676c71 Dark Foreground (Used for status bars) +base05 #80868b Default Foreground, Caret, Delimiters, Operators +base06 #9e9e9e Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #f44336 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9800 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffeb3b Classes, Markup Bold, Search Text Background +base0B #00e676 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00bcd4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #2196f3 Functions, Methods, Attribute IDs, Headings +base0E #673ab7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8d6e63 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #80868b; + background: #202124 +} +.hljs::selection, +.hljs ::selection { + background-color: #323639; + color: #80868b +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #44464d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #44464d +} +/* base04 - #676c71 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #676c71 +} +/* base05 - #80868b - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #80868b +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f44336 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9800 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffeb3b +} +.hljs-strong { + font-weight: bold; + color: #ffeb3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00e676 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00bcd4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #2196f3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #673ab7 +} +.hljs-emphasis { + color: #673ab7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8d6e63 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/material.css b/modules/highlighter/styles/base16/material.css new file mode 100644 index 0000000..ae72cfc --- /dev/null +++ b/modules/highlighter/styles/base16/material.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Material + Author: Nate Peterson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme material + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #263238 Default Background +base01 #2E3C43 Lighter Background (Used for status bars, line number and folding marks) +base02 #314549 Selection Background +base03 #546E7A Comments, Invisibles, Line Highlighting +base04 #B2CCD6 Dark Foreground (Used for status bars) +base05 #EEFFFF Default Foreground, Caret, Delimiters, Operators +base06 #EEFFFF Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #F07178 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F78C6C Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FFCB6B Classes, Markup Bold, Search Text Background +base0B #C3E88D Strings, Inherited Class, Markup Code, Diff Inserted +base0C #89DDFF Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #82AAFF Functions, Methods, Attribute IDs, Headings +base0E #C792EA Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #FF5370 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #EEFFFF; + background: #263238 +} +.hljs::selection, +.hljs ::selection { + background-color: #314549; + color: #EEFFFF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #546E7A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #546E7A +} +/* base04 - #B2CCD6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B2CCD6 +} +/* base05 - #EEFFFF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #EEFFFF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #F07178 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F78C6C +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FFCB6B +} +.hljs-strong { + font-weight: bold; + color: #FFCB6B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C3E88D +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #89DDFF +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #82AAFF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C792EA +} +.hljs-emphasis { + color: #C792EA; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #FF5370 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/mellow-purple.css b/modules/highlighter/styles/base16/mellow-purple.css new file mode 100644 index 0000000..41f3706 --- /dev/null +++ b/modules/highlighter/styles/base16/mellow-purple.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Mellow Purple + Author: gidsi + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme mellow-purple + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1e0528 Default Background +base01 #1A092D Lighter Background (Used for status bars, line number and folding marks) +base02 #331354 Selection Background +base03 #320f55 Comments, Invisibles, Line Highlighting +base04 #873582 Dark Foreground (Used for status bars) +base05 #ffeeff Default Foreground, Caret, Delimiters, Operators +base06 #ffeeff Light Foreground (Not often used) +base07 #f8c0ff Light Background (Not often used) +base08 #00d9e9 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #aa00a3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #955ae7 Classes, Markup Bold, Search Text Background +base0B #05cb0d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #b900b1 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #550068 Functions, Methods, Attribute IDs, Headings +base0E #8991bb Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #4d6fff Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #ffeeff; + background: #1e0528 +} +.hljs::selection, +.hljs ::selection { + background-color: #331354; + color: #ffeeff +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #320f55 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #320f55 +} +/* base04 - #873582 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #873582 +} +/* base05 - #ffeeff - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #ffeeff +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #00d9e9 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #aa00a3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #955ae7 +} +.hljs-strong { + font-weight: bold; + color: #955ae7 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #05cb0d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #b900b1 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #550068 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8991bb +} +.hljs-emphasis { + color: #8991bb; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #4d6fff +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/mexico-light.css b/modules/highlighter/styles/base16/mexico-light.css new file mode 100644 index 0000000..8560231 --- /dev/null +++ b/modules/highlighter/styles/base16/mexico-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Mexico Light + Author: Sheldon Johnson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme mexico-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f8 Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d8d8 Selection Background +base03 #b8b8b8 Comments, Invisibles, Line Highlighting +base04 #585858 Dark Foreground (Used for status bars) +base05 #383838 Default Foreground, Caret, Delimiters, Operators +base06 #282828 Light Foreground (Not often used) +base07 #181818 Light Background (Not often used) +base08 #ab4642 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f79a0e Classes, Markup Bold, Search Text Background +base0B #538947 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #4b8093 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cafc2 Functions, Methods, Attribute IDs, Headings +base0E #96609e Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383838; + background: #f8f8f8 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d8d8; + color: #383838 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b8b8b8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b8b8b8 +} +/* base04 - #585858 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #585858 +} +/* base05 - #383838 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383838 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ab4642 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f79a0e +} +.hljs-strong { + font-weight: bold; + color: #f79a0e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #538947 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #4b8093 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cafc2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #96609e +} +.hljs-emphasis { + color: #96609e; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/mocha.css b/modules/highlighter/styles/base16/mocha.css new file mode 100644 index 0000000..908f3bb --- /dev/null +++ b/modules/highlighter/styles/base16/mocha.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Mocha + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme mocha + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #3B3228 Default Background +base01 #534636 Lighter Background (Used for status bars, line number and folding marks) +base02 #645240 Selection Background +base03 #7e705a Comments, Invisibles, Line Highlighting +base04 #b8afad Dark Foreground (Used for status bars) +base05 #d0c8c6 Default Foreground, Caret, Delimiters, Operators +base06 #e9e1dd Light Foreground (Not often used) +base07 #f5eeeb Light Background (Not often used) +base08 #cb6077 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d28b71 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f4bc87 Classes, Markup Bold, Search Text Background +base0B #beb55b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7bbda4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8ab3b5 Functions, Methods, Attribute IDs, Headings +base0E #a89bb9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bb9584 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0c8c6; + background: #3B3228 +} +.hljs::selection, +.hljs ::selection { + background-color: #645240; + color: #d0c8c6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7e705a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7e705a +} +/* base04 - #b8afad - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8afad +} +/* base05 - #d0c8c6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0c8c6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cb6077 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d28b71 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f4bc87 +} +.hljs-strong { + font-weight: bold; + color: #f4bc87 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #beb55b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7bbda4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8ab3b5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a89bb9 +} +.hljs-emphasis { + color: #a89bb9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bb9584 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/monokai.css b/modules/highlighter/styles/base16/monokai.css new file mode 100644 index 0000000..097ce34 --- /dev/null +++ b/modules/highlighter/styles/base16/monokai.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Monokai + Author: Wimer Hazenberg (http://www.monokai.nl) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme monokai + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #272822 Default Background +base01 #383830 Lighter Background (Used for status bars, line number and folding marks) +base02 #49483e Selection Background +base03 #75715e Comments, Invisibles, Line Highlighting +base04 #a59f85 Dark Foreground (Used for status bars) +base05 #f8f8f2 Default Foreground, Caret, Delimiters, Operators +base06 #f5f4f1 Light Foreground (Not often used) +base07 #f9f8f5 Light Background (Not often used) +base08 #f92672 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fd971f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f4bf75 Classes, Markup Bold, Search Text Background +base0B #a6e22e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #a1efe4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #66d9ef Functions, Methods, Attribute IDs, Headings +base0E #ae81ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cc6633 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #f8f8f2; + background: #272822 +} +.hljs::selection, +.hljs ::selection { + background-color: #49483e; + color: #f8f8f2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #75715e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #75715e +} +/* base04 - #a59f85 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a59f85 +} +/* base05 - #f8f8f2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #f8f8f2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f92672 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fd971f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f4bf75 +} +.hljs-strong { + font-weight: bold; + color: #f4bf75 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a6e22e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #a1efe4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #66d9ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ae81ff +} +.hljs-emphasis { + color: #ae81ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cc6633 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/nebula.css b/modules/highlighter/styles/base16/nebula.css new file mode 100644 index 0000000..eb04d2b --- /dev/null +++ b/modules/highlighter/styles/base16/nebula.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Nebula + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme nebula + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #22273b Default Background +base01 #414f60 Lighter Background (Used for status bars, line number and folding marks) +base02 #5a8380 Selection Background +base03 #6e6f72 Comments, Invisibles, Line Highlighting +base04 #87888b Dark Foreground (Used for status bars) +base05 #a4a6a9 Default Foreground, Caret, Delimiters, Operators +base06 #c7c9cd Light Foreground (Not often used) +base07 #8dbdaa Light Background (Not often used) +base08 #777abc Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #94929e Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #4f9062 Classes, Markup Bold, Search Text Background +base0B #6562a8 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #226f68 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4d6bb6 Functions, Methods, Attribute IDs, Headings +base0E #716cae Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8c70a7 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a4a6a9; + background: #22273b +} +.hljs::selection, +.hljs ::selection { + background-color: #5a8380; + color: #a4a6a9 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6e6f72 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6e6f72 +} +/* base04 - #87888b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #87888b +} +/* base05 - #a4a6a9 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a4a6a9 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #777abc +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #94929e +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #4f9062 +} +.hljs-strong { + font-weight: bold; + color: #4f9062 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6562a8 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #226f68 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4d6bb6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #716cae +} +.hljs-emphasis { + color: #716cae; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8c70a7 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/nord.css b/modules/highlighter/styles/base16/nord.css new file mode 100644 index 0000000..6227706 --- /dev/null +++ b/modules/highlighter/styles/base16/nord.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Nord + Author: arcticicestudio + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme nord + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2E3440 Default Background +base01 #3B4252 Lighter Background (Used for status bars, line number and folding marks) +base02 #434C5E Selection Background +base03 #4C566A Comments, Invisibles, Line Highlighting +base04 #D8DEE9 Dark Foreground (Used for status bars) +base05 #E5E9F0 Default Foreground, Caret, Delimiters, Operators +base06 #ECEFF4 Light Foreground (Not often used) +base07 #8FBCBB Light Background (Not often used) +base08 #BF616A Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D08770 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #EBCB8B Classes, Markup Bold, Search Text Background +base0B #A3BE8C Strings, Inherited Class, Markup Code, Diff Inserted +base0C #88C0D0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #81A1C1 Functions, Methods, Attribute IDs, Headings +base0E #B48EAD Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5E81AC Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #E5E9F0; + background: #2E3440 +} +.hljs::selection, +.hljs ::selection { + background-color: #434C5E; + color: #E5E9F0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4C566A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4C566A +} +/* base04 - #D8DEE9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #D8DEE9 +} +/* base05 - #E5E9F0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #E5E9F0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #BF616A +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D08770 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #EBCB8B +} +.hljs-strong { + font-weight: bold; + color: #EBCB8B +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #A3BE8C +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #88C0D0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #81A1C1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #B48EAD +} +.hljs-emphasis { + color: #B48EAD; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5E81AC +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/nova.css b/modules/highlighter/styles/base16/nova.css new file mode 100644 index 0000000..3343e9f --- /dev/null +++ b/modules/highlighter/styles/base16/nova.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Nova + Author: George Essig (https://github.com/gessig), Trevor D. Miller (https://trevordmiller.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme nova + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #3C4C55 Default Background +base01 #556873 Lighter Background (Used for status bars, line number and folding marks) +base02 #6A7D89 Selection Background +base03 #899BA6 Comments, Invisibles, Line Highlighting +base04 #899BA6 Dark Foreground (Used for status bars) +base05 #C5D4DD Default Foreground, Caret, Delimiters, Operators +base06 #899BA6 Light Foreground (Not often used) +base07 #556873 Light Background (Not often used) +base08 #83AFE5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #7FC1CA Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #A8CE93 Classes, Markup Bold, Search Text Background +base0B #7FC1CA Strings, Inherited Class, Markup Code, Diff Inserted +base0C #F2C38F Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83AFE5 Functions, Methods, Attribute IDs, Headings +base0E #9A93E1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F2C38F Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C5D4DD; + background: #3C4C55 +} +.hljs::selection, +.hljs ::selection { + background-color: #6A7D89; + color: #C5D4DD +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #899BA6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #899BA6 +} +/* base04 - #899BA6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #899BA6 +} +/* base05 - #C5D4DD - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C5D4DD +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #83AFE5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #7FC1CA +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #A8CE93 +} +.hljs-strong { + font-weight: bold; + color: #A8CE93 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7FC1CA +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #F2C38F +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83AFE5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9A93E1 +} +.hljs-emphasis { + color: #9A93E1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F2C38F +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ocean.css b/modules/highlighter/styles/base16/ocean.css new file mode 100644 index 0000000..5ed9f6c --- /dev/null +++ b/modules/highlighter/styles/base16/ocean.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Ocean + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ocean + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2b303b Default Background +base01 #343d46 Lighter Background (Used for status bars, line number and folding marks) +base02 #4f5b66 Selection Background +base03 #65737e Comments, Invisibles, Line Highlighting +base04 #a7adba Dark Foreground (Used for status bars) +base05 #c0c5ce Default Foreground, Caret, Delimiters, Operators +base06 #dfe1e8 Light Foreground (Not often used) +base07 #eff1f5 Light Background (Not often used) +base08 #bf616a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d08770 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ebcb8b Classes, Markup Bold, Search Text Background +base0B #a3be8c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #96b5b4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8fa1b3 Functions, Methods, Attribute IDs, Headings +base0E #b48ead Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ab7967 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c5ce; + background: #2b303b +} +.hljs::selection, +.hljs ::selection { + background-color: #4f5b66; + color: #c0c5ce +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #65737e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #65737e +} +/* base04 - #a7adba - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a7adba +} +/* base05 - #c0c5ce - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c5ce +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bf616a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d08770 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ebcb8b +} +.hljs-strong { + font-weight: bold; + color: #ebcb8b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a3be8c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #96b5b4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8fa1b3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b48ead +} +.hljs-emphasis { + color: #b48ead; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ab7967 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/oceanicnext.css b/modules/highlighter/styles/base16/oceanicnext.css new file mode 100644 index 0000000..a2f8214 --- /dev/null +++ b/modules/highlighter/styles/base16/oceanicnext.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: OceanicNext + Author: https://github.com/voronianski/oceanic-next-color-scheme + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme oceanicnext + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1B2B34 Default Background +base01 #343D46 Lighter Background (Used for status bars, line number and folding marks) +base02 #4F5B66 Selection Background +base03 #65737E Comments, Invisibles, Line Highlighting +base04 #A7ADBA Dark Foreground (Used for status bars) +base05 #C0C5CE Default Foreground, Caret, Delimiters, Operators +base06 #CDD3DE Light Foreground (Not often used) +base07 #D8DEE9 Light Background (Not often used) +base08 #EC5f67 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #F99157 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #FAC863 Classes, Markup Bold, Search Text Background +base0B #99C794 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5FB3B3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6699CC Functions, Methods, Attribute IDs, Headings +base0E #C594C5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #AB7967 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C0C5CE; + background: #1B2B34 +} +.hljs::selection, +.hljs ::selection { + background-color: #4F5B66; + color: #C0C5CE +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #65737E - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #65737E +} +/* base04 - #A7ADBA - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #A7ADBA +} +/* base05 - #C0C5CE - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C0C5CE +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EC5f67 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #F99157 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #FAC863 +} +.hljs-strong { + font-weight: bold; + color: #FAC863 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99C794 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5FB3B3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6699CC +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #C594C5 +} +.hljs-emphasis { + color: #C594C5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #AB7967 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/one-light.css b/modules/highlighter/styles/base16/one-light.css new file mode 100644 index 0000000..a7241d0 --- /dev/null +++ b/modules/highlighter/styles/base16/one-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: One Light + Author: Daniel Pfeifer (http://github.com/purpleKarrot) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme one-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fafafa Default Background +base01 #f0f0f1 Lighter Background (Used for status bars, line number and folding marks) +base02 #e5e5e6 Selection Background +base03 #a0a1a7 Comments, Invisibles, Line Highlighting +base04 #696c77 Dark Foreground (Used for status bars) +base05 #383a42 Default Foreground, Caret, Delimiters, Operators +base06 #202227 Light Foreground (Not often used) +base07 #090a0b Light Background (Not often used) +base08 #ca1243 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d75f00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c18401 Classes, Markup Bold, Search Text Background +base0B #50a14f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0184bc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4078f2 Functions, Methods, Attribute IDs, Headings +base0E #a626a4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #986801 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383a42; + background: #fafafa +} +.hljs::selection, +.hljs ::selection { + background-color: #e5e5e6; + color: #383a42 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a0a1a7 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a0a1a7 +} +/* base04 - #696c77 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #696c77 +} +/* base05 - #383a42 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383a42 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ca1243 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d75f00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c18401 +} +.hljs-strong { + font-weight: bold; + color: #c18401 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #50a14f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0184bc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4078f2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a626a4 +} +.hljs-emphasis { + color: #a626a4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #986801 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/onedark.css b/modules/highlighter/styles/base16/onedark.css new file mode 100644 index 0000000..58a8a16 --- /dev/null +++ b/modules/highlighter/styles/base16/onedark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: OneDark + Author: Lalit Magant (http://github.com/tilal6991) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme onedark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282c34 Default Background +base01 #353b45 Lighter Background (Used for status bars, line number and folding marks) +base02 #3e4451 Selection Background +base03 #545862 Comments, Invisibles, Line Highlighting +base04 #565c64 Dark Foreground (Used for status bars) +base05 #abb2bf Default Foreground, Caret, Delimiters, Operators +base06 #b6bdca Light Foreground (Not often used) +base07 #c8ccd4 Light Background (Not often used) +base08 #e06c75 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d19a66 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e5c07b Classes, Markup Bold, Search Text Background +base0B #98c379 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #56b6c2 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #61afef Functions, Methods, Attribute IDs, Headings +base0E #c678dd Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #be5046 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #abb2bf; + background: #282c34 +} +.hljs::selection, +.hljs ::selection { + background-color: #3e4451; + color: #abb2bf +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #545862 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #545862 +} +/* base04 - #565c64 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #565c64 +} +/* base05 - #abb2bf - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #abb2bf +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e06c75 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d19a66 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e5c07b +} +.hljs-strong { + font-weight: bold; + color: #e5c07b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #98c379 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #56b6c2 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #61afef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c678dd +} +.hljs-emphasis { + color: #c678dd; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #be5046 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/outrun-dark.css b/modules/highlighter/styles/base16/outrun-dark.css new file mode 100644 index 0000000..ab941ef --- /dev/null +++ b/modules/highlighter/styles/base16/outrun-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Outrun Dark + Author: Hugo Delahousse (http://github.com/hugodelahousse/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme outrun-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #00002A Default Background +base01 #20204A Lighter Background (Used for status bars, line number and folding marks) +base02 #30305A Selection Background +base03 #50507A Comments, Invisibles, Line Highlighting +base04 #B0B0DA Dark Foreground (Used for status bars) +base05 #D0D0FA Default Foreground, Caret, Delimiters, Operators +base06 #E0E0FF Light Foreground (Not often used) +base07 #F5F5FF Light Background (Not often used) +base08 #FF4242 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FC8D28 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #F3E877 Classes, Markup Bold, Search Text Background +base0B #59F176 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #0EF0F0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #66B0FF Functions, Methods, Attribute IDs, Headings +base0E #F10596 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F003EF Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0FA; + background: #00002A +} +.hljs::selection, +.hljs ::selection { + background-color: #30305A; + color: #D0D0FA +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #50507A - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #50507A +} +/* base04 - #B0B0DA - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B0B0DA +} +/* base05 - #D0D0FA - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0FA +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF4242 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FC8D28 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #F3E877 +} +.hljs-strong { + font-weight: bold; + color: #F3E877 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #59F176 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #0EF0F0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #66B0FF +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #F10596 +} +.hljs-emphasis { + color: #F10596; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F003EF +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/papercolor-dark.css b/modules/highlighter/styles/base16/papercolor-dark.css new file mode 100644 index 0000000..3b84413 --- /dev/null +++ b/modules/highlighter/styles/base16/papercolor-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: PaperColor Dark + Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme papercolor-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1c1c1c Default Background +base01 #af005f Lighter Background (Used for status bars, line number and folding marks) +base02 #5faf00 Selection Background +base03 #d7af5f Comments, Invisibles, Line Highlighting +base04 #5fafd7 Dark Foreground (Used for status bars) +base05 #808080 Default Foreground, Caret, Delimiters, Operators +base06 #d7875f Light Foreground (Not often used) +base07 #d0d0d0 Light Background (Not often used) +base08 #585858 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #5faf5f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #afd700 Classes, Markup Bold, Search Text Background +base0B #af87d7 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #ffaf00 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #ff5faf Functions, Methods, Attribute IDs, Headings +base0E #00afaf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #5f8787 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #808080; + background: #1c1c1c +} +.hljs::selection, +.hljs ::selection { + background-color: #5faf00; + color: #808080 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #d7af5f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #d7af5f +} +/* base04 - #5fafd7 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5fafd7 +} +/* base05 - #808080 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #808080 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #585858 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #5faf5f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #afd700 +} +.hljs-strong { + font-weight: bold; + color: #afd700 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #af87d7 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #ffaf00 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #ff5faf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #00afaf +} +.hljs-emphasis { + color: #00afaf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #5f8787 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/papercolor-light.css b/modules/highlighter/styles/base16/papercolor-light.css new file mode 100644 index 0000000..6fe0125 --- /dev/null +++ b/modules/highlighter/styles/base16/papercolor-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: PaperColor Light + Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme papercolor-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #eeeeee Default Background +base01 #af0000 Lighter Background (Used for status bars, line number and folding marks) +base02 #008700 Selection Background +base03 #5f8700 Comments, Invisibles, Line Highlighting +base04 #0087af Dark Foreground (Used for status bars) +base05 #444444 Default Foreground, Caret, Delimiters, Operators +base06 #005f87 Light Foreground (Not often used) +base07 #878787 Light Background (Not often used) +base08 #bcbcbc Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d70000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #d70087 Classes, Markup Bold, Search Text Background +base0B #8700af Strings, Inherited Class, Markup Code, Diff Inserted +base0C #d75f00 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #d75f00 Functions, Methods, Attribute IDs, Headings +base0E #005faf Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #005f87 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #444444; + background: #eeeeee +} +.hljs::selection, +.hljs ::selection { + background-color: #008700; + color: #444444 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f8700 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f8700 +} +/* base04 - #0087af - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #0087af +} +/* base05 - #444444 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #444444 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #bcbcbc +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d70000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #d70087 +} +.hljs-strong { + font-weight: bold; + color: #d70087 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8700af +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #d75f00 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #d75f00 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #005faf +} +.hljs-emphasis { + color: #005faf; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #005f87 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/paraiso.css b/modules/highlighter/styles/base16/paraiso.css new file mode 100644 index 0000000..962104e --- /dev/null +++ b/modules/highlighter/styles/base16/paraiso.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Paraiso + Author: Jan T. Sott + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme paraiso + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2f1e2e Default Background +base01 #41323f Lighter Background (Used for status bars, line number and folding marks) +base02 #4f424c Selection Background +base03 #776e71 Comments, Invisibles, Line Highlighting +base04 #8d8687 Dark Foreground (Used for status bars) +base05 #a39e9b Default Foreground, Caret, Delimiters, Operators +base06 #b9b6b0 Light Foreground (Not often used) +base07 #e7e9db Light Background (Not often used) +base08 #ef6155 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f99b15 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fec418 Classes, Markup Bold, Search Text Background +base0B #48b685 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5bc4bf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #06b6ef Functions, Methods, Attribute IDs, Headings +base0E #815ba4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e96ba8 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a39e9b; + background: #2f1e2e +} +.hljs::selection, +.hljs ::selection { + background-color: #4f424c; + color: #a39e9b +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #776e71 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #776e71 +} +/* base04 - #8d8687 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #8d8687 +} +/* base05 - #a39e9b - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a39e9b +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ef6155 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f99b15 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fec418 +} +.hljs-strong { + font-weight: bold; + color: #fec418 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #48b685 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5bc4bf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #06b6ef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #815ba4 +} +.hljs-emphasis { + color: #815ba4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e96ba8 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/pasque.css b/modules/highlighter/styles/base16/pasque.css new file mode 100644 index 0000000..92f5c18 --- /dev/null +++ b/modules/highlighter/styles/base16/pasque.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Pasque + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme pasque + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #271C3A Default Background +base01 #100323 Lighter Background (Used for status bars, line number and folding marks) +base02 #3E2D5C Selection Background +base03 #5D5766 Comments, Invisibles, Line Highlighting +base04 #BEBCBF Dark Foreground (Used for status bars) +base05 #DEDCDF Default Foreground, Caret, Delimiters, Operators +base06 #EDEAEF Light Foreground (Not often used) +base07 #BBAADD Light Background (Not often used) +base08 #A92258 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #918889 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #804ead Classes, Markup Bold, Search Text Background +base0B #C6914B Strings, Inherited Class, Markup Code, Diff Inserted +base0C #7263AA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8E7DC6 Functions, Methods, Attribute IDs, Headings +base0E #953B9D Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #59325C Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #DEDCDF; + background: #271C3A +} +.hljs::selection, +.hljs ::selection { + background-color: #3E2D5C; + color: #DEDCDF +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5D5766 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5D5766 +} +/* base04 - #BEBCBF - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #BEBCBF +} +/* base05 - #DEDCDF - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #DEDCDF +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #A92258 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #918889 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #804ead +} +.hljs-strong { + font-weight: bold; + color: #804ead +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #C6914B +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #7263AA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8E7DC6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #953B9D +} +.hljs-emphasis { + color: #953B9D; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #59325C +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/phd.css b/modules/highlighter/styles/base16/phd.css new file mode 100644 index 0000000..4bcdde9 --- /dev/null +++ b/modules/highlighter/styles/base16/phd.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: PhD + Author: Hennig Hasemann (http://leetless.de/vim.html) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme phd + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #061229 Default Background +base01 #2a3448 Lighter Background (Used for status bars, line number and folding marks) +base02 #4d5666 Selection Background +base03 #717885 Comments, Invisibles, Line Highlighting +base04 #9a99a3 Dark Foreground (Used for status bars) +base05 #b8bbc2 Default Foreground, Caret, Delimiters, Operators +base06 #dbdde0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #d07346 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f0a000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fbd461 Classes, Markup Bold, Search Text Background +base0B #99bf52 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #72b9bf Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5299bf Functions, Methods, Attribute IDs, Headings +base0E #9989cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b08060 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #b8bbc2; + background: #061229 +} +.hljs::selection, +.hljs ::selection { + background-color: #4d5666; + color: #b8bbc2 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #717885 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #717885 +} +/* base04 - #9a99a3 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9a99a3 +} +/* base05 - #b8bbc2 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #b8bbc2 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d07346 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f0a000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fbd461 +} +.hljs-strong { + font-weight: bold; + color: #fbd461 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99bf52 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #72b9bf +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5299bf +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9989cc +} +.hljs-emphasis { + color: #9989cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b08060 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/pico.css b/modules/highlighter/styles/base16/pico.css new file mode 100644 index 0000000..42aec9d --- /dev/null +++ b/modules/highlighter/styles/base16/pico.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Pico + Author: PICO-8 (http://www.lexaloffle.com/pico-8.php) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme pico + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #1d2b53 Lighter Background (Used for status bars, line number and folding marks) +base02 #7e2553 Selection Background +base03 #008751 Comments, Invisibles, Line Highlighting +base04 #ab5236 Dark Foreground (Used for status bars) +base05 #5f574f Default Foreground, Caret, Delimiters, Operators +base06 #c2c3c7 Light Foreground (Not often used) +base07 #fff1e8 Light Background (Not often used) +base08 #ff004d Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffa300 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fff024 Classes, Markup Bold, Search Text Background +base0B #00e756 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #29adff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83769c Functions, Methods, Attribute IDs, Headings +base0E #ff77a8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ffccaa Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5f574f; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #7e2553; + color: #5f574f +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #008751 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #008751 +} +/* base04 - #ab5236 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ab5236 +} +/* base05 - #5f574f - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5f574f +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff004d +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffa300 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fff024 +} +.hljs-strong { + font-weight: bold; + color: #fff024 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00e756 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #29adff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83769c +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff77a8 +} +.hljs-emphasis { + color: #ff77a8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ffccaa +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/pop.css b/modules/highlighter/styles/base16/pop.css new file mode 100644 index 0000000..d8b2cb7 --- /dev/null +++ b/modules/highlighter/styles/base16/pop.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Pop + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme pop + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #b0b0b0 Dark Foreground (Used for status bars) +base05 #d0d0d0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #eb008a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f29333 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f8ca12 Classes, Markup Bold, Search Text Background +base0B #37b349 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00aabb Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0e5a94 Functions, Methods, Attribute IDs, Headings +base0E #b31e8d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #7a2d00 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d0d0d0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #d0d0d0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #b0b0b0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b0b0b0 +} +/* base05 - #d0d0d0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d0d0d0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #eb008a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f29333 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f8ca12 +} +.hljs-strong { + font-weight: bold; + color: #f8ca12 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #37b349 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00aabb +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0e5a94 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b31e8d +} +.hljs-emphasis { + color: #b31e8d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #7a2d00 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/porple.css b/modules/highlighter/styles/base16/porple.css new file mode 100644 index 0000000..59d319c --- /dev/null +++ b/modules/highlighter/styles/base16/porple.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Porple + Author: Niek den Breeje (https://github.com/AuditeMarlow) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme porple + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #292c36 Default Background +base01 #333344 Lighter Background (Used for status bars, line number and folding marks) +base02 #474160 Selection Background +base03 #65568a Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #d8d8d8 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #f84547 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d28e5d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #efa16b Classes, Markup Bold, Search Text Background +base0B #95c76f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #64878f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #8485ce Functions, Methods, Attribute IDs, Headings +base0E #b74989 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #986841 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d8d8d8; + background: #292c36 +} +.hljs::selection, +.hljs ::selection { + background-color: #474160; + color: #d8d8d8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #65568a - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #65568a +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #d8d8d8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d8d8d8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f84547 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d28e5d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #efa16b +} +.hljs-strong { + font-weight: bold; + color: #efa16b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #95c76f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #64878f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #8485ce +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b74989 +} +.hljs-emphasis { + color: #b74989; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #986841 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/qualia.css b/modules/highlighter/styles/base16/qualia.css new file mode 100644 index 0000000..f518a3e --- /dev/null +++ b/modules/highlighter/styles/base16/qualia.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Qualia + Author: isaacwhanson + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme qualia + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #101010 Default Background +base01 #454545 Lighter Background (Used for status bars, line number and folding marks) +base02 #454545 Selection Background +base03 #454545 Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #C0C0C0 Default Foreground, Caret, Delimiters, Operators +base06 #C0C0C0 Light Foreground (Not often used) +base07 #454545 Light Background (Not often used) +base08 #EFA6A2 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #A3B8EF Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #E6A3DC Classes, Markup Bold, Search Text Background +base0B #80C990 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #C8C874 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #50CACD Functions, Methods, Attribute IDs, Headings +base0E #E0AF85 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #808080 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C0C0C0; + background: #101010 +} +.hljs::selection, +.hljs ::selection { + background-color: #454545; + color: #C0C0C0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #454545 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #454545 +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #C0C0C0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C0C0C0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EFA6A2 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #A3B8EF +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #E6A3DC +} +.hljs-strong { + font-weight: bold; + color: #E6A3DC +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #80C990 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #C8C874 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #50CACD +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #E0AF85 +} +.hljs-emphasis { + color: #E0AF85; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #808080 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/railscasts.css b/modules/highlighter/styles/base16/railscasts.css new file mode 100644 index 0000000..00c7c61 --- /dev/null +++ b/modules/highlighter/styles/base16/railscasts.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Railscasts + Author: Ryan Bates (http://railscasts.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme railscasts + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2b2b2b Default Background +base01 #272935 Lighter Background (Used for status bars, line number and folding marks) +base02 #3a4055 Selection Background +base03 #5a647e Comments, Invisibles, Line Highlighting +base04 #d4cfc9 Dark Foreground (Used for status bars) +base05 #e6e1dc Default Foreground, Caret, Delimiters, Operators +base06 #f4f1ed Light Foreground (Not often used) +base07 #f9f7f3 Light Background (Not often used) +base08 #da4939 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cc7833 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffc66d Classes, Markup Bold, Search Text Background +base0B #a5c261 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #519f50 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6d9cbe Functions, Methods, Attribute IDs, Headings +base0E #b6b3eb Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #bc9458 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e6e1dc; + background: #2b2b2b +} +.hljs::selection, +.hljs ::selection { + background-color: #3a4055; + color: #e6e1dc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5a647e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5a647e +} +/* base04 - #d4cfc9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #d4cfc9 +} +/* base05 - #e6e1dc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e6e1dc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #da4939 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cc7833 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffc66d +} +.hljs-strong { + font-weight: bold; + color: #ffc66d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a5c261 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #519f50 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6d9cbe +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b6b3eb +} +.hljs-emphasis { + color: #b6b3eb; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #bc9458 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/rebecca.css b/modules/highlighter/styles/base16/rebecca.css new file mode 100644 index 0000000..c9ac8d3 --- /dev/null +++ b/modules/highlighter/styles/base16/rebecca.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rebecca + Author: Victor Borja (http://github.com/vic) based on Rebecca Theme (http://github.com/vic/rebecca-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme rebecca + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #292a44 Default Background +base01 #663399 Lighter Background (Used for status bars, line number and folding marks) +base02 #383a62 Selection Background +base03 #666699 Comments, Invisibles, Line Highlighting +base04 #a0a0c5 Dark Foreground (Used for status bars) +base05 #f1eff8 Default Foreground, Caret, Delimiters, Operators +base06 #ccccff Light Foreground (Not often used) +base07 #53495d Light Background (Not often used) +base08 #a0a0c5 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #efe4a1 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ae81ff Classes, Markup Bold, Search Text Background +base0B #6dfedf Strings, Inherited Class, Markup Code, Diff Inserted +base0C #8eaee0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #2de0a7 Functions, Methods, Attribute IDs, Headings +base0E #7aa5ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #ff79c6 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #f1eff8; + background: #292a44 +} +.hljs::selection, +.hljs ::selection { + background-color: #383a62; + color: #f1eff8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #666699 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #666699 +} +/* base04 - #a0a0c5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a0a0c5 +} +/* base05 - #f1eff8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #f1eff8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #a0a0c5 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #efe4a1 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ae81ff +} +.hljs-strong { + font-weight: bold; + color: #ae81ff +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6dfedf +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #8eaee0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #2de0a7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #7aa5ff +} +.hljs-emphasis { + color: #7aa5ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #ff79c6 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ros-pine-dawn.css b/modules/highlighter/styles/base16/ros-pine-dawn.css new file mode 100644 index 0000000..7509d0b --- /dev/null +++ b/modules/highlighter/styles/base16/ros-pine-dawn.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rosé Pine Dawn + Author: Emilia Dunfelt + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ros-pine-dawn + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #faf4ed Default Background +base01 #fffaf3 Lighter Background (Used for status bars, line number and folding marks) +base02 #f2e9de Selection Background +base03 #9893a5 Comments, Invisibles, Line Highlighting +base04 #6e6a86 Dark Foreground (Used for status bars) +base05 #575279 Default Foreground, Caret, Delimiters, Operators +base06 #555169 Light Foreground (Not often used) +base07 #26233a Light Background (Not often used) +base08 #1f1d2e Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #b4637a Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ea9d34 Classes, Markup Bold, Search Text Background +base0B #d7827e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #286983 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #56949f Functions, Methods, Attribute IDs, Headings +base0E #907aa9 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c5c3ce Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #575279; + background: #faf4ed +} +.hljs::selection, +.hljs ::selection { + background-color: #f2e9de; + color: #575279 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9893a5 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9893a5 +} +/* base04 - #6e6a86 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6e6a86 +} +/* base05 - #575279 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #575279 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #1f1d2e +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #b4637a +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ea9d34 +} +.hljs-strong { + font-weight: bold; + color: #ea9d34 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #d7827e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #286983 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #56949f +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #907aa9 +} +.hljs-emphasis { + color: #907aa9; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c5c3ce +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ros-pine-moon.css b/modules/highlighter/styles/base16/ros-pine-moon.css new file mode 100644 index 0000000..57e81ac --- /dev/null +++ b/modules/highlighter/styles/base16/ros-pine-moon.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rosé Pine Moon + Author: Emilia Dunfelt + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ros-pine-moon + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #232136 Default Background +base01 #2a273f Lighter Background (Used for status bars, line number and folding marks) +base02 #393552 Selection Background +base03 #59546d Comments, Invisibles, Line Highlighting +base04 #817c9c Dark Foreground (Used for status bars) +base05 #e0def4 Default Foreground, Caret, Delimiters, Operators +base06 #f5f5f7 Light Foreground (Not often used) +base07 #d9d7e1 Light Background (Not often used) +base08 #ecebf0 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb6f92 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f6c177 Classes, Markup Bold, Search Text Background +base0B #ea9a97 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3e8fb0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #9ccfd8 Functions, Methods, Attribute IDs, Headings +base0E #c4a7e7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b9b9bc Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0def4; + background: #232136 +} +.hljs::selection, +.hljs ::selection { + background-color: #393552; + color: #e0def4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #59546d - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #59546d +} +/* base04 - #817c9c - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #817c9c +} +/* base05 - #e0def4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0def4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ecebf0 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb6f92 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f6c177 +} +.hljs-strong { + font-weight: bold; + color: #f6c177 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ea9a97 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3e8fb0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #9ccfd8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c4a7e7 +} +.hljs-emphasis { + color: #c4a7e7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b9b9bc +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/ros-pine.css b/modules/highlighter/styles/base16/ros-pine.css new file mode 100644 index 0000000..da0e230 --- /dev/null +++ b/modules/highlighter/styles/base16/ros-pine.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Rosé Pine + Author: Emilia Dunfelt + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme ros-pine + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #191724 Default Background +base01 #1f1d2e Lighter Background (Used for status bars, line number and folding marks) +base02 #26233a Selection Background +base03 #555169 Comments, Invisibles, Line Highlighting +base04 #6e6a86 Dark Foreground (Used for status bars) +base05 #e0def4 Default Foreground, Caret, Delimiters, Operators +base06 #f0f0f3 Light Foreground (Not often used) +base07 #c5c3ce Light Background (Not often used) +base08 #e2e1e7 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #eb6f92 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f6c177 Classes, Markup Bold, Search Text Background +base0B #ebbcba Strings, Inherited Class, Markup Code, Diff Inserted +base0C #31748f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #9ccfd8 Functions, Methods, Attribute IDs, Headings +base0E #c4a7e7 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e5e5e5 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e0def4; + background: #191724 +} +.hljs::selection, +.hljs ::selection { + background-color: #26233a; + color: #e0def4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555169 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555169 +} +/* base04 - #6e6a86 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6e6a86 +} +/* base05 - #e0def4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e0def4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e2e1e7 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #eb6f92 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f6c177 +} +.hljs-strong { + font-weight: bold; + color: #f6c177 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #ebbcba +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #31748f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #9ccfd8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c4a7e7 +} +.hljs-emphasis { + color: #c4a7e7; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e5e5e5 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/sagelight.css b/modules/highlighter/styles/base16/sagelight.css new file mode 100644 index 0000000..0baedb9 --- /dev/null +++ b/modules/highlighter/styles/base16/sagelight.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Sagelight + Author: Carter Veldhuizen + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme sagelight + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f8f8f8 Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d8d8d8 Selection Background +base03 #b8b8b8 Comments, Invisibles, Line Highlighting +base04 #585858 Dark Foreground (Used for status bars) +base05 #383838 Default Foreground, Caret, Delimiters, Operators +base06 #282828 Light Foreground (Not often used) +base07 #181818 Light Background (Not often used) +base08 #fa8480 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffaa61 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffdc61 Classes, Markup Bold, Search Text Background +base0B #a0d2c8 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #a2d6f5 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #a0a7d2 Functions, Methods, Attribute IDs, Headings +base0E #c8a0d2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d2b2a0 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #383838; + background: #f8f8f8 +} +.hljs::selection, +.hljs ::selection { + background-color: #d8d8d8; + color: #383838 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #b8b8b8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #b8b8b8 +} +/* base04 - #585858 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #585858 +} +/* base05 - #383838 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #383838 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fa8480 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffaa61 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffdc61 +} +.hljs-strong { + font-weight: bold; + color: #ffdc61 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #a0d2c8 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #a2d6f5 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #a0a7d2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #c8a0d2 +} +.hljs-emphasis { + color: #c8a0d2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d2b2a0 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/sandcastle.css b/modules/highlighter/styles/base16/sandcastle.css new file mode 100644 index 0000000..eba306d --- /dev/null +++ b/modules/highlighter/styles/base16/sandcastle.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Sandcastle + Author: George Essig (https://github.com/gessig) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme sandcastle + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282c34 Default Background +base01 #2c323b Lighter Background (Used for status bars, line number and folding marks) +base02 #3e4451 Selection Background +base03 #665c54 Comments, Invisibles, Line Highlighting +base04 #928374 Dark Foreground (Used for status bars) +base05 #a89984 Default Foreground, Caret, Delimiters, Operators +base06 #d5c4a1 Light Foreground (Not often used) +base07 #fdf4c1 Light Background (Not often used) +base08 #83a598 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a07e3b Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a07e3b Classes, Markup Bold, Search Text Background +base0B #528b8b Strings, Inherited Class, Markup Code, Diff Inserted +base0C #83a598 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #83a598 Functions, Methods, Attribute IDs, Headings +base0E #d75f5f Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a87322 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a89984; + background: #282c34 +} +.hljs::selection, +.hljs ::selection { + background-color: #3e4451; + color: #a89984 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #665c54 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #665c54 +} +/* base04 - #928374 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #928374 +} +/* base05 - #a89984 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a89984 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #83a598 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a07e3b +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a07e3b +} +.hljs-strong { + font-weight: bold; + color: #a07e3b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #528b8b +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #83a598 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #83a598 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d75f5f +} +.hljs-emphasis { + color: #d75f5f; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a87322 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/seti-ui.css b/modules/highlighter/styles/base16/seti-ui.css new file mode 100644 index 0000000..ed897ce --- /dev/null +++ b/modules/highlighter/styles/base16/seti-ui.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Seti UI + Author: + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme seti-ui + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151718 Default Background +base01 #282a2b Lighter Background (Used for status bars, line number and folding marks) +base02 #3B758C Selection Background +base03 #41535B Comments, Invisibles, Line Highlighting +base04 #43a5d5 Dark Foreground (Used for status bars) +base05 #d6d6d6 Default Foreground, Caret, Delimiters, Operators +base06 #eeeeee Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #Cd3f45 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #db7b55 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e6cd69 Classes, Markup Bold, Search Text Background +base0B #9fca56 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #55dbbe Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #55b5db Functions, Methods, Attribute IDs, Headings +base0E #a074c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #8a553f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d6d6d6; + background: #151718 +} +.hljs::selection, +.hljs ::selection { + background-color: #3B758C; + color: #d6d6d6 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #41535B - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #41535B +} +/* base04 - #43a5d5 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #43a5d5 +} +/* base05 - #d6d6d6 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d6d6d6 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #Cd3f45 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #db7b55 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e6cd69 +} +.hljs-strong { + font-weight: bold; + color: #e6cd69 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #9fca56 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #55dbbe +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #55b5db +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a074c4 +} +.hljs-emphasis { + color: #a074c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #8a553f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/shapeshifter.css b/modules/highlighter/styles/base16/shapeshifter.css new file mode 100644 index 0000000..ab56c01 --- /dev/null +++ b/modules/highlighter/styles/base16/shapeshifter.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Shapeshifter + Author: Tyler Benziger (http://tybenz.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme shapeshifter + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f9f9f9 Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #ababab Selection Background +base03 #555555 Comments, Invisibles, Line Highlighting +base04 #343434 Dark Foreground (Used for status bars) +base05 #102015 Default Foreground, Caret, Delimiters, Operators +base06 #040404 Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #e92f2f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #e09448 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dddd13 Classes, Markup Bold, Search Text Background +base0B #0ed839 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #23edda Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3b48e3 Functions, Methods, Attribute IDs, Headings +base0E #f996e2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #69542d Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #102015; + background: #f9f9f9 +} +.hljs::selection, +.hljs ::selection { + background-color: #ababab; + color: #102015 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555555 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555555 +} +/* base04 - #343434 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #343434 +} +/* base05 - #102015 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #102015 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e92f2f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #e09448 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dddd13 +} +.hljs-strong { + font-weight: bold; + color: #dddd13 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #0ed839 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #23edda +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3b48e3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #f996e2 +} +.hljs-emphasis { + color: #f996e2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #69542d +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/silk-dark.css b/modules/highlighter/styles/base16/silk-dark.css new file mode 100644 index 0000000..a008a7b --- /dev/null +++ b/modules/highlighter/styles/base16/silk-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Silk Dark + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme silk-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0e3c46 Default Background +base01 #1D494E Lighter Background (Used for status bars, line number and folding marks) +base02 #2A5054 Selection Background +base03 #587073 Comments, Invisibles, Line Highlighting +base04 #9DC8CD Dark Foreground (Used for status bars) +base05 #C7DBDD Default Foreground, Caret, Delimiters, Operators +base06 #CBF2F7 Light Foreground (Not often used) +base07 #D2FAFF Light Background (Not often used) +base08 #fb6953 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fcab74 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fce380 Classes, Markup Bold, Search Text Background +base0B #73d8ad Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3fb2b9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #46bddd Functions, Methods, Attribute IDs, Headings +base0E #756b8a Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9b647b Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #C7DBDD; + background: #0e3c46 +} +.hljs::selection, +.hljs ::selection { + background-color: #2A5054; + color: #C7DBDD +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #587073 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #587073 +} +/* base04 - #9DC8CD - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9DC8CD +} +/* base05 - #C7DBDD - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #C7DBDD +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fb6953 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fcab74 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fce380 +} +.hljs-strong { + font-weight: bold; + color: #fce380 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #73d8ad +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3fb2b9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #46bddd +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #756b8a +} +.hljs-emphasis { + color: #756b8a; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9b647b +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/silk-light.css b/modules/highlighter/styles/base16/silk-light.css new file mode 100644 index 0000000..0b081ca --- /dev/null +++ b/modules/highlighter/styles/base16/silk-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Silk Light + Author: Gabriel Fontes (https://github.com/Misterio77) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme silk-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #E9F1EF Default Background +base01 #CCD4D3 Lighter Background (Used for status bars, line number and folding marks) +base02 #90B7B6 Selection Background +base03 #5C787B Comments, Invisibles, Line Highlighting +base04 #4B5B5F Dark Foreground (Used for status bars) +base05 #385156 Default Foreground, Caret, Delimiters, Operators +base06 #0e3c46 Light Foreground (Not often used) +base07 #D2FAFF Light Background (Not often used) +base08 #CF432E Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #D27F46 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #CFAD25 Classes, Markup Bold, Search Text Background +base0B #6CA38C Strings, Inherited Class, Markup Code, Diff Inserted +base0C #329CA2 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #39AAC9 Functions, Methods, Attribute IDs, Headings +base0E #6E6582 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #865369 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #385156; + background: #E9F1EF +} +.hljs::selection, +.hljs ::selection { + background-color: #90B7B6; + color: #385156 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5C787B - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5C787B +} +/* base04 - #4B5B5F - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #4B5B5F +} +/* base05 - #385156 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #385156 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #CF432E +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #D27F46 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #CFAD25 +} +.hljs-strong { + font-weight: bold; + color: #CFAD25 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #6CA38C +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #329CA2 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #39AAC9 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6E6582 +} +.hljs-emphasis { + color: #6E6582; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #865369 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/snazzy.css b/modules/highlighter/styles/base16/snazzy.css new file mode 100644 index 0000000..335abd9 --- /dev/null +++ b/modules/highlighter/styles/base16/snazzy.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Snazzy + Author: Chawye Hsu (https://github.com/chawyehsu) based on Hyper Snazzy Theme (https://github.com/sindresorhus/hyper-snazzy) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme snazzy + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282a36 Default Background +base01 #34353e Lighter Background (Used for status bars, line number and folding marks) +base02 #43454f Selection Background +base03 #78787e Comments, Invisibles, Line Highlighting +base04 #a5a5a9 Dark Foreground (Used for status bars) +base05 #e2e4e5 Default Foreground, Caret, Delimiters, Operators +base06 #eff0eb Light Foreground (Not often used) +base07 #f1f1f0 Light Background (Not often used) +base08 #ff5c57 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ff9f43 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f3f99d Classes, Markup Bold, Search Text Background +base0B #5af78e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #9aedfe Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #57c7ff Functions, Methods, Attribute IDs, Headings +base0E #ff6ac1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b2643c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #e2e4e5; + background: #282a36 +} +.hljs::selection, +.hljs ::selection { + background-color: #43454f; + color: #e2e4e5 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #78787e - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #78787e +} +/* base04 - #a5a5a9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a5a5a9 +} +/* base05 - #e2e4e5 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #e2e4e5 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff5c57 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ff9f43 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f3f99d +} +.hljs-strong { + font-weight: bold; + color: #f3f99d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5af78e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #9aedfe +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #57c7ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff6ac1 +} +.hljs-emphasis { + color: #ff6ac1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b2643c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solar-flare-light.css b/modules/highlighter/styles/base16/solar-flare-light.css new file mode 100644 index 0000000..d8124db --- /dev/null +++ b/modules/highlighter/styles/base16/solar-flare-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solar Flare Light + Author: Chuck Harmston (https://chuck.harmston.ch) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solar-flare-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #F5F7FA Default Background +base01 #E8E9ED Lighter Background (Used for status bars, line number and folding marks) +base02 #A6AFB8 Selection Background +base03 #85939E Comments, Invisibles, Line Highlighting +base04 #667581 Dark Foreground (Used for status bars) +base05 #586875 Default Foreground, Caret, Delimiters, Operators +base06 #222E38 Light Foreground (Not often used) +base07 #18262F Light Background (Not often used) +base08 #EF5253 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E66B2B Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #E4B51C Classes, Markup Bold, Search Text Background +base0B #7CC844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #52CBB0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #33B5E1 Functions, Methods, Attribute IDs, Headings +base0E #A363D5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #D73C9A Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #586875; + background: #F5F7FA +} +.hljs::selection, +.hljs ::selection { + background-color: #A6AFB8; + color: #586875 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #85939E - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #85939E +} +/* base04 - #667581 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #667581 +} +/* base05 - #586875 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #586875 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EF5253 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E66B2B +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #E4B51C +} +.hljs-strong { + font-weight: bold; + color: #E4B51C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7CC844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #52CBB0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #33B5E1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A363D5 +} +.hljs-emphasis { + color: #A363D5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #D73C9A +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solar-flare.css b/modules/highlighter/styles/base16/solar-flare.css new file mode 100644 index 0000000..0763f0c --- /dev/null +++ b/modules/highlighter/styles/base16/solar-flare.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solar Flare + Author: Chuck Harmston (https://chuck.harmston.ch) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solar-flare + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #18262F Default Background +base01 #222E38 Lighter Background (Used for status bars, line number and folding marks) +base02 #586875 Selection Background +base03 #667581 Comments, Invisibles, Line Highlighting +base04 #85939E Dark Foreground (Used for status bars) +base05 #A6AFB8 Default Foreground, Caret, Delimiters, Operators +base06 #E8E9ED Light Foreground (Not often used) +base07 #F5F7FA Light Background (Not often used) +base08 #EF5253 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #E66B2B Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #E4B51C Classes, Markup Bold, Search Text Background +base0B #7CC844 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #52CBB0 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #33B5E1 Functions, Methods, Attribute IDs, Headings +base0E #A363D5 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #D73C9A Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #A6AFB8; + background: #18262F +} +.hljs::selection, +.hljs ::selection { + background-color: #586875; + color: #A6AFB8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #667581 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #667581 +} +/* base04 - #85939E - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #85939E +} +/* base05 - #A6AFB8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #A6AFB8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #EF5253 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #E66B2B +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #E4B51C +} +.hljs-strong { + font-weight: bold; + color: #E4B51C +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #7CC844 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #52CBB0 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #33B5E1 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #A363D5 +} +.hljs-emphasis { + color: #A363D5; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #D73C9A +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solarized-dark.css b/modules/highlighter/styles/base16/solarized-dark.css new file mode 100644 index 0000000..6437cf5 --- /dev/null +++ b/modules/highlighter/styles/base16/solarized-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solarized Dark + Author: Ethan Schoonover (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solarized-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #002b36 Default Background +base01 #073642 Lighter Background (Used for status bars, line number and folding marks) +base02 #586e75 Selection Background +base03 #657b83 Comments, Invisibles, Line Highlighting +base04 #839496 Dark Foreground (Used for status bars) +base05 #93a1a1 Default Foreground, Caret, Delimiters, Operators +base06 #eee8d5 Light Foreground (Not often used) +base07 #fdf6e3 Light Background (Not often used) +base08 #dc322f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cb4b16 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b58900 Classes, Markup Bold, Search Text Background +base0B #859900 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2aa198 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #268bd2 Functions, Methods, Attribute IDs, Headings +base0E #6c71c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d33682 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #93a1a1; + background: #002b36 +} +.hljs::selection, +.hljs ::selection { + background-color: #586e75; + color: #93a1a1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #657b83 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #657b83 +} +/* base04 - #839496 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #839496 +} +/* base05 - #93a1a1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #93a1a1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dc322f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cb4b16 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b58900 +} +.hljs-strong { + font-weight: bold; + color: #b58900 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #859900 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2aa198 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #268bd2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6c71c4 +} +.hljs-emphasis { + color: #6c71c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d33682 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/solarized-light.css b/modules/highlighter/styles/base16/solarized-light.css new file mode 100644 index 0000000..4c71ce0 --- /dev/null +++ b/modules/highlighter/styles/base16/solarized-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Solarized Light + Author: Ethan Schoonover (modified by aramisgithub) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme solarized-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fdf6e3 Default Background +base01 #eee8d5 Lighter Background (Used for status bars, line number and folding marks) +base02 #93a1a1 Selection Background +base03 #839496 Comments, Invisibles, Line Highlighting +base04 #657b83 Dark Foreground (Used for status bars) +base05 #586e75 Default Foreground, Caret, Delimiters, Operators +base06 #073642 Light Foreground (Not often used) +base07 #002b36 Light Background (Not often used) +base08 #dc322f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cb4b16 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b58900 Classes, Markup Bold, Search Text Background +base0B #859900 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2aa198 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #268bd2 Functions, Methods, Attribute IDs, Headings +base0E #6c71c4 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #d33682 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #586e75; + background: #fdf6e3 +} +.hljs::selection, +.hljs ::selection { + background-color: #93a1a1; + color: #586e75 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #839496 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #839496 +} +/* base04 - #657b83 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #657b83 +} +/* base05 - #586e75 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #586e75 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dc322f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cb4b16 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b58900 +} +.hljs-strong { + font-weight: bold; + color: #b58900 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #859900 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2aa198 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #268bd2 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #6c71c4 +} +.hljs-emphasis { + color: #6c71c4; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #d33682 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/spacemacs.css b/modules/highlighter/styles/base16/spacemacs.css new file mode 100644 index 0000000..19a2403 --- /dev/null +++ b/modules/highlighter/styles/base16/spacemacs.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Spacemacs + Author: Nasser Alshammari (https://github.com/nashamri/spacemacs-theme) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme spacemacs + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1f2022 Default Background +base01 #282828 Lighter Background (Used for status bars, line number and folding marks) +base02 #444155 Selection Background +base03 #585858 Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #a3a3a3 Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #f8f8f8 Light Background (Not often used) +base08 #f2241f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffa500 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #b1951d Classes, Markup Bold, Search Text Background +base0B #67b11d Strings, Inherited Class, Markup Code, Diff Inserted +base0C #2d9574 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4f97d7 Functions, Methods, Attribute IDs, Headings +base0E #a31db1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b03060 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a3a3a3; + background: #1f2022 +} +.hljs::selection, +.hljs ::selection { + background-color: #444155; + color: #a3a3a3 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #585858 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #585858 +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #a3a3a3 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a3a3a3 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f2241f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffa500 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #b1951d +} +.hljs-strong { + font-weight: bold; + color: #b1951d +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #67b11d +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #2d9574 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4f97d7 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a31db1 +} +.hljs-emphasis { + color: #a31db1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b03060 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/summercamp.css b/modules/highlighter/styles/base16/summercamp.css new file mode 100644 index 0000000..f462fd7 --- /dev/null +++ b/modules/highlighter/styles/base16/summercamp.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: summercamp + Author: zoe firi (zoefiri.github.io) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme summercamp + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1c1810 Default Background +base01 #2a261c Lighter Background (Used for status bars, line number and folding marks) +base02 #3a3527 Selection Background +base03 #504b38 Comments, Invisibles, Line Highlighting +base04 #5f5b45 Dark Foreground (Used for status bars) +base05 #736e55 Default Foreground, Caret, Delimiters, Operators +base06 #bab696 Light Foreground (Not often used) +base07 #f8f5de Light Background (Not often used) +base08 #e35142 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fba11b Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f2ff27 Classes, Markup Bold, Search Text Background +base0B #5ceb5a Strings, Inherited Class, Markup Code, Diff Inserted +base0C #5aebbc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #489bf0 Functions, Methods, Attribute IDs, Headings +base0E #FF8080 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #F69BE7 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #736e55; + background: #1c1810 +} +.hljs::selection, +.hljs ::selection { + background-color: #3a3527; + color: #736e55 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #504b38 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #504b38 +} +/* base04 - #5f5b45 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #5f5b45 +} +/* base05 - #736e55 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #736e55 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e35142 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fba11b +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f2ff27 +} +.hljs-strong { + font-weight: bold; + color: #f2ff27 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5ceb5a +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #5aebbc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #489bf0 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #FF8080 +} +.hljs-emphasis { + color: #FF8080; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #F69BE7 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/summerfruit-dark.css b/modules/highlighter/styles/base16/summerfruit-dark.css new file mode 100644 index 0000000..57e9cdd --- /dev/null +++ b/modules/highlighter/styles/base16/summerfruit-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Summerfruit Dark + Author: Christopher Corley (http://christop.club/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme summerfruit-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #151515 Default Background +base01 #202020 Lighter Background (Used for status bars, line number and folding marks) +base02 #303030 Selection Background +base03 #505050 Comments, Invisibles, Line Highlighting +base04 #B0B0B0 Dark Foreground (Used for status bars) +base05 #D0D0D0 Default Foreground, Caret, Delimiters, Operators +base06 #E0E0E0 Light Foreground (Not often used) +base07 #FFFFFF Light Background (Not often used) +base08 #FF0086 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FD8900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ABA800 Classes, Markup Bold, Search Text Background +base0B #00C918 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1FAAAA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3777E6 Functions, Methods, Attribute IDs, Headings +base0E #AD00A1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #CC6633 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #D0D0D0; + background: #151515 +} +.hljs::selection, +.hljs ::selection { + background-color: #303030; + color: #D0D0D0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #505050 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #505050 +} +/* base04 - #B0B0B0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #B0B0B0 +} +/* base05 - #D0D0D0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #D0D0D0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF0086 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FD8900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ABA800 +} +.hljs-strong { + font-weight: bold; + color: #ABA800 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00C918 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1FAAAA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3777E6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AD00A1 +} +.hljs-emphasis { + color: #AD00A1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #CC6633 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/summerfruit-light.css b/modules/highlighter/styles/base16/summerfruit-light.css new file mode 100644 index 0000000..224f6e3 --- /dev/null +++ b/modules/highlighter/styles/base16/summerfruit-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Summerfruit Light + Author: Christopher Corley (http://christop.club/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme summerfruit-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #FFFFFF Default Background +base01 #E0E0E0 Lighter Background (Used for status bars, line number and folding marks) +base02 #D0D0D0 Selection Background +base03 #B0B0B0 Comments, Invisibles, Line Highlighting +base04 #000000 Dark Foreground (Used for status bars) +base05 #101010 Default Foreground, Caret, Delimiters, Operators +base06 #151515 Light Foreground (Not often used) +base07 #202020 Light Background (Not often used) +base08 #FF0086 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #FD8900 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ABA800 Classes, Markup Bold, Search Text Background +base0B #00C918 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #1FAAAA Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3777E6 Functions, Methods, Attribute IDs, Headings +base0E #AD00A1 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #CC6633 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #101010; + background: #FFFFFF +} +.hljs::selection, +.hljs ::selection { + background-color: #D0D0D0; + color: #101010 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #B0B0B0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #B0B0B0 +} +/* base04 - #000000 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #000000 +} +/* base05 - #101010 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #101010 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #FF0086 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #FD8900 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ABA800 +} +.hljs-strong { + font-weight: bold; + color: #ABA800 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00C918 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #1FAAAA +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3777E6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #AD00A1 +} +.hljs-emphasis { + color: #AD00A1; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #CC6633 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/synth-midnight-terminal-dark.css b/modules/highlighter/styles/base16/synth-midnight-terminal-dark.css new file mode 100644 index 0000000..a13e3e2 --- /dev/null +++ b/modules/highlighter/styles/base16/synth-midnight-terminal-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Synth Midnight Terminal Dark + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme synth-midnight-terminal-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #050608 Default Background +base01 #1a1b1c Lighter Background (Used for status bars, line number and folding marks) +base02 #28292a Selection Background +base03 #474849 Comments, Invisibles, Line Highlighting +base04 #a3a5a6 Dark Foreground (Used for status bars) +base05 #c1c3c4 Default Foreground, Caret, Delimiters, Operators +base06 #cfd1d2 Light Foreground (Not often used) +base07 #dddfe0 Light Background (Not often used) +base08 #b53b50 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ea770d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c9d364 Classes, Markup Bold, Search Text Background +base0B #06ea61 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #42fff9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #03aeff Functions, Methods, Attribute IDs, Headings +base0E #ea5ce2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cd6320 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c1c3c4; + background: #050608 +} +.hljs::selection, +.hljs ::selection { + background-color: #28292a; + color: #c1c3c4 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #474849 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #474849 +} +/* base04 - #a3a5a6 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a3a5a6 +} +/* base05 - #c1c3c4 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c1c3c4 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b53b50 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ea770d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c9d364 +} +.hljs-strong { + font-weight: bold; + color: #c9d364 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #06ea61 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #42fff9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #03aeff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ea5ce2 +} +.hljs-emphasis { + color: #ea5ce2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cd6320 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/synth-midnight-terminal-light.css b/modules/highlighter/styles/base16/synth-midnight-terminal-light.css new file mode 100644 index 0000000..de3d8e1 --- /dev/null +++ b/modules/highlighter/styles/base16/synth-midnight-terminal-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Synth Midnight Terminal Light + Author: Michaël Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme synth-midnight-terminal-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #dddfe0 Default Background +base01 #cfd1d2 Lighter Background (Used for status bars, line number and folding marks) +base02 #c1c3c4 Selection Background +base03 #a3a5a6 Comments, Invisibles, Line Highlighting +base04 #474849 Dark Foreground (Used for status bars) +base05 #28292a Default Foreground, Caret, Delimiters, Operators +base06 #1a1b1c Light Foreground (Not often used) +base07 #050608 Light Background (Not often used) +base08 #b53b50 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ea770d Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c9d364 Classes, Markup Bold, Search Text Background +base0B #06ea61 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #42fff9 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #03aeff Functions, Methods, Attribute IDs, Headings +base0E #ea5ce2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #cd6320 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #28292a; + background: #dddfe0 +} +.hljs::selection, +.hljs ::selection { + background-color: #c1c3c4; + color: #28292a +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a3a5a6 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a3a5a6 +} +/* base04 - #474849 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #474849 +} +/* base05 - #28292a - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #28292a +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #b53b50 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ea770d +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c9d364 +} +.hljs-strong { + font-weight: bold; + color: #c9d364 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #06ea61 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #42fff9 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #03aeff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ea5ce2 +} +.hljs-emphasis { + color: #ea5ce2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #cd6320 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tango.css b/modules/highlighter/styles/base16/tango.css new file mode 100644 index 0000000..3a91f4e --- /dev/null +++ b/modules/highlighter/styles/base16/tango.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tango + Author: @Schnouki, based on the Tango Desktop Project + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tango + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2e3436 Default Background +base01 #8ae234 Lighter Background (Used for status bars, line number and folding marks) +base02 #fce94f Selection Background +base03 #555753 Comments, Invisibles, Line Highlighting +base04 #729fcf Dark Foreground (Used for status bars) +base05 #d3d7cf Default Foreground, Caret, Delimiters, Operators +base06 #ad7fa8 Light Foreground (Not often used) +base07 #eeeeec Light Background (Not often used) +base08 #cc0000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ef2929 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c4a000 Classes, Markup Bold, Search Text Background +base0B #4e9a06 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #06989a Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3465a4 Functions, Methods, Attribute IDs, Headings +base0E #75507b Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #34e2e2 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #d3d7cf; + background: #2e3436 +} +.hljs::selection, +.hljs ::selection { + background-color: #fce94f; + color: #d3d7cf +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #555753 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #555753 +} +/* base04 - #729fcf - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #729fcf +} +/* base05 - #d3d7cf - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #d3d7cf +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cc0000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ef2929 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c4a000 +} +.hljs-strong { + font-weight: bold; + color: #c4a000 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #4e9a06 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #06989a +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3465a4 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #75507b +} +.hljs-emphasis { + color: #75507b; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #34e2e2 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tender.css b/modules/highlighter/styles/base16/tender.css new file mode 100644 index 0000000..5c9ec77 --- /dev/null +++ b/modules/highlighter/styles/base16/tender.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: tender + Author: Jacobo Tabernero (https://github/com/jacoborus/tender.vim) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tender + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282828 Default Background +base01 #383838 Lighter Background (Used for status bars, line number and folding marks) +base02 #484848 Selection Background +base03 #4c4c4c Comments, Invisibles, Line Highlighting +base04 #b8b8b8 Dark Foreground (Used for status bars) +base05 #eeeeee Default Foreground, Caret, Delimiters, Operators +base06 #e8e8e8 Light Foreground (Not often used) +base07 #feffff Light Background (Not often used) +base08 #f43753 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dc9656 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffc24b Classes, Markup Bold, Search Text Background +base0B #c9d05c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #73cef4 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #b3deef Functions, Methods, Attribute IDs, Headings +base0E #d3b987 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a16946 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #eeeeee; + background: #282828 +} +.hljs::selection, +.hljs ::selection { + background-color: #484848; + color: #eeeeee +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #4c4c4c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #4c4c4c +} +/* base04 - #b8b8b8 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b8b8b8 +} +/* base05 - #eeeeee - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #eeeeee +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f43753 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dc9656 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffc24b +} +.hljs-strong { + font-weight: bold; + color: #ffc24b +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #c9d05c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #73cef4 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #b3deef +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #d3b987 +} +.hljs-emphasis { + color: #d3b987; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a16946 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tomorrow-night.css b/modules/highlighter/styles/base16/tomorrow-night.css new file mode 100644 index 0000000..2c3750e --- /dev/null +++ b/modules/highlighter/styles/base16/tomorrow-night.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tomorrow Night + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tomorrow-night + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2d2d2d Default Background +base01 #393939 Lighter Background (Used for status bars, line number and folding marks) +base02 #515151 Selection Background +base03 #999999 Comments, Invisibles, Line Highlighting +base04 #b4b7b4 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #f2777a Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f99157 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffcc66 Classes, Markup Bold, Search Text Background +base0B #99cc99 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #66cccc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #6699cc Functions, Methods, Attribute IDs, Headings +base0E #cc99cc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a3685a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #2d2d2d +} +.hljs::selection, +.hljs ::selection { + background-color: #515151; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #999999 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #999999 +} +/* base04 - #b4b7b4 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4b7b4 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #f2777a +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f99157 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffcc66 +} +.hljs-strong { + font-weight: bold; + color: #ffcc66 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #99cc99 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #66cccc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #6699cc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #cc99cc +} +.hljs-emphasis { + color: #cc99cc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a3685a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/tomorrow.css b/modules/highlighter/styles/base16/tomorrow.css new file mode 100644 index 0000000..bda285d --- /dev/null +++ b/modules/highlighter/styles/base16/tomorrow.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tomorrow + Author: Chris Kempson (http://chriskempson.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme tomorrow + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #d6d6d6 Selection Background +base03 #8e908c Comments, Invisibles, Line Highlighting +base04 #969896 Dark Foreground (Used for status bars) +base05 #4d4d4c Default Foreground, Caret, Delimiters, Operators +base06 #282a2e Light Foreground (Not often used) +base07 #1d1f21 Light Background (Not often used) +base08 #c82829 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f5871f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #eab700 Classes, Markup Bold, Search Text Background +base0B #718c00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3e999f Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #4271ae Functions, Methods, Attribute IDs, Headings +base0E #8959a8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #a3685a Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #4d4d4c; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #d6d6d6; + color: #4d4d4c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #8e908c - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #8e908c +} +/* base04 - #969896 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #969896 +} +/* base05 - #4d4d4c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #4d4d4c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c82829 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f5871f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #eab700 +} +.hljs-strong { + font-weight: bold; + color: #eab700 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #718c00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3e999f +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #4271ae +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #8959a8 +} +.hljs-emphasis { + color: #8959a8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #a3685a +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/twilight.css b/modules/highlighter/styles/base16/twilight.css new file mode 100644 index 0000000..0bde680 --- /dev/null +++ b/modules/highlighter/styles/base16/twilight.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Twilight + Author: David Hart (https://github.com/hartbit) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme twilight + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #1e1e1e Default Background +base01 #323537 Lighter Background (Used for status bars, line number and folding marks) +base02 #464b50 Selection Background +base03 #5f5a60 Comments, Invisibles, Line Highlighting +base04 #838184 Dark Foreground (Used for status bars) +base05 #a7a7a7 Default Foreground, Caret, Delimiters, Operators +base06 #c3c3c3 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #cf6a4c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #cda869 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f9ee98 Classes, Markup Bold, Search Text Background +base0B #8f9d6a Strings, Inherited Class, Markup Code, Diff Inserted +base0C #afc4db Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7587a6 Functions, Methods, Attribute IDs, Headings +base0E #9b859d Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #9b703f Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a7a7a7; + background: #1e1e1e +} +.hljs::selection, +.hljs ::selection { + background-color: #464b50; + color: #a7a7a7 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #5f5a60 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #5f5a60 +} +/* base04 - #838184 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #838184 +} +/* base05 - #a7a7a7 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a7a7a7 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #cf6a4c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #cda869 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f9ee98 +} +.hljs-strong { + font-weight: bold; + color: #f9ee98 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #8f9d6a +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #afc4db +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7587a6 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9b859d +} +.hljs-emphasis { + color: #9b859d; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #9b703f +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/unikitty-dark.css b/modules/highlighter/styles/base16/unikitty-dark.css new file mode 100644 index 0000000..02bb32d --- /dev/null +++ b/modules/highlighter/styles/base16/unikitty-dark.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Unikitty Dark + Author: Josh W Lewis (@joshwlewis) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme unikitty-dark + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #2e2a31 Default Background +base01 #4a464d Lighter Background (Used for status bars, line number and folding marks) +base02 #666369 Selection Background +base03 #838085 Comments, Invisibles, Line Highlighting +base04 #9f9da2 Dark Foreground (Used for status bars) +base05 #bcbabe Default Foreground, Caret, Delimiters, Operators +base06 #d8d7da Light Foreground (Not often used) +base07 #f5f4f7 Light Background (Not often used) +base08 #d8137f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d65407 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dc8a0e Classes, Markup Bold, Search Text Background +base0B #17ad98 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #149bda Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #796af5 Functions, Methods, Attribute IDs, Headings +base0E #bb60ea Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #c720ca Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #bcbabe; + background: #2e2a31 +} +.hljs::selection, +.hljs ::selection { + background-color: #666369; + color: #bcbabe +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #838085 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #838085 +} +/* base04 - #9f9da2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #9f9da2 +} +/* base05 - #bcbabe - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #bcbabe +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d8137f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d65407 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dc8a0e +} +.hljs-strong { + font-weight: bold; + color: #dc8a0e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #17ad98 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #149bda +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #796af5 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bb60ea +} +.hljs-emphasis { + color: #bb60ea; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #c720ca +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/unikitty-light.css b/modules/highlighter/styles/base16/unikitty-light.css new file mode 100644 index 0000000..a1ba697 --- /dev/null +++ b/modules/highlighter/styles/base16/unikitty-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Unikitty Light + Author: Josh W Lewis (@joshwlewis) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme unikitty-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #e1e1e2 Lighter Background (Used for status bars, line number and folding marks) +base02 #c4c3c5 Selection Background +base03 #a7a5a8 Comments, Invisibles, Line Highlighting +base04 #89878b Dark Foreground (Used for status bars) +base05 #6c696e Default Foreground, Caret, Delimiters, Operators +base06 #4f4b51 Light Foreground (Not often used) +base07 #322d34 Light Background (Not often used) +base08 #d8137f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #d65407 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #dc8a0e Classes, Markup Bold, Search Text Background +base0B #17ad98 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #149bda Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #775dff Functions, Methods, Attribute IDs, Headings +base0E #aa17e6 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #e013d0 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #6c696e; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #c4c3c5; + color: #6c696e +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a7a5a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a7a5a8 +} +/* base04 - #89878b - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #89878b +} +/* base05 - #6c696e - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #6c696e +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d8137f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #d65407 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #dc8a0e +} +.hljs-strong { + font-weight: bold; + color: #dc8a0e +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #17ad98 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #149bda +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #775dff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #aa17e6 +} +.hljs-emphasis { + color: #aa17e6; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #e013d0 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/vulcan.css b/modules/highlighter/styles/base16/vulcan.css new file mode 100644 index 0000000..dc2ac1a --- /dev/null +++ b/modules/highlighter/styles/base16/vulcan.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: vulcan + Author: Andrey Varfolomeev + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme vulcan + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #041523 Default Background +base01 #122339 Lighter Background (Used for status bars, line number and folding marks) +base02 #003552 Selection Background +base03 #7a5759 Comments, Invisibles, Line Highlighting +base04 #6b6977 Dark Foreground (Used for status bars) +base05 #5b778c Default Foreground, Caret, Delimiters, Operators +base06 #333238 Light Foreground (Not often used) +base07 #214d68 Light Background (Not often used) +base08 #818591 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #9198a3 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #adb4b9 Classes, Markup Bold, Search Text Background +base0B #977d7c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #977d7c Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #977d7c Functions, Methods, Attribute IDs, Headings +base0E #9198a3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #977d7c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #5b778c; + background: #041523 +} +.hljs::selection, +.hljs ::selection { + background-color: #003552; + color: #5b778c +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #7a5759 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #7a5759 +} +/* base04 - #6b6977 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #6b6977 +} +/* base05 - #5b778c - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #5b778c +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #818591 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #9198a3 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #adb4b9 +} +.hljs-strong { + font-weight: bold; + color: #adb4b9 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #977d7c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #977d7c +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #977d7c +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #9198a3 +} +.hljs-emphasis { + color: #9198a3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #977d7c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-10-light.css b/modules/highlighter/styles/base16/windows-10-light.css new file mode 100644 index 0000000..022e40a --- /dev/null +++ b/modules/highlighter/styles/base16/windows-10-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 10 Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-10-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #f2f2f2 Default Background +base01 #e5e5e5 Lighter Background (Used for status bars, line number and folding marks) +base02 #d9d9d9 Selection Background +base03 #cccccc Comments, Invisibles, Line Highlighting +base04 #ababab Dark Foreground (Used for status bars) +base05 #767676 Default Foreground, Caret, Delimiters, Operators +base06 #414141 Light Foreground (Not often used) +base07 #0c0c0c Light Background (Not often used) +base08 #c50f1f Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #f9f1a5 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #c19c00 Classes, Markup Bold, Search Text Background +base0B #13a10e Strings, Inherited Class, Markup Code, Diff Inserted +base0C #3a96dd Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0037da Functions, Methods, Attribute IDs, Headings +base0E #881798 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #16c60c Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #767676; + background: #f2f2f2 +} +.hljs::selection, +.hljs ::selection { + background-color: #d9d9d9; + color: #767676 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #cccccc - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #cccccc +} +/* base04 - #ababab - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #ababab +} +/* base05 - #767676 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #767676 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #c50f1f +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #f9f1a5 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #c19c00 +} +.hljs-strong { + font-weight: bold; + color: #c19c00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #13a10e +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #3a96dd +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0037da +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #881798 +} +.hljs-emphasis { + color: #881798; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #16c60c +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-10.css b/modules/highlighter/styles/base16/windows-10.css new file mode 100644 index 0000000..f0f0e2d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-10.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 10 + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-10 + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #0c0c0c Default Background +base01 #2f2f2f Lighter Background (Used for status bars, line number and folding marks) +base02 #535353 Selection Background +base03 #767676 Comments, Invisibles, Line Highlighting +base04 #b9b9b9 Dark Foreground (Used for status bars) +base05 #cccccc Default Foreground, Caret, Delimiters, Operators +base06 #dfdfdf Light Foreground (Not often used) +base07 #f2f2f2 Light Background (Not often used) +base08 #e74856 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #c19c00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #f9f1a5 Classes, Markup Bold, Search Text Background +base0B #16c60c Strings, Inherited Class, Markup Code, Diff Inserted +base0C #61d6d6 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #3b78ff Functions, Methods, Attribute IDs, Headings +base0E #b4009e Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #13a10e Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cccccc; + background: #0c0c0c +} +.hljs::selection, +.hljs ::selection { + background-color: #535353; + color: #cccccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #767676 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #767676 +} +/* base04 - #b9b9b9 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b9b9b9 +} +/* base05 - #cccccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cccccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #e74856 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #c19c00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #f9f1a5 +} +.hljs-strong { + font-weight: bold; + color: #f9f1a5 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #16c60c +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #61d6d6 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #3b78ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #b4009e +} +.hljs-emphasis { + color: #b4009e; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #13a10e +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-95-light.css b/modules/highlighter/styles/base16/windows-95-light.css new file mode 100644 index 0000000..bbf034d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-95-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 95 Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-95-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fcfcfc Default Background +base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) +base02 #c4c4c4 Selection Background +base03 #a8a8a8 Comments, Invisibles, Line Highlighting +base04 #7e7e7e Dark Foreground (Used for status bars) +base05 #545454 Default Foreground, Caret, Delimiters, Operators +base06 #2a2a2a Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #a80000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fcfc54 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #a85400 Classes, Markup Bold, Search Text Background +base0B #00a800 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00a8a8 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000a8 Functions, Methods, Attribute IDs, Headings +base0E #a800a8 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #54fc54 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #545454; + background: #fcfcfc +} +.hljs::selection, +.hljs ::selection { + background-color: #c4c4c4; + color: #545454 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #a8a8a8 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #a8a8a8 +} +/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7e7e +} +/* base05 - #545454 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #545454 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #a80000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fcfc54 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #a85400 +} +.hljs-strong { + font-weight: bold; + color: #a85400 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00a800 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00a8a8 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000a8 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #a800a8 +} +.hljs-emphasis { + color: #a800a8; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #54fc54 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-95.css b/modules/highlighter/styles/base16/windows-95.css new file mode 100644 index 0000000..002d6f9 --- /dev/null +++ b/modules/highlighter/styles/base16/windows-95.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows 95 + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-95 + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #1C1C1C Lighter Background (Used for status bars, line number and folding marks) +base02 #383838 Selection Background +base03 #545454 Comments, Invisibles, Line Highlighting +base04 #7e7e7e Dark Foreground (Used for status bars) +base05 #a8a8a8 Default Foreground, Caret, Delimiters, Operators +base06 #d2d2d2 Light Foreground (Not often used) +base07 #fcfcfc Light Background (Not often used) +base08 #fc5454 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #a85400 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fcfc54 Classes, Markup Bold, Search Text Background +base0B #54fc54 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #54fcfc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5454fc Functions, Methods, Attribute IDs, Headings +base0E #fc54fc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #00a800 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #a8a8a8; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #383838; + color: #a8a8a8 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #545454 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #545454 +} +/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7e7e +} +/* base05 - #a8a8a8 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #a8a8a8 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fc5454 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #a85400 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fcfc54 +} +.hljs-strong { + font-weight: bold; + color: #fcfc54 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #54fc54 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #54fcfc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5454fc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #fc54fc +} +.hljs-emphasis { + color: #fc54fc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #00a800 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-high-contrast-light.css b/modules/highlighter/styles/base16/windows-high-contrast-light.css new file mode 100644 index 0000000..5589678 --- /dev/null +++ b/modules/highlighter/styles/base16/windows-high-contrast-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows High Contrast Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-high-contrast-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #fcfcfc Default Background +base01 #e8e8e8 Lighter Background (Used for status bars, line number and folding marks) +base02 #d4d4d4 Selection Background +base03 #c0c0c0 Comments, Invisibles, Line Highlighting +base04 #7e7e7e Dark Foreground (Used for status bars) +base05 #545454 Default Foreground, Caret, Delimiters, Operators +base06 #2a2a2a Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #800000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #fcfc54 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #808000 Classes, Markup Bold, Search Text Background +base0B #008000 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #008080 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #000080 Functions, Methods, Attribute IDs, Headings +base0E #800080 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #54fc54 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #545454; + background: #fcfcfc +} +.hljs::selection, +.hljs ::selection { + background-color: #d4d4d4; + color: #545454 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #c0c0c0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #c0c0c0 +} +/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7e7e7e +} +/* base05 - #545454 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #545454 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #800000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #fcfc54 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #808000 +} +.hljs-strong { + font-weight: bold; + color: #808000 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #008000 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #008080 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #000080 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #800080 +} +.hljs-emphasis { + color: #800080; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #54fc54 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-high-contrast.css b/modules/highlighter/styles/base16/windows-high-contrast.css new file mode 100644 index 0000000..1ad278d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-high-contrast.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows High Contrast + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-high-contrast + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #1C1C1C Lighter Background (Used for status bars, line number and folding marks) +base02 #383838 Selection Background +base03 #545454 Comments, Invisibles, Line Highlighting +base04 #a2a2a2 Dark Foreground (Used for status bars) +base05 #c0c0c0 Default Foreground, Caret, Delimiters, Operators +base06 #dedede Light Foreground (Not often used) +base07 #fcfcfc Light Background (Not often used) +base08 #fc5454 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #808000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #fcfc54 Classes, Markup Bold, Search Text Background +base0B #54fc54 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #54fcfc Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #5454fc Functions, Methods, Attribute IDs, Headings +base0E #fc54fc Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #008000 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c0c0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #383838; + color: #c0c0c0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #545454 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #545454 +} +/* base04 - #a2a2a2 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a2a2a2 +} +/* base05 - #c0c0c0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c0c0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #fc5454 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #808000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #fcfc54 +} +.hljs-strong { + font-weight: bold; + color: #fcfc54 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #54fc54 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #54fcfc +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #5454fc +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #fc54fc +} +.hljs-emphasis { + color: #fc54fc; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #008000 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-nt-light.css b/modules/highlighter/styles/base16/windows-nt-light.css new file mode 100644 index 0000000..a029d7d --- /dev/null +++ b/modules/highlighter/styles/base16/windows-nt-light.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows NT Light + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-nt-light + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #ffffff Default Background +base01 #eaeaea Lighter Background (Used for status bars, line number and folding marks) +base02 #d5d5d5 Selection Background +base03 #c0c0c0 Comments, Invisibles, Line Highlighting +base04 #a0a0a0 Dark Foreground (Used for status bars) +base05 #808080 Default Foreground, Caret, Delimiters, Operators +base06 #404040 Light Foreground (Not often used) +base07 #000000 Light Background (Not often used) +base08 #800000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ffff00 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #808000 Classes, Markup Bold, Search Text Background +base0B #008000 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #008080 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #000080 Functions, Methods, Attribute IDs, Headings +base0E #800080 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #00ff00 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #808080; + background: #ffffff +} +.hljs::selection, +.hljs ::selection { + background-color: #d5d5d5; + color: #808080 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #c0c0c0 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #c0c0c0 +} +/* base04 - #a0a0a0 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a0a0a0 +} +/* base05 - #808080 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #808080 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #800000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ffff00 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #808000 +} +.hljs-strong { + font-weight: bold; + color: #808000 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #008000 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #008080 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #000080 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #800080 +} +.hljs-emphasis { + color: #800080; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #00ff00 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/windows-nt.css b/modules/highlighter/styles/base16/windows-nt.css new file mode 100644 index 0000000..4a2608b --- /dev/null +++ b/modules/highlighter/styles/base16/windows-nt.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Windows NT + Author: Fergus Collins (https://github.com/C-Fergus) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme windows-nt + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #000000 Default Background +base01 #2a2a2a Lighter Background (Used for status bars, line number and folding marks) +base02 #555555 Selection Background +base03 #808080 Comments, Invisibles, Line Highlighting +base04 #a1a1a1 Dark Foreground (Used for status bars) +base05 #c0c0c0 Default Foreground, Caret, Delimiters, Operators +base06 #e0e0e0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #ff0000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #808000 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #ffff00 Classes, Markup Bold, Search Text Background +base0B #00ff00 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00ffff Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #0000ff Functions, Methods, Attribute IDs, Headings +base0E #ff00ff Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #008000 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #c0c0c0; + background: #000000 +} +.hljs::selection, +.hljs ::selection { + background-color: #555555; + color: #c0c0c0 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #808080 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #808080 +} +/* base04 - #a1a1a1 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #a1a1a1 +} +/* base05 - #c0c0c0 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #c0c0c0 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #ff0000 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #808000 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #ffff00 +} +.hljs-strong { + font-weight: bold; + color: #ffff00 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #00ff00 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00ffff +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #0000ff +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #ff00ff +} +.hljs-emphasis { + color: #ff00ff; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #008000 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/woodland.css b/modules/highlighter/styles/base16/woodland.css new file mode 100644 index 0000000..128ad4e --- /dev/null +++ b/modules/highlighter/styles/base16/woodland.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Woodland + Author: Jay Cornwall (https://jcornwall.com) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme woodland + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #231e18 Default Background +base01 #302b25 Lighter Background (Used for status bars, line number and folding marks) +base02 #48413a Selection Background +base03 #9d8b70 Comments, Invisibles, Line Highlighting +base04 #b4a490 Dark Foreground (Used for status bars) +base05 #cabcb1 Default Foreground, Caret, Delimiters, Operators +base06 #d7c8bc Light Foreground (Not often used) +base07 #e4d4c8 Light Background (Not often used) +base08 #d35c5c Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #ca7f32 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e0ac16 Classes, Markup Bold, Search Text Background +base0B #b7ba53 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #6eb958 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #88a4d3 Functions, Methods, Attribute IDs, Headings +base0E #bb90e2 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #b49368 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #cabcb1; + background: #231e18 +} +.hljs::selection, +.hljs ::selection { + background-color: #48413a; + color: #cabcb1 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #9d8b70 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #9d8b70 +} +/* base04 - #b4a490 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #b4a490 +} +/* base05 - #cabcb1 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #cabcb1 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #d35c5c +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #ca7f32 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e0ac16 +} +.hljs-strong { + font-weight: bold; + color: #e0ac16 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #b7ba53 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #6eb958 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #88a4d3 +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #bb90e2 +} +.hljs-emphasis { + color: #bb90e2; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #b49368 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/xcode-dusk.css b/modules/highlighter/styles/base16/xcode-dusk.css new file mode 100644 index 0000000..e765a98 --- /dev/null +++ b/modules/highlighter/styles/base16/xcode-dusk.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: XCode Dusk + Author: Elsa Gonsiorowski (https://github.com/gonsie) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme xcode-dusk + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #282B35 Default Background +base01 #3D4048 Lighter Background (Used for status bars, line number and folding marks) +base02 #53555D Selection Background +base03 #686A71 Comments, Invisibles, Line Highlighting +base04 #7E8086 Dark Foreground (Used for status bars) +base05 #939599 Default Foreground, Caret, Delimiters, Operators +base06 #A9AAAE Light Foreground (Not often used) +base07 #BEBFC2 Light Background (Not often used) +base08 #B21889 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #786DC5 Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #438288 Classes, Markup Bold, Search Text Background +base0B #DF0002 Strings, Inherited Class, Markup Code, Diff Inserted +base0C #00A0BE Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #790EAD Functions, Methods, Attribute IDs, Headings +base0E #B21889 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #C77C48 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #939599; + background: #282B35 +} +.hljs::selection, +.hljs ::selection { + background-color: #53555D; + color: #939599 +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #686A71 - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #686A71 +} +/* base04 - #7E8086 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #7E8086 +} +/* base05 - #939599 - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #939599 +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #B21889 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #786DC5 +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #438288 +} +.hljs-strong { + font-weight: bold; + color: #438288 +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #DF0002 +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #00A0BE +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #790EAD +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #B21889 +} +.hljs-emphasis { + color: #B21889; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #C77C48 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/base16/zenburn.css b/modules/highlighter/styles/base16/zenburn.css new file mode 100644 index 0000000..cc69301 --- /dev/null +++ b/modules/highlighter/styles/base16/zenburn.css @@ -0,0 +1,163 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Zenburn + Author: elnawe + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/ +/* + WARNING: DO NOT EDIT THIS FILE DIRECTLY. + + This theme file was auto-generated from the Base16 scheme zenburn + by the Highlight.js Base16 template builder. + + - https://github.com/highlightjs/base16-highlightjs +*/ +/* +base00 #383838 Default Background +base01 #404040 Lighter Background (Used for status bars, line number and folding marks) +base02 #606060 Selection Background +base03 #6f6f6f Comments, Invisibles, Line Highlighting +base04 #808080 Dark Foreground (Used for status bars) +base05 #dcdccc Default Foreground, Caret, Delimiters, Operators +base06 #c0c0c0 Light Foreground (Not often used) +base07 #ffffff Light Background (Not often used) +base08 #dca3a3 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted +base09 #dfaf8f Integers, Boolean, Constants, XML Attributes, Markup Link Url +base0A #e0cf9f Classes, Markup Bold, Search Text Background +base0B #5f7f5f Strings, Inherited Class, Markup Code, Diff Inserted +base0C #93e0e3 Support, Regular Expressions, Escape Characters, Markup Quotes +base0D #7cb8bb Functions, Methods, Attribute IDs, Headings +base0E #dc8cc3 Keywords, Storage, Selector, Markup Italic, Diff Changed +base0F #000000 Deprecated, Opening/Closing Embedded Language Tags, e.g. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +.hljs { + color: #dcdccc; + background: #383838 +} +.hljs::selection, +.hljs ::selection { + background-color: #606060; + color: #dcdccc +} +/* purposely do not highlight these things */ +.hljs-formula, +.hljs-params, +.hljs-property { + +} +/* base03 - #6f6f6f - Comments, Invisibles, Line Highlighting */ +.hljs-comment { + color: #6f6f6f +} +/* base04 - #808080 - Dark Foreground (Used for status bars) */ +.hljs-tag { + color: #808080 +} +/* base05 - #dcdccc - Default Foreground, Caret, Delimiters, Operators */ +.hljs-subst, +.hljs-punctuation, +.hljs-operator { + color: #dcdccc +} +.hljs-operator { + opacity: 0.7 +} +/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-tag, +.hljs-name, +.hljs-deletion { + color: #dca3a3 +} +/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ +.hljs-symbol, +.hljs-number, +.hljs-link, +.hljs-attr, +.hljs-variable.constant_, +.hljs-literal { + color: #dfaf8f +} +/* base0A - Classes, Markup Bold, Search Text Background */ +.hljs-title, +.hljs-class .hljs-title, +.hljs-title.class_ { + color: #e0cf9f +} +.hljs-strong { + font-weight: bold; + color: #e0cf9f +} +/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ +.hljs-code, +.hljs-addition, +.hljs-title.class_.inherited__, +.hljs-string { + color: #5f7f5f +} +/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ +/* guessing */ +.hljs-built_in, +.hljs-doctag, +.hljs-quote, +.hljs-keyword.hljs-atrule, +.hljs-regexp { + color: #93e0e3 +} +/* base0D - Functions, Methods, Attribute IDs, Headings */ +.hljs-function .hljs-title, +.hljs-attribute, +.ruby .hljs-property, +.hljs-title.function_, +.hljs-section { + color: #7cb8bb +} +/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ +/* .hljs-selector-id, */ +/* .hljs-selector-class, */ +/* .hljs-selector-attr, */ +/* .hljs-selector-pseudo, */ +.hljs-type, +.hljs-template-tag, +.diff .hljs-meta, +.hljs-keyword { + color: #dc8cc3 +} +.hljs-emphasis { + color: #dc8cc3; + font-style: italic +} +/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */ +/* + prevent top level .keyword and .string scopes + from leaking into meta by accident +*/ +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-meta .hljs-string { + color: #000000 +} +/* for v10 compatible themes */ +.hljs-meta .hljs-keyword, +.hljs-meta-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/brown-paper.css b/modules/highlighter/styles/brown-paper.css new file mode 100644 index 0000000..e6f245f --- /dev/null +++ b/modules/highlighter/styles/brown-paper.css @@ -0,0 +1,63 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Brown Paper style from goldblog.com.ua (c) Zaripov Yura + +*/ +.hljs { + color: #363c69; + background: #b7a68e url(./brown-papersq.png) +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #005599; + font-weight: bold +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link, +.hljs-name { + color: #2c009f +} +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #802022 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/codepen-embed.css b/modules/highlighter/styles/codepen-embed.css new file mode 100644 index 0000000..01e2fd5 --- /dev/null +++ b/modules/highlighter/styles/codepen-embed.css @@ -0,0 +1,57 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + codepen.io Embed Theme + Author: Justin Perry + Original theme - https://github.com/chriskempson/tomorrow-theme +*/ +.hljs { + background: #222; + color: #fff +} +.hljs-comment, +.hljs-quote { + color: #777 +} +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-regexp, +.hljs-meta, +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-params, +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-deletion { + color: #ab875d +} +.hljs-section, +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-type, +.hljs-attribute { + color: #9b869b +} +.hljs-string, +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #8f9c6c +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/color-brewer.css b/modules/highlighter/styles/color-brewer.css new file mode 100644 index 0000000..c0db73c --- /dev/null +++ b/modules/highlighter/styles/color-brewer.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Colorbrewer theme +Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock +Ported by Fabrício Tavares de Oliveira + +*/ +.hljs { + color: #000; + background: #fff +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-meta, +.hljs-symbol, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #756bb1 +} +.hljs-comment, +.hljs-quote { + color: #636363 +} +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-bullet, +.hljs-link { + color: #31a354 +} +.hljs-deletion, +.hljs-variable { + color: #88f +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-doctag, +.hljs-type, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-strong { + color: #3182bd +} +.hljs-emphasis { + font-style: italic +} +.hljs-attribute { + color: #e6550d +} \ No newline at end of file diff --git a/modules/highlighter/styles/dark.css b/modules/highlighter/styles/dark.css new file mode 100644 index 0000000..bdeceb2 --- /dev/null +++ b/modules/highlighter/styles/dark.css @@ -0,0 +1,62 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Dark style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ +.hljs { + color: #ddd; + background: #303030 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: white +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #d88 +} +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #979797 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/default.css b/modules/highlighter/styles/default.css new file mode 100644 index 0000000..6c4d2b3 --- /dev/null +++ b/modules/highlighter/styles/default.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/ +/* +This is left on purpose making default.css the single file that can be lifted +as-is from the repository directly without the need for a build step + +Typically this "required" baseline CSS is added by `makestuff.js` during build. +*/ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* end baseline CSS */ +.hljs { + background: #F3F3F3; + color: #444 +} +/* Base color: saturation 0; */ +.hljs-subst { + /* default */ + +} +/* purposely ignored */ +.hljs-formula, +.hljs-attr, +.hljs-property, +.hljs-params { + +} +.hljs-comment { + color: #697070 +} +.hljs-tag, +.hljs-punctuation { + color: #444a +} +.hljs-tag .hljs-name, +.hljs-tag .hljs-attr { + color: #444 +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold +} +/* User color: hue: 0 */ +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000 +} +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-operator, +.hljs-selector-pseudo { + color: #ab5656 +} +/* Language color: hue: 90; */ +.hljs-literal { + color: #695 +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300 +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #38a +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/devibeans.css b/modules/highlighter/styles/devibeans.css new file mode 100644 index 0000000..a35e363 --- /dev/null +++ b/modules/highlighter/styles/devibeans.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: devibeans (dark) + Author: @terminaldweller + Maintainer: @terminaldweller + + Inspired by vim's jellybeans theme (https://github.com/nanotech/jellybeans.vim) +*/ +.hljs { + background: #000000; + color: #a39e9b +} +.hljs-attr, +.hljs-template-tag { + color: #8787d7 +} +.hljs-comment, +.hljs-doctag, +.hljs-quote { + color: #339966 +} +.hljs-params { + color: #a39e9b +} +.hljs-regexp { + color: #d700ff +} +.hljs-tag, +.hljs-selector-id, +.hljs-number, +.hljs-literal { + color: #ef5350 +} +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #0087ff +} +/* opt-out */ +.hljs-operator, +.hljs-punctuation { + +} +.hljs-selector-class, +.hljs-code, +.hljs-formula, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link, +.hljs-keyword { + color: #64b5f6 +} +.hljs-built_in, +.hljs-title, +.hljs-deletion { + color: #ff8700 +} +.hljs-type, +.hljs-section, +.hljs-function, +.hljs-name, +.hljs-property, +.hljs-attribute { + color: #ffd75f +} +.hljs-meta .hljs-string, +.hljs-string, +.hljs-subst, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #558b2f +} +.hljs-selector-tag { + color: #9966ff +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/docco.css b/modules/highlighter/styles/docco.css new file mode 100644 index 0000000..1be51b4 --- /dev/null +++ b/modules/highlighter/styles/docco.css @@ -0,0 +1,83 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ +.hljs { + color: #000; + background: #f8f8ff +} +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121 +} +.hljs-number { + color: #40a070 +} +.hljs-string, +.hljs-doctag { + color: #219161 +} +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d +} +.hljs-params { + color: #00f +} +.hljs-title { + color: #458; + font-weight: bold +} +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal +} +.hljs-variable, +.hljs-template-variable { + color: #008080 +} +.hljs-regexp, +.hljs-link { + color: #b68 +} +.hljs-symbol, +.hljs-bullet { + color: #990073 +} +.hljs-built_in { + color: #0086b3 +} +.hljs-meta { + color: #999; + font-weight: bold +} +.hljs-deletion { + background: #fdd +} +.hljs-addition { + background: #dfd +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/far.css b/modules/highlighter/styles/far.css new file mode 100644 index 0000000..ecf7cf5 --- /dev/null +++ b/modules/highlighter/styles/far.css @@ -0,0 +1,67 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +FAR Style (c) MajestiC + +*/ +.hljs { + color: #0ff; + background: #000080 +} +.hljs-subst { + /* default */ + +} +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #ff0 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-variable { + color: #fff +} +.hljs-comment, +.hljs-quote, +.hljs-doctag, +.hljs-deletion { + color: #888 +} +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #0f0 +} +.hljs-meta { + color: #008080 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/felipec.css b/modules/highlighter/styles/felipec.css new file mode 100644 index 0000000..282dfd6 --- /dev/null +++ b/modules/highlighter/styles/felipec.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + * Theme: FelipeC + * Author: (c) 2021 Felipe Contreras + * Website: https://github.com/felipec/vim-felipec + * + * Autogenerated with vim-felipec's generator. +*/ +.hljs { + color: #dddde1; + background: #1e1e22 +} +.hljs::selection, +.hljs ::selection { + color: #1e1e22; + background: #bf8fef +} +.hljs-comment, +.hljs-code, +.hljs-quote { + color: #888896 +} +.hljs-number, +.hljs-literal, +.hljs-deletion { + color: #ef8f8f +} +.hljs-punctuation, +.hljs-meta, +.hljs-operator, +.hljs-subst, +.hljs-doctag, +.hljs-template-variable, +.hljs-selector-attr { + color: #efbf8f +} +.hljs-type { + color: #efef8f +} +.hljs-tag, +.hljs-title, +.hljs-selector-class, +.hljs-selector-id { + color: #bfef8f +} +.hljs-string, +.hljs-regexp, +.hljs-addition { + color: #8fef8f +} +.hljs-class, +.hljs-property { + color: #8fefbf +} +.hljs-name, +.hljs-selector-tag { + color: #8fefef +} +.hljs-keyword, +.hljs-built_in { + color: #8fbfef +} +.hljs-section, +.hljs-bullet { + color: #8f8fef +} +.hljs-selector-pseudo { + color: #bf8fef +} +.hljs-variable, +.hljs-params, +.hljs-attr, +.hljs-attribute { + color: #ef8fef +} +.hljs-symbol, +.hljs-link { + color: #ef8fbf +} +.hljs-strong, +.hljs-literal, +.hljs-title { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/foundation.css b/modules/highlighter/styles/foundation.css new file mode 100644 index 0000000..87641c7 --- /dev/null +++ b/modules/highlighter/styles/foundation.css @@ -0,0 +1,80 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ +.hljs { + background: #eee; + color: black +} +.hljs-link, +.hljs-emphasis, +.hljs-attribute, +.hljs-addition { + color: #070 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong, +.hljs-string, +.hljs-deletion { + color: #d14 +} +.hljs-strong { + font-weight: bold +} +.hljs-quote, +.hljs-comment { + color: #998; + font-style: italic +} +.hljs-section, +.hljs-title { + color: #900 +} +.hljs-class .hljs-title, +.hljs-title.class_, +.hljs-type { + color: #458 +} +.hljs-variable, +.hljs-template-variable { + color: #336699 +} +.hljs-bullet { + color: #997700 +} +.hljs-meta { + color: #3344bb +} +.hljs-code, +.hljs-number, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag { + color: #099 +} +.hljs-regexp { + background-color: #fff0ff; + color: #880088 +} +.hljs-symbol { + color: #990073 +} +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #007700 +} \ No newline at end of file diff --git a/modules/highlighter/styles/github-dark-dimmed.css b/modules/highlighter/styles/github-dark-dimmed.css new file mode 100644 index 0000000..f3855ca --- /dev/null +++ b/modules/highlighter/styles/github-dark-dimmed.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: GitHub Dark Dimmed + Description: Dark dimmed theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Colors taken from GitHub's CSS +*/ +.hljs { + color: #adbac7; + background: #22272e +} +.hljs-doctag, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-variable.language_ { + /* prettylights-syntax-keyword */ + color: #f47067 +} +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-title.function_ { + /* prettylights-syntax-entity */ + color: #dcbdfb +} +.hljs-attr, +.hljs-attribute, +.hljs-literal, +.hljs-meta, +.hljs-number, +.hljs-operator, +.hljs-variable, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-id { + /* prettylights-syntax-constant */ + color: #6cb6ff +} +.hljs-regexp, +.hljs-string, +.hljs-meta .hljs-string { + /* prettylights-syntax-string */ + color: #96d0ff +} +.hljs-built_in, +.hljs-symbol { + /* prettylights-syntax-variable */ + color: #f69d50 +} +.hljs-comment, +.hljs-code, +.hljs-formula { + /* prettylights-syntax-comment */ + color: #768390 +} +.hljs-name, +.hljs-quote, +.hljs-selector-tag, +.hljs-selector-pseudo { + /* prettylights-syntax-entity-tag */ + color: #8ddb8c +} +.hljs-subst { + /* prettylights-syntax-storage-modifier-import */ + color: #adbac7 +} +.hljs-section { + /* prettylights-syntax-markup-heading */ + color: #316dca; + font-weight: bold +} +.hljs-bullet { + /* prettylights-syntax-markup-list */ + color: #eac55f +} +.hljs-emphasis { + /* prettylights-syntax-markup-italic */ + color: #adbac7; + font-style: italic +} +.hljs-strong { + /* prettylights-syntax-markup-bold */ + color: #adbac7; + font-weight: bold +} +.hljs-addition { + /* prettylights-syntax-markup-inserted */ + color: #b4f1b4; + background-color: #1b4721 +} +.hljs-deletion { + /* prettylights-syntax-markup-deleted */ + color: #ffd8d3; + background-color: #78191b +} +.hljs-char.escape_, +.hljs-link, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/github-dark.css b/modules/highlighter/styles/github-dark.css new file mode 100644 index 0000000..8826d2f --- /dev/null +++ b/modules/highlighter/styles/github-dark.css @@ -0,0 +1,118 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: GitHub Dark + Description: Dark theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-dark + Current colors taken from GitHub's CSS +*/ +.hljs { + color: #c9d1d9; + background: #0d1117 +} +.hljs-doctag, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-variable.language_ { + /* prettylights-syntax-keyword */ + color: #ff7b72 +} +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-title.function_ { + /* prettylights-syntax-entity */ + color: #d2a8ff +} +.hljs-attr, +.hljs-attribute, +.hljs-literal, +.hljs-meta, +.hljs-number, +.hljs-operator, +.hljs-variable, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-id { + /* prettylights-syntax-constant */ + color: #79c0ff +} +.hljs-regexp, +.hljs-string, +.hljs-meta .hljs-string { + /* prettylights-syntax-string */ + color: #a5d6ff +} +.hljs-built_in, +.hljs-symbol { + /* prettylights-syntax-variable */ + color: #ffa657 +} +.hljs-comment, +.hljs-code, +.hljs-formula { + /* prettylights-syntax-comment */ + color: #8b949e +} +.hljs-name, +.hljs-quote, +.hljs-selector-tag, +.hljs-selector-pseudo { + /* prettylights-syntax-entity-tag */ + color: #7ee787 +} +.hljs-subst { + /* prettylights-syntax-storage-modifier-import */ + color: #c9d1d9 +} +.hljs-section { + /* prettylights-syntax-markup-heading */ + color: #1f6feb; + font-weight: bold +} +.hljs-bullet { + /* prettylights-syntax-markup-list */ + color: #f2cc60 +} +.hljs-emphasis { + /* prettylights-syntax-markup-italic */ + color: #c9d1d9; + font-style: italic +} +.hljs-strong { + /* prettylights-syntax-markup-bold */ + color: #c9d1d9; + font-weight: bold +} +.hljs-addition { + /* prettylights-syntax-markup-inserted */ + color: #aff5b4; + background-color: #033a16 +} +.hljs-deletion { + /* prettylights-syntax-markup-deleted */ + color: #ffdcd7; + background-color: #67060c +} +.hljs-char.escape_, +.hljs-link, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/github.css b/modules/highlighter/styles/github.css new file mode 100644 index 0000000..1001da6 --- /dev/null +++ b/modules/highlighter/styles/github.css @@ -0,0 +1,118 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: GitHub + Description: Light theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-light + Current colors taken from GitHub's CSS +*/ +.hljs { + color: #24292e; + background: #ffffff +} +.hljs-doctag, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-variable.language_ { + /* prettylights-syntax-keyword */ + color: #d73a49 +} +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-title.function_ { + /* prettylights-syntax-entity */ + color: #6f42c1 +} +.hljs-attr, +.hljs-attribute, +.hljs-literal, +.hljs-meta, +.hljs-number, +.hljs-operator, +.hljs-variable, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-id { + /* prettylights-syntax-constant */ + color: #005cc5 +} +.hljs-regexp, +.hljs-string, +.hljs-meta .hljs-string { + /* prettylights-syntax-string */ + color: #032f62 +} +.hljs-built_in, +.hljs-symbol { + /* prettylights-syntax-variable */ + color: #e36209 +} +.hljs-comment, +.hljs-code, +.hljs-formula { + /* prettylights-syntax-comment */ + color: #6a737d +} +.hljs-name, +.hljs-quote, +.hljs-selector-tag, +.hljs-selector-pseudo { + /* prettylights-syntax-entity-tag */ + color: #22863a +} +.hljs-subst { + /* prettylights-syntax-storage-modifier-import */ + color: #24292e +} +.hljs-section { + /* prettylights-syntax-markup-heading */ + color: #005cc5; + font-weight: bold +} +.hljs-bullet { + /* prettylights-syntax-markup-list */ + color: #735c0f +} +.hljs-emphasis { + /* prettylights-syntax-markup-italic */ + color: #24292e; + font-style: italic +} +.hljs-strong { + /* prettylights-syntax-markup-bold */ + color: #24292e; + font-weight: bold +} +.hljs-addition { + /* prettylights-syntax-markup-inserted */ + color: #22863a; + background-color: #f0fff4 +} +.hljs-deletion { + /* prettylights-syntax-markup-deleted */ + color: #b31d28; + background-color: #ffeef0 +} +.hljs-char.escape_, +.hljs-link, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/gml.css b/modules/highlighter/styles/gml.css new file mode 100644 index 0000000..7d6437c --- /dev/null +++ b/modules/highlighter/styles/gml.css @@ -0,0 +1,72 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +GML Theme - Meseta + +*/ +.hljs { + background: #222222; + color: #C0C0C0 +} +.hljs-keyword { + color: #FFB871; + font-weight: bold +} +.hljs-built_in { + color: #FFB871 +} +.hljs-literal { + color: #FF8080 +} +.hljs-symbol { + color: #58E55A +} +.hljs-comment { + color: #5B995B +} +.hljs-string { + color: #FFFF00 +} +.hljs-number { + color: #FF8080 +} +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name, +.hljs-bullet, +.hljs-code, +.hljs-addition, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion, +.hljs-title, +.hljs-section, +.hljs-function, +.hljs-meta .hljs-keyword, +.hljs-meta, +.hljs-subst { + color: #C0C0C0 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/googlecode.css b/modules/highlighter/styles/googlecode.css new file mode 100644 index 0000000..135aaf2 --- /dev/null +++ b/modules/highlighter/styles/googlecode.css @@ -0,0 +1,79 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Google Code style (c) Aahan Krish + +*/ +.hljs { + background: white; + color: black +} +.hljs-comment, +.hljs-quote { + color: #800 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-title, +.hljs-name { + color: #008 +} +.hljs-variable, +.hljs-template-variable { + color: #660 +} +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-regexp { + color: #080 +} +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-meta, +.hljs-number, +.hljs-link { + color: #066 +} +.hljs-title, +.hljs-doctag, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-params { + color: #606 +} +.hljs-attribute, +.hljs-subst { + color: #000 +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-selector-id, +.hljs-selector-class { + color: #9B703F +} +.hljs-addition { + background-color: #baeeba +} +.hljs-deletion { + background-color: #ffc8bd +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/gradient-dark.css b/modules/highlighter/styles/gradient-dark.css new file mode 100644 index 0000000..d8ed020 --- /dev/null +++ b/modules/highlighter/styles/gradient-dark.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Gradient Dark (c) Samia Ali + +*/ +.hljs { + background-color: #652487; + background-image: linear-gradient(160deg, #652487 0%, #443ac3 35%, #0174b7 68%, #04988e 100%); + color: #e7e4eb +} +.hljs-subtr { + color: #e7e4eb +} +.hljs-doctag, +.hljs-meta, +.hljs-comment, +.hljs-quote { + color: #af8dd9 +} +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-regexp, +.hljs-attr, +.hljs-tag { + color: #AEFBFF +} +.hljs-params, +.hljs-selector-class, +.hljs-bullet { + color: #F19FFF +} +.hljs-keyword, +.hljs-section, +.hljs-meta .hljs-keyword, +.hljs-symbol, +.hljs-type { + color: #17fc95 +} +.hljs-addition, +.hljs-number, +.hljs-link { + color: #C5FE00 +} +.hljs-string { + color: #38c0ff +} +.hljs-attribute, +.hljs-addition { + color: #E7FF9F +} +.hljs-variable, +.hljs-template-variable { + color: #E447FF +} +.hljs-built_in, +.hljs-formula, +.hljs-name, +.hljs-title, +.hljs-class, +.hljs-function { + color: #FFC800 +} +.hljs-selector-pseudo, +.hljs-deletion, +.hljs-literal { + color: #FF9E44 +} +.hljs-emphasis, +.hljs-quote { + font-style: italic +} +.hljs-params, +.hljs-selector-class, +.hljs-strong, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-section, +.hljs-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/gradient-light.css b/modules/highlighter/styles/gradient-light.css new file mode 100644 index 0000000..f9b5cbf --- /dev/null +++ b/modules/highlighter/styles/gradient-light.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Gradient Light (c) Samia Ali + +*/ +.hljs { + background-color: #f9ccff; + background-image: linear-gradient(295deg, #f9ccff 0%, #e6bbf9 11%, #9ec6f9 32%, #55e6ee 60%, #91f5d1 74%, #f9ffbf 98%); + color: #250482 +} +.hljs-subtr { + color: #01958B +} +.hljs-doctag, +.hljs-meta, +.hljs-comment, +.hljs-quote { + color: #CB7200 +} +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-regexp, +.hljs-attr, +.hljs-tag { + color: #07BD5F +} +.hljs-params, +.hljs-selector-class, +.hljs-bullet { + color: #43449F +} +.hljs-keyword, +.hljs-section, +.hljs-meta .hljs-keyword, +.hljs-symbol, +.hljs-type { + color: #7D2801 +} +.hljs-addition, +.hljs-number, +.hljs-link { + color: #7F0096 +} +.hljs-string { + color: #2681ab +} +.hljs-attribute, +.hljs-addition { + color: #296562 +} +.hljs-variable, +.hljs-template-variable { + color: #025C8F +} +.hljs-built_in, +.hljs-formula, +.hljs-name, +.hljs-title, +.hljs-class, +.hljs-function { + color: #529117 +} +.hljs-selector-pseudo, +.hljs-deletion, +.hljs-literal { + color: #AD13FF +} +.hljs-emphasis, +.hljs-quote { + font-style: italic +} +.hljs-params, +.hljs-selector-class, +.hljs-strong, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-template-tag, +.hljs-section, +.hljs-keyword { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/grayscale.css b/modules/highlighter/styles/grayscale.css new file mode 100644 index 0000000..9790a86 --- /dev/null +++ b/modules/highlighter/styles/grayscale.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +grayscale style (c) MY Sun + +*/ +.hljs { + color: #333; + background: #fff +} +.hljs-comment, +.hljs-quote { + color: #777; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold +} +.hljs-number, +.hljs-literal { + color: #777 +} +.hljs-string, +.hljs-doctag, +.hljs-formula { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat +} +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #000; + font-weight: bold +} +.hljs-subst { + font-weight: normal +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type, +.hljs-name { + color: #333; + font-weight: bold +} +.hljs-tag { + color: #333 +} +.hljs-regexp { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat +} +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat +} +.hljs-built_in { + color: #000; + text-decoration: underline +} +.hljs-meta { + color: #999; + font-weight: bold +} +.hljs-deletion { + color: #fff; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat +} +.hljs-addition { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/hybrid.css b/modules/highlighter/styles/hybrid.css new file mode 100644 index 0000000..237701d --- /dev/null +++ b/modules/highlighter/styles/hybrid.css @@ -0,0 +1,88 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) + +*/ +.hljs { + background: #1d1f21; + color: #c5c8c6 +} +/*selection color*/ +.hljs::selection, +.hljs span::selection { + background: #373b41 +} +.hljs::-moz-selection, +.hljs span::-moz-selection { + background: #373b41 +} +/*color: fg_yellow*/ +.hljs-title, +.hljs-name { + color: #f0c674 +} +/*color: fg_comment*/ +.hljs-comment, +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #707880 +} +/*color: fg_red*/ +.hljs-number, +.hljs-symbol, +.hljs-literal, +.hljs-deletion, +.hljs-link { + color: #cc6666 +} +/*color: fg_green*/ +.hljs-string, +.hljs-doctag, +.hljs-addition, +.hljs-regexp, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #b5bd68 +} +/*color: fg_purple*/ +.hljs-attribute, +.hljs-code, +.hljs-selector-id { + color: #b294bb +} +/*color: fg_blue*/ +.hljs-keyword, +.hljs-selector-tag, +.hljs-bullet, +.hljs-tag { + color: #81a2be +} +/*color: fg_aqua*/ +.hljs-subst, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8abeb7 +} +/*color: fg_orange*/ +.hljs-type, +.hljs-built_in, +.hljs-quote, +.hljs-section, +.hljs-selector-class { + color: #de935f +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/idea.css b/modules/highlighter/styles/idea.css new file mode 100644 index 0000000..03307df --- /dev/null +++ b/modules/highlighter/styles/idea.css @@ -0,0 +1,86 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Intellij Idea-like styling (c) Vasily Polovnyov + +*/ +.hljs { + color: #000; + background: #fff +} +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000 +} +.hljs-comment, +.hljs-quote { + color: #808080; + font-style: italic +} +.hljs-meta { + color: #808000 +} +.hljs-tag { + background: #efefef +} +.hljs-section, +.hljs-name, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class { + font-weight: bold; + color: #000080 +} +.hljs-attribute, +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: bold; + color: #0000ff +} +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: normal +} +.hljs-string { + color: #008000; + font-weight: bold +} +.hljs-symbol, +.hljs-bullet, +.hljs-formula { + color: #000; + background: #d0eded; + font-style: italic +} +.hljs-doctag { + text-decoration: underline +} +.hljs-variable, +.hljs-template-variable { + color: #660e7a +} +.hljs-addition { + background: #baeeba +} +.hljs-deletion { + background: #ffc8bd +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/intellij-light.css b/modules/highlighter/styles/intellij-light.css new file mode 100644 index 0000000..9140f80 --- /dev/null +++ b/modules/highlighter/styles/intellij-light.css @@ -0,0 +1,107 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Intellij-light style (c) Pegasis + +*/ +.hljs { + color: #000; + background: #fff +} +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000 +} +.hljs-title.function_ { + color: #7A7A43 +} +.hljs-code, +.hljs-comment, +.hljs-quote { + color: #8C8C8C; + font-style: italic +} +.hljs-meta { + color: #9E880D +} +.hljs-section { + color: #871094 +} +.hljs-variable.language_, +.hljs-symbol, +.hljs-selector-class, +.hljs-selector-id, +.hljs-selector-tag, +.hljs-template-tag, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-keyword, +.hljs-meta .hljs-keyword, +.hljs-literal, +.hljs-name, +.hljs-built_in, +.hljs-type { + color: #0033B3 +} +.hljs-property, +.hljs-attr { + color: #871094 +} +.hljs-attribute { + color: #174AD4 +} +.hljs-number { + color: #1750EB +} +.hljs-regexp { + color: #264EFF +} +.hljs-link { + text-decoration: underline; + color: #006DCC +} +.hljs-meta .hljs-string, +.hljs-string { + color: #067D17 +} +.hljs-char.escape_ { + color: #0037A6 +} +.hljs-doctag { + text-decoration: underline +} +.hljs-template-variable { + color: #248F8F +} +.hljs-addition { + background: #BEE6BE +} +.hljs-deletion { + background: #D6D6D6 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-variable, +.hljs-operator, +.hljs-punctuation, +.hljs-title.class_.inherited__, +.hljs-title.class_, +.hljs-params, +.hljs-bullet, +.hljs-formula, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/ir-black.css b/modules/highlighter/styles/ir-black.css new file mode 100644 index 0000000..3557853 --- /dev/null +++ b/modules/highlighter/styles/ir-black.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + IR_Black style (c) Vasily Mikhailitchenko +*/ +.hljs { + background: #000; + color: #f8f8f8 +} +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7c7c7c +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag, +.hljs-name { + color: #96cbfe +} +.hljs-attribute, +.hljs-selector-id { + color: #ffffb6 +} +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition { + color: #a8ff60 +} +.hljs-subst { + color: #daefa3 +} +.hljs-regexp, +.hljs-link { + color: #e9c062 +} +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-doctag { + color: #ffffb6 +} +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-literal { + color: #c6c5fe +} +.hljs-number, +.hljs-deletion { + color: #ff73fd +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/isbl-editor-dark.css b/modules/highlighter/styles/isbl-editor-dark.css new file mode 100644 index 0000000..4787d08 --- /dev/null +++ b/modules/highlighter/styles/isbl-editor-dark.css @@ -0,0 +1,94 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +ISBL Editor style dark color scheme (c) Dmitriy Tarasov + +*/ +.hljs { + background: #404040; + color: #f0f0f0 +} +/* Base color: saturation 0; */ +.hljs, +.hljs-subst { + color: #f0f0f0 +} +.hljs-comment { + color: #b5b5b5; + font-style: italic +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + color: #f0f0f0; + font-weight: bold +} +/* User color: hue: 0 */ +.hljs-string { + color: #97bf0d +} +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #f0f0f0 +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #e2c696 +} +/* Language color: hue: 90; */ +.hljs-built_in, +.hljs-literal { + color: #97bf0d; + font-weight: bold +} +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300 +} +.hljs-class { + color: #ce9d4d; + font-weight: bold +} +.hljs-title, +.hljs-section { + color: #df471e +} +.hljs-title>.hljs-built_in { + color: #81bce9; + font-weight: normal +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/isbl-editor-light.css b/modules/highlighter/styles/isbl-editor-light.css new file mode 100644 index 0000000..cdbabbe --- /dev/null +++ b/modules/highlighter/styles/isbl-editor-light.css @@ -0,0 +1,93 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +ISBL Editor style light color schemec (c) Dmitriy Tarasov + +*/ +.hljs { + background: white; + color: black +} +/* Base color: saturation 0; */ +.hljs-subst { + color: black +} +.hljs-comment { + color: #555555; + font-style: italic +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + color: #000000; + font-weight: bold +} +/* User color: hue: 0 */ +.hljs-string { + color: #000080 +} +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #000000 +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #5e1700 +} +/* Language color: hue: 90; */ +.hljs-built_in, +.hljs-literal { + color: #000080; + font-weight: bold +} +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300 +} +.hljs-class { + color: #6f1C00; + font-weight: bold +} +.hljs-title, +.hljs-section { + color: #fb2c00 +} +.hljs-title>.hljs-built_in { + color: #008080; + font-weight: normal +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/kimbie-dark.css b/modules/highlighter/styles/kimbie-dark.css new file mode 100644 index 0000000..eddf4a0 --- /dev/null +++ b/modules/highlighter/styles/kimbie-dark.css @@ -0,0 +1,69 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Name: Kimbie (dark) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ +.hljs { + background: #221a0f; + color: #d3af86 +} +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #d6baad +} +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958 +} +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32 +} +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a +} +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a +} +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/kimbie-light.css b/modules/highlighter/styles/kimbie-light.css new file mode 100644 index 0000000..3cefadc --- /dev/null +++ b/modules/highlighter/styles/kimbie-light.css @@ -0,0 +1,69 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Name: Kimbie (light) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ +.hljs { + background: #fbebd4; + color: #84613d +} +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #a57a4c +} +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958 +} +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32 +} +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a +} +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a +} +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/lightfair.css b/modules/highlighter/styles/lightfair.css new file mode 100644 index 0000000..5142dff --- /dev/null +++ b/modules/highlighter/styles/lightfair.css @@ -0,0 +1,81 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Lightfair style (c) Tristian Kelly + +*/ +.hljs { + color: #444; + background: #fff +} +.hljs-name { + color: #01a3a3 +} +.hljs-tag, +.hljs-meta { + color: #778899 +} +.hljs-subst { + /* default */ + +} +.hljs-comment { + color: #888888 +} +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold +} +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #4286f4 +} +.hljs-title, +.hljs-section { + color: #4286f4; + font-weight: bold +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060 +} +.hljs-literal { + color: #62bcbc +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #25c6c6 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/lioshi.css b/modules/highlighter/styles/lioshi.css new file mode 100644 index 0000000..035611a --- /dev/null +++ b/modules/highlighter/styles/lioshi.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* lioshi Theme */ +/* Original theme - https://github.com/lioshi/vscode-lioshi-theme */ +.hljs { + background: #303030; + color: #c5c8c6 +} +/* Comment */ +.hljs-comment { + color: #8d8d8d +} +/* quote */ +.hljs-quote { + color: #b3c7d8 +} +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666 +} +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-subst +.hljs-link { + color: #de935f +} +/* Yellow */ +.hljs-attribute { + color: #f0c674 +} +/* Green */ +.hljs-string, +.hljs-bullet, +.hljs-params, +.hljs-addition { + color: #b5bd68 +} +/* Purple */ +.hljs-selector-tag, +.hljs-keyword, +.hljs-function, +.hljs-class { + color: #be94bb +} +/* Blue */ +.hljs-title, +.hljs-meta, +.hljs-section { + color: #81a2be +} +/* Purple light */ +.hljs-symbol { + color: #dbc4d9 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/magula.css b/modules/highlighter/styles/magula.css new file mode 100644 index 0000000..9d30419 --- /dev/null +++ b/modules/highlighter/styles/magula.css @@ -0,0 +1,66 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Description: Magula style for highligh.js +Author: Ruslan Keba +Website: http://rukeba.com/ +Version: 1.0 +Date: 2009-01-03 +Music: Aphex Twin / Xtal +*/ +.hljs { + background-color: #f4f4f4; + color: black +} +.hljs-subst { + color: black +} +.hljs-string, +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #050 +} +.hljs-comment, +.hljs-quote { + color: #777 +} +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-type, +.hljs-link { + color: #800 +} +.hljs-deletion, +.hljs-meta { + color: #00e +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-tag, +.hljs-name { + font-weight: bold; + color: navy +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/mono-blue.css b/modules/highlighter/styles/mono-blue.css new file mode 100644 index 0000000..bc9bcea --- /dev/null +++ b/modules/highlighter/styles/mono-blue.css @@ -0,0 +1,56 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Five-color theme from a single blue hue. +*/ +.hljs { + background: #eaeef3; + color: #00193a +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-comment { + color: #738191 +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab +} +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9 +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/monokai-sublime.css b/modules/highlighter/styles/monokai-sublime.css new file mode 100644 index 0000000..b469dd4 --- /dev/null +++ b/modules/highlighter/styles/monokai-sublime.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ +.hljs { + background: #23241f; + color: #f8f8f2 +} +.hljs-tag, +.hljs-subst { + color: #f8f8f2 +} +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2 +} +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff +} +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e +} +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672 +} +.hljs-symbol, +.hljs-attribute { + color: #66d9ef +} +.hljs-params, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #f8f8f2 +} +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74 +} +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} \ No newline at end of file diff --git a/modules/highlighter/styles/monokai.css b/modules/highlighter/styles/monokai.css new file mode 100644 index 0000000..22a3922 --- /dev/null +++ b/modules/highlighter/styles/monokai.css @@ -0,0 +1,70 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ +.hljs { + background: #272822; + color: #ddd +} +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-number, +.hljs-name { + color: #f92672 +} +.hljs-code { + color: #66d9ef +} +.hljs-attribute, +.hljs-attr, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db +} +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e +} +.hljs-title.class_, +.hljs-class .hljs-title { + color: white +} +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/monokai.min.css b/modules/highlighter/styles/monokai.min.css index 448d85d..d289f63 100644 --- a/modules/highlighter/styles/monokai.min.css +++ b/modules/highlighter/styles/monokai.min.css @@ -1 +1 @@ -pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-strong,.hljs-tag{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attribute,.hljs-link,.hljs-regexp,.hljs-symbol{color:#bf79db}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-section,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#a6e22e}.hljs-class .hljs-title,.hljs-title.class_{color:#fff}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#75715e}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-title,.hljs-type{font-weight:700} \ No newline at end of file +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-number,.hljs-selector-tag,.hljs-strong,.hljs-tag{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attr,.hljs-attribute,.hljs-link,.hljs-regexp,.hljs-symbol{color:#bf79db}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-section,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#a6e22e}.hljs-class .hljs-title,.hljs-title.class_{color:#fff}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#75715e}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-title,.hljs-type{font-weight:700} \ No newline at end of file diff --git a/modules/highlighter/styles/night-owl.css b/modules/highlighter/styles/night-owl.css new file mode 100644 index 0000000..3cad0eb --- /dev/null +++ b/modules/highlighter/styles/night-owl.css @@ -0,0 +1,174 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Night Owl for highlight.js (c) Carl Baxter + +An adaptation of Sarah Drasner's Night Owl VS Code Theme +https://github.com/sdras/night-owl-vscode-theme + +Copyright (c) 2018 Sarah Drasner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ +.hljs { + background: #011627; + color: #d6deeb +} +/* General Purpose */ +.hljs-keyword { + color: #c792ea; + font-style: italic +} +.hljs-built_in { + color: #addb67; + font-style: italic +} +.hljs-type { + color: #82aaff +} +.hljs-literal { + color: #ff5874 +} +.hljs-number { + color: #F78C6C +} +.hljs-regexp { + color: #5ca7e4 +} +.hljs-string { + color: #ecc48d +} +.hljs-subst { + color: #d3423e +} +.hljs-symbol { + color: #82aaff +} +.hljs-class { + color: #ffcb8b +} +.hljs-function { + color: #82AAFF +} +.hljs-title { + color: #DCDCAA; + font-style: italic +} +.hljs-params { + color: #7fdbca +} +/* Meta */ +.hljs-comment { + color: #637777; + font-style: italic +} +.hljs-doctag { + color: #7fdbca +} +.hljs-meta { + color: #82aaff +} +.hljs-meta .hljs-keyword { + color: #82aaff +} +.hljs-meta .hljs-string { + color: #ecc48d +} +/* Tags, attributes, config */ +.hljs-section { + color: #82b1ff +} +.hljs-tag, +.hljs-name { + color: #7fdbca +} +.hljs-attr { + color: #7fdbca +} +.hljs-attribute { + color: #80cbc4 +} +.hljs-variable { + color: #addb67 +} +/* Markup */ +.hljs-bullet { + color: #d9f5dd +} +.hljs-code { + color: #80CBC4 +} +.hljs-emphasis { + color: #c792ea; + font-style: italic +} +.hljs-strong { + color: #addb67; + font-weight: bold +} +.hljs-formula { + color: #c792ea +} +.hljs-link { + color: #ff869a +} +.hljs-quote { + color: #697098; + font-style: italic +} +/* CSS */ +.hljs-selector-tag { + color: #ff6363 +} +.hljs-selector-id { + color: #fad430 +} +.hljs-selector-class { + color: #addb67; + font-style: italic +} +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #c792ea; + font-style: italic +} +/* Templates */ +.hljs-template-tag { + color: #c792ea +} +.hljs-template-variable { + color: #addb67 +} +/* diff */ +.hljs-addition { + color: #addb67ff; + font-style: italic +} +.hljs-deletion { + color: #EF535090; + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/nnfx-dark.css b/modules/highlighter/styles/nnfx-dark.css new file mode 100644 index 0000000..cbacc28 --- /dev/null +++ b/modules/highlighter/styles/nnfx-dark.css @@ -0,0 +1,104 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: nnfx dark + Description: a theme inspired by Netscape Navigator/Firefox + Author: (c) 2020-2021 Jim Mason + Maintainer: @RocketMan + License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + Updated: 2021-05-17 + + @version 1.1.0 +*/ +.hljs { + background: #333; + color: #fff +} +.language-xml .hljs-meta, +.language-xml .hljs-meta-string { + font-weight: bold; + font-style: italic; + color: #69f +} +.hljs-comment, +.hljs-quote { + font-style: italic; + color: #9c6 +} +.hljs-name, +.hljs-keyword, +.hljs-built_in { + color: #a7a +} +.hljs-name, +.hljs-attr { + font-weight: bold +} +.hljs-string { + font-weight: normal +} +.hljs-code, +.hljs-string, +.hljs-meta .hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-link { + color: #bce +} +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable { + color: #d40 +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type { + font-weight: bold; + color: #96c +} +.hljs-title.function_, +.hljs-function .hljs-title, +.hljs-attr, +.hljs-subst, +.hljs-tag { + color: #fff +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-addition { + background-color: #797 +} +.hljs-deletion { + background-color: #c99 +} +.hljs-meta { + color: #69f +} +.hljs-section, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-selector-tag { + font-weight: bold; + color: #69f +} +.hljs-selector-pseudo { + font-style: italic +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/nnfx-light.css b/modules/highlighter/styles/nnfx-light.css new file mode 100644 index 0000000..87a04c6 --- /dev/null +++ b/modules/highlighter/styles/nnfx-light.css @@ -0,0 +1,104 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: nnfx light + Description: a theme inspired by Netscape Navigator/Firefox + Author: (c) 2020-2021 Jim Mason + Maintainer: @RocketMan + License: https://creativecommons.org/licenses/by-sa/4.0 CC BY-SA 4.0 + Updated: 2021-05-17 + + @version 1.1.0 +*/ +.hljs { + background: #fff; + color: #000 +} +.language-xml .hljs-meta, +.language-xml .hljs-meta-string { + font-weight: bold; + font-style: italic; + color: #48b +} +.hljs-comment, +.hljs-quote { + font-style: italic; + color: #070 +} +.hljs-name, +.hljs-keyword, +.hljs-built_in { + color: #808 +} +.hljs-name, +.hljs-attr { + font-weight: bold +} +.hljs-string { + font-weight: normal +} +.hljs-code, +.hljs-string, +.hljs-meta .hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-link { + color: #00f +} +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable { + color: #f40 +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type { + font-weight: bold; + color: #639 +} +.hljs-title.function_, +.hljs-function .hljs-title, +.hljs-attr, +.hljs-subst, +.hljs-tag { + color: #000 +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-addition { + background-color: #beb +} +.hljs-deletion { + background-color: #fbb +} +.hljs-meta { + color: #269 +} +.hljs-section, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-selector-tag { + font-weight: bold; + color: #48b +} +.hljs-selector-pseudo { + font-style: italic +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/nord.css b/modules/highlighter/styles/nord.css new file mode 100644 index 0000000..2e849af --- /dev/null +++ b/modules/highlighter/styles/nord.css @@ -0,0 +1,275 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + * Copyright (c) 2017-present Arctic Ice Studio + * Copyright (c) 2017-present Sven Greb + * + * Project: Nord highlight.js + * Version: 0.1.0 + * Repository: https://github.com/arcticicestudio/nord-highlightjs + * License: MIT + * References: + * https://github.com/arcticicestudio/nord + */ +/* + +Polar Night + +#2E3440 +#3B4252 +#434C5E +#4C566A + +Snow Storm + +#D8DEE9 +#E5E9F0 +#ECEFF4 + +Frost + +#8FBCBB +#88C0D0 +#81A1C1 +#5E81AC + +Aurora + +#BF616A +#D08770 +#EBCB8B +#A3BE8C +#B48EAD + +*/ +.hljs { + background: #2E3440 +} +.hljs, +.hljs-subst { + color: #D8DEE9 +} +.hljs-selector-tag { + color: #81A1C1 +} +.hljs-selector-id { + color: #8FBCBB; + font-weight: bold +} +.hljs-selector-class { + color: #8FBCBB +} +.hljs-selector-attr { + color: #8FBCBB +} +.hljs-property { + color: #88C0D0 +} +.hljs-selector-pseudo { + color: #88C0D0 +} +.hljs-addition { + background-color: rgba(163, 190, 140, 0.5) +} +.hljs-deletion { + background-color: rgba(191, 97, 106, 0.5) +} +.hljs-built_in, +.hljs-type { + color: #8FBCBB +} +.hljs-class { + color: #8FBCBB +} +.hljs-function { + color: #88C0D0 +} +.hljs-title.hljs-function, +.hljs-function > .hljs-title { + color: #88C0D0 +} +.hljs-keyword, +.hljs-literal, +.hljs-symbol { + color: #81A1C1 +} +.hljs-number { + color: #B48EAD +} +.hljs-regexp { + color: #EBCB8B +} +.hljs-string { + color: #A3BE8C +} +.hljs-title { + color: #8FBCBB +} +.hljs-params { + color: #D8DEE9 +} +.hljs-bullet { + color: #81A1C1 +} +.hljs-code { + color: #8FBCBB +} +.hljs-emphasis { + font-style: italic +} +.hljs-formula { + color: #8FBCBB +} +.hljs-strong { + font-weight: bold +} +.hljs-link:hover { + text-decoration: underline +} +.hljs-quote { + color: #4C566A +} +.hljs-comment { + color: #4C566A +} +.hljs-doctag { + color: #8FBCBB +} +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #5E81AC +} +.hljs-meta .hljs-string { + color: #A3BE8C +} +.hljs-attr { + color: #8FBCBB +} +.hljs-attribute { + color: #D8DEE9 +} +.hljs-name { + color: #81A1C1 +} +.hljs-section { + color: #88C0D0 +} +.hljs-tag { + color: #81A1C1 +} +.hljs-variable { + color: #D8DEE9 +} +.hljs-template-variable { + color: #D8DEE9 +} +.hljs-template-tag { + color: #5E81AC +} +/* per language customizations */ +.language-abnf .hljs-attribute { + color: #88C0D0 +} +.language-abnf .hljs-symbol { + color: #EBCB8B +} +.language-apache .hljs-attribute { + color: #88C0D0 +} +.language-apache .hljs-section { + color: #81A1C1 +} +.language-arduino .hljs-built_in { + color: #88C0D0 +} +.language-aspectj .hljs-meta { + color: #D08770 +} +.language-aspectj > .hljs-title { + color: #88C0D0 +} +.language-bnf .hljs-attribute { + color: #8FBCBB +} +.language-clojure .hljs-name { + color: #88C0D0 +} +.language-clojure .hljs-symbol { + color: #EBCB8B +} +.language-coq .hljs-built_in { + color: #88C0D0 +} +.language-cpp .hljs-meta .hljs-string { + color: #8FBCBB +} +.language-css .hljs-built_in { + color: #88C0D0 +} +.language-css .hljs-keyword { + color: #D08770 +} +.language-diff .hljs-meta { + color: #8FBCBB +} +.language-ebnf .hljs-attribute { + color: #8FBCBB +} +.language-glsl .hljs-built_in { + color: #88C0D0 +} +.language-groovy .hljs-meta:not(:first-child) { + color: #D08770 +} +.language-haxe .hljs-meta { + color: #D08770 +} +.language-java .hljs-meta { + color: #D08770 +} +.language-ldif .hljs-attribute { + color: #8FBCBB +} +.language-lisp .hljs-name { + color: #88C0D0 +} +.language-lua .hljs-built_in { + color: #88C0D0 +} +.language-moonscript .hljs-built_in { + color: #88C0D0 +} +.language-nginx .hljs-attribute { + color: #88C0D0 +} +.language-nginx .hljs-section { + color: #5E81AC +} +.language-pf .hljs-built_in { + color: #88C0D0 +} +.language-processing .hljs-built_in { + color: #88C0D0 +} +.language-scss .hljs-keyword { + color: #81A1C1 +} +.language-stylus .hljs-keyword { + color: #81A1C1 +} +.language-swift .hljs-meta { + color: #D08770 +} +.language-vim .hljs-built_in { + color: #88C0D0; + font-style: italic +} +.language-yaml .hljs-meta { + color: #D08770 +} \ No newline at end of file diff --git a/modules/highlighter/styles/obsidian.css b/modules/highlighter/styles/obsidian.css new file mode 100644 index 0000000..df7af1d --- /dev/null +++ b/modules/highlighter/styles/obsidian.css @@ -0,0 +1,79 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Obsidian style + * ported by Alexander Marenin (http://github.com/ioncreature) + */ +.hljs { + color: #e0e2e4; + background: #282b2e +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-selector-id { + color: #93c763 +} +.hljs-number { + color: #ffcd22 +} +.hljs-attribute { + color: #668bb0 +} +.hljs-regexp, +.hljs-link { + color: #d39745 +} +.hljs-meta { + color: #557182 +} +.hljs-tag, +.hljs-name, +.hljs-bullet, +.hljs-subst, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8cbbad +} +.hljs-string, +.hljs-symbol { + color: #ec7600 +} +.hljs-comment, +.hljs-quote, +.hljs-deletion { + color: #818e96 +} +.hljs-selector-class { + color: #A082BD +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-code, +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-section { + color: white +} \ No newline at end of file diff --git a/modules/highlighter/styles/panda-syntax-dark.css b/modules/highlighter/styles/panda-syntax-dark.css new file mode 100644 index 0000000..9a0695d --- /dev/null +++ b/modules/highlighter/styles/panda-syntax-dark.css @@ -0,0 +1,92 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Panda Syntax Theme for Highlight.js + * Based on: https://github.com/tinkertrain/panda-syntax-vscode + * Author: Annmarie Switzer + */ +.hljs { + color: #e6e6e6; + background: #2a2c2d +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} +.hljs-comment, +.hljs-quote { + color: #bbbbbb; + font-style: italic +} +.hljs-params { + color: #bbbbbb +} +.hljs-punctuation, +.hljs-attr { + color: #e6e6e6 +} +.hljs-selector-tag, +.hljs-name, +.hljs-meta { + color: #ff4b82 +} +.hljs-operator, +.hljs-char.escape_ { + color: #b084eb +} +.hljs-keyword, +.hljs-deletion { + color: #ff75b5 +} +.hljs-regexp, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_ { + color: #ff9ac1 +} +.hljs-subst, +.hljs-property, +.hljs-code, +.hljs-formula, +.hljs-section, +.hljs-title.function_ { + color: #45a9f9 +} +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-selector-class, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-meta .hljs-string { + color: #19f9d8 +} +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-link, +.hljs-built_in, +.hljs-title, +.hljs-selector-id, +.hljs-tag, +.hljs-doctag, +.hljs-attribute, +.hljs-template-tag, +.hljs-meta .hljs-keyword, +.hljs-punctuation { + color: #ffb86c +} \ No newline at end of file diff --git a/modules/highlighter/styles/panda-syntax-light.css b/modules/highlighter/styles/panda-syntax-light.css new file mode 100644 index 0000000..4bb4024 --- /dev/null +++ b/modules/highlighter/styles/panda-syntax-light.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Panda Syntax Theme for Highlight.js + * Based on: https://github.com/tinkertrain/panda-syntax-vscode + * Author: Annmarie Switzer + */ +.hljs { + color: #2a2c2d; + background: #e6e6e6 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-link { + text-decoration: underline +} +.hljs-comment, +.hljs-quote { + color: #676B79; + font-style: italic +} +.hljs-params { + color: #676B79 +} +.hljs-punctuation, +.hljs-attr { + color: #2a2c2d +} +.hljs-selector-tag, +.hljs-name, +.hljs-meta, +.hljs-operator, +.hljs-char.escape_ { + color: #c56200 +} +.hljs-keyword, +.hljs-deletion { + color: #d92792 +} +.hljs-regexp, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_ { + color: #cc5e91 +} +.hljs-subst, +.hljs-property, +.hljs-code, +.hljs-formula, +.hljs-section, +.hljs-title.function_ { + color: #3787c7 +} +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-selector-class, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-meta .hljs-string { + color: #0d7d6c +} +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-link, +.hljs-built_in, +.hljs-title, +.hljs-selector-id, +.hljs-tag, +.hljs-doctag, +.hljs-attribute, +.hljs-template-tag, +.hljs-meta .hljs-keyword { + color: #7641bb +} \ No newline at end of file diff --git a/modules/highlighter/styles/paraiso-dark.css b/modules/highlighter/styles/paraiso-dark.css new file mode 100644 index 0000000..e375a88 --- /dev/null +++ b/modules/highlighter/styles/paraiso-dark.css @@ -0,0 +1,67 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Paraíso (dark) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ +.hljs { + background: #2f1e2e; + color: #a39e9b +} +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #8d8687 +} +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155 +} +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15 +} +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418 +} +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685 +} +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/paraiso-light.css b/modules/highlighter/styles/paraiso-light.css new file mode 100644 index 0000000..ef527f0 --- /dev/null +++ b/modules/highlighter/styles/paraiso-light.css @@ -0,0 +1,67 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + Paraíso (light) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ +.hljs { + background: #e7e9db; + color: #4f424c +} +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #776e71 +} +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155 +} +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15 +} +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418 +} +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685 +} +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/pojoaque.css b/modules/highlighter/styles/pojoaque.css new file mode 100644 index 0000000..e04bf70 --- /dev/null +++ b/modules/highlighter/styles/pojoaque.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Pojoaque Style by Jason Tate +http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +Based on Solarized Style from http://ethanschoonover.com/solarized + +*/ +.hljs { + color: #dccf8f; + background: url(./pojoaque.jpg) repeat scroll left top #181914 +} +.hljs-comment, +.hljs-quote { + color: #586e75; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-addition { + color: #b64926 +} +.hljs-number, +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #468966 +} +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-name { + color: #ffb03b +} +.hljs-variable, +.hljs-template-variable, +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type, +.hljs-tag { + color: #b58900 +} +.hljs-attribute { + color: #b89859 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-subst, +.hljs-meta { + color: #cb4b16 +} +.hljs-deletion { + color: #dc322f +} +.hljs-selector-id, +.hljs-selector-class { + color: #d3a60c +} +.hljs-formula { + background: #073642 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/purebasic.css b/modules/highlighter/styles/purebasic.css new file mode 100644 index 0000000..3529efd --- /dev/null +++ b/modules/highlighter/styles/purebasic.css @@ -0,0 +1,103 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +PureBASIC native IDE style ( version 1.0 - April 2016 ) + +by Tristano Ajmone + +Public Domain + +NOTE_1: PureBASIC code syntax highlighting only applies the following classes: + .hljs-comment + .hljs-function + .hljs-keywords + .hljs-string + .hljs-symbol + + Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. + If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by + a "--- used for PureBASIC ... ---" comment on same line. + +NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: + http://chir.ag/projects/name-that-color +*/ +.hljs { + background: #FFFFDF/* Half and Half (approx.) */ + +} +/* --- used for PureBASIC base color --- */ +/* --- used for PureBASIC Procedures return type --- */ +/* --- used for wrapping PureBASIC Procedures definitions --- */ +.hljs, +.hljs-type, +.hljs-function, +.hljs-name, +.hljs-number, +.hljs-attr, +.hljs-params, +.hljs-subst { + color: #000000/* Black */ + +} +/* --- used for PureBASIC Comments --- */ +.hljs-comment, +.hljs-regexp, +.hljs-section, +.hljs-selector-pseudo, +.hljs-addition { + color: #00AAAA/* Persian Green (approx.) */ + +} +/* --- used for PureBASIC Keywords --- */ +.hljs-keyword, +.hljs-class, +.hljs-meta .hljs-keyword, +.hljs-selector-class, +.hljs-built_in { + color: #006666; + /* Blue Stone (approx.) */ + font-weight: bold +} +/* --- used for PureBASIC Procedures Names --- */ +.hljs-title, +.hljs-tag, +.hljs-variable, +.hljs-code { + color: #006666/* Blue Stone (approx.) */ + +} +/* --- used for PureBASIC Strings --- */ +.hljs-string, +.hljs-selector-attr { + color: #0080FF/* Azure Radiance (approx.) */ + +} +/* --- used for PureBASIC Constants --- */ +.hljs-symbol, +.hljs-link, +.hljs-deletion, +.hljs-attribute { + color: #924B72/* Cannon Pink (approx.) */ + +} +.hljs-meta, +.hljs-literal, +.hljs-selector-id { + color: #924B72; + /* Cannon Pink (approx.) */ + font-weight: bold +} +.hljs-strong, +.hljs-name { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/qtcreator-dark.css b/modules/highlighter/styles/qtcreator-dark.css new file mode 100644 index 0000000..a655384 --- /dev/null +++ b/modules/highlighter/styles/qtcreator-dark.css @@ -0,0 +1,76 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Qt Creator dark color scheme + +*/ +.hljs { + color: #aaaaaa; + background: #000000 +} +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2 +} +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #ff55ff +} +.hljs-code +.hljs-selector-class { + color: #aaaaff +} +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #ffff55 +} +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #aaaaaa +} +.hljs-attribute { + color: #ff5555 +} +.hljs-variable, +.hljs-params, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #8888ff +} +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #ff55ff +} +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #55ffff +} \ No newline at end of file diff --git a/modules/highlighter/styles/qtcreator-light.css b/modules/highlighter/styles/qtcreator-light.css new file mode 100644 index 0000000..327126d --- /dev/null +++ b/modules/highlighter/styles/qtcreator-light.css @@ -0,0 +1,74 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Qt Creator light color scheme +*/ +.hljs { + color: #000000; + background: #ffffff +} +.hljs-strong, +.hljs-emphasis { + color: #000000 +} +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #000080 +} +.hljs-code +.hljs-selector-class { + color: #800080 +} +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #808000 +} +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #000000 +} +.hljs-attribute { + color: #800000 +} +.hljs-variable, +.hljs-params, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #0055AF +} +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #008000 +} +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #008000 +} \ No newline at end of file diff --git a/modules/highlighter/styles/rainbow.css b/modules/highlighter/styles/rainbow.css new file mode 100644 index 0000000..80b2834 --- /dev/null +++ b/modules/highlighter/styles/rainbow.css @@ -0,0 +1,77 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Style with support for rainbow parens + +*/ +.hljs { + background: #474949; + color: #d1d9e1 +} +.hljs-comment, +.hljs-quote { + color: #969896; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-type, +.hljs-addition { + color: #cc99cc +} +.hljs-number, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #f99157 +} +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #8abeb7 +} +.hljs-title, +.hljs-name, +.hljs-section, +.hljs-built_in { + color: #b5bd68 +} +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-title.class_, +.hljs-class .hljs-title { + color: #ffcc66 +} +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold +} +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-link { + color: #f99157 +} +.hljs-deletion { + color: #dc322f +} +.hljs-formula { + background: #eee8d5 +} +.hljs-attr, +.hljs-attribute { + color: #81a2be +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/routeros.css b/modules/highlighter/styles/routeros.css new file mode 100644 index 0000000..5b3602b --- /dev/null +++ b/modules/highlighter/styles/routeros.css @@ -0,0 +1,86 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + + highlight.js style for MikroTik RouterOS script + +*/ +.hljs { + color: #444; + background: #F0F0F0 +} +/* Base color: saturation 0; */ +.hljs-subst { + color: #444 +} +.hljs-comment { + color: #888888 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold +} +.hljs-attribute { + color: #0E9A00 +} +.hljs-function { + color: #99069A +} +/* User color: hue: 0 */ +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000 +} +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold +} +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060 +} +/* Language color: hue: 90; */ +.hljs-literal { + color: #78A960 +} +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0C9A9A +} +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199 +} +.hljs-meta .hljs-string { + color: #4d99bf +} +/* Misc effects */ +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/school-book.css b/modules/highlighter/styles/school-book.css new file mode 100644 index 0000000..8dcb902 --- /dev/null +++ b/modules/highlighter/styles/school-book.css @@ -0,0 +1,62 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +School Book style from goldblog.com.ua (c) Zaripov Yura + +*/ +.hljs { + color: #3e5915; + background: #f6f5b2 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #005599; + font-weight: bold +} +.hljs-subst { + color: #3e5915 +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link { + color: #2c009f +} +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #e60415 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/shades-of-purple.css b/modules/highlighter/styles/shades-of-purple.css new file mode 100644 index 0000000..8a51050 --- /dev/null +++ b/modules/highlighter/styles/shades-of-purple.css @@ -0,0 +1,84 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/** + * Shades of Purple Theme — for Highlightjs. + * + * @author (c) Ahmad Awais + * @link GitHub Repo → https://github.com/ahmadawais/Shades-of-Purple-HighlightJS + * @version 1.5.0 + */ +.hljs { + background: #2d2b57; + color: #e3dfff; + font-weight: normal +} +.hljs-subst { + color: #e3dfff +} +.hljs-title { + color: #fad000; + font-weight: normal +} +.hljs-name { + color: #a1feff +} +.hljs-tag { + color: #ffffff +} +.hljs-attr { + color: #f8d000; + font-style: italic +} +.hljs-built_in, +.hljs-selector-tag, +.hljs-section { + color: #fb9e00 +} +.hljs-keyword { + color: #fb9e00 +} +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-code, +.hljs-regexp, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-quote, +.hljs-deletion { + color: #4cd213 +} +.hljs-meta, +.hljs-meta .hljs-string { + color: #fb9e00 +} +.hljs-comment { + color: #ac65ff +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-name, +.hljs-strong { + font-weight: normal +} +.hljs-literal, +.hljs-number { + color: #fa658d +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/srcery.css b/modules/highlighter/styles/srcery.css new file mode 100644 index 0000000..1b60bd4 --- /dev/null +++ b/modules/highlighter/styles/srcery.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* +Theme: Srcery +Description: Srcery dark color scheme for highlight.js +Author: Chen Bin +Maintainer: @redguardtoo +Website: https://srcery-colors.github.io/ +Date: 2021-04-13 +*/ +.hljs { + background: #1C1B19; + /* Black */ + color: #FCE8C3/* Bright White */ + +} +/* Bright White */ +.hljs-subst, +.hljs-quote, +.hljs-literal { + color: #FCE8C3 +} +/* Bright Blue */ +.hljs-type, +.hljs-symbol { + color: #68A8E4 +} +/* Red */ +.hljs-keyword, +.hljs-deletion { + color: #EF2F27 +} +/* Yellow */ +.hljs-name, +.hljs-function, +.hljs-attribute, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-section, +.hljs-title { + color: #FBB829 +} +/* Cyan */ +.hljs-code, +.hljs-variable, +.hljs-property, +.hljs-template-variable, +.hljs-class { + color: #0AAEB3 +} +/* Bright Green */ +.hljs-string, +.hljs-regexp, +.hljs-bullet, +.hljs-addition { + color: #98BC37 +} +/* Bright Magenta */ +.hljs-built_in, +.hljs-params { + color: #FF5C8F +} +/* Blue */ +.hljs-template-tag, +.hljs-selector-tag { + color: #2C78BF +} +/* Bright Black */ +.hljs-link, +.hljs-number, +.hljs-comment, +.hljs-meta { + color: #918175 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +/* @see https://github.com/srcery-colors/srcery-emacs for reference */ diff --git a/modules/highlighter/styles/stackoverflow-dark.css b/modules/highlighter/styles/stackoverflow-dark.css new file mode 100644 index 0000000..6cc355e --- /dev/null +++ b/modules/highlighter/styles/stackoverflow-dark.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: StackOverflow Dark + Description: Dark theme as used on stackoverflow.com + Author: stackoverflow.com + Maintainer: @Hirse + Website: https://github.com/StackExchange/Stacks + License: MIT + Updated: 2021-05-15 + + Updated for @stackoverflow/stacks v0.64.0 + Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less + Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less +*/ +.hljs { + /* var(--highlight-color) */ + color: #ffffff; + /* var(--highlight-bg) */ + background: #1c1b1b +} +.hljs-subst { + /* var(--highlight-color) */ + color: #ffffff +} +.hljs-comment { + /* var(--highlight-comment) */ + color: #999999 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-section { + /* var(--highlight-keyword) */ + color: #88aece +} +.hljs-attr { + /* var(--highlight-attribute); */ + color: #88aece +} +.hljs-attribute { + /* var(--highlight-symbol) */ + color: #c59bc1 +} +.hljs-name, +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-quote, +.hljs-template-tag { + /* var(--highlight-namespace) */ + color: #f08d49 +} +.hljs-selector-class { + /* var(--highlight-keyword) */ + color: #88aece +} +.hljs-string, +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr { + /* var(--highlight-variable) */ + color: #b5bd68 +} +.hljs-meta, +.hljs-selector-pseudo { + /* var(--highlight-keyword) */ + color: #88aece +} +.hljs-built_in, +.hljs-title, +.hljs-literal { + /* var(--highlight-literal) */ + color: #f08d49 +} +.hljs-bullet, +.hljs-code { + /* var(--highlight-punctuation) */ + color: #cccccc +} +.hljs-meta .hljs-string { + /* var(--highlight-variable) */ + color: #b5bd68 +} +.hljs-deletion { + /* var(--highlight-deletion) */ + color: #de7176 +} +.hljs-addition { + /* var(--highlight-addition) */ + color: #76c490 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-formula, +.hljs-operator, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/stackoverflow-light.css b/modules/highlighter/styles/stackoverflow-light.css new file mode 100644 index 0000000..308171d --- /dev/null +++ b/modules/highlighter/styles/stackoverflow-light.css @@ -0,0 +1,117 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: StackOverflow Light + Description: Light theme as used on stackoverflow.com + Author: stackoverflow.com + Maintainer: @Hirse + Website: https://github.com/StackExchange/Stacks + License: MIT + Updated: 2021-05-15 + + Updated for @stackoverflow/stacks v0.64.0 + Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less + Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less +*/ +.hljs { + /* var(--highlight-color) */ + color: #2f3337; + /* var(--highlight-bg) */ + background: #f6f6f6 +} +.hljs-subst { + /* var(--highlight-color) */ + color: #2f3337 +} +.hljs-comment { + /* var(--highlight-comment) */ + color: #656e77 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta .hljs-keyword, +.hljs-doctag, +.hljs-section { + /* var(--highlight-keyword) */ + color: #015692 +} +.hljs-attr { + /* var(--highlight-attribute); */ + color: #015692 +} +.hljs-attribute { + /* var(--highlight-symbol) */ + color: #803378 +} +.hljs-name, +.hljs-type, +.hljs-number, +.hljs-selector-id, +.hljs-quote, +.hljs-template-tag { + /* var(--highlight-namespace) */ + color: #b75501 +} +.hljs-selector-class { + /* var(--highlight-keyword) */ + color: #015692 +} +.hljs-string, +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr { + /* var(--highlight-variable) */ + color: #54790d +} +.hljs-meta, +.hljs-selector-pseudo { + /* var(--highlight-keyword) */ + color: #015692 +} +.hljs-built_in, +.hljs-title, +.hljs-literal { + /* var(--highlight-literal) */ + color: #b75501 +} +.hljs-bullet, +.hljs-code { + /* var(--highlight-punctuation) */ + color: #535a60 +} +.hljs-meta .hljs-string { + /* var(--highlight-variable) */ + color: #54790d +} +.hljs-deletion { + /* var(--highlight-deletion) */ + color: #c02d2e +} +.hljs-addition { + /* var(--highlight-addition) */ + color: #2f6f44 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-formula, +.hljs-operator, +.hljs-params, +.hljs-property, +.hljs-punctuation, +.hljs-tag { + /* purposely ignored */ + +} \ No newline at end of file diff --git a/modules/highlighter/styles/sunburst.css b/modules/highlighter/styles/sunburst.css new file mode 100644 index 0000000..5b49f21 --- /dev/null +++ b/modules/highlighter/styles/sunburst.css @@ -0,0 +1,89 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Sunburst-like style (c) Vasily Polovnyov + +*/ +.hljs { + background: #000; + color: #f8f8f8 +} +.hljs-comment, +.hljs-quote { + color: #aeaeae; + font-style: italic +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #e28964 +} +.hljs-string { + color: #65b042 +} +.hljs-subst { + color: #daefa3 +} +.hljs-regexp, +.hljs-link { + color: #e9c062 +} +.hljs-title, +.hljs-section, +.hljs-tag, +.hljs-name { + color: #89bdff +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-doctag { + text-decoration: underline +} +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #3387cc +} +.hljs-params, +.hljs-variable, +.hljs-template-variable { + color: #3e87e3 +} +.hljs-attribute { + color: #cda869 +} +.hljs-meta { + color: #8996a8 +} +.hljs-formula { + background-color: #0e2231; + color: #f8f8f8; + font-style: italic +} +.hljs-addition { + background-color: #253b22; + color: #f8f8f8 +} +.hljs-deletion { + background-color: #420e09; + color: #f8f8f8 +} +.hljs-selector-class { + color: #9b703f +} +.hljs-selector-id { + color: #8b98ab +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tokyo-night-dark.css b/modules/highlighter/styles/tokyo-night-dark.css new file mode 100644 index 0000000..e746b50 --- /dev/null +++ b/modules/highlighter/styles/tokyo-night-dark.css @@ -0,0 +1,114 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tokyo-night-Dark + origin: https://github.com/enkia/tokyo-night-vscode-theme + Description: Original highlight.js style + Author: (c) Henri Vandersleyen + License: see project LICENSE + Touched: 2022 +*/ +/* Comment */ +.hljs-meta, +.hljs-comment { + color: #565f89 +} +/* Red */ +/*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */ +.hljs-tag, +.hljs-doctag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-template-tag, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_, +.hljs-deletion { + color: #f7768e +} +/*Orange */ +/*INFO: Number and Boolean constants, Language support constants */ +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-link { + color: #ff9e64 +} +/* Yellow */ +/* INFO: Function parameters, Regex character sets, Terminal Yellow */ +.hljs-built_in, +.hljs-attribute { + color: #e0af68 +} +/* cyan */ +/* INFO: Language support functions, CSS HTML elements */ +.hljs-selector-tag { + color: #2ac3de +} +/* light blue */ +/* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */ +.hljs-keyword, +.hljs-title.function_, +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-subst, +.hljs-property { + color: #7dcfff +} +/*Green*/ +/* INFO: Object literal keys, Markdown links, Terminal Green */ +.hljs-selector-tag { + color: #73daca +} +/*Green(er) */ +/* INFO: Strings, CSS class names */ +.hljs-quote, +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #9ece6a +} +/* Blue */ +/* INFO: Function names, CSS property names, Terminal Blue */ +.hljs-code, +.hljs-formula, +.hljs-section { + color: #7aa2f7 +} +/* Magenta */ +/*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */ +.hljs-name, +.hljs-keyword, +.hljs-operator, +.hljs-keyword, +.hljs-char.escape_, +.hljs-attr { + color: #bb9af7 +} +/* white*/ +/* INFO: Variables, Class names, Terminal White */ +.hljs-punctuation { + color: #c0caf5 +} +.hljs { + background: #1a1b26; + color: #9aa5ce +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tokyo-night-light.css b/modules/highlighter/styles/tokyo-night-light.css new file mode 100644 index 0000000..2c7ca12 --- /dev/null +++ b/modules/highlighter/styles/tokyo-night-light.css @@ -0,0 +1,114 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/*! + Theme: Tokyo-night-light + origin: https://github.com/enkia/tokyo-night-vscode-theme + Description: Original highlight.js style + Author: (c) Henri Vandersleyen + License: see project LICENSE + Touched: 2022 +*/ +/* Comment */ +.hljs-meta, +.hljs-comment { + color: #9699a3 +} +/* Red */ +/*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */ +.hljs-tag, +.hljs-doctag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-template-tag, +.hljs-selector-pseudo, +.hljs-selector-attr, +.hljs-variable.language_, +.hljs-deletion { + color: #8c4351 +} +/*Orange */ +/*INFO: Number and Boolean constants, Language support constants */ +.hljs-variable, +.hljs-template-variable, +.hljs-number, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-link { + color: #965027 +} +/* Yellow */ +/* INFO: Function parameters, Regex character sets, Terminal Yellow */ +.hljs-built_in, +.hljs-attribute { + color: #8f5e15 +} +/* cyan */ +/* INFO: Language support functions, CSS HTML elements */ +.hljs-selector-tag { + color: #166775 +} +/* light blue */ +/* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */ +.hljs-keyword, +.hljs-title.function_, +.hljs-title, +.hljs-title.class_, +.hljs-title.class_.inherited__, +.hljs-subst, +.hljs-property { + color: #0f4b6e +} +/*Green*/ +/* INFO: Object literal keys, Markdown links, Terminal Green */ +.hljs-selector-tag { + color: #33635c +} +/*Green(er) */ +/* INFO: Strings, CSS class names */ +.hljs-quote, +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #485e30 +} +/* Blue */ +/* INFO: Function names, CSS property names, Terminal Blue */ +.hljs-code, +.hljs-formula, +.hljs-section { + color: #34548a +} +/* Magenta */ +/*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */ +.hljs-name, +.hljs-keyword, +.hljs-operator, +.hljs-keyword, +.hljs-char.escape_, +.hljs-attr { + color: #5a4a78 +} +/* white*/ +/* INFO: Variables, Class names, Terminal White */ +.hljs-punctuation { + color: #343b58 +} +.hljs { + background: #d5d6db; + color: #565a6e +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tomorrow-night-blue.css b/modules/highlighter/styles/tomorrow-night-blue.css new file mode 100644 index 0000000..ae57a71 --- /dev/null +++ b/modules/highlighter/styles/tomorrow-night-blue.css @@ -0,0 +1,69 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* Tomorrow Night Blue Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #7285b7 +} +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ff9da4 +} +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #ffc58f +} +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffeead +} +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #d1f1a9 +} +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #bbdaff +} +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ebbbff +} +.hljs { + background: #002451; + color: white +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/tomorrow-night-bright.css b/modules/highlighter/styles/tomorrow-night-bright.css new file mode 100644 index 0000000..b3b532d --- /dev/null +++ b/modules/highlighter/styles/tomorrow-night-bright.css @@ -0,0 +1,68 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* Tomorrow Night Bright Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896 +} +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d54e53 +} +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #e78c45 +} +/* Tomorrow Yellow */ +.hljs-attribute { + color: #e7c547 +} +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b9ca4a +} +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #7aa6da +} +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c397d8 +} +.hljs { + background: black; + color: #eaeaea +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/vs.css b/modules/highlighter/styles/vs.css new file mode 100644 index 0000000..dc35c88 --- /dev/null +++ b/modules/highlighter/styles/vs.css @@ -0,0 +1,63 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +Visual Studio-like style based on original C# coloring by Jason Diamond + +*/ +.hljs { + background: white; + color: black +} +.hljs-comment, +.hljs-quote, +.hljs-variable { + color: #008000 +} +.hljs-keyword, +.hljs-selector-tag, +.hljs-built_in, +.hljs-name, +.hljs-tag { + color: #00f +} +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-literal, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-addition { + color: #a31515 +} +.hljs-deletion, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-meta { + color: #2b91af +} +.hljs-doctag { + color: #808080 +} +.hljs-attr { + color: #f00 +} +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #00b0e8 +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} \ No newline at end of file diff --git a/modules/highlighter/styles/vs2015.css b/modules/highlighter/styles/vs2015.css new file mode 100644 index 0000000..2c2cf04 --- /dev/null +++ b/modules/highlighter/styles/vs2015.css @@ -0,0 +1,100 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + * Visual Studio 2015 dark style + * Author: Nicolas LLOBERA + */ +.hljs { + background: #1E1E1E; + color: #DCDCDC +} +.hljs-keyword, +.hljs-literal, +.hljs-symbol, +.hljs-name { + color: #569CD6 +} +.hljs-link { + color: #569CD6; + text-decoration: underline +} +.hljs-built_in, +.hljs-type { + color: #4EC9B0 +} +.hljs-number, +.hljs-class { + color: #B8D7A3 +} +.hljs-string, +.hljs-meta .hljs-string { + color: #D69D85 +} +.hljs-regexp, +.hljs-template-tag { + color: #9A5334 +} +.hljs-subst, +.hljs-function, +.hljs-title, +.hljs-params, +.hljs-formula { + color: #DCDCDC +} +.hljs-comment, +.hljs-quote { + color: #57A64A; + font-style: italic +} +.hljs-doctag { + color: #608B4E +} +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-tag { + color: #9B9B9B +} +.hljs-variable, +.hljs-template-variable { + color: #BD63C5 +} +.hljs-attr, +.hljs-attribute { + color: #9CDCFE +} +.hljs-section { + color: gold +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +/*.hljs-code { + font-family:'Monospace'; +}*/ +.hljs-bullet, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #D7BA7D +} +.hljs-addition { + background-color: #144212; + display: inline-block; + width: 100% +} +.hljs-deletion { + background-color: #600; + display: inline-block; + width: 100% +} \ No newline at end of file diff --git a/modules/highlighter/styles/xcode.css b/modules/highlighter/styles/xcode.css new file mode 100644 index 0000000..6ed07fb --- /dev/null +++ b/modules/highlighter/styles/xcode.css @@ -0,0 +1,90 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + +XCode style (c) Angel Garcia + +*/ +.hljs { + background: #fff; + color: black +} +/* Gray DOCTYPE selectors like WebKit */ +.xml .hljs-meta { + color: #c0c0c0 +} +.hljs-comment, +.hljs-quote { + color: #007400 +} +.hljs-tag, +.hljs-attribute, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-name { + color: #aa0d91 +} +.hljs-variable, +.hljs-template-variable { + color: #3F6E74 +} +.hljs-code, +.hljs-string, +.hljs-meta .hljs-string { + color: #c41a16 +} +.hljs-regexp, +.hljs-link { + color: #0E0EFF +} +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #1c00cf +} +.hljs-section, +.hljs-meta { + color: #643820 +} +.hljs-title.class_, +.hljs-class .hljs-title, +.hljs-type, +.hljs-built_in, +.hljs-params { + color: #5c2699 +} +.hljs-attr { + color: #836C28 +} +.hljs-subst { + color: #000 +} +.hljs-formula { + background-color: #eee; + font-style: italic +} +.hljs-addition { + background-color: #baeeba +} +.hljs-deletion { + background-color: #ffc8bd +} +.hljs-selector-id, +.hljs-selector-class { + color: #9b703f +} +.hljs-doctag, +.hljs-strong { + font-weight: bold +} +.hljs-emphasis { + font-style: italic +} \ No newline at end of file diff --git a/modules/highlighter/styles/xt256.css b/modules/highlighter/styles/xt256.css new file mode 100644 index 0000000..85950c4 --- /dev/null +++ b/modules/highlighter/styles/xt256.css @@ -0,0 +1,79 @@ +pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em +} +code.hljs { + padding: 3px 5px +} +/* + xt256.css + + Contact: initbar [at] protonmail [dot] ch + : github.com/initbar +*/ +.hljs { + color: #eaeaea; + background: #000 +} +.hljs-subst { + color: #eaeaea +} +.hljs-emphasis { + font-style: italic +} +.hljs-strong { + font-weight: bold +} +.hljs-type { + color: #eaeaea +} +.hljs-params { + color: #da0000 +} +.hljs-literal, +.hljs-number, +.hljs-name { + color: #ff0000; + font-weight: bolder +} +.hljs-comment { + color: #969896 +} +.hljs-selector-id, +.hljs-quote { + color: #00ffff +} +.hljs-template-variable, +.hljs-variable, +.hljs-title { + color: #00ffff; + font-weight: bold +} +.hljs-selector-class, +.hljs-keyword, +.hljs-symbol { + color: #fff000 +} +.hljs-string, +.hljs-bullet { + color: #00ff00 +} +.hljs-tag, +.hljs-section { + color: #000fff +} +.hljs-selector-tag { + color: #000fff; + font-weight: bold +} +.hljs-attribute, +.hljs-built_in, +.hljs-regexp, +.hljs-link { + color: #ff00ff +} +.hljs-meta { + color: #fff; + font-weight: bolder +} \ No newline at end of file diff --git a/modules/highlighter/upgrades.php b/modules/highlighter/upgrades.php index af7e39d..ce31b9d 100644 --- a/modules/highlighter/upgrades.php +++ b/modules/highlighter/upgrades.php @@ -8,7 +8,8 @@ * * Versions: 2019.03 => 2019.04 */ - function highlighter_add_config(): void { + function highlighter_add_config( + ): void { $config = Config::current(); if (!isset($config->module_highlighter)) { diff --git a/modules/lightbox/info.php b/modules/lightbox/info.php index a9ad296..1218eda 100644 --- a/modules/lightbox/info.php +++ b/modules/lightbox/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Lightbox", "lightbox"), "url" => "http://chyrplite.net/", - "version" => "2024.02", + "version" => "2025.01", "description" => __("A lightbox for your images.", "lightbox"), "author" => array( "name" => "Daniel Pimley", diff --git a/modules/lightbox/javascript.php b/modules/lightbox/javascript.php index 37ce110..8aca065 100644 --- a/modules/lightbox/javascript.php +++ b/modules/lightbox/javascript.php @@ -22,21 +22,19 @@ var ChyrpLightbox = { "box-sizing": "border-box", "display": "block", "position": "fixed", - "top": "0px", - "right": "0px", - "bottom": "0px", - "left": "0px", - "opacity": 0, - "z-index": 2147483646, + "inset": "0px", + "margin": "0rem", "padding": "3rem", + "opacity": "0", "cursor": "wait", + "z-index": "2147483646", "background-repeat": "no-repeat", "background-size": "1.5rem", "background-position": "right 0.75rem top 0.75rem", "background-image": "url('" + Site.chyrp_url + "/modules/lightbox/images/close.svg')" }, show: { - "opacity": 1, + "opacity": "1", "cursor": "pointer" }, images: { @@ -46,23 +44,29 @@ var ChyrpLightbox = { "padding": Math.abs("module_lightbox["spacing"]); ?>") + "px" }, black: { - "background-color": "#000000", + "background-color": "black", "background-blend-mode": "difference" }, grey: { - "background-color": "#7f7f7f", - "background-blend-mode": "luminosity" + "background-color": "grey", + "background-blend-mode": "lighten" }, white: { - "background-color": "#ffffff", + "background-color": "white", "background-blend-mode": "difference" }, inherit: { "background-color": "inherit", "background-blend-mode": "difference" }, + transparent: { + "background-color": "transparent", + "background-blend-mode": "normal", + "backdrop-filter": "blur(8px) contrast(0.8)" + } }, - init: function() { + init: function( + ) { $.extend( ChyrpLightbox.styles.fg, ChyrpLightbox.styles.spacing @@ -95,10 +99,13 @@ var ChyrpLightbox = { $(window).on("popstate", ChyrpLightbox.hide); ChyrpLightbox.watch(); }, - prevent: function(e) { + prevent: function( + e + ) { e.preventDefault(); }, - watch: function() { + watch: function( + ) { // Watch for DOM additions on blog pages. if (!!window.MutationObserver && $(".post").length) { var target = $(".post").last().parent()[0]; @@ -139,7 +146,9 @@ var ChyrpLightbox = { observer.observe(target, config); } }, - load: function(e) { + load: function( + e + ) { if (ChyrpLightbox.busy) return; @@ -179,7 +188,8 @@ var ChyrpLightbox = { ) ).appendTo("body"); }, - show: function() { + show: function( + ) { var fg = $("#ChyrpLightbox-fg"); var bg = $("#ChyrpLightbox-bg"); @@ -195,7 +205,8 @@ var ChyrpLightbox = { bg.focus(); }, - hide: function() { + hide: function( + ) { $("#ChyrpLightbox-bg").remove(); ChyrpLightbox.busy = false; } diff --git a/modules/lightbox/lightbox.php b/modules/lightbox/lightbox.php index 6e72524..c2af4cc 100644 --- a/modules/lightbox/lightbox.php +++ b/modules/lightbox/lightbox.php @@ -1,6 +1,7 @@ set( "module_lightbox", array( @@ -11,11 +12,14 @@ ); } - public static function __uninstall(): void { + public static function __uninstall( + ): void { Config::current()->remove("module_lightbox"); } - public function admin_lightbox_settings($admin): void { + public function admin_lightbox_settings( + $admin + ): void { if (!Visitor::current()->group->can("change_settings")) show_403( __("Access Denied"), @@ -27,10 +31,11 @@ "pages".DIR."lightbox_settings", array( "lightbox_background" => array( - "black" => __("Black", "lightbox"), - "grey" => __("Gray", "lightbox"), - "white" => __("White", "lightbox"), - "inherit" => __("Inherit", "lightbox") + "black" => __("Black", "lightbox"), + "grey" => __("Gray", "lightbox"), + "white" => __("White", "lightbox"), + "inherit" => __("Inherit", "lightbox"), + "transparent" => __("Transparent", "lightbox") ) ) ); @@ -62,7 +67,9 @@ ); } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["lightbox_settings"] = array( "title" => __("Lightbox", "lightbox") @@ -71,7 +78,8 @@ return $navs; } - public function javascript(): void { + public function javascript( + ): void { $config = Config::current(); include MODULES_DIR.DIR."lightbox".DIR."javascript.php"; } diff --git a/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.mo b/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.mo index 418abd75dec748cee00c4d8a80b20929636b6209..6c10c41dc9f9955efb5384b03ee7bff5e91b2eba 100644 GIT binary patch delta 433 zcmYk&ze>YU6vy$CwAyH@)(#3PT2RDJLZJ`fBM5?1hYHaKN-ar-I%U-ji`{!_8N;h8mUM=1mu|jT1Yq zOL&fYI6AF^ZDrS zqe2u5q>51o6zYsZ9kYXeI0(9N-HvMA@S>BPT@Gql%X#omqINItx1*q!WUf1Nn%TGe NT>ZCdr$HFU_5+gbFE;=H delta 341 zcmXZXKMO%&6vy#%U4O2>;g$ihhzW(!3&0{uHk-j>k-=nE7TpZWWVe~U1EowBvo|1% z;(KnM`t`Zbz0Y~hxhv}ySU!^8t*~MwOV-3DAEK*eh*;Rh4E8aEQ}p2iBe+B_t}%cc z)Vdue@PGw8q4v6CnlgFvpck1QkrxJ03%{5{%M=M?3H5y)qu4}k*g>uD{=W|}#eRfE zoMRmKn8zdP`3oBEsBHXB&#=pSU6AN}dV~qw*4j>&{x?l+3Gt JIG)UA@&jy*9vuJx diff --git a/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po b/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po index 6aa9ce3..a15e716 100644 --- a/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po +++ b/modules/lightbox/locale/de_DE/LC_MESSAGES/lightbox.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/lightbox/admin/pages/lightbox_settings.twig:3 @@ -37,7 +37,7 @@ msgstr "Bilder schützen" msgid "Prevent visitors from saving images?" msgstr "Besucher hindern, Bilder zu speichern?" -#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:68 +#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "Lightbox" @@ -45,22 +45,26 @@ msgstr "Lightbox" msgid "A lightbox for your images." msgstr "Ein Lightbox für eure Bilder." -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "Dieses Bild nicht mehr anzeigen" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "Schwartz" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "Grau" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "Weiss" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "Erben" + +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "Transparent" diff --git a/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot b/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot index d1ecf1a..88e2ab5 100644 --- a/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot +++ b/modules/lightbox/locale/en_US/LC_MESSAGES/lightbox.pot @@ -26,7 +26,7 @@ msgid "Prevent visitors from saving images?" msgstr "" #: modules/lightbox/info.php:3 -#: modules/lightbox/lightbox.php:68 +#: modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "" @@ -34,23 +34,27 @@ msgstr "" msgid "A lightbox for your images." msgstr "" -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "" +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "" + diff --git a/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.mo b/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.mo index ea5f47ebe0eb68be142cc08784d36c3c81aa447e..d05eade14f013688150ca9c7f8327873c6b4fb1e 100644 GIT binary patch delta 436 zcmYk&F;Buk6u|L!1+-GIQA|kGp@}ByA}mZ!>cR(LbttBRMp8&2k&Q1vT+qRZ2__ao z99aDf#)ZW1!N&hJ9em04*L!#O?zJ;}V~_rhvmZjZjC002qs%B69z+{$4Dk$O%;Ov8 z@DmF-#VjsxAD5`-)_8>9c!@uFh+8}r8HsI)I3zAm3szJXYp8|pG9p*_h7Cc+(aTIMs(@Bss6o7_EU4e)_jh!n$^a&Ww|EQ KnT_U?g?s@a<{WJR diff --git a/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po b/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po index 37539eb..1dc5f2e 100644 --- a/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po +++ b/modules/lightbox/locale/it_IT/LC_MESSAGES/lightbox.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/lightbox/admin/pages/lightbox_settings.twig:3 @@ -38,7 +38,7 @@ msgstr "Proteggi immagini" msgid "Prevent visitors from saving images?" msgstr "Impedire ai visitatori di salvare le immagini?" -#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:68 +#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "Tavolo luminoso" @@ -46,22 +46,26 @@ msgstr "Tavolo luminoso" msgid "A lightbox for your images." msgstr "Un tavolo luminoso per le tue immagini." -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "Interrompi la visualizzazione di questa immagine" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "Nero" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "Grigio" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "Bianco" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "Sfondo riprodotto" + +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "Trasparente" diff --git a/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.mo b/modules/lightbox/locale/nl_NL/LC_MESSAGES/lightbox.mo index cb7bb3c900d40e4c82f3e62a1d8b0568968caf6a..62345cc4be85097e2ef2748483f97be1427cbb38 100644 GIT binary patch delta 431 zcmYMwKTE?v7{~D^XKkaY{|X{#hoU07=wcTqeGLlI!68Difs&RqL$|Kt;1V62+?-q- z9b7uQh{e(OVJE-85b+_G&ppTGxhFTN-1wvKTIt@1B}Scb$5>-jJzhiyeT;Ae6P(9e zoW%#M;v<&u87ugL`tB81aE#kH!A1PRb+eKA&MaVI3svv{-?51*;AYG=F+lCxN9{Yp z8XgzJx`H>1#v*=|1?w!4EpJ85*It4?~^8#b~F?^Z)<= delta 338 zcmXZXJrBWf5XbSWma1nO223In0}`=Y8Ch&LgT-Vqb(bzQ2CL0(_7cQkV3F9o1~K>^ z{^_ruUefDbm(h#u-E-DPI4M#lK5@yL=;;|EQS4(0hZw^dhH-%j^w2^dZCs)DZ83{G ztl|N6)(wla$&&~DkQov=p@Z6Z#R@(!j+Xg*FM~Pi!oRL#n!1JB*Tp>cu!G}&9bk=m zk6d!*W_(wrhy(+}ZRq|E(fxEKCVxjKQIGz&w(1xOCdM&nh0bQD*K&h$#SO+eCVzZrqi{gv7Za!rk9du-AbWUYEuij~Y<+9J zv+Fg~a}T!eVupH%+UM0eM zK61rB^kYTpzozVcr_vX>_d9VMbwd3!8cEUwy~sXrt(V=dwSu>`F}L;czTC+NZDSp% diff --git a/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po b/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po index 6404825..827782a 100644 --- a/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po +++ b/modules/lightbox/locale/zh_CN/LC_MESSAGES/lightbox.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/lightbox/admin/pages/lightbox_settings.twig:3 @@ -38,7 +38,7 @@ msgstr "保护图像" msgid "Prevent visitors from saving images?" msgstr "防止访问者保存图像?" -#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:68 +#: modules/lightbox/info.php:3 modules/lightbox/lightbox.php:75 msgid "Lightbox" msgstr "" @@ -46,22 +46,26 @@ msgstr "" msgid "A lightbox for your images." msgstr "为您的图片提供灯箱。" -#: modules/lightbox/javascript.php:159 +#: modules/lightbox/javascript.php:168 msgid "Stop displaying this image" msgstr "停止显示此图像" -#: modules/lightbox/lightbox.php:30 +#: modules/lightbox/lightbox.php:34 msgid "Black" msgstr "黑色" -#: modules/lightbox/lightbox.php:31 +#: modules/lightbox/lightbox.php:35 msgid "Gray" msgstr "灰色" -#: modules/lightbox/lightbox.php:32 +#: modules/lightbox/lightbox.php:36 msgid "White" msgstr "白色" -#: modules/lightbox/lightbox.php:33 +#: modules/lightbox/lightbox.php:37 msgid "Inherit" msgstr "继承" + +#: modules/lightbox/lightbox.php:38 +msgid "Transparent" +msgstr "透明" diff --git a/modules/likes/images/gold.svg b/modules/likes/images/gold.svg index 38fb02a..ab211de 100644 --- a/modules/likes/images/gold.svg +++ b/modules/likes/images/gold.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/images/outline.svg b/modules/likes/images/outline.svg index 2a41c22..4589693 100644 --- a/modules/likes/images/outline.svg +++ b/modules/likes/images/outline.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/images/pink.svg b/modules/likes/images/pink.svg index 90d7bed..0763a45 100644 --- a/modules/likes/images/pink.svg +++ b/modules/likes/images/pink.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/images/solid.svg b/modules/likes/images/solid.svg index 25570bb..0edfa05 100644 --- a/modules/likes/images/solid.svg +++ b/modules/likes/images/solid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/modules/likes/info.php b/modules/likes/info.php index 38192dd..ee79264 100644 --- a/modules/likes/info.php +++ b/modules/likes/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Likes", "likes"), "url" => "http://chyrplite.net/", - "version" => "2024.03", + "version" => "2025.01", "description" => __("Allow users to “like” a post.", "likes"), "author" => array( "name" => "Chyrp team", diff --git a/modules/likes/javascript.php b/modules/likes/javascript.php index e35670d..2a657e5 100644 --- a/modules/likes/javascript.php +++ b/modules/likes/javascript.php @@ -5,7 +5,8 @@ var ChyrpLikes = { failed: false, busy: false, - init: function() { + init: function( + ) { $("div.likes a.likes").click( function(e) { if (!ChyrpLikes.failed) { @@ -16,7 +17,8 @@ var ChyrpLikes = { ); ChyrpLikes.watch(); }, - watch: function() { + watch: function( + ) { // Watch for DOM additions on blog pages. if (!!window.MutationObserver && $(".post").length) { var target = $(".post").last().parent()[0]; @@ -44,7 +46,11 @@ var ChyrpLikes = { observer.observe(target, config); } }, - send: function(post_id, callback, isUnlike) { + send: function( + post_id, + callback, + isUnlike + ) { if (!ChyrpLikes.busy && !ChyrpLikes.failed) { $.ajax( { @@ -71,7 +77,9 @@ var ChyrpLikes = { ); } }, - toggle: function(post_id) { + toggle: function( + post_id + ) { if ($("#likes_" + post_id + " a.liked").length) { ChyrpLikes.send( post_id, @@ -94,7 +102,8 @@ var ChyrpLikes = { ); } }, - panic: function() { + panic: function( + ) { ChyrpLikes.failed = true; Oops.count++; alert(Oops.message); diff --git a/modules/likes/likes.css b/modules/likes/likes.css index 8b0146a..cf24d01 100644 --- a/modules/likes/likes.css +++ b/modules/likes/likes.css @@ -2,8 +2,9 @@ div.likes { position: relative; display: inline; } -div.likes a.likes img { - vertical-align: middle; +div.likes a.likes img, +div.likes a.likes svg { + vertical-align: text-bottom; } div.likes a.likes { border: none; diff --git a/modules/likes/likes.php b/modules/likes/likes.php index 9d982f5..e46faa1 100644 --- a/modules/likes/likes.php +++ b/modules/likes/likes.php @@ -6,7 +6,8 @@ # Query caches for methods. private $caches = array(); - public static function __install(): void { + public static function __install( + ): void { $config = Config::current(); Like::install(); @@ -24,7 +25,9 @@ ); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { if ($confirm) Like::uninstall(); @@ -33,25 +36,35 @@ Config::current()->remove("module_likes"); } - public function user_logged_in($user): void { + public function user_logged_in( + $user + ): void { $_SESSION['likes'] = array(); } - public function user($user): void { + public function user( + $user + ): void { $user->has_many[] = "likes"; } - public function post($post): void { + public function post( + $post + ): void { $post->has_many[] = "likes"; } - public function list_permissions($names = array()): array { + public function list_permissions( + $names = array() + ): array { $names["like_post"] = __("Like Posts", "likes"); $names["unlike_post"] = __("Unlike Posts", "likes"); return $names; } - public function admin_like_settings($admin): void { + public function admin_like_settings( + $admin + ): void { $config = Config::current(); if (!Visitor::current()->group->can("change_settings")) @@ -63,7 +76,7 @@ if (empty($_POST)) { $admin->display( "pages".DIR."like_settings", - array("like_images" => $this->like_images()) + array("like_images" => $this->list_images()) ); return; @@ -75,7 +88,7 @@ __("Invalid authentication token.") ); - fallback($_POST['like_image'], $config->chyrp_url."/modules/likes/images/pink.svg"); + fallback($_POST['like_image'], "pink.svg"); $config->set( "module_likes", @@ -92,7 +105,9 @@ ); } - public function settings_nav($navs): array { + public function settings_nav( + $navs + ): array { if (Visitor::current()->group->can("change_settings")) $navs["like_settings"] = array( "title" => __("Likes", "likes") @@ -101,7 +116,9 @@ return $navs; } - public function main_most_likes($main): void { + public function main_most_likes( + $main + ): void { $posts = Post::find(array("placeholders" => true)); usort($posts[0], function ($a, $b) { @@ -121,7 +138,8 @@ ); } - public function main_like()/*: never */{ + public function main_like( + ): never { if (empty($_GET['post_id']) or !is_numeric($_GET['post_id'])) error( __("Error"), @@ -150,7 +168,8 @@ ); } - public function main_unlike()/*: never */{ + public function main_unlike( + ): never { if (empty($_GET['post_id']) or !is_numeric($_GET['post_id'])) error( __("Error"), @@ -179,7 +198,8 @@ ); } - public function ajax_like(): void { + public function ajax_like( + ): void { if (empty($_POST['post_id']) or !is_numeric($_POST['post_id'])) error( __("Error"), @@ -217,7 +237,8 @@ json_response($text, true); } - public function ajax_unlike(): void { + public function ajax_unlike( + ): void { if (empty($_POST['post_id']) or !is_numeric($_POST['post_id'])) error( __("Error"), @@ -252,14 +273,18 @@ json_response($text, true); } - public function delete_post($post): void { + public function delete_post( + $post + ): void { SQL::current()->delete( table:"likes", conds:array("post_id" => $post->id) ); } - public function delete_user($user): void { + public function delete_user( + $user + ): void { SQL::current()->update( table:"likes", conds:array("user_id" => $user->id), @@ -267,7 +292,9 @@ ); } - private function get_post_like_count($post_id): int { + private function get_post_like_count( + $post_id + ): int { if (!isset($this->caches["post_like_counts"])) { $counts = SQL::current()->select( tables:"likes", @@ -287,14 +314,19 @@ return fallback($this->caches["post_like_counts"][$post_id], 0); } - public function post_like_count_attr($attr, $post): int { + public function post_like_count_attr( + $attr, + $post + ): int { if ($post->no_results) return 0; return $this->get_post_like_count($post->id); } - public function get_user_like_count($user_id): int { + public function get_user_like_count( + $user_id + ): int { if (!isset($this->caches["user_like_counts"])) { $counts = SQL::current()->select( tables:"likes", @@ -314,20 +346,29 @@ return fallback($this->caches["user_like_counts"][$user_id], 0); } - public function user_like_count_attr($attr, $user): int { + public function user_like_count_attr( + $attr, + $user + ): int { if ($user->no_results) return 0; return $this->get_user_like_count($user->id); } - public function visitor_like_count_attr($attr, $visitor): int { + public function visitor_like_count_attr( + $attr, + $visitor + ): int { return ($visitor->id == 0) ? count(fallback($_SESSION['likes'], array())) : $this->user_like_count_attr($attr, $visitor) ; } - public function post_like_link_attr($attr, $post): ?string { + public function post_like_link_attr( + $attr, + $post + ): ?string { $config = Config::current(); $route = Route::current(); $main = MainController::current(); @@ -345,21 +386,9 @@ if (!Like::exists($post->id)) { if ($visitor->group->can("like_post")) { $html.= '

    +{{- icon_svg("help.svg", "Help" | translate) -}} + + {#- -#} - -{{- icon_img("help.svg", "help" | translate) -}} -

    - + {#- -#} - -{{- icon_img("help.svg", "help" | translate) -}} -

    {% if visitor.group.can("edit_draft", "edit_post", "delete_draft", "delete_post") %} -{{ icon_img("add.svg") }}{{ "Add Tags" | translate("tags") }} +{{ icon_svg("add.svg") }}{{ "Add Tags" | translate("tags") }} {% endif %}

    @@ -36,14 +36,14 @@ {% if visitor.group.can("edit_post") %} -{{- icon_img("edit.svg", "edit" | translate) -}} +{{- icon_svg("edit.svg", "Edit" | translate) -}} {% endif %} {% if visitor.group.can("edit_post") %} -{{- icon_img("delete.svg", "delete" | translate) -}} +{{- icon_svg("delete.svg", "Delete" | translate) -}} {% endif %} @@ -51,7 +51,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/modules/tags/admin/pages/posts_tagged.twig b/modules/tags/admin/pages/posts_tagged.twig index 6bc41be..bf52e1e 100644 --- a/modules/tags/admin/pages/posts_tagged.twig +++ b/modules/tags/admin/pages/posts_tagged.twig @@ -8,7 +8,7 @@ @@ -28,19 +28,27 @@ {{ "Post" | translate }} +{{ "Status" | translate }} {{ "Tags" | translate("tags") }} {{ "Controls" | translate }} {% for post in posts.paginated %} - + {{ post.title() | striptags | oneof("[Untitled]" | translate) | truncate(40) }} + +{% for group in post_statuses.(post.id).groups %} +{{ group.name }} +{% else %} +{{ post_statuses.(post.id).name | oneof("[None]" | translate) }} +{% endfor %} + {% for name, clean in post.tags %} {{ name }} @@ -49,7 +57,7 @@ {% if post.editable() %} -{{- icon_img("edit.svg", "edit" | translate) -}} +{{- icon_svg("edit.svg", "Edit" | translate) -}} {% endif %} @@ -57,7 +65,8 @@ {% else %} -{{ icon_img("failure.svg", "", "emblem") }} {{ "No results" | translate }} +{{ icon_svg("failure.svg", false, "emblem") }} +{{ "No results" | translate }} {% endfor %} diff --git a/modules/tags/info.php b/modules/tags/info.php index 6beaa68..0aed619 100644 --- a/modules/tags/info.php +++ b/modules/tags/info.php @@ -2,7 +2,7 @@ return array( "name" => __("Tagginator", "tags"), "url" => "http://chyrplite.net/", - "version" => "2024.03", + "version" => "2025.01", "description" => __("Adds tagging functionality to posts.", "tags"), "author" => array( "name" => "Chyrp Team", diff --git a/modules/tags/javascript.php b/modules/tags/javascript.php index de9eec0..8999aad 100644 --- a/modules/tags/javascript.php +++ b/modules/tags/javascript.php @@ -3,7 +3,8 @@ exit; ?> var ChyrpTags = { - init: function() { + init: function( + ) { $("form input[name='tags']").on( "keyup", ChyrpTags.scan @@ -13,7 +14,9 @@ var ChyrpTags = { ChyrpTags.add ); }, - scan: function(e) { + scan: function( + e + ) { $(e.target).siblings("span.tags_select").children("a.tag").each( function() { var name = $(this).html(); @@ -26,7 +29,9 @@ var ChyrpTags = { } ); }, - add: function(e) { + add: function( + e + ) { e.preventDefault(); var name = $(e.target).html(); var tags = $(e.target).parent().siblings("input[name='tags']"); diff --git a/modules/tags/locale/de_DE/LC_MESSAGES/tags.mo b/modules/tags/locale/de_DE/LC_MESSAGES/tags.mo index c2ee8ae01de0cf17822fb0e2e8a1ad7b093c0d67..f2efdb4d7d825effd1e5fbbf4eb0645373822b26 100644 GIT binary patch delta 363 zcmXZXF=_%q6vpvyL|CH6Y!neR7)(Tq2rf~p)y7uQ!a$nf32XvdS!{0+3@LH~u{G=! zB#~aAALxkb|=FRNB;aioKrS-%F1tUG5Ne_}1F{z3>bTJi|ez?Cy+egp; z?=yH$-@zJAk)#iBiNd-rx(`Kp)5mZPEUBIQ7PTln5)Ac-NRmo7AV+2YYCfj9(jwqU%X(CAC2c{cSv9nCvxYGnla3@}YAPBC+8;B4iyn=8m9J~XO zyoNUJLRz?U-G3+;-ru}4=e)!7kz3`~W7jP0l14tMD{0}EiujFTyt$MP+~1+;J;A^G zI9BN!SjGvmw4yxV1_OA+Jf86ilOf5C_n5$HNHay)JaKS~1B~MoEBKC&xWj9-m{PzP zMzMzGp$@Xtr(|%5S)8K@i-+0owS6X7DFI c;}5p5&c|(h!6tq=`-`pDvP-t}>R)<)0k1M7egFUf diff --git a/modules/tags/locale/de_DE/LC_MESSAGES/tags.po b/modules/tags/locale/de_DE/LC_MESSAGES/tags.po index 16628a1..2988df0 100644 --- a/modules/tags/locale/de_DE/LC_MESSAGES/tags.po +++ b/modules/tags/locale/de_DE/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -55,9 +55,9 @@ msgstr "Ändern von Tags für “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "Tags (Etiketten)" @@ -66,30 +66,30 @@ msgid "Manage Tags" msgstr "Tags bearbeiten" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "Tags hinzufügen" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "Name" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "Blogpost getagged" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "Sortieren Sie die Ergebnisse nach:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "Blogposts getagged mit “%s”" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "Taggen Sie die selektierten Blogpost(s) mit:" @@ -118,99 +118,99 @@ msgstr "Fügt Tagging-Funktionen zu Blogposts hinzu." msgid "Do you want to remove your tags from the database?" msgstr "Möchten Sie Ihre Tags aus der Datenbank entfernen?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(Komma getrennt)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Bearbeiten von Tags." -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "Tag nicht gefunden." -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "Zum Bearbeiten einer Tag ist eine ID erforderlich." -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "Zum Ändern einer Tag ist eine ID erforderlich." -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "Tag aktualisiert." -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Ändern von Tags." -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "Kein Tag angegeben" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "Bitte gebe den Tag an von dem Sie die Name ändern möchten." -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "Name darf nicht leer sein." -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "Tag geändert." -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen zum Löschen von Tags." -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "Bitte gebe den Tag an dem Sie löschen möchten." -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "Tag gelöscht." -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "" "Sie verfügen nicht über ausreichende Berechtigungen um Tags hinfügen zu " "können." -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "Kein Blogposts spezifiziert." -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "Kein Tags spezifiziert." -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "Blogposts getagged." -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "Sie haben keinem Tag spezifiziert." -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "Die von Ihnen angegebene Tag wurde nicht gefunden." -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "Es gibt keinen Blogposts mit dem spezifizierten Tag." -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/en_US/LC_MESSAGES/tags.pot b/modules/tags/locale/en_US/LC_MESSAGES/tags.pot index 6252b6a..b19de07 100644 --- a/modules/tags/locale/en_US/LC_MESSAGES/tags.pot +++ b/modules/tags/locale/en_US/LC_MESSAGES/tags.pot @@ -30,11 +30,11 @@ msgstr "" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 -#: modules/tags/tags.php:165 -#: modules/tags/tags.php:223 -#: modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 +#: modules/tags/tags.php:203 +#: modules/tags/tags.php:270 +#: modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "" @@ -43,33 +43,33 @@ msgid "Manage Tags" msgstr "" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "" #: modules/tags/admin/pages/manage_tags.twig:22 #: modules/tags/admin/pages/rename_tag.twig:10 -#: modules/tags/tags.php:282 +#: modules/tags/tags.php:334 msgid "Name" msgstr "" #: modules/tags/admin/pages/manage_tags.twig:23 #: modules/tags/admin/pages/posts_tagged.twig:3 -#: modules/tags/tags.php:283 +#: modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "" #: modules/tags/admin/pages/posts_tagged.twig:20 -#: modules/tags/tags.php:708 +#: modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "" @@ -98,103 +98,103 @@ msgstr "" msgid "Do you want to remove your tags from the database?" msgstr "" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "" -#: modules/tags/tags.php:260 -#: modules/tags/tags.php:316 +#: modules/tags/tags.php:312 +#: modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "" -#: modules/tags/tags.php:344 -#: modules/tags/tags.php:483 -#: modules/tags/tags.php:524 -#: modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 +#: modules/tags/tags.php:599 +#: modules/tags/tags.php:642 +#: modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "" -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "" -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "" -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "" -#: modules/tags/tags.php:468 -#: modules/tags/tags.php:496 +#: modules/tags/tags.php:584 +#: modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "" -#: modules/tags/tags.php:473 -#: modules/tags/tags.php:507 -#: modules/tags/tags.php:558 -#: modules/tags/tags.php:592 +#: modules/tags/tags.php:589 +#: modules/tags/tags.php:625 +#: modules/tags/tags.php:678 +#: modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "" -#: modules/tags/tags.php:474 -#: modules/tags/tags.php:508 +#: modules/tags/tags.php:590 +#: modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "" -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "" -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "" -#: modules/tags/tags.php:553 -#: modules/tags/tags.php:581 +#: modules/tags/tags.php:673 +#: modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "" -#: modules/tags/tags.php:559 -#: modules/tags/tags.php:593 +#: modules/tags/tags.php:679 +#: modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "" -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "" -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "" -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "" -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "" -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "" -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "" -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "" -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "" -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/it_IT/LC_MESSAGES/tags.mo b/modules/tags/locale/it_IT/LC_MESSAGES/tags.mo index d7c4093e4924c8045e5029f23ce07e645e6c8ad9..2cc05493cd13cc2cf085fee9dd9fd5a2e6760e2b 100644 GIT binary patch delta 363 zcmXZXF-t;G7{>AE8eQ$0T7wyga=j?jV1p2-)#RkBgW&Ay5C~3kKY;~N(A1z)xLgoy z7F?o1a1vS@+*+EP`X9K<`JLxI=e)e<(Hncg!150*>HbJ+N*X#+1(%q{KYZidiA%@i zca}0P@DhJQlL_gRTtyFCn8H4maD?Xl6m1O9#gBx1ow35|ypfLw_z+%r!VB^QukZ_9 d+~W;q>2`}9G=o0l9j@n}ky+Hbo)4W@`yZ-HG9-@<#8t7vaZ_zXu zVHu~$RefLrzoYXFmdJl-`Xrd*7(FxtwODd^9pyXshM!UBQs9lA(ZWG=;RP$?DF*n7 f9`5iAOLRNOHkv_)c!6Kb^}*b>>Op<^=#1lgG`uG( diff --git a/modules/tags/locale/it_IT/LC_MESSAGES/tags.po b/modules/tags/locale/it_IT/LC_MESSAGES/tags.po index 3a695e4..dac2a0e 100644 --- a/modules/tags/locale/it_IT/LC_MESSAGES/tags.po +++ b/modules/tags/locale/it_IT/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -54,9 +54,9 @@ msgstr "Modifica dei tag per “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "Tag" @@ -65,30 +65,30 @@ msgid "Manage Tags" msgstr "Gestisci Tag" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "Aggiungi Tag" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "Titolo" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "Post taggati" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "Ordina i risultati per:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "Post taggati con “%s”" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "Contrassegna i post selezionati con:" @@ -117,94 +117,94 @@ msgstr "Aggiunge la funzionalità per taggare i post." msgid "Do you want to remove your tags from the database?" msgstr "Vuoi rimuovere i tag dal database?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(separati da virgole)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "Non si dispone di privilegi sufficienti per gestire i tag." -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "Tag non trovato." -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "Per modificare i tag è necessario un ID." -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "Per aggiornare i tag è necessario un ID." -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "Tag aggiornati." -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "Non si dispone di privilegi sufficienti per rinominare i tag." -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "Nessun tag specificato" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "Si prega di specificare il tag che si desidera rinominare." -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "Il titolo non può essere vuoto." -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "Tag rinominato." -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "Non si dispone di privilegi sufficienti per eliminare i tag." -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "Si prega di specificare il tag che si desidera eliminare." -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "Tag cancellato." -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "Non si dispone di privilegi sufficienti per aggiungere tag." -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "Nessun post selezionato." -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "Nessun tag specificato." -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "Post taggati." -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "Non è stato specificato un tag." -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "Il tag specificato non è stato trovato." -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "Non sono presenti post con il tag specificato." -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/nl_NL/LC_MESSAGES/tags.mo b/modules/tags/locale/nl_NL/LC_MESSAGES/tags.mo index 4ecaef2d4cfa86b984cf61c6771014c16f454433..22f3a080e29eabb9f8d54e2d2a875413e1e0a0c0 100644 GIT binary patch delta 363 zcmXZYze@sP9LMp`Wpw0^j0>$n1d$^U4XxGU_IB;>g#l@i|a8sA2pdoOL z2sgvY!6o_|3Pc1a-wz4Lz3%fpp6C00o}a>Z;jLpu8%g1@bce0Dbd4YA;2-uaDVC5< z$d5_M!y#Vb980)G^WRPV*Kd#|YG4uD`}~B5SgNR_LR{A~WDEde}vCgD;cW!N|6PNh{tt+5r|hCw%|_ delta 365 zcmXZYKTASU7{~FSWrdo5@NYu|A|i;T*{#(@@C^j_4JZvQN^TC~A~>}OO+`zSAi~{4 zq(u;?1|fVA2@--s--E*Ce(vwNobx>A{3MsjQPb7lNNRYbdwldt*Eq&7uCV8lj(k#p z{Cq0q@eMC=j#=EI`JeIc>UYQzRWXJ2eeR>1{Elb%;a6KRK0Ya&<2NSo7jMzSt~Xdh zGtd)eu!|8KBC~6Prr``PaDj3B!!!nh5|1oiW}h%nqD?3? diff --git a/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po b/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po index d6f489b..f57a163 100644 --- a/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po +++ b/modules/tags/locale/nl_NL/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -54,9 +54,9 @@ msgstr "Wijzigen Tags voor “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "Tags" @@ -65,30 +65,30 @@ msgid "Manage Tags" msgstr "Beheer Tags" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "Tags toevoegen" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "Naam" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "Blogposts getagged" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "Sorteer resultaten op:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "Blogposts getagged met “%s”" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "Tag de geselecteerde Blogpost(s) met:" @@ -117,94 +117,94 @@ msgstr "Voegt Tag-functionaliteit toe aan je Blogposts." msgid "Do you want to remove your tags from the database?" msgstr "Wil je jouw Tags verwijderen uit de database?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(komma gescheiden)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "Je hebt onvoldoende rechten om Tags te beheren." -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "Tag niet gevonden." -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "Een ID is noodzakelijk om Tags aan te passen." -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "Een ID is noodzakelijk om Tags te updaten." -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "Tags bijgewerkt." -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "Je hebt onvoldoende rechten om Tags te hernoemen." -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "Geen Tag geselecteerd" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "Selecteer alsjeblieft de Tag die je hernoemen wilt." -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "Naam kan niet leeg zijn." -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "Tag hernoemd." -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "Je hebt onvoldoende rechten om Tags te verwijderen." -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "Selecteer alsjeblieft de Tag die je verwijderen wilt." -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "Tag verwijderd." -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "Je hebt onvoldoende rechten om Tags toe te voegen." -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "Geen Blogposts geselecteerd." -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "Geen Tags geselecteerd." -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "Blogposts getagged." -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "Je hebt geen Tag geselecteerd." -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "De Tag die je gekozen hebt is niet gevonden." -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "Er zijn geen Blogposts met de geselecteerde Tag." -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/locale/zh_CN/LC_MESSAGES/tags.mo b/modules/tags/locale/zh_CN/LC_MESSAGES/tags.mo index 5bfe0f9d68b3eeb7987863df9cd9a25b849107c1..869d8e33492eee271f053020d487eae3799daa3b 100644 GIT binary patch delta 363 zcmXZWziPrz6vy$CQY}Vfp-`MO7Ohahsdeh)=mUu0V#%ICaHx~IJ2*LKa*=|N;v-mG zT&3g*?9{=fTfavSg!|$A$-TeC|Mu5IXZ$N7gN(=%2ChgAXLyG(hK|SgL=Ey~9#JpMlBSMzvtv%ML4OtR Nt`;{=GY;HQ>K~(SB=-OS delta 365 zcmXZWzfQtX6vy#X2n8D3CM1MOstIZ^z*O9v9DM*51|Y1)kg(uFQg;Ui&PPgj+NL zGbFq0biUWQ?d1=gp$UA6W`C&O>OArW`2|ljOyU?#!WUiKpb3(y-)Js$Npp@Jb)ZJr SrN2(n!ehA@_QGW3EJ}YWizTiA diff --git a/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po b/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po index 70a4cd3..be92b70 100644 --- a/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po +++ b/modules/tags/locale/zh_CN/LC_MESSAGES/tags.po @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.5\n" #. This file is distributed under the same license as the Chyrp Lite package. #: modules/tags/admin/help/tagging_posts.twig:3 @@ -52,9 +52,9 @@ msgstr "编辑标签 “%s”" #: modules/tags/admin/pages/edit_tags.twig:10 #: modules/tags/admin/pages/manage_tags.twig:18 -#: modules/tags/admin/pages/posts_tagged.twig:31 modules/tags/tags.php:165 -#: modules/tags/tags.php:223 modules/tags/tags.php:237 -#: modules/tags/tags.php:716 +#: modules/tags/admin/pages/posts_tagged.twig:32 modules/tags/tags.php:203 +#: modules/tags/tags.php:270 modules/tags/tags.php:285 +#: modules/tags/tags.php:843 msgid "Tags" msgstr "标签" @@ -63,30 +63,30 @@ msgid "Manage Tags" msgstr "管理标签" #: modules/tags/admin/pages/manage_tags.twig:13 -#: modules/tags/admin/pages/posts_tagged.twig:70 +#: modules/tags/admin/pages/posts_tagged.twig:79 msgid "Add Tags" msgstr "添加标签" #: modules/tags/admin/pages/manage_tags.twig:22 -#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:282 +#: modules/tags/admin/pages/rename_tag.twig:10 modules/tags/tags.php:334 msgid "Name" msgstr "姓名" #: modules/tags/admin/pages/manage_tags.twig:23 -#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:283 +#: modules/tags/admin/pages/posts_tagged.twig:3 modules/tags/tags.php:335 msgid "Posts Tagged" msgstr "帖子已标记" -#: modules/tags/admin/pages/manage_tags.twig:62 +#: modules/tags/admin/pages/manage_tags.twig:63 msgid "Sort results by:" msgstr "结果排序依据:" -#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:708 +#: modules/tags/admin/pages/posts_tagged.twig:20 modules/tags/tags.php:833 #, php-format msgid "Posts tagged with “%s”" msgstr "“%s” 的帖子标签" -#: modules/tags/admin/pages/posts_tagged.twig:67 +#: modules/tags/admin/pages/posts_tagged.twig:76 msgid "Tag Selected Post(s) with:" msgstr "将选中的帖子标记为:" @@ -115,94 +115,94 @@ msgstr "为帖子添加标签功能。" msgid "Do you want to remove your tags from the database?" msgstr "您想从数据库中删除您的标签吗?" -#: modules/tags/tags.php:167 +#: modules/tags/tags.php:205 msgid "(comma separated)" msgstr "(逗号分割)" -#: modules/tags/tags.php:260 modules/tags/tags.php:316 +#: modules/tags/tags.php:312 modules/tags/tags.php:370 msgid "You do not have sufficient privileges to manage tags." msgstr "您没有足够的权限来管理标签。" -#: modules/tags/tags.php:344 modules/tags/tags.php:483 -#: modules/tags/tags.php:524 modules/tags/tags.php:568 -#: modules/tags/tags.php:605 +#: modules/tags/tags.php:398 modules/tags/tags.php:599 +#: modules/tags/tags.php:642 modules/tags/tags.php:688 +#: modules/tags/tags.php:726 msgid "Tag not found." msgstr "标签未找到。" -#: modules/tags/tags.php:398 +#: modules/tags/tags.php:510 msgid "An ID is required to edit tags." msgstr "编辑标签需要ID。" -#: modules/tags/tags.php:435 +#: modules/tags/tags.php:549 msgid "An ID is required to update tags." msgstr "更新标签需要ID。" -#: modules/tags/tags.php:459 +#: modules/tags/tags.php:573 msgid "Tags updated." msgstr "标签已更新。" -#: modules/tags/tags.php:468 modules/tags/tags.php:496 +#: modules/tags/tags.php:584 modules/tags/tags.php:614 msgid "You do not have sufficient privileges to rename tags." msgstr "您没有足够的权限来重命名标签。" -#: modules/tags/tags.php:473 modules/tags/tags.php:507 -#: modules/tags/tags.php:558 modules/tags/tags.php:592 +#: modules/tags/tags.php:589 modules/tags/tags.php:625 +#: modules/tags/tags.php:678 modules/tags/tags.php:713 msgid "No Tag Specified" msgstr "未指定标签" -#: modules/tags/tags.php:474 modules/tags/tags.php:508 +#: modules/tags/tags.php:590 modules/tags/tags.php:626 msgid "Please specify the tag you want to rename." msgstr "请指定您要重命名的标签。" -#: modules/tags/tags.php:515 +#: modules/tags/tags.php:633 msgid "Name cannot be blank." msgstr "名字不能为空。" -#: modules/tags/tags.php:544 +#: modules/tags/tags.php:662 msgid "Tag renamed." msgstr "标签已重命名。" -#: modules/tags/tags.php:553 modules/tags/tags.php:581 +#: modules/tags/tags.php:673 modules/tags/tags.php:702 msgid "You do not have sufficient privileges to delete tags." msgstr "您没有足够的权限来删除标签。" -#: modules/tags/tags.php:559 modules/tags/tags.php:593 +#: modules/tags/tags.php:679 modules/tags/tags.php:714 msgid "Please specify the tag you want to delete." msgstr "请指定您要删除的标签。" -#: modules/tags/tags.php:624 +#: modules/tags/tags.php:745 msgid "Tag deleted." msgstr "标签已删除。" -#: modules/tags/tags.php:633 +#: modules/tags/tags.php:756 msgid "You do not have sufficient privileges to add tags." msgstr "您没有足够的权限来增加标签。" -#: modules/tags/tags.php:644 +#: modules/tags/tags.php:767 msgid "No posts selected." msgstr "没有选择帖子。" -#: modules/tags/tags.php:650 +#: modules/tags/tags.php:773 msgid "No tags specified." msgstr "没有指定标签。" -#: modules/tags/tags.php:669 +#: modules/tags/tags.php:792 msgid "Posts tagged." msgstr "帖子已标记。" -#: modules/tags/tags.php:677 +#: modules/tags/tags.php:802 msgid "You did not specify a tag." msgstr "你没有指定一个标签。" -#: modules/tags/tags.php:686 +#: modules/tags/tags.php:811 msgid "The tag you specified was not found." msgstr "没有找到您指定的标签。" -#: modules/tags/tags.php:702 +#: modules/tags/tags.php:827 msgid "There are no posts with the tag you specified." msgstr "没有您指定标签的帖子。" -#: modules/tags/tags.php:840 +#: modules/tags/tags.php:974 #, php-format msgid "%d post tagged with “%s”" msgid_plural "%d posts tagged with “%s”" diff --git a/modules/tags/tags.php b/modules/tags/tags.php index 628f955..065412f 100644 --- a/modules/tags/tags.php +++ b/modules/tags/tags.php @@ -4,11 +4,14 @@ # Query caches for methods. private $caches = array(); - public static function __install(): void { + public static function __install( + ): void { Route::current()->add("tag/(name)/", "tag"); } - public static function __uninstall($confirm): void { + public static function __uninstall( + $confirm + ): void { Route::current()->remove("tag/(name)/"); if ($confirm) @@ -18,43 +21,63 @@ ); } - private function tags_serialize($tags) { + private function tags_serialize( + $tags + ) { return json_set($tags); } - private function tags_unserialize($tags) { + private function tags_unserialize( + $tags + ) { return json_get($tags, true); } - private function sort_tags_name_asc($a, $b): int { + private function sort_tags_name_asc( + $a, + $b + ): int { return $this->mb_strcasecmp( $a["name"], $b["name"] ); } - private function sort_tags_name_desc($a, $b): int { + private function sort_tags_name_desc( + $a, + $b + ): int { return $this->mb_strcasecmp( $b["name"], $a["name"] ); } - private function sort_tags_popularity_asc($a, $b): int { + private function sort_tags_popularity_asc( + $a, + $b + ): int { if ($a["popularity"] == $b["popularity"]) return 0; return ($a["popularity"] < $b["popularity"]) ? -1 : 1 ; } - private function sort_tags_popularity_desc($a, $b): int { + private function sort_tags_popularity_desc( + $a, + $b + ): int { if ($a["popularity"] == $b["popularity"]) return 0; return ($a["popularity"] > $b["popularity"]) ? -1 : 1 ; } - private function mb_strcasecmp($str1, $str2, $encoding = "UTF-8"): int { + private function mb_strcasecmp( + $str1, + $str2, + $encoding = "UTF-8" + ): int { $str1 = preg_replace("/[[:punct:]]+/", "", $str1); $str2 = preg_replace("/[[:punct:]]+/", "", $str2); @@ -65,24 +88,32 @@ ); } - private function tags_name_match($name): string { + private function tags_name_match( + $name + ): string { # Serialized notation of key for SQL queries. return "%\"".$this->tags_encoded($name)."\":%"; } - private function tags_clean_match($clean): string { + private function tags_clean_match( + $clean + ): string { # Serialized notation of value for SQL queries. return "%:\"".$this->tags_encoded($clean)."\"%"; } - private function tags_encoded($text): string { + private function tags_encoded( + $text + ): string { # Recreate JSON encoding for SQL queries. $json = trim(json_set((string) $text), "\""); # See: QueryBuilder::build_conditions(). return str_replace("|", "||", $json); } - private function prepare_tags($tags): array { + private function prepare_tags( + $tags + ): array { # Split at the comma. $names = explode(",", $tags); @@ -120,7 +151,9 @@ return $assoc; } - public function before_add_post_attributes($attributes): array { + public function before_add_post_attributes( + $attributes + ): array { if (!isset($_POST['tags'])) return $attributes; @@ -129,7 +162,9 @@ return $attributes; } - public function before_update_post_attributes($attributes): array { + public function before_update_post_attributes( + $attributes + ): array { if (!isset($_POST['tags'])) return $attributes; @@ -138,7 +173,10 @@ return $attributes; } - public function post_options($fields, $post = null): array { + public function post_options( + $fields, + $post = null + ): array { $cloud = $this->tag_cloud(false, "name_asc"); $names = isset($post->tags) ? array_keys($post->tags) : @@ -173,7 +211,9 @@ return $fields; } - public function post($post): void { + public function post( + $post + ): void { $post->tags = empty($post->tags) ? array() : $this->tags_unserialize($post->tags) ; @@ -183,7 +223,10 @@ }); } - public function post_tags_link_attr($attr, $post): array { + public function post_tags_link_attr( + $attr, + $post + ): array { $urls = array(); if ($post->no_results) @@ -212,12 +255,16 @@ return $this->tag_cloud($limit, $sort, $scale); } - public function parse_urls($urls): array { + public function parse_urls( + $urls + ): array { $urls['|/tag/([^/]+)/|'] = '/?action=tag&name=$1'; return $urls; } - public function manage_nav($navs): array { + public function manage_nav( + $navs + ): array { if (Post::any_editable()) $navs["manage_tags"] = array( "title" => __("Tags", "tags"), @@ -232,13 +279,16 @@ return $navs; } - public function manage_posts_column_header(): string { + public function manage_posts_column_header( + ): string { return ''. __("Tags", "tags"). ''; } - public function manage_posts_column($post): string { + public function manage_posts_column( + $post + ): string { $tags = array(); foreach ($post->tags as $name => $clean) @@ -253,7 +303,9 @@ ''; } - public function admin_manage_tags($admin): void { + public function admin_manage_tags( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -309,7 +361,9 @@ ); } - public function admin_posts_tagged($admin): void { + public function admin_posts_tagged( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -385,13 +439,71 @@ $posts = new Paginator(array()); } + $post_statuses = array(); + + foreach ($posts->paginated as $post) { + $name = ""; + $groups = array(); + $classes = array(); + + if ($group_ids = $post->groups()) { + foreach ($group_ids as $group_id) { + $group = new Group($group_id); + + if (!$group->no_results) { + $groups[] = $group; + $classes[] = "group-".$group->id; + } + } + } else { + switch ($post->status) { + case Post::STATUS_DRAFT: + $name = __("Draft", "admin"); + break; + + case Post::STATUS_PUBLIC: + $name = __("Public", "admin"); + break; + + case Post::STATUS_PRIVATE: + $name = __("Private", "admin"); + break; + + case Post::STATUS_REG_ONLY: + $name = __("All registered users", "admin"); + break; + + case Post::STATUS_SCHEDULED: + $name = __("Scheduled", "admin"); + break; + + default: + $name = camelize($post->status, true); + } + + $classes[] = $post->status; + } + + $post_statuses[$post->id] = array( + "name" => $name, + "groups" => $groups, + "classes" => $classes + ); + } + $admin->display( "pages".DIR."posts_tagged", - array("posts" => $posts, "tag" => $tag) + array( + "posts" => $posts, + "tag" => $tag, + "post_statuses" => $post_statuses + ) ); } - public function admin_edit_tags($admin): void { + public function admin_edit_tags( + $admin + ): void { if (empty($_GET['id']) or !is_numeric($_GET['id'])) error( __("No ID Specified"), @@ -422,7 +534,9 @@ ); } - public function admin_update_tags($admin)/*: never */{ + public function admin_update_tags( + $admin + ): never { if (!isset($_POST['hash']) or !Session::check_token($_POST['hash'])) show_403( __("Access Denied"), @@ -461,7 +575,9 @@ ); } - public function admin_rename_tag($admin): void { + public function admin_rename_tag( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -489,7 +605,9 @@ ); } - public function admin_update_tag($admin)/*: never */{ + public function admin_update_tag( + $admin + ): never { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -546,7 +664,9 @@ ); } - public function admin_delete_tag($admin): void { + public function admin_delete_tag( + $admin + ): void { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -574,7 +694,8 @@ ); } - public function admin_destroy_tag()/*: never */{ + public function admin_destroy_tag( + ): never { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -626,7 +747,9 @@ ); } - public function admin_bulk_tag($admin)/*: never */{ + public function admin_bulk_tag( + $admin + ): never { if (!Post::any_editable()) show_403( __("Access Denied"), @@ -671,7 +794,9 @@ ); } - public function main_tag($main): void { + public function main_tag( + $main + ): void { if (!isset($_GET['name'])) Flash::warning( __("You did not specify a tag.", "tags"), @@ -709,7 +834,9 @@ ); } - public function main_tags($main): void { + public function main_tags( + $main + ): void { $main->display( "pages".DIR."tags", array("tag_cloud" => $this->tag_cloud(false, "name_asc")), @@ -717,7 +844,11 @@ ); } - public function related_posts($ids, $post, $limit): array { + public function related_posts( + $ids, + $post, + $limit + ): array { if (empty($post->tags)) return $ids; @@ -836,13 +967,18 @@ $array ; } - private function tag_cloud_title($name, $count) { + private function tag_cloud_title( + $name, + $count + ) { $p = _p("%d post tagged with “%s”", "%d posts tagged with “%s”", $count, "tags"); $title = sprintf($p, $count, fix($name, true)); return $title; } - public function tag_find_by_clean($clean): array|false { + public function tag_find_by_clean( + $clean + ): array|false { $cloud = $this->tag_cloud(); foreach ($cloud as $tag) { @@ -853,7 +989,9 @@ return false; } - public function tag_find_by_name($name): array|false { + public function tag_find_by_name( + $name + ): array|false { $cloud = $this->tag_cloud(); foreach ($cloud as $tag) { @@ -864,14 +1002,18 @@ return false; } - public function feed_item($post, $feed): void { + public function feed_item( + $post, + $feed + ): void { $scheme = url("tags", MainController::current()); foreach ($post->tags as $tag => $clean) $feed->category($clean, $scheme, $tag); } - public function admin_javascript(): void { + public function admin_javascript( + ): void { include MODULES_DIR.DIR."tags".DIR."javascript.php"; } } diff --git a/themes/blossom/content/comment.twig b/themes/blossom/content/comment.twig index 017fcf7..70b4ada 100644 --- a/themes/blossom/content/comment.twig +++ b/themes/blossom/content/comment.twig @@ -18,7 +18,7 @@ {% endif %} diff --git a/themes/blossom/content/post.twig b/themes/blossom/content/post.twig index 287b2cf..b20f881 100644 --- a/themes/blossom/content/post.twig +++ b/themes/blossom/content/post.twig @@ -14,17 +14,20 @@