diff --git a/docs/AddingASiteTemplate.md b/docs/AddingASiteTemplate.md index 64592a807..58ae18374 100644 --- a/docs/AddingASiteTemplate.md +++ b/docs/AddingASiteTemplate.md @@ -1,14 +1,17 @@ # Adding a new site template -Site templates are configured in [`etc/config/site-templates.conf`](../etc/config/site-templates.conf). +Site templates are configured in [`etc/config/site-templates.yaml`](../etc/config/site-templates.yaml). -The configuration format is `Template Name=Godbolt.org full link`. +The configuration is a list of site templates each having a name and a raw configuration string. Use the following steps +to create the configuration string: -To create a site template: +1. [Compiler Explorer](https://godbolt.org) and configure the setup you want to export as a template +2. Click the "Share" dropdown in the top-right corner of the page +3. Select the "Copy full link" option +4. Strip the "https://godbolt.org/#" prefix from the link +5. Paste the configuration string into your new entry in the templates list. -- Setup the template on [https://godbolt.org](https://godbolt.org) -- Export with a full link from the "Share" dropdown in the top-right corner of the page -- Add to the config file +After you have created a new site template, you can generate screenshots using Puppeteer. ## Screenshot generation diff --git a/etc/config/site-templates.conf b/etc/config/site-templates.conf deleted file mode 100644 index c49abe710..000000000 --- a/etc/config/site-templates.conf +++ /dev/null @@ -1,11 +0,0 @@ -meta.screenshot_dimensions=1000x800 -Diff of Two Sources=z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAZgQDbYB2AhgLbYgDkAjF%2BTXRMiAZVQtGIHgBYBQogFUAztgAKAD24AGfgCsp5eiyahUAUgBMAIUtXyKxqiIEh1ZpgDC6egFc2TA3cAGQImbAA5PwAjbFIQC3IAB3QlYhcmL19/A2TU5yEQsMi2GLiEh2wndJEiFlIiTL8AnntsR3ymGrqiQojo2Pj7WvrG7JalYZ7QvpKBiwBKe3QfUlROLksAZlDUXxwAajNNjwA3SpJSI9wzLQBBG9uT9AJMfcx0AH0ldA4PgHcyABrCChIjzI42O4PJ4vfaJUjoNZKJQfYjYNhKCAYJgTfYTTAgEBnJxkI4eUFXSwANn2xPmhwA7JDbvtWfsWD4SHiAF6HTYAEVplQAdKludgIODNsy2ftBKQIPjCWLsB8iPsCHzBVoIRq%2BR4ebqCLZbPSzEyHrLZe8vj9VQDSMDiWYAKxWY0u/lSmVs838h5%2Bh5cRb0bgu/gBLg6cjobgeE3WPHLVbYQ4WTZ8chEbTBxaAkAurSGbjSfhsAtFyPR2NcfhKEBF7NR4PkOCwFAYHD4YhkSjUOiMVgcbiZwTCMQSTgyOTCZRqTTN8j6BJGExoBN2CpVVwQdyjAIWFrBabFUogBlJFJpIT7%2BItXLXpi9U8DC9bjpdEbeJp31rtaqTM%2B/RxG%2Bky3oeQzdEBswgYs3wrGs3BbDseypmSxIXJSUJ3DCrw2t8vwOsCoLegGOHPK88KItgyKokQ6KYtiuJKkS5ykscFKbNcFg0nSjI%2Bqy8oQByXJomw%2BwgEKqBmhadxWmy%2BF2v8QIgvRbCkXJvoMv6ULaUGIZhhGOYxnGG5JghaHphY/BNjo8yLEg2AsDgcSSsWXCluQ5aFuQVb8DWdYNlmOb2eQ%2BbSC6wpUgAnDw0VaFSWhaC6FiHtFmzuZsRmLgFwXNosbbIGgPyJAwsR9liJVlXEuzGMAPCbFoLQDvRpD1hAUTGVEoR1AAniO/AYGwHDCAA8kw9D9YuOBsHVkjTQQpDnAQZz1ou2DqJUnLrJmoJtMZ9AEFEpB9V4ODGUQpAEOWvAtjQRjAEoABqBDYH8o2JMwA0zqI4iSNOY6KCoGjGfoLSrqYG6GEd9aQIs6CJB0a0ALSjVlf7LTue7fmM5DHkUwE5FeHS3vexPpNBZ7jG0mOdGBOPNBj2501BJ6E%2BM9NZIzEyswTMFSHByaIS0l3YDtLahlw4a%2BcZNbqAAHFSyNUtI%2By1SY%2BwNcKWjCjw%2BwQPG1i2OQ%2BzdhcaYZibXhsKVjCkBbPDzDZIWth2VV2xVQ22wM6v1Y1zUMK17WdYu3WsKQU2ZkNI1EONk3GTNc3rNGhBLVUq3GRtW30d9e2S9Gh3HadWDJzZV03Xwiz3Swj0vW9H1fbdP0Tv9siA3OIOLsuhh1euRvWNDUSw25CNI9wqPo%2B%2B6RuEwngM4Es%2BUwMZN5OkpOXqvBRs/z1P/kIn4NPPu%2B0wfS9xBz3Trzz9RnwLSwWYMoviwZUvZdW3AK0rKtqxDmubNrut9aGxsAPU2hBzZbASPsa23t7aQKdnlOyrsQCEBoDQCqgMW5TjbvIDuC4C5IHrODQhqCaBEF6p9IKpBCGDGoUoUh5DKFaBftLPyJkuD8gIGg/Ydc/ixH2J/ZWqtfZ/wAXrE4SgBGKyET/OqoidaZlsrmcgjlnIDDcvmF00hhSNXllodK0VorSAZAyPRDIqTuU8uWHgSUZY5W4IFBISjQqS2snY9%2BtZEHKLOG1ae0ggA -Diff of Two Compilers=z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIM6SuADJ4DJgAcj4ARpjEINIADqgKhE4MHt6%2B/qRJKY4CIWGRLDFx0naYDmlCBEzEBBk%2BfgEVVQI1dQSFEdGx8ba19Y1ZLYNdoT0lfZIAlLaoXsTI7BwA9KsA1AAqAJ4JmBs7C8QbaFgbCLGYpBskG7SoTOgbhhuYqqwJ9AB0JhoAgqECBsFABHLx1TAQIEbBg%2BGYbEwAdisAI26I2xEwBEWDFhPg2ACp8SwTABmVH/ZEAEQ4c1onAArLw/BwtKRUJw3NZrCDjstEWYyTxSARNHS5gBrECMjT6TiSFnijmcXgKEBysVsumkOCwJBoFgJOixciUQ3G%2BhxYBcMxcPh0AixdUQKLKqKhOo7Tgiw1sQQAeQYtG92tIWBYhmA4jD%2BCxVQAbph1WH3pUvE6fbwgZgGWHaHgosQvR4sMqCMQ8Cws3MqAZgAoAGp4TAAdwD%2B1ZIv4ghEYnYUhkgkUKnUYd09oMRhQPMs%2BkL6sgc1QCXyDBTAFoA2SNhvI0sEOTqQpJTsDJLMGrc5U1y4GO5PE09MEJsVSnpcqkBMM/PbP2vujfPp7VaNcOiGR8shA682gYcDxiKXo4hAsYfz0BQxkApCJDmBR%2BQHUUsRWHh6SZJUw05DhVAADgANg3WjJA2YBkGQDZbW%2BLgNggblLGsG5cEIO5zGFG4PCNE0ThErgZl4LUtDmCADVQCSrTNCALUklApxtSQNDlGhaCdYgXTdMMPWYYhQ19FT/QIIMQ2VCMoxjdk4xvPAkxTdk02QDNiOzQRc2VAsixLDAVnZCsqxrPh6ybFt207LMh2EURxEHHt5CUNRlV0AIdJnPi51CxcIGXVc0k3bdd33ZBDzJY9T3PS9bBg28IFcND7RfRCpmQnJki/dJIN/Qa8jSLD%2BvQ9rqlQ0aZvsMDMNfbCUM6bqBk6Kb3xk%2BZFmWPQK0wALSI4ZlSFZdlKJo%2BjGNOHT2Mkb4NBe7jeKsOcNkEogpKFe0NnEy1YkFMkzFk0VxUUpB8CoKh1KyvsMukLKR1y/MEHVSdMdhqgCD2dg5WITHsmJhRcfx/YNTOi6rt4SjqTwOGNmbNsQduhimJYtiOK4hMFA2Dn7uQR6pBel65KhqUZTlPNFUu5VKLVbJ5IleUODMcjrtVSHtRmOYkxMtJ4iAA -C++ Cmake=z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCwBK6ADYB1HMgQt0AI1EA7AGYB7BlgJWiABxxb0qcSTPAAriWDpRABMQAiUAJkFwwTtvWmQHAHlvZEdkgDEXdDMSInQUBHR%2BdAAPdAJkkmNXLAtM%2Blh0QP0rVCCQADYazLaARgAWLtds3JBSHDMAOgJHRyxQBlscWnMCLW9AxsYABkXaDhJxgGUrb1QCPIYe3YTHLO3bLU9gNoWASiwIRubW4J7BgN%2BAFZ/sM8pxyOhxEtkLQJshisg5oxHKgrAArMrICC0BAkW60V5KLaUImUYgQ/hEcY4IjeIj8DAAR28OAwgQgADVeOpDqIEgA5ADUKgmgMJxNJJECgSKpXKyEqrmxuPxzJIGFJgq1gpxePQtAA9ARWat0FMZprtbr8QaMAQFV5XObHJatWNJtNHOKScSFTR0Mh%2BFpxmQgzhjKh1Th9cq9bQ1RridrBRYiMhAt7dis1htggwdrg9gczMdTud7oWbnd8w8nm1yRR3p8mvEfiAwv9ep1akMcnkMLQTmd9QaClotFY4QikQxSQAJbQTrCCgDuLS0gTAYFJpKYe6YpOkBUFvDMgVJWbMq3Wmxrhf2RyH5cu11uZgrjy89aiUSbX1bbQqJ2vwAJwgn2IA4JOnozpe165hWSwPiWT4XFclZvh%2BdZ5gwf4ti0bQDD2ALtls4EjFBEwILBhbZjeeYFkhxalsOjDoUsVbvnen7PDhrzvEs4IUPIqIYvaFZoiAfxmOgK4ZK4bRhD07xaIwgK2FxBZWIw0gYOggrhCo6HIPc/FYGQpGin0ADsIF9ICYRbICNl2c5WCqQwfQaRW2kLFg9BkSZNZNjAUChRASD2BsvD4aguD4MRoKjMWzo1FYZjIIcBAkK4UlEelyDCLQ6DyMUEkdO5TwhD%2BET%2BdomJQe%2BnxnmwVhrEQ749J0WSBFCMn8nSxhuCAQGOFYtD6I1rXtZ1nRjRNyCNX16ADUQQ2oCNdWuPajWHH6yDTXSs1bQ16V7eqyDLat62bXEF2HR1UmdHdqCXeMK2DcNKjvIOZYXIZ4zwfpqhsKmyBGi0ZoIKoygShKYQqIDObA2EYSUdDqM7sS4zIIK7oQK8BnWZESbamDIAgCiOMQOEYTyfp9gZVkMIgEogJsGYSjE1zLC08u/iBoEJAKgThIqCTJLWbzxK4e5aneXe2nuqlQU7E2kVWNFsXxRAiUQUJkLQrC8KItYGVZTleT9GlGVFSVZV3pJfw8SEpAUCdO3pfgPUPZ1WA9Vdn0bT0fzzZN6W%2B1JWBh4t6WB2tw0hx7sclvtkd/MV20p%2Bdr3xzdScvQdbVHVHhd54nyn%2BahjANoUVJmDSdIMugzKso0nLcryArCqK3qkii6KYrG%2BJ98SUoyiUZQVFU6AQAYhST/KiroK6gqUZ6q/K56o%2BUH6AthmYobBhGUYxvPspTwqM%2Br2DGYXip8tYJptjaQbUJxMb06q7LEUhJr6AxW%2BDrPWIwByoUNGOCcU5TYFQtrla2ZtCrFVKuVDsLtQgRCiMnRq3sWrF0en8AO71rrDTmuNcOZh07R3ISncuG1nr1U9qne6%2BC/aZ1Osw3OxCg4VULlQsu3CE70J%2BtXWcxIFzjisMuNcqANxbixpQfcB5iRHn0qec8MsH4MHUk/HyIAwF/QgYuScJssDf3Vn/LWQC8C60yEldeMwbaZWyvA/KttkEOwLJJIC6CarRHYUw3BgQqFEP6jwsCMcpqsKjpEuOgibpgQCdnNO0SM6MOSRdOhIBEkpJmqXfaWSQIiL%2BowAGV5kYGRUKDOIGAcgwx3AjJGN5KlsBqeMYA9S4aUDiMEEAbSvCCn3kLEWhMuYS2TD0imOALA1PQDkNeMyaaowMcOIxkjoG0zFuM7UsR2mClELjVQLAdTpimbMnIxhvAWH4PoNwwsWggwILiVA9TxarwwMgU4ZgTm9P6cACAByIDTIJMuQF/FVASx5vfOW2iFZaUgtBRx5iPgaysa2YBdiILoycXAq2bikH23KgMXxmDapJJwc1YJqT/ZnkKdQhaUS8mhxoUteJw1EnpN2rkkuaSs5csyWyjaOSWFMv8gUwV2TimsVnI0iwZ50AWEFGkBICR%2BBzgaSoDYtQZJKpVWqhRZSgYtL%2BZ0n03TTl9LQHsoZwsSAEwhQahGPVpnQo8jo5%2BWBtLYvMe8AoUphoE3MiAPoAAOCYfQI2RqjVGmFXksBEBAICMiHrfK2ACmY0yHxwrhQ1k4TIcUbH2Dza4DawAehbCAj2ZAbh6AQGMBWYw4x1QAE82K2EbdkVAzaEjGDEkFdCRbcgZQSGYLQra7wbEucANgOUtD0BfFgDYpBHQXALE0O0i0ABu%2BoKyL2SGhRYTMPIFmPpGLtrUNgVitQml87wLCPDoByaMK5OJtpxS4vFTi7YoMdptElkRarH3qFAJKYMsDbo2gwayPQVC4XeFYRwKd51MB6UcjBAHBCOUFEwBIKhsP3viC/CDqAcAbGAz9TlXtKUhNpRK5lDKI7UtiWYLJvKOE5yLqK8lZ1xVhKEfkkVPKxUCr4/nd4aBMBSS0e6vRDBBTFBDe0Jg7Q%2BiDIIAQQU5aJh4YgLpTABkEbKVsD6rAfqNgbUDRZQEIpnLtC2CBECYQQJbGsiGrYMHiWMDjQmvoWwrIhpUL55yAWgudBTYwNNIBAqZrgLAJAJwUjJGAbAj9eUv0ePKkBCT6BSNRxXJGRwbbpNwpfowJIiXcZWEVQppTKm1Maa0zp1qxa3AGZUN9YzplfVzPM/gLR3n2ztAmCHALYR2gjZUGNnoHZwt%2BXTci2LiAQB7vRTY9UdB5CeG0IcBAVgVweqLc4R4KdNsyS0DtvbXEB0OCO8NMt027A3fzfyCCflDv5vKxd/bb7F7UDoPo/U4DRzGOgf7OUe0mhcVsIg3FaXEHfs8bYJ2lUvDVVJdEID8AICgbTOB4aUGYNwc9YhxqyHUNqHQ1ELDOG8NMAIzYT1xHSM7sgO8VA3gMo0nQNIKwbVyNish6d7bu3vsLuy3lgrRWYUycVowXgcpkgtHk4p5TqngDqc0z0CYYRBQQDYH45cemUZGVeJ14K/XbAJva9p9rtu7d290bLubUWM3m6DYCLXgIvfe5997zoHlYOO/hX5EzFlbLhock5Fy9lHKAn94wMIlupJbGTbJs3astGJ6D6VkPXW8eoAml7PoQA%3D -LLVM IR=g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:18,endLineNumber:6,positionColumn:18,positionLineNumber:6,selectionStartColumn:18,selectionStartLineNumber:6,startColumn:18,startLineNumber:6),source:'int+sum(int*+arr,+int+n)+%7B%0A++++int+value+%3D+0%3B%0A++++for(int+i+%3D+0%3B+i+%3C+n%3B+i%2B%2B)+%7B%0A++++++++value+%2B%3D+arr%5Bi%5D%3B%0A++++%7D%0A++++return+value%3B%0A%7D'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:25.411059109631243,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:ir,i:(compilerName:'x86-64+clang+14.0.0',editorid:1,fontScale:14,fontUsePx:'0',j:1,selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),treeid:'1'),l:'5',n:'0',o:'LLVM+IR+Viewer+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.23569365874194,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'-O3+-march%3Dskylake',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:32.353247231626824,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4 -Preprocessor=g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:6,positionColumn:1,positionLineNumber:6,selectionStartColumn:1,selectionStartLineNumber:6,startColumn:1,startLineNumber:6),source:'%23define+MUL(x,+y)+(x+*+y)+%0A%0Aint+mystery(int+a,+int+b)+%7B%0A++++return+MUL(a+%2B+b,+2)%3B%0A%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:30.466941342614383,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:pp,i:(clang-format:'1',editorid:1,filter-headers:'0',fontScale:14,fontUsePx:'0',j:1,treeid:'1'),l:'5',n:'0',o:'Preprocessor+Output+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.496476357000276,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:27.036582300385337,l:'4',m:100,n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4 -Pascal IDE=z:OYLghAFBqd5TKALEAXATgU0wGgJYgQDGAtgIYDWmAgusAM4gDkTORA9iQA54A2m6ADJkAdsACuZYJgCSAExBcy9ImV5tx9VJwDy41F30AxPphFkSmZqwBmpxrExy829PJABaAIw47/dwBMvqbmliDkqEg24iJE9AD0EVExcQB0SvQ4oEwxLgDUSdGx9ACkAMwAQiUADNQ11HgiqAI2ZESY9fWamKW1ef0FZJFFcY2oNuVVtfWoAJ5cHX0DACoAskNIRin0eeUAInlEvMr0EMsyTS1tTjoARgBWmESoOHky65FbxQCU9QN5hluvDwRD%2B/wGI1QeHYIjyAGUAI6SLDEGFaPIicQkEBvS7SdDfHEXZr4yZg/pmORk6a1PDcfiWJpDaEiTq1SEsvJrDZfNKI5GYVEidGY7G4kkCQnizCkyr1W4yxrk%2BFIshYPIgfYYrF5ABU2pI1OolKN9UpqXqrDw9AuR3EciczGqVvo60acPY4nQ7WYXhdOgWIl9rGOYncGVUvG%2BOAgThc7DcCiCflkCjKwX4oSsmAAHhYuPxUnIuOgstZ8DbYrx7Y6mM6K26RB6vT66/7A06Q6JgO4WNHY85XO50yn3AAWDNmCxWQrbRIbEb0MY2dLKMssCu26sOhRthtkd2e71WJh%2BisBsydnChnu7pjfaPWgDC6yoAAV0OxHs9gzh7iAfBETAAHcTH8BQAFZo14ZgINYIM93YZhliwTBdgCMoz1QTsHxwCgQDKCDUmqMcAE4ADYAA4ymo6ovAAdi8ciJxgpgx3gq8kI3RhqhwbC237RAIBQDgHQAUUHBN8EIFMsxAXN80LYtSxsGFUDhSMrC8CdVKaABVehMDfHMr3/IIb0UZRIxwQz%2BGeFlCEpJ92GrEggx8SlBEaTAADksQVdAAIgnAuHYJcoRhZzXPckKwpcFkvKAvySACoKbMwOyIqbVA1VQKKsRi2yniyuEcvQVBEt8/yBDSrRcvytyAJssqKu85LUq8KCbKPVsS3YYB0AsPIFPpDo5Rpahul6ah/lnYplzyRo8jAJg5riedhm2ZdV3oFacGVNadiWlbDo25Jih2lbTVqAA3NVlV5RguQ%2BTZtiNBVgCVJZ%2BgAdXQFxMEEEQIBWgAJDLeHYV4foTXg5DABH72umaBkejUtW5T5tlSJ8sCGMaphR/oxJzFxnIddGygOR7Un5NVBTKX5xuNEQ5AtWp72vWCOMQ%2BS81GosSz4nCYxE9hxMk0sCAgWTp3CBc50O7aMl8NSNLULSdLUgyjJMvd/3TCyIzUdLMoc2NWYamLPLa6rAonULwpZK2msd%2BKYUq9qaonIr7JhUr6pcgqmt9kqWs9u2QB9lqXZ8OryojlLvejegepPXJUEGTb5qaCZmfqMYrnaNlqDmBZlXeHltl2KnFsudBWmL77wRKCCKiu%2BiKjIMgyiIW4AkozAPDKMpqluDwxy8UivA8MhKLHjwiFImxOv7mw5Ho0iqXovYrogvYS/BCEUiylUBSFEUsSJPFJWviV0CNf4TXz2lRsZHKspL81OdYuCcAQ%2BsSFTpK1zjtYWAloxIEwGQB0gUIDRnwsxVIpEILVEwuRJipFKID0IlzNirBsReGqLxABrAuKsB4uA50uFWIBAISAeiARiIQUotgwiARSKTwYvRf%2BnFyz8WoTGISKBcxPH0FJaWaoGBvlEBlOESB2DAQQmeDg3A%2BDMhhDIoCvB5GKOUawVRPB%2BCBRsFwIgZQAhBEMaYdAeh1IKKUb%2BURRBaAMHLM40qzgEK2DVppACWt9KGWMqZJqRsrIm2BLcBw8CcDsC4FlRgTAPCrD2BlLgSA8AULTr%2BLQXitFyIcfoviqEmrAUGlwYM0Fua8N5kwEmYjXB5BzJRciHhmJ5FMUQPIZRUhMICHkCAMiVAmy5KhdCmFvisAEfeSB0DYGECqfgnA2IAj0WQVw%2BizF6LVBYWw8iNTAHlkodMmhzAyg80ORuE50YboCCXDCKOQA%3D%3D -Java IDE=g:!((g:!((g:!((h:tree,i:(cmakeArgs:'',compilerLanguageId:java,customOutputFilename:'',files:!((editorId:1,fileId:1,filename:shapes/Square.java,g:'',isIncluded:'0',isMainSource:'1',isOpen:'0',langId:''),(editorId:2,fileId:2,filename:example.java,g:'package+myapp%3B%0A%0Apublic+class+example+%7B%0A%0A%7D',isIncluded:'0',isMainSource:'0',isOpen:'0',langId:java)),isCMakeProject:'1',j:1,newFileId:5),l:'5',n:'0',o:'Tree+%231',t:'0')),header:(),k:29.896907216494846,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((g:!((h:codeEditor,i:(filename:shapes/Square.java,fontScale:14,fontUsePx:'0',j:1,lang:java,selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:'package+shapes%3B%0A%0Apublic+class+Square+%7B%0A++++public+int+square(int+num)+%7B%0A++++++++return+num+*+num%3B%0A++++%7D%0A%7D%0A'),l:'5',n:'0',o:shapes/Square.java,t:'0'),(h:codeEditor,i:(filename:example.java,fontScale:14,fontUsePx:'0',j:2,lang:java,selection:(endColumn:1,endLineNumber:2,positionColumn:1,positionLineNumber:2,selectionStartColumn:1,selectionStartLineNumber:2,startColumn:1,startLineNumber:2),source:'import+shapes.*%3B%0A%0Aclass+Main+%7B%0A++++public+static+void+main(String%5B%5D+args)+%7B%0A++++++++Square+sq+%3D+new+Square()%3B%0A++++++++int+val+%3D+sq.square(args.length)%3B%0A++++++++System.out.println(%22Answer:+%22+%2B+Integer.toString(val))%3B%0A++++%7D%0A%7D'),l:'5',n:'0',o:example.java,t:'0')),k:80.08193737395916,l:'4',m:60.81932773109243,n:'0',o:'',s:1,t:'0'),(g:!((h:executor,i:(argsPanelShown:'0',compilationPanelShown:'1',compiler:java1601,compilerOutShown:'0',execArgs:'hello+world',execStdin:'',fontScale:14,fontUsePx:'0',j:1,lang:java,libs:!(),options:'',source:'1',stdinPanelShown:'1',tree:1,wrap:'1'),l:'5',n:'0',o:'Executor+jdk+16.0.1+(Java,+Tree+%231)',t:'0')),header:(),l:'4',m:39.18067226890757,n:'0',o:'',s:0,t:'0')),k:70.10309278350515,l:'3',n:'0',o:'',t:'0')),l:'2',n:'0',o:'',t:'0')),version:4 -Ada IDE=z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkDWBA9kQA44A26qAMiQB2wAK4lg6AJIATECRkkWo2snYB5Ucg5aAYj3RCSRdI2YAzA/VjoZONalkgAjFku8nAJjcGjJkOgAHsYcvAB0CgBGWKBMuLRSQgTcojK2jAAMzDi0ALIkOEIAyqyiqASmDFnx6hyGmczcwsBOTACUWBC29qyOct7u0nIAzD68fqbmrKwRMrQxZvGJyanpVdl5BcWl5ZXOG7X161hNIq0MHV12Dk6jg04ALGOGxpPTs9GxG8spaXLHOXyhRKZQqjH2NTqQgaJ2a50u3RucgAtK57nIAKzPCYgQo6ZBhZCBZALBjOTzDACkGUoFIe1MozgynnpNO%2BSV%2Ba2qgK2IN24IOUIFsLOcgUJDaHRyAGF8hQAAqoVgAK3QBGQwuVLiwQnQAHd9B45AA2DrcRgY5jQ46sRgAFQw6AA1JSKRCNetJVgyC4ABxhB7OB4PACcxoyvoxAHZjc5hsNjSdGA9mEQXBkMjqYba4vRMx6spcYFBixAkGw0gBRa69XD4QY4qYzBTzKZCZBFAgkXguJ5t5AAVVo6HlgRhWu8p1A4qww946pwrGhXSEMmlrBSRGhrkMMn4hXQADlRERInwQN4OKxaPZF0J15vt1grzfkHf97rj6fz9452q30uRTICQqDIA%2BJ5Pn%2BC6AcBoEfkeJ5nqgF6zrBYEbhB2qqCByDwV%2BSEXh0tA7GCDB6vYCBOpQihhHaQTIAA%2BlI6iUsMABCTqcVxXEqM61EkLR9FMSx7EMgyHAkAQZASM6ujTE6OQMpx5iiEkAFCE6uQAJ4MboqkEE6ECUE6IBOokyDoJIqCsRxuimYa6AMXaWl1G0ToYMgZQaeZll8DZDK7k6cmsDZFxJgwlpZjaIBNrM8wFhcHQIOgCjnhAHQ%2BsMzhhMaYZxsanhBr6GaeIm5oMCmWBpp4GJhMyIbBsaDwZFGGLDL6ni%2BlF1Q5sweZYAlRbwGWIAVug1Y9KgdYQA2rwBMEnDhFEbhLh2XY9kGK3tkOI5jscWquFO8iKLO6Dzup%2BC7uBW4gBi3i7nhiHnlGz7XreS7XdCd2va%2B74Hvhz2nedd5AThn23b%2BZ3/iDaGPd%2ByEvdhoHg99SO4f9T0I0RJGVORyCUfxgnEsJNlOrxVE0XRxPMf5NJ45RwWk%2BTjOiTSHBKhUMhlM6lYLaEzqKTSnF2UFBhOS56C05QZ7AIUSlOocGkQLoWBmUIukGKrrqeHiWiEsS2ttFLnHyloDHwYZ2t2slTpCJjTrmEqRBBdMpnay6pWaTpelJIZoxBW0YAMFIpCSEbrOUIFvMhLwoVmhaVrZvNMfoB8A0NF6yWpch6XhZVabxmE0YZMarVMhiDyRhSibWj1iz9YNnSluWrBVjWU14DNvhzbFy39p23amJt/Y7aO44gKMR0zlBF0rmuGE3c4IZYA9GPwy4rgvu994L9uy9b%2BpcMEc4rgzzDYO7y4y9nzBOFH%2BeJ%2BoRfj5X0/cFr8fzjY6CuMURTAlU0YjTdi3FQHk0JoAkmEd6b/zCD5KyTkhLAI4uAmi8C%2BCIOpiJNiYk2aSWkpIJ0kRW5aRdqwBStB5YqTUneL2ul9KGWMqZdB1kQEiwcuLVy7l0CeVQN5dsvlUAUPlpxSgBADLMIEVZEyrEAAiToMjGyIZZOWQsuJ6gQAYQyQhWDIFgZA5iYRKyrgYuocwGteCGV0JKJ03BpgcBEVxAA4jw5WqsxEEHDjgtRnFAp2NYA4iO3EPJeSoh7DiHilGBW0vQpIUtAoszYmFcqkVa7MFtL3GQ0RBpJRSmkHO8cKqphAIGMIwwQwhl9FGX0ldcoxixGkrAvVZwgHzBnDKEMwiRmcMaXpnUoyeEGU1cKwxE7RTiI3OAsBm4gFKNoLQ002CcAMKgQ8c0GCBF9MaZETUnTACMHo8kYRPAWFWgPDafZVqjz2tUA6A1HQ4DkK4PUqASAcAFIU1JScGCaHmXo1g5gnSbO2bs/ZJBDmeGOYZdcyzeBCNdFlNozAcnegvCGIuWUKTlIxLGDI5Swx52KYMspUYQylRDAMkMGQQzDAyA075fVWnp09E3YaLdYV8EWewLgcKQBguQOSbwaQABuOAKgADUcD6kVsKdwFlUD0AgJEGEkRCggS0sKJZJh2zqCENwDVxw0ikBED2Q1OAMALmFegegxwghqi0JUbkAjyrVG4DgSIrzUBaXXGkGEaAcBpjJGFcwTQ6CSulUKINW01qD17NG6549DrNGOkoN1kRrC5wCepG1fUobQWXFdS%2BO5Vz32QpvN66lwblt%2BkuUtWE83qVBsjItQNoa33fp%2BTGWE0JVrfujTt68v73MwC4T5Yy64MCBVsnZDw9kHKdEczwhkHSYA9oi5F7SsBZ3yfgQp%2BcQBRijDlTwLVaWeCjNSkuIZ6XjMZW0z0HTOphCjPGX0wwYznoyD05kIzx3pMWCi8qJzur/omZuq1Cq7wlKAA%3D -Android Java IDE=z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCxboARgFdgDLAQD2RAA44ANulTiSAO2DaSwdKIAmIO69SGcrpgCsSADcSA21aZGMAeW1kE1iAMQt0WxIidEZ9ADNk%2Blh0VxxI1DcQAEYsHMtSiqqUtIyTbzqAOibDLJbkAA9kLFAGfRxaUVsCc21XAsYyodoOEhxbAGVDbVQCDIZZ3FookxTGAAZ9cztgUsGASiwIAqLDEvcAJkrk0te61PSQdG60kyWFqBEL9TK7UbjSbTBgnXYLJardabY5zfaHWGnc6XBg3O6FYqlFRvaruAAsJPqP3aDhIqFcLQIWWAYMGELGEym7m2cwRKzWGy2O2G6NsqKwZ3sOKuN2GnHI6Hk3n86AIyBm%2Bn85SwtnQAHckqSQABWG7mRjG/RizFYQyMaQYdAAaiUzxUO3VmJlWAQ6BIU1Q%2BBuZBAzyOLQAbFGVM8I0cI2SybHjSpjRLGGSreK7Wz6EcsJ6TniYIgQEYprwCY9cPgvg0QO1Wo2ur1KoZbMhlgQSJZyhSsu3kMJaIruuKtRVJaBPN5fAFgqER5Y1Th2/gUq42IYJkQxRUN%2BIlugAHLaIiaKwgCkmQy0Iqr2xbnd7rA3u/IB%2BH3Wn8%2BXilL1UP3bZZkDpZAnzPF8AJXYDQNQZAvxPM8L0Df84PA7dIO1CIwMQn8UKvG5aAFFEGAACWWeRxGWABHRwMFUQQmFUZQVDYJYihYiArgANSUI5KAoqjaPo9BGOYlReFoOi6XQCBRCuUR%2BMoaiZIYlRBGU3F0wYS0dWzBtmmSNpmhbPpC20iAkHLdBKweVAawgOtqW8Wl6UZZk2w7LsewyMp%2B0HYdR3HEBiSnDxbC8Hw/BBRd0GXICxTuSKIN3ULiQPI98MvCo33vdtUrFFRiTyxK8OQnKsGgxKQLAwr0qq%2BLAIfWr4PK39AwqHD4Pq4qqvQ9qCLKIiSK2JgKHQEwnXGEhaFoJ0RNkl0AHZBCdeJNHMHACCdAAqRiVpYbTzV0rMbTtGl6IZJkWQsvFrMMCsqwcvAnOSb4Mj%2BAEgVirzO27Xt/L%2BoL5DHG0tVecKZ2i%2BdQWqh91xSzC0teTLvwqzrltfW98sfZGxVeUrPyyjHyix%2BHYLq/HQ0ahKWoGkmOrJ/qqefGnuoQxmhuWkbkS2AB6fmnWkABPA4nRFgVpse51fQwLAnUeJ1zEMf0nTsJ0vtMIFlMF3WhambpnlV5B1qMywmAcXwCml0wLBIRKQH1p1KFcVwXWeZ5G2M5semQV1nidSIPeeSFORtupaAD9XIumraCDIIPfSdDAsgwWgECdHRkEiWx1f9gTBaT51NEMHPjEVrJi9tsxLFQRXYniU2TDseKWidBIleQZPvcsJ0B1QUg%2BidEcxMLoWEBzkx6EFqYgniwwDlQFpod8RljH5yIzAIfml4H0gxnQfnNFm%2BKj179BaH5g/HHMcwRaYAgMAd9AmHSWb1jEt0phyXUmFQbQlhaBvzsLfe%2B%2BtnYACUAAcTolSGAAOJXSdBNKaAC%2B5LCbk7ceLs3Yh0unSa6zJo7BwDmHaE7tI7R08HHbaidu7OlTunTO2dc752rs7Uu5ciCV2rkYO2dcG5xFiOtVu5h26d3rvApBhCnThCcNgEemBnaTziDPfmepNEtDcq4aSol15EGvqAns/MjC2ByA4VADsHz83kc4ZSykZpzQWmpZ0ShVrKSdF49a2hNrbRHqBD8O0limz0bJCAISnS2DPFcFamkBLeMSSndAyB1h52iTw3aUSzyMU8d49xLAHHLUKQJY6Fozo7DtFrQE6BgQLgLKib0IZEwtCOAATjKG0540DirPDaSoeMQMTqZn0udcE9BXh3VuCWKyZZjC1ysI5fhCzAyxSYIbY2DsmBnGQJfPoVRdmoHoBATQ4pNBLDpCLDUWBzmpFQCLKImgVRqmufw9IHYoi2HvuKKYOhgBsB7OYegPIsBTAPsAXsNpCgYBXPPYFcI/iqliEKIYHZ4rii2poKx9ytxTHFGgHARBrnz1QKXEcGhwVbXsI0yoZw6A8RwPqUU1yBzeQBn5AKHYQZgzhBDCU5wIpRTnL9TFeQoAfUFbOPwJAzBMAiL42gWASUzDKFGN00CIyWQlagaB41MAt1sLYQwSrLwMB6SoZauIbiL0SsC/QhgSWoGtmKoiTUYJJQ3PVfckVBqVSJgVamuUcZlS5pVCmKx0Jetps1SmbVQ2dRZj1QNibOboyZsNAsjpyhmnKaMuEOYXaQOkE6DZJtlYvwiE6CADpMAe3dFcfQd1gyhWNC0Z4ZIyjLTJMaOMsYkwap0iM60%2BbxkgHzE2nSzwzojrZBOkld41xkiAA%3D%3D%3D -Android Kotlin IDE=z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCxboARgFdgDLAQD2RAA44ANulTiSAO2DaSwdKIAmIO69SGcrpmUNkcxxbA21aZGMAeW1kE1iAMQt0WxIidEZ9ADNk%2Blh0VxxI1DcQAEYsHMtSiqqUtIyTbzqAOibDLJbkAA9kLFAGfRxaUVsCc21XAsYyodoOEhCAZUNtVAIMhlncWiiTFMYABn1zO2BSwYBKLAgCosMS9wAmSuTSl7rU9JB0brSTSwtMh9AZzUbjSbTBjHHYLZardabGHDPYHaEnM4XBjXW6FYqlFSvaruAAsRPq33aDhIqFcLQIWWA/UyO3BEym7i2czhthWaw2MzmqNsRwx9ixl2uw045HQ8m8ACt0ARkIKsArylhbOgAO5JYkgACs13MjEN%2BhF6KwhkY0gw6AA1Eoniptqr0ZKsAh0CQpqh8NcyCAnmUWgA2Q6G11lEkklRxmMATiwpoYJItoutLPohyw7uOOJgiBARimvDxD1w%2BE%2BDRA7Va9a6vUqhlsyCWBBIlnKZKyreQwlocu6mY1FVO9g8ti8Pj8ASCISwQ8sKpwrfwKVcbEMEyIIuTm/EIXQADltERNFYQISTIZaEU17Zt7v91hb/fkI%2Bj9qzxer4Tl2VT9WyWZAaWQZ9z1fQDVxAsDUGQb9T3PS9/QA%2BCIJ3KCQGTCJwKQ39UOva5aARAUGAACSWeRxCWABHRwMFUQQmFUZQVDYEIijYiBLgANSUQ5KComj6MY9BmNYlReFoBiaXQCBREuURBMoWi5KYlRBGxFMzQzLks3rZI2maJs%2BnzHSICQUt0HLe5UCrCAa0pbxqVpelGRbNsOy7DIYy8gch3kEcrQ1QkJ1ATxvF8fxAmCUIYOAkVbmnSC901Q9j0Iq8KnfB9WzSkVcrvfLbAIlCcqXdAVyS0DwMKzVEsfOqEPKv9/QqPCEIazqMLaoiyhIsjNn8TATAdcYSFoWgHTE%2BSnQAdkEB14k0YICAdAAqZjFpYHTU3NLVMxtKlGLpBkmQsnFrMMMsKwcvAnOSL4Ml%2Bf5AWBAKfO7fy%2BzbQdh1HYMUzOKcZxi%2Bd4qqmrHw3VKsPSipMp/CqOrDN8SqSnqMY/L8stR8p0aauD6oRoroaA5q%2Bvx9rCaXDDsa6xCaYGsMhv5TYAHpOYdaQAE99gdPmEQm27HW9DAsAdB4HXMQxfQdOwHTe0xAVU7n1Z5qZuieeXkBW5pkiYBxfAKUXTAsEgkpATWHUoVxXCdJ4niMwFGx6ZBnSeB1Iidp42UhR26loL3FenCb1rIH3vQdDAsgwWgEAdHRkEiWxFc9oTuejx1NECSIiGlrIc/NsxLFQaXYnifWTDsaqWgdBIZeQGPXcdPtUFIPoHSHCSs55hBU5MehuamAA3arDH2VAWii2d6WMTnIjMAhOenjvSDGdBOc0KbquPNvaE5zfHHMcw%2BaYAgMCt9AmHSKa1gkl0phybUmFQbRLFoO%2B7FP8/NdtgAJQABwOnlIYAA4mdB0FB0DjQ/pYB0IRq4237nbB2ftTo0nOoyUOvsvYBw5A6YOodPARxwAQKOLdHRxwTknFOacM4l1tnnVOxgi4lyMBbculc4ixBWnXcwDcm4V3AVA7BDpwhOGwD3TAttB5xBHpzHUKiWhuVcLJcSC8iDH1/l2TmRhbA5AcKgK2j5OZSOcKpVSq11oRymjNOaGBFqCFUg6dxxDtDp00fJCAthzwgAdKMZAlxAnBKdGoB0/jC6bSieeaxC0WCqX2npI6VobQqwBOgIE5lRSeiDCSBaLRYyGhJE8Q4C0FokhjGUKpuk0z6RhDaQYS5gZXRuEWKyJZjBlysI5LhvT/SQxCEwbWusrZMFOMgdAEQiTTNQPQCAmhMyaBCDSPmapVmpFQHzKImglQqjVFw9IbYoi2HPpmKYOhgBsC7OYegBkpib2AN2K0hQMCrgng8mEvxlSxE2NsEI0zUwwmCJoUxOztxTEzGgHARA1QT1QHnIcGhnnxQGAWSopw6B8RwLqYUao/rtk7D9Xs/YAbBSBi8CKYNopzjiouMFeQoAvVpbOJgJAzBMAiNoTQtAsCIpmGUMMYYXTALDJZVlqBgGjTgXYWwhgBVXgYMAlQKgFrYmuFPJKDz9CGERagU2zKSLVUpuuFKW4yYZWnP1SqeUsZWuKrjVstqOoU1gryBmjr3W1WpijWmvVSYvkan65CAbrhoEwOUE0qTLRNMYHbQB0gHRjL1rLG%2BEQHQQDtJgJ2rpLj6CuoGa8hwWiJhJImJ4YZKnAKeGU6twD6npjSfGlpOY8x5JjQwJ4jS9UsiLUqhZsMSRAA%3D diff --git a/etc/config/site-templates.yaml b/etc/config/site-templates.yaml new file mode 100644 index 000000000..bc1d9e7b4 --- /dev/null +++ b/etc/config/site-templates.yaml @@ -0,0 +1,35 @@ +meta: + screenshot_dimensions: + width: 1000 + height: 800 +templates: + - name: Diff of Two Sources + reference: | + z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAZgQDbYB2AhgLbYgDkAjF%2BTXRMiAZVQtGIHgBYBQogFUAztgAKAD24AGfgCsp5eiyahUAUgBMAIUtXyKxqiIEh1ZpgDC6egFc2TA3cAGQImbAA5PwAjbFIQC3IAB3QlYhcmL19/A2TU5yEQsMi2GLiEh2wndJEiFlIiTL8AnntsR3ymGrqiQojo2Pj7WvrG7JalYZ7QvpKBiwBKe3QfUlROLksAZlDUXxwAajNNjwA3SpJSI9wzLQBBG9uT9AJMfcx0AH0ldA4PgHcyABrCChIjzI42O4PJ4vfaJUjoNZKJQfYjYNhKCAYJgTfYTTAgEBnJxkI4eUFXSwANn2xPmhwA7JDbvtWfsWD4SHiAF6HTYAEVplQAdKludgIODNsy2ftBKQIPjCWLsB8iPsCHzBVoIRq%2BR4ebqCLZbPSzEyHrLZe8vj9VQDSMDiWYAKxWY0u/lSmVs838h5%2Bh5cRb0bgu/gBLg6cjobgeE3WPHLVbYQ4WTZ8chEbTBxaAkAurSGbjSfhsAtFyPR2NcfhKEBF7NR4PkOCwFAYHD4YhkSjUOiMVgcbiZwTCMQSTgyOTCZRqTTN8j6BJGExoBN2CpVVwQdyjAIWFrBabFUogBlJFJpIT7%2BItXLXpi9U8DC9bjpdEbeJp31rtaqTM%2B/RxG%2Bky3oeQzdEBswgYs3wrGs3BbDseypmSxIXJSUJ3DCrw2t8vwOsCoLegGOHPK88KItgyKokQ6KYtiuJKkS5ykscFKbNcFg0nSjI%2Bqy8oQByXJomw%2BwgEKqBmhadxWmy%2BF2v8QIgvRbCkXJvoMv6ULaUGIZhhGOYxnGG5JghaHphY/BNjo8yLEg2AsDgcSSsWXCluQ5aFuQVb8DWdYNlmOb2eQ%2BbSC6wpUgAnDw0VaFSWhaC6FiHtFmzuZsRmLgFwXNosbbIGgPyJAwsR9liJVlXEuzGMAPCbFoLQDvRpD1hAUTGVEoR1AAniO/AYGwHDCAA8kw9D9YuOBsHVkjTQQpDnAQZz1ou2DqJUnLrJmoJtMZ9AEFEpB9V4ODGUQpAEOWvAtjQRjAEoABqBDYH8o2JMwA0zqI4iSNOY6KCoGjGfoLSrqYG6GEd9aQIs6CJB0a0ALSjVlf7LTue7fmM5DHkUwE5FeHS3vexPpNBZ7jG0mOdGBOPNBj2501BJ6E%2BM9NZIzEyswTMFSHByaIS0l3YDtLahlw4a%2BcZNbqAAHFSyNUtI%2By1SY%2BwNcKWjCjw%2BwQPG1i2OQ%2BzdhcaYZibXhsKVjCkBbPDzDZIWth2VV2xVQ22wM6v1Y1zUMK17WdYu3WsKQU2ZkNI1EONk3GTNc3rNGhBLVUq3GRtW30d9e2S9Gh3HadWDJzZV03Xwiz3Swj0vW9H1fbdP0Tv9siA3OIOLsuhh1euRvWNDUSw25CNI9wqPo%2B%2B6RuEwngM4Es%2BUwMZN5OkpOXqvBRs/z1P/kIn4NPPu%2B0wfS9xBz3Trzz9RnwLSwWYMoviwZUvZdW3AK0rKtqxDmubNrut9aGxsAPU2hBzZbASPsa23t7aQKdnlOyrsQCEBoDQCqgMW5TjbvIDuC4C5IHrODQhqCaBEF6p9IKpBCGDGoUoUh5DKFaBftLPyJkuD8gIGg/Ydc/ixH2J/ZWqtfZ/wAXrE4SgBGKyET/OqoidaZlsrmcgjlnIDDcvmF00hhSNXllodK0VorSAZAyPRDIqTuU8uWHgSUZY5W4IFBISjQqS2snY9%2BtZEHKLOG1ae0ggA + - name: Diff of Two Compilers + reference: | + z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIM6SuADJ4DJgAcj4ARpjEINIADqgKhE4MHt6%2B/qRJKY4CIWGRLDFx0naYDmlCBEzEBBk%2BfgEVVQI1dQSFEdGx8ba19Y1ZLYNdoT0lfZIAlLaoXsTI7BwA9KsA1AAqAJ4JmBs7C8QbaFgbCLGYpBskG7SoTOgbhhuYqqwJ9AB0JhoAgqECBsFABHLx1TAQIEbBg%2BGYbEwAdisAI26I2xEwBEWDFhPg2ACp8SwTABmVH/ZEAEQ4c1onAArLw/BwtKRUJw3NZrCDjstEWYyTxSARNHS5gBrECMjT6TiSFnijmcXgKEBysVsumkOCwJBoFgJOixciUQ3G%2BhxYBcMxcPh0AixdUQKLKqKhOo7Tgiw1sQQAeQYtG92tIWBYhmA4jD%2BCxVQAbph1WH3pUvE6fbwgZgGWHaHgosQvR4sMqCMQ8Cws3MqAZgAoAGp4TAAdwD%2B1ZIv4ghEYnYUhkgkUKnUYd09oMRhQPMs%2BkL6sgc1QCXyDBTAFoA2SNhvI0sEOTqQpJTsDJLMGrc5U1y4GO5PE09MEJsVSnpcqkBMM/PbP2vujfPp7VaNcOiGR8shA682gYcDxiKXo4hAsYfz0BQxkApCJDmBR%2BQHUUsRWHh6SZJUw05DhVAADgANg3WjJA2YBkGQDZbW%2BLgNggblLGsG5cEIO5zGFG4PCNE0ThErgZl4LUtDmCADVQCSrTNCALUklApxtSQNDlGhaCdYgXTdMMPWYYhQ19FT/QIIMQ2VCMoxjdk4xvPAkxTdk02QDNiOzQRc2VAsixLDAVnZCsqxrPh6ybFt207LMh2EURxEHHt5CUNRlV0AIdJnPi51CxcIGXVc0k3bdd33ZBDzJY9T3PS9bBg28IFcND7RfRCpmQnJki/dJIN/Qa8jSLD%2BvQ9rqlQ0aZvsMDMNfbCUM6bqBk6Kb3xk%2BZFmWPQK0wALSI4ZlSFZdlKJo%2BjGNOHT2Mkb4NBe7jeKsOcNkEogpKFe0NnEy1YkFMkzFk0VxUUpB8CoKh1KyvsMukLKR1y/MEHVSdMdhqgCD2dg5WITHsmJhRcfx/YNTOi6rt4SjqTwOGNmbNsQduhimJYtiOK4hMFA2Dn7uQR6pBel65KhqUZTlPNFUu5VKLVbJ5IleUODMcjrtVSHtRmOYkxMtJ4iAA + - name: C++ Cmake + reference: | + z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCwBK6ADYB1HMgQt0AI1EA7AGYB7BlgJWiABxxb0qcSTPAAriWDpRABMQAiUAJkFwwTtvWmQHAHlvZEdkgDEXdDMSInQUBHR%2BdAAPdAJkkmNXLAtM%2Blh0QP0rVCCQADYazLaARgAWLtds3JBSHDMAOgJHRyxQBlscWnMCLW9AxsYABkXaDhJxgGUrb1QCPIYe3YTHLO3bLU9gNoWASiwIRubW4J7BgN%2BAFZ/sM8pxyOhxEtkLQJshisg5oxHKgrAArMrICC0BAkW60V5KLaUImUYgQ/hEcY4IjeIj8DAAR28OAwgQgADVeOpDqIEgA5ADUKgmgMJxNJJECgSKpXKyEqrmxuPxzJIGFJgq1gpxePQtAA9ARWat0FMZprtbr8QaMAQFV5XObHJatWNJtNHOKScSFTR0Mh%2BFpxmQgzhjKh1Th9cq9bQ1RridrBRYiMhAt7dis1htggwdrg9gczMdTud7oWbnd8w8nm1yRR3p8mvEfiAwv9ep1akMcnkMLQTmd9QaClotFY4QikQxSQAJbQTrCCgDuLS0gTAYFJpKYe6YpOkBUFvDMgVJWbMq3Wmxrhf2RyH5cu11uZgrjy89aiUSbX1bbQqJ2vwAJwgn2IA4JOnozpe165hWSwPiWT4XFclZvh%2BdZ5gwf4ti0bQDD2ALtls4EjFBEwILBhbZjeeYFkhxalsOjDoUsVbvnen7PDhrzvEs4IUPIqIYvaFZoiAfxmOgK4ZK4bRhD07xaIwgK2FxBZWIw0gYOggrhCo6HIPc/FYGQpGin0ADsIF9ICYRbICNl2c5WCqQwfQaRW2kLFg9BkSZNZNjAUChRASD2BsvD4aguD4MRoKjMWzo1FYZjIIcBAkK4UlEelyDCLQ6DyMUEkdO5TwhD%2BET%2BdomJQe%2BnxnmwVhrEQ749J0WSBFCMn8nSxhuCAQGOFYtD6I1rXtZ1nRjRNyCNX16ADUQQ2oCNdWuPajWHH6yDTXSs1bQ16V7eqyDLat62bXEF2HR1UmdHdqCXeMK2DcNKjvIOZYXIZ4zwfpqhsKmyBGi0ZoIKoygShKYQqIDObA2EYSUdDqM7sS4zIIK7oQK8BnWZESbamDIAgCiOMQOEYTyfp9gZVkMIgEogJsGYSjE1zLC08u/iBoEJAKgThIqCTJLWbzxK4e5aneXe2nuqlQU7E2kVWNFsXxRAiUQUJkLQrC8KItYGVZTleT9GlGVFSVZV3pJfw8SEpAUCdO3pfgPUPZ1WA9Vdn0bT0fzzZN6W%2B1JWBh4t6WB2tw0hx7sclvtkd/MV20p%2Bdr3xzdScvQdbVHVHhd54nyn%2BahjANoUVJmDSdIMugzKso0nLcryArCqK3qkii6KYrG%2BJ98SUoyiUZQVFU6AQAYhST/KiroK6gqUZ6q/K56o%2BUH6AthmYobBhGUYxvPspTwqM%2Br2DGYXip8tYJptjaQbUJxMb06q7LEUhJr6AxW%2BDrPWIwByoUNGOCcU5TYFQtrla2ZtCrFVKuVDsLtQgRCiMnRq3sWrF0en8AO71rrDTmuNcOZh07R3ISncuG1nr1U9qne6%2BC/aZ1Osw3OxCg4VULlQsu3CE70J%2BtXWcxIFzjisMuNcqANxbixpQfcB5iRHn0qec8MsH4MHUk/HyIAwF/QgYuScJssDf3Vn/LWQC8C60yEldeMwbaZWyvA/KttkEOwLJJIC6CarRHYUw3BgQqFEP6jwsCMcpqsKjpEuOgibpgQCdnNO0SM6MOSRdOhIBEkpJmqXfaWSQIiL%2BowAGV5kYGRUKDOIGAcgwx3AjJGN5KlsBqeMYA9S4aUDiMEEAbSvCCn3kLEWhMuYS2TD0imOALA1PQDkNeMyaaowMcOIxkjoG0zFuM7UsR2mClELjVQLAdTpimbMnIxhvAWH4PoNwwsWggwILiVA9TxarwwMgU4ZgTm9P6cACAByIDTIJMuQF/FVASx5vfOW2iFZaUgtBRx5iPgaysa2YBdiILoycXAq2bikH23KgMXxmDapJJwc1YJqT/ZnkKdQhaUS8mhxoUteJw1EnpN2rkkuaSs5csyWyjaOSWFMv8gUwV2TimsVnI0iwZ50AWEFGkBICR%2BBzgaSoDYtQZJKpVWqhRZSgYtL%2BZ0n03TTl9LQHsoZwsSAEwhQahGPVpnQo8jo5%2BWBtLYvMe8AoUphoE3MiAPoAAOCYfQI2RqjVGmFXksBEBAICMiHrfK2ACmY0yHxwrhQ1k4TIcUbH2Dza4DawAehbCAj2ZAbh6AQGMBWYw4x1QAE82K2EbdkVAzaEjGDEkFdCRbcgZQSGYLQra7wbEucANgOUtD0BfFgDYpBHQXALE0O0i0ABu%2BoKyL2SGhRYTMPIFmPpGLtrUNgVitQml87wLCPDoByaMK5OJtpxS4vFTi7YoMdptElkRarH3qFAJKYMsDbo2gwayPQVC4XeFYRwKd51MB6UcjBAHBCOUFEwBIKhsP3viC/CDqAcAbGAz9TlXtKUhNpRK5lDKI7UtiWYLJvKOE5yLqK8lZ1xVhKEfkkVPKxUCr4/nd4aBMBSS0e6vRDBBTFBDe0Jg7Q%2BiDIIAQQU5aJh4YgLpTABkEbKVsD6rAfqNgbUDRZQEIpnLtC2CBECYQQJbGsiGrYMHiWMDjQmvoWwrIhpUL55yAWgudBTYwNNIBAqZrgLAJAJwUjJGAbAj9eUv0ePKkBCT6BSNRxXJGRwbbpNwpfowJIiXcZWEVQppTKm1Maa0zp1qxa3AGZUN9YzplfVzPM/gLR3n2ztAmCHALYR2gjZUGNnoHZwt%2BXTci2LiAQB7vRTY9UdB5CeG0IcBAVgVweqLc4R4KdNsyS0DtvbXEB0OCO8NMt027A3fzfyCCflDv5vKxd/bb7F7UDoPo/U4DRzGOgf7OUe0mhcVsIg3FaXEHfs8bYJ2lUvDVVJdEID8AICgbTOB4aUGYNwc9YhxqyHUNqHQ1ELDOG8NMAIzYT1xHSM7sgO8VA3gMo0nQNIKwbVyNish6d7bu3vsLuy3lgrRWYUycVowXgcpkgtHk4p5TqngDqc0z0CYYRBQQDYH45cemUZGVeJ14K/XbAJva9p9rtu7d290bLubUWM3m6DYCLXgIvfe5997zoHlYOO/hX5EzFlbLhock5Fy9lHKAn94wMIlupJbGTbJs3astGJ6D6VkPXW8eoAml7PoQA%3D + - name: Preprocessor + reference: | + g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:6,positionColumn:1,positionLineNumber:6,selectionStartColumn:1,selectionStartLineNumber:6,startColumn:1,startLineNumber:6),source:'%23define+MUL(x,+y)+(x+*+y)+%0A%0Aint+mystery(int+a,+int+b)+%7B%0A++++return+MUL(a+%2B+b,+2)%3B%0A%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:30.466941342614383,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:pp,i:(clang-format:'1',editorid:1,filter-headers:'0',fontScale:14,fontUsePx:'0',j:1,treeid:'1'),l:'5',n:'0',o:'Preprocessor+Output+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.496476357000276,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:27.036582300385337,l:'4',m:100,n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4 + - name: LLVM IR + reference: | + g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:18,endLineNumber:6,positionColumn:18,positionLineNumber:6,selectionStartColumn:18,selectionStartLineNumber:6,startColumn:18,startLineNumber:6),source:'int+sum(int*+arr,+int+n)+%7B%0A++++int+value+%3D+0%3B%0A++++for(int+i+%3D+0%3B+i+%3C+n%3B+i%2B%2B)+%7B%0A++++++++value+%2B%3D+arr%5Bi%5D%3B%0A++++%7D%0A++++return+value%3B%0A%7D'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:25.411059109631243,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:ir,i:(compilerName:'x86-64+clang+14.0.0',editorid:1,fontScale:14,fontUsePx:'0',j:1,selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),treeid:'1'),l:'5',n:'0',o:'LLVM+IR+Viewer+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.23569365874194,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'-O3+-march%3Dskylake',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:32.353247231626824,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4 + - name: Pascal IDE + reference: | + z:OYLghAFBqd5TKALEAXATgU0wGgJYgQDGAtgIYDWmAgusAM4gDkTORA9iQA54A2m6ADJkAdsACuZYJgCSAExBcy9ImV5tx9VJwDy41F30AxPphFkSmZqwBmpxrExy829PJABaAIw47/dwBMvqbmliDkqEg24iJE9AD0EVExcQB0SvQ4oEwxLgDUSdGx9ACkAMwAQiUADNQ11HgiqAI2ZESY9fWamKW1ef0FZJFFcY2oNuVVtfWoAJ5cHX0DACoAskNIRin0eeUAInlEvMr0EMsyTS1tTjoARgBWmESoOHky65FbxQCU9QN5hluvDwRD%2B/wGI1QeHYIjyAGUAI6SLDEGFaPIicQkEBvS7SdDfHEXZr4yZg/pmORk6a1PDcfiWJpDaEiTq1SEsvJrDZfNKI5GYVEidGY7G4kkCQnizCkyr1W4yxrk%2BFIshYPIgfYYrF5ABU2pI1OolKN9UpqXqrDw9AuR3EciczGqVvo60acPY4nQ7WYXhdOgWIl9rGOYncGVUvG%2BOAgThc7DcCiCflkCjKwX4oSsmAAHhYuPxUnIuOgstZ8DbYrx7Y6mM6K26RB6vT66/7A06Q6JgO4WNHY85XO50yn3AAWDNmCxWQrbRIbEb0MY2dLKMssCu26sOhRthtkd2e71WJh%2BisBsydnChnu7pjfaPWgDC6yoAAV0OxHs9gzh7iAfBETAAHcTH8BQAFZo14ZgINYIM93YZhliwTBdgCMoz1QTsHxwCgQDKCDUmqMcAE4ADYAA4ymo6ovAAdi8ciJxgpgx3gq8kI3RhqhwbC237RAIBQDgHQAUUHBN8EIFMsxAXN80LYtSxsGFUDhSMrC8CdVKaABVehMDfHMr3/IIb0UZRIxwQz%2BGeFlCEpJ92GrEggx8SlBEaTAADksQVdAAIgnAuHYJcoRhZzXPckKwpcFkvKAvySACoKbMwOyIqbVA1VQKKsRi2yniyuEcvQVBEt8/yBDSrRcvytyAJssqKu85LUq8KCbKPVsS3YYB0AsPIFPpDo5Rpahul6ah/lnYplzyRo8jAJg5riedhm2ZdV3oFacGVNadiWlbDo25Jih2lbTVqAA3NVlV5RguQ%2BTZtiNBVgCVJZ%2BgAdXQFxMEEEQIBWgAJDLeHYV4foTXg5DABH72umaBkejUtW5T5tlSJ8sCGMaphR/oxJzFxnIddGygOR7Un5NVBTKX5xuNEQ5AtWp72vWCOMQ%2BS81GosSz4nCYxE9hxMk0sCAgWTp3CBc50O7aMl8NSNLULSdLUgyjJMvd/3TCyIzUdLMoc2NWYamLPLa6rAonULwpZK2msd%2BKYUq9qaonIr7JhUr6pcgqmt9kqWs9u2QB9lqXZ8OryojlLvejegepPXJUEGTb5qaCZmfqMYrnaNlqDmBZlXeHltl2KnFsudBWmL77wRKCCKiu%2BiKjIMgyiIW4AkozAPDKMpqluDwxy8UivA8MhKLHjwiFImxOv7mw5Ho0iqXovYrogvYS/BCEUiylUBSFEUsSJPFJWviV0CNf4TXz2lRsZHKspL81OdYuCcAQ%2BsSFTpK1zjtYWAloxIEwGQB0gUIDRnwsxVIpEILVEwuRJipFKID0IlzNirBsReGqLxABrAuKsB4uA50uFWIBAISAeiARiIQUotgwiARSKTwYvRf%2BnFyz8WoTGISKBcxPH0FJaWaoGBvlEBlOESB2DAQQmeDg3A%2BDMhhDIoCvB5GKOUawVRPB%2BCBRsFwIgZQAhBEMaYdAeh1IKKUb%2BURRBaAMHLM40qzgEK2DVppACWt9KGWMqZJqRsrIm2BLcBw8CcDsC4FlRgTAPCrD2BlLgSA8AULTr%2BLQXitFyIcfoviqEmrAUGlwYM0Fua8N5kwEmYjXB5BzJRciHhmJ5FMUQPIZRUhMICHkCAMiVAmy5KhdCmFvisAEfeSB0DYGECqfgnA2IAj0WQVw%2BizF6LVBYWw8iNTAHlkodMmhzAyg80ORuE50YboCCXDCKOQA%3D%3D + - name: Java IDE + reference: | + g:!((g:!((g:!((h:tree,i:(cmakeArgs:'',compilerLanguageId:java,customOutputFilename:'',files:!((editorId:1,fileId:1,filename:shapes/Square.java,g:'',isIncluded:'0',isMainSource:'1',isOpen:'0',langId:''),(editorId:2,fileId:2,filename:example.java,g:'package+myapp%3B%0A%0Apublic+class+example+%7B%0A%0A%7D',isIncluded:'0',isMainSource:'0',isOpen:'0',langId:java)),isCMakeProject:'1',j:1,newFileId:5),l:'5',n:'0',o:'Tree+%231',t:'0')),header:(),k:29.896907216494846,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((g:!((h:codeEditor,i:(filename:shapes/Square.java,fontScale:14,fontUsePx:'0',j:1,lang:java,selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:'package+shapes%3B%0A%0Apublic+class+Square+%7B%0A++++public+int+square(int+num)+%7B%0A++++++++return+num+*+num%3B%0A++++%7D%0A%7D%0A'),l:'5',n:'0',o:shapes/Square.java,t:'0'),(h:codeEditor,i:(filename:example.java,fontScale:14,fontUsePx:'0',j:2,lang:java,selection:(endColumn:1,endLineNumber:2,positionColumn:1,positionLineNumber:2,selectionStartColumn:1,selectionStartLineNumber:2,startColumn:1,startLineNumber:2),source:'import+shapes.*%3B%0A%0Aclass+Main+%7B%0A++++public+static+void+main(String%5B%5D+args)+%7B%0A++++++++Square+sq+%3D+new+Square()%3B%0A++++++++int+val+%3D+sq.square(args.length)%3B%0A++++++++System.out.println(%22Answer:+%22+%2B+Integer.toString(val))%3B%0A++++%7D%0A%7D'),l:'5',n:'0',o:example.java,t:'0')),k:80.08193737395916,l:'4',m:60.81932773109243,n:'0',o:'',s:1,t:'0'),(g:!((h:executor,i:(argsPanelShown:'0',compilationPanelShown:'1',compiler:java1601,compilerOutShown:'0',execArgs:'hello+world',execStdin:'',fontScale:14,fontUsePx:'0',j:1,lang:java,libs:!(),options:'',source:'1',stdinPanelShown:'1',tree:1,wrap:'1'),l:'5',n:'0',o:'Executor+jdk+16.0.1+(Java,+Tree+%231)',t:'0')),header:(),l:'4',m:39.18067226890757,n:'0',o:'',s:0,t:'0')),k:70.10309278350515,l:'3',n:'0',o:'',t:'0')),l:'2',n:'0',o:'',t:'0')),version:4 + - name: Ada IDE + reference: | + z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkDWBA9kQA44A26qAMiQB2wAK4lg6AJIATECRkkWo2snYB5Ucg5aAYj3RCSRdI2YAzA/VjoZONalkgAjFku8nAJjcGjJkOgAHsYcvAB0CgBGWKBMuLRSQgTcojK2jAAMzDi0ALIkOEIAyqyiqASmDFnx6hyGmczcwsBOTACUWBC29qyOct7u0nIAzD68fqbmrKwRMrQxZvGJyanpVdl5BcWl5ZXOG7X161hNIq0MHV12Dk6jg04ALGOGxpPTs9GxG8spaXLHOXyhRKZQqjH2NTqQgaJ2a50u3RucgAtK57nIAKzPCYgQo6ZBhZCBZALBjOTzDACkGUoFIe1MozgynnpNO%2BSV%2Ba2qgK2IN24IOUIFsLOcgUJDaHRyAGF8hQAAqoVgAK3QBGQwuVLiwQnQAHd9B45AA2DrcRgY5jQ46sRgAFQw6AA1JSKRCNetJVgyC4ABxhB7OB4PACcxoyvoxAHZjc5hsNjSdGA9mEQXBkMjqYba4vRMx6spcYFBixAkGw0gBRa69XD4QY4qYzBTzKZCZBFAgkXguJ5t5AAVVo6HlgRhWu8p1A4qww946pwrGhXSEMmlrBSRGhrkMMn4hXQADlRERInwQN4OKxaPZF0J15vt1grzfkHf97rj6fz9452q30uRTICQqDIA%2BJ5Pn%2BC6AcBoEfkeJ5nqgF6zrBYEbhB2qqCByDwV%2BSEXh0tA7GCDB6vYCBOpQihhHaQTIAA%2BlI6iUsMABCTqcVxXEqM61EkLR9FMSx7EMgyHAkAQZASM6ujTE6OQMpx5iiEkAFCE6uQAJ4MboqkEE6ECUE6IBOokyDoJIqCsRxuimYa6AMXaWl1G0ToYMgZQaeZll8DZDK7k6cmsDZFxJgwlpZjaIBNrM8wFhcHQIOgCjnhAHQ%2BsMzhhMaYZxsanhBr6GaeIm5oMCmWBpp4GJhMyIbBsaDwZFGGLDL6ni%2BlF1Q5sweZYAlRbwGWIAVug1Y9KgdYQA2rwBMEnDhFEbhLh2XY9kGK3tkOI5jscWquFO8iKLO6Dzup%2BC7uBW4gBi3i7nhiHnlGz7XreS7XdCd2va%2B74Hvhz2nedd5AThn23b%2BZ3/iDaGPd%2ByEvdhoHg99SO4f9T0I0RJGVORyCUfxgnEsJNlOrxVE0XRxPMf5NJ45RwWk%2BTjOiTSHBKhUMhlM6lYLaEzqKTSnF2UFBhOS56C05QZ7AIUSlOocGkQLoWBmUIukGKrrqeHiWiEsS2ttFLnHyloDHwYZ2t2slTpCJjTrmEqRBBdMpnay6pWaTpelJIZoxBW0YAMFIpCSEbrOUIFvMhLwoVmhaVrZvNMfoB8A0NF6yWpch6XhZVabxmE0YZMarVMhiDyRhSibWj1iz9YNnSluWrBVjWU14DNvhzbFy39p23amJt/Y7aO44gKMR0zlBF0rmuGE3c4IZYA9GPwy4rgvu994L9uy9b%2BpcMEc4rgzzDYO7y4y9nzBOFH%2BeJ%2BoRfj5X0/cFr8fzjY6CuMURTAlU0YjTdi3FQHk0JoAkmEd6b/zCD5KyTkhLAI4uAmi8C%2BCIOpiJNiYk2aSWkpIJ0kRW5aRdqwBStB5YqTUneL2ul9KGWMqZdB1kQEiwcuLVy7l0CeVQN5dsvlUAUPlpxSgBADLMIEVZEyrEAAiToMjGyIZZOWQsuJ6gQAYQyQhWDIFgZA5iYRKyrgYuocwGteCGV0JKJ03BpgcBEVxAA4jw5WqsxEEHDjgtRnFAp2NYA4iO3EPJeSoh7DiHilGBW0vQpIUtAoszYmFcqkVa7MFtL3GQ0RBpJRSmkHO8cKqphAIGMIwwQwhl9FGX0ldcoxixGkrAvVZwgHzBnDKEMwiRmcMaXpnUoyeEGU1cKwxE7RTiI3OAsBm4gFKNoLQ002CcAMKgQ8c0GCBF9MaZETUnTACMHo8kYRPAWFWgPDafZVqjz2tUA6A1HQ4DkK4PUqASAcAFIU1JScGCaHmXo1g5gnSbO2bs/ZJBDmeGOYZdcyzeBCNdFlNozAcnegvCGIuWUKTlIxLGDI5Swx52KYMspUYQylRDAMkMGQQzDAyA075fVWnp09E3YaLdYV8EWewLgcKQBguQOSbwaQABuOAKgADUcD6kVsKdwFlUD0AgJEGEkRCggS0sKJZJh2zqCENwDVxw0ikBED2Q1OAMALmFegegxwghqi0JUbkAjyrVG4DgSIrzUBaXXGkGEaAcBpjJGFcwTQ6CSulUKINW01qD17NG6549DrNGOkoN1kRrC5wCepG1fUobQWXFdS%2BO5Vz32QpvN66lwblt%2BkuUtWE83qVBsjItQNoa33fp%2BTGWE0JVrfujTt68v73MwC4T5Yy64MCBVsnZDw9kHKdEczwhkHSYA9oi5F7SsBZ3yfgQp%2BcQBRijDlTwLVaWeCjNSkuIZ6XjMZW0z0HTOphCjPGX0wwYznoyD05kIzx3pMWCi8qJzur/omZuq1Cq7wlKAA%3D + - name: Android Java IDE + reference: | + z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCxboARgFdgDLAQD2RAA44ANulTiSAO2DaSwdKIAmIO69SGcrpgCsSADcSA21aZGMAeW1kE1iAMQt0WxIidEZ9ADNk%2Blh0VxxI1DcQAEYsHMtSiqqUtIyTbzqAOibDLJbkAA9kLFAGfRxaUVsCc21XAsYyodoOEhxbAGVDbVQCDIZZ3FookxTGAAZ9cztgUsGASiwIAqLDEvcAJkrk0te61PSQdG60kyWFqBEL9TK7UbjSbTBgnXYLJardabY5zfaHWGnc6XBg3O6FYqlFRvaruAAsJPqP3aDhIqFcLQIWWAYMGELGEym7m2cwRKzWGy2O2G6NsqKwZ3sOKuN2GnHI6Hk3n86AIyBm%2Bn85SwtnQAHckqSQABWG7mRjG/RizFYQyMaQYdAAaiUzxUO3VmJlWAQ6BIU1Q%2BBuZBAzyOLQAbFGVM8I0cI2SybHjSpjRLGGSreK7Wz6EcsJ6TniYIgQEYprwCY9cPgvg0QO1Wo2ur1KoZbMhlgQSJZyhSsu3kMJaIruuKtRVJaBPN5fAFgqER5Y1Th2/gUq42IYJkQxRUN%2BIlugAHLaIiaKwgCkmQy0Iqr2xbnd7rA3u/IB%2BH3Wn8%2BXilL1UP3bZZkDpZAnzPF8AJXYDQNQZAvxPM8L0Df84PA7dIO1CIwMQn8UKvG5aAFFEGAACWWeRxGWABHRwMFUQQmFUZQVDYJYihYiArgANSUI5KAoqjaPo9BGOYlReFoOi6XQCBRCuUR%2BMoaiZIYlRBGU3F0wYS0dWzBtmmSNpmhbPpC20iAkHLdBKweVAawgOtqW8Wl6UZZk2w7LsewyMp%2B0HYdR3HEBiSnDxbC8Hw/BBRd0GXICxTuSKIN3ULiQPI98MvCo33vdtUrFFRiTyxK8OQnKsGgxKQLAwr0qq%2BLAIfWr4PK39AwqHD4Pq4qqvQ9qCLKIiSK2JgKHQEwnXGEhaFoJ0RNkl0AHZBCdeJNHMHACCdAAqRiVpYbTzV0rMbTtGl6IZJkWQsvFrMMCsqwcvAnOSb4Mj%2BAEgVirzO27Xt/L%2BoL5DHG0tVecKZ2i%2BdQWqh91xSzC0teTLvwqzrltfW98sfZGxVeUrPyyjHyix%2BHYLq/HQ0ahKWoGkmOrJ/qqefGnuoQxmhuWkbkS2AB6fmnWkABPA4nRFgVpse51fQwLAnUeJ1zEMf0nTsJ0vtMIFlMF3WhambpnlV5B1qMywmAcXwCml0wLBIRKQH1p1KFcVwXWeZ5G2M5semQV1nidSIPeeSFORtupaAD9XIumraCDIIPfSdDAsgwWgECdHRkEiWx1f9gTBaT51NEMHPjEVrJi9tsxLFQRXYniU2TDseKWidBIleQZPvcsJ0B1QUg%2BidEcxMLoWEBzkx6EFqYgniwwDlQFpod8RljH5yIzAIfml4H0gxnQfnNFm%2BKj179BaH5g/HHMcwRaYAgMAd9AmHSWb1jEt0phyXUmFQbQlhaBvzsLfe%2B%2BtnYACUAAcTolSGAAOJXSdBNKaAC%2B5LCbk7ceLs3Yh0unSa6zJo7BwDmHaE7tI7R08HHbaidu7OlTunTO2dc752rs7Uu5ciCV2rkYO2dcG5xFiOtVu5h26d3rvApBhCnThCcNgEemBnaTziDPfmepNEtDcq4aSol15EGvqAns/MjC2ByA4VADsHz83kc4ZSykZpzQWmpZ0ShVrKSdF49a2hNrbRHqBD8O0limz0bJCAISnS2DPFcFamkBLeMSSndAyB1h52iTw3aUSzyMU8d49xLAHHLUKQJY6Fozo7DtFrQE6BgQLgLKib0IZEwtCOAATjKG0540DirPDaSoeMQMTqZn0udcE9BXh3VuCWKyZZjC1ysI5fhCzAyxSYIbY2DsmBnGQJfPoVRdmoHoBATQ4pNBLDpCLDUWBzmpFQCLKImgVRqmufw9IHYoi2HvuKKYOhgBsB7OYegPIsBTAPsAXsNpCgYBXPPYFcI/iqliEKIYHZ4rii2poKx9ytxTHFGgHARBrnz1QKXEcGhwVbXsI0yoZw6A8RwPqUU1yBzeQBn5AKHYQZgzhBDCU5wIpRTnL9TFeQoAfUFbOPwJAzBMAiL42gWASUzDKFGN00CIyWQlagaB41MAt1sLYQwSrLwMB6SoZauIbiL0SsC/QhgSWoGtmKoiTUYJJQ3PVfckVBqVSJgVamuUcZlS5pVCmKx0Jetps1SmbVQ2dRZj1QNibOboyZsNAsjpyhmnKaMuEOYXaQOkE6DZJtlYvwiE6CADpMAe3dFcfQd1gyhWNC0Z4ZIyjLTJMaOMsYkwap0iM60%2BbxkgHzE2nSzwzojrZBOkld41xkiAA%3D%3D%3D + - name: Android Kotlin IDE + reference: | + z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCxboARgFdgDLAQD2RAA44ANulTiSAO2DaSwdKIAmIO69SGcrpmUNkcxxbA21aZGMAeW1kE1iAMQt0WxIidEZ9ADNk%2Blh0VxxI1DcQAEYsHMtSiqqUtIyTbzqAOibDLJbkAA9kLFAGfRxaUVsCc21XAsYyodoOEhCAZUNtVAIMhlncWiiTFMYABn1zO2BSwYBKLAgCosMS9wAmSuTSl7rU9JB0brSTSwtMh9AZzUbjSbTBjHHYLZardabGHDPYHaEnM4XBjXW6FYqlFSvaruAAsRPq33aDhIqFcLQIWWA/UyO3BEym7i2czhthWaw2MzmqNsRwx9ixl2uw045HQ8m8ACt0ARkIKsArylhbOgAO5JYkgACs13MjEN%2BhF6KwhkY0gw6AA1Eoniptqr0ZKsAh0CQpqh8NcyCAnmUWgA2Q6G11lEkklRxmMATiwpoYJItoutLPohyw7uOOJgiBARimvDxD1w%2BE%2BDRA7Va9a6vUqhlsyCWBBIlnKZKyreQwlocu6mY1FVO9g8ti8Pj8ASCISwQ8sKpwrfwKVcbEMEyIIuTm/EIXQADltERNFYQISTIZaEU17Zt7v91hb/fkI%2Bj9qzxer4Tl2VT9WyWZAaWQZ9z1fQDVxAsDUGQb9T3PS9/QA%2BCIJ3KCQGTCJwKQ39UOva5aARAUGAACSWeRxCWABHRwMFUQQmFUZQVDYEIijYiBLgANSUQ5KComj6MY9BmNYlReFoBiaXQCBREuURBMoWi5KYlRBGxFMzQzLks3rZI2maJs%2BnzHSICQUt0HLe5UCrCAa0pbxqVpelGRbNsOy7DIYy8gch3kEcrQ1QkJ1ATxvF8fxAmCUIYOAkVbmnSC901Q9j0Iq8KnfB9WzSkVcrvfLbAIlCcqXdAVyS0DwMKzVEsfOqEPKv9/QqPCEIazqMLaoiyhIsjNn8TATAdcYSFoWgHTE%2BSnQAdkEB14k0YICAdAAqZjFpYHTU3NLVMxtKlGLpBkmQsnFrMMMsKwcvAnOSL4Ml%2Bf5AWBAKfO7fy%2BzbQdh1HYMUzOKcZxi%2Bd4qqmrHw3VKsPSipMp/CqOrDN8SqSnqMY/L8stR8p0aauD6oRoroaA5q%2Bvx9rCaXDDsa6xCaYGsMhv5TYAHpOYdaQAE99gdPmEQm27HW9DAsAdB4HXMQxfQdOwHTe0xAVU7n1Z5qZuieeXkBW5pkiYBxfAKUXTAsEgkpATWHUoVxXCdJ4niMwFGx6ZBnSeB1Iidp42UhR26loL3FenCb1rIH3vQdDAsgwWgEAdHRkEiWxFc9oTuejx1NECSIiGlrIc/NsxLFQaXYnifWTDsaqWgdBIZeQGPXcdPtUFIPoHSHCSs55hBU5MehuamAA3arDH2VAWii2d6WMTnIjMAhOenjvSDGdBOc0KbquPNvaE5zfHHMcw%2BaYAgMCt9AmHSKa1gkl0phybUmFQbRLFoO%2B7FP8/NdtgAJQABwOnlIYAA4mdB0FB0DjQ/pYB0IRq4237nbB2ftTo0nOoyUOvsvYBw5A6YOodPARxwAQKOLdHRxwTknFOacM4l1tnnVOxgi4lyMBbculc4ixBWnXcwDcm4V3AVA7BDpwhOGwD3TAttB5xBHpzHUKiWhuVcLJcSC8iDH1/l2TmRhbA5AcKgK2j5OZSOcKpVSq11oRymjNOaGBFqCFUg6dxxDtDp00fJCAthzwgAdKMZAlxAnBKdGoB0/jC6bSieeaxC0WCqX2npI6VobQqwBOgIE5lRSeiDCSBaLRYyGhJE8Q4C0FokhjGUKpuk0z6RhDaQYS5gZXRuEWKyJZjBlysI5LhvT/SQxCEwbWusrZMFOMgdAEQiTTNQPQCAmhMyaBCDSPmapVmpFQHzKImglQqjVFw9IbYoi2HPpmKYOhgBsC7OYegBkpib2AN2K0hQMCrgng8mEvxlSxE2NsEI0zUwwmCJoUxOztxTEzGgHARA1QT1QHnIcGhnnxQGAWSopw6B8RwLqYUao/rtk7D9Xs/YAbBSBi8CKYNopzjiouMFeQoAvVpbOJgJAzBMAiNoTQtAsCIpmGUMMYYXTALDJZVlqBgGjTgXYWwhgBVXgYMAlQKgFrYmuFPJKDz9CGERagU2zKSLVUpuuFKW4yYZWnP1SqeUsZWuKrjVstqOoU1gryBmjr3W1WpijWmvVSYvkan65CAbrhoEwOUE0qTLRNMYHbQB0gHRjL1rLG%2BEQHQQDtJgJ2rpLj6CuoGa8hwWiJhJImJ4YZKnAKeGU6twD6npjSfGlpOY8x5JjQwJ4jS9UsiLUqhZsMSRAA%3D diff --git a/etc/scripts/generate_site_template_screenshots.ts b/etc/scripts/generate_site_template_screenshots.ts index 053ace821..dceb77508 100644 --- a/etc/scripts/generate_site_template_screenshots.ts +++ b/etc/scripts/generate_site_template_screenshots.ts @@ -29,17 +29,15 @@ * - Run with npx ts-node-esm generate_site_template_screenshots.ts */ +import * as fsp from "node:fs/promises"; +import * as fss from "node:fs" + import * as puppeteer from "puppeteer"; -import * as fs from "fs"; +import * as yaml from 'yaml'; const godbolt = "https://godbolt.org"; const output_dir = "../../views/resources/template_screenshots"; -const config = "../config/site-templates.conf"; - -const defaultViewport = { - width: 500, - height: 500 -}; +const config = "../config/site-templates.yaml"; // Note: Hardcoded, may need to be updated in the future // array of pairs [theme, colourScheme] @@ -65,22 +63,6 @@ function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -function splitProperty(line: string) { - return [line.substring(0, line.indexOf('=')), line.substring(line.indexOf('=') + 1)]; -} - -function partition(array: T[], filter: (x: T) => boolean) { - const pass: T[] = [], fail: T[] = []; - for(const item of array) { - if(filter(item)) { - pass.push(item); - } else { - fail.push(item); - } - } - return [pass, fail]; -} - async function PromisePoolExecutor(jobs: (() => void)[], max_concurrency: number) { async function worker(iterator: IterableIterator<[number, () => void]>) { for(const [_, job] of iterator) { @@ -94,10 +76,13 @@ async function PromisePoolExecutor(jobs: (() => void)[], max_concurrency: number // end utils -async function generate_screenshot(url: string, output_path: string, settings) { +async function generate_screenshot(url: string, output_path: string, settings, width: number, height: number) { const browser = await puppeteer.launch({ dumpio: true, - defaultViewport + defaultViewport: { + width, + height, + } }); const page = await browser.newPage(); await page.goto(godbolt); @@ -121,40 +106,31 @@ async function generate_screenshot(url: string, output_path: string, settings) { } (async () => { - const [meta_directives, templates] = - partition( - fs - .readFileSync(config, "utf-8") - .split("\n") - .filter(l => l !== "") - .map(splitProperty) - .map(pair => [pair[0], pair[1].replace(/^https:\/\/godbolt.org\/#/, "")]) - .map(([name, data]) => [!name.startsWith("meta.") ? name.replaceAll(/[^a-z]/gi, "") : name, data]), - ([name, _]) => name.startsWith("meta.") - ); - if(new Set(templates.map(([line, _]) => line)).size !== templates.length) { // quickly check there are no name conflicts + const { meta, templates } = yaml.parse(await fsp.readFile(config, "utf-8")); + const names = templates.map((template) => template.name) + + // Quickly check there are no name conflicts + if(names.length !== new Set(names).size) { console.log("Error: Conflicting cleaned names"); process.exit(1); } - for(const [k, v] of meta_directives) { - if(k === "meta.screenshot_dimensions") { - const [w, h] = v.split("x").map(x => parseInt(x)); - defaultViewport.width = w; - defaultViewport.height = h; - } - } - if(!fs.existsSync(output_dir)) { - fs.mkdirSync(output_dir, { recursive: true }); + const width = parseInt(meta.screenshot_dimensions.width); + const height = parseInt(meta.screenshot_dimensions.height); + + if(!fss.existsSync(output_dir)) { + await fsp.mkdir(output_dir, { recursive: true }); } const jobs: (() => void)[] = []; - for(const [name, data] of templates) { + for(const { name, reference } of templates) { for(const [theme, colourScheme] of themes) { const path = `${output_dir}/${name}.${theme}.png`; - if(!fs.existsSync(path)) { + if(!fss.existsSync(path)) { jobs.push(() => generate_screenshot( - `${godbolt}/e#${data}`, + `${godbolt}/e#${reference}`, path, - Object.assign(Object.assign({}, defaultSettings), {theme, colourScheme}) + Object.assign(Object.assign({}, defaultSettings), {theme, colourScheme}), + width, + height, )); } } diff --git a/lib/handlers/api/site-template-controller.ts b/lib/handlers/api/site-template-controller.ts index 03333bd86..2cf009411 100644 --- a/lib/handlers/api/site-template-controller.ts +++ b/lib/handlers/api/site-template-controller.ts @@ -24,6 +24,7 @@ import express from 'express'; +import {SiteTemplateResponse} from '../../../types/features/site-templates.interfaces.js'; import {getSiteTemplates} from '../../site-templates.js'; import {cached, cors} from '../middleware.js'; @@ -37,7 +38,9 @@ export class SiteTemplateController implements HttpController { } public async getSiteTemplates(req: express.Request, res: express.Response) { - const templates = await getSiteTemplates(); - res.send(templates); + const {meta, templates} = await getSiteTemplates(); + const flattened = Object.fromEntries(templates.map(({name, reference}) => [name, reference])); + + res.send({meta, templates: flattened} satisfies SiteTemplateResponse); } } diff --git a/lib/site-templates.ts b/lib/site-templates.ts index 56068a1af..a864c89f0 100644 --- a/lib/site-templates.ts +++ b/lib/site-templates.ts @@ -25,13 +25,13 @@ import * as fsp from 'node:fs/promises'; import path from 'node:path'; -import _ from 'underscore'; +import yaml from 'yaml'; -import {SiteTemplatesType} from '../types/features/site-templates.interfaces.js'; +import {SiteTemplateConfiguration} from '../types/features/site-templates.interfaces.js'; -let siteTemplates: SiteTemplatesType; +let siteTemplates: SiteTemplateConfiguration; -export async function getSiteTemplates(): Promise { +export async function getSiteTemplates(): Promise { siteTemplates ??= await loadSiteTemplates('etc/config'); return siteTemplates; } @@ -41,17 +41,7 @@ export async function getSiteTemplates(): Promise { * * The configuration keys that start with "meta" are returned as metadata keys in the 0th element of the returned tuple */ -async function loadSiteTemplates(configDir: string): Promise { - const config = await fsp.readFile(path.join(configDir, 'site-templates.conf'), 'utf8'); - const properties = config - .split('\n') - .filter(l => l.length > 0) - .map(property => { - // Rison does not have equal signs in its syntax, so we do not need to account for any trailing equal signs - // after the first one. - const [name, value] = property.split('='); - return [name, value] as const; - }); - const [meta, templates] = _.partition(properties, ([name]) => name.startsWith('meta.')); - return {meta: Object.fromEntries(meta), templates: Object.fromEntries(templates)}; +async function loadSiteTemplates(configDir: string): Promise { + const config = await fsp.readFile(path.join(configDir, 'site-templates.yaml'), 'utf8'); + return yaml.parse(config); } diff --git a/static/widgets/site-templates-widget.ts b/static/widgets/site-templates-widget.ts index 86a51e070..17dcc8ec2 100644 --- a/static/widgets/site-templates-widget.ts +++ b/static/widgets/site-templates-widget.ts @@ -24,7 +24,7 @@ import $ from 'jquery'; -import {SiteTemplatesType, UserSiteTemplate} from '../../types/features/site-templates.interfaces.js'; +import {SiteTemplateResponse, UserSiteTemplate} from '../../types/features/site-templates.interfaces.js'; import {assert, unwrap, unwrapString} from '../assert.js'; import {Settings} from '../settings.js'; import * as url from '../url.js'; @@ -38,7 +38,7 @@ class SiteTemplatesWidget { private readonly img: HTMLImageElement; private readonly siteTemplateScreenshots: any; private readonly alertSystem: Alert; - private templatesConfig: null | SiteTemplatesType = null; + private templatesConfig: null | SiteTemplateResponse = null; private populated = false; constructor( siteTemplateScreenshots: any, @@ -77,7 +77,7 @@ class SiteTemplatesWidget { } async getTemplates() { if (this.templatesConfig === null) { - this.templatesConfig = await new Promise((resolve, reject) => { + this.templatesConfig = await new Promise((resolve, reject) => { $.getJSON(window.location.origin + window.httpRoot + 'api/siteTemplates', resolve); }); } @@ -104,7 +104,7 @@ class SiteTemplatesWidget { async setDefaultPreview() { const templatesConfig = await this.getTemplates(); // by the time this is called it will be cached const first = Object.entries(templatesConfig.templates)[0][0]; // preview the first entry - this.img.src = this.getAsset(first.replace(/[^a-z]/gi, '')); + this.img.src = this.getAsset(first); } populateUserTemplates() { const userTemplates: Record = JSON.parse(localStorage.get('userSiteTemplates', '{}')); @@ -139,9 +139,7 @@ class SiteTemplatesWidget { // Note: Trusting the server-provided data attribute siteTemplatesList.append( `
  • ` + - `
    ${escapeHTML( - name, - )}
    ` + + `
    ${escapeHTML(name)}
    ` + `
  • `, ); } diff --git a/test/handlers/site-templates-tests.ts b/test/handlers/site-templates-tests.ts index c1875add4..e5bb9c4eb 100644 --- a/test/handlers/site-templates-tests.ts +++ b/test/handlers/site-templates-tests.ts @@ -16,7 +16,8 @@ describe('Site Templates Backend', () => { it('should load site templates properly', async () => { const templates = await getSiteTemplates(); // not super comprehensive - expect(templates.meta).toHaveProperty('meta.screenshot_dimensions'); + expect(templates.meta.screenshot_dimensions).toHaveProperty('width'); + expect(templates.meta.screenshot_dimensions).toHaveProperty('height'); expect(Object.entries(templates.templates).length).toBeTruthy(); }); diff --git a/types/features/site-templates.interfaces.ts b/types/features/site-templates.interfaces.ts index 4f8b51023..a58264b47 100644 --- a/types/features/site-templates.interfaces.ts +++ b/types/features/site-templates.interfaces.ts @@ -23,10 +23,21 @@ // POSSIBILITY OF SUCH DAMAGE. export type SiteTemplatesMetadata = { - screenshot_dimensions?: string; + screenshot_dimensions: { + width: number; + height: number; + }; }; -export type SiteTemplatesType = { +export type SiteTemplateConfiguration = { + meta: SiteTemplatesMetadata; + templates: { + name: string; + reference: string; + }[]; +}; + +export type SiteTemplateResponse = { meta: SiteTemplatesMetadata; templates: Record; }; diff --git a/views/resources/template_screenshots/Ada IDE.dark.png b/views/resources/template_screenshots/Ada IDE.dark.png new file mode 100644 index 000000000..a85714389 Binary files /dev/null and b/views/resources/template_screenshots/Ada IDE.dark.png differ diff --git a/views/resources/template_screenshots/Ada IDE.darkplus.png b/views/resources/template_screenshots/Ada IDE.darkplus.png new file mode 100644 index 000000000..8b6742468 Binary files /dev/null and b/views/resources/template_screenshots/Ada IDE.darkplus.png differ diff --git a/views/resources/template_screenshots/Ada IDE.default.png b/views/resources/template_screenshots/Ada IDE.default.png new file mode 100644 index 000000000..54eca0715 Binary files /dev/null and b/views/resources/template_screenshots/Ada IDE.default.png differ diff --git a/views/resources/template_screenshots/Ada IDE.onedark.png b/views/resources/template_screenshots/Ada IDE.onedark.png new file mode 100644 index 000000000..8092ce1f9 Binary files /dev/null and b/views/resources/template_screenshots/Ada IDE.onedark.png differ diff --git a/views/resources/template_screenshots/Ada IDE.pink.png b/views/resources/template_screenshots/Ada IDE.pink.png new file mode 100644 index 000000000..91d8f2e2d Binary files /dev/null and b/views/resources/template_screenshots/Ada IDE.pink.png differ diff --git a/views/resources/template_screenshots/Ada IDE.real-dark.png b/views/resources/template_screenshots/Ada IDE.real-dark.png new file mode 100644 index 000000000..907115038 Binary files /dev/null and b/views/resources/template_screenshots/Ada IDE.real-dark.png differ diff --git a/views/resources/template_screenshots/AdaIDE.dark.png b/views/resources/template_screenshots/AdaIDE.dark.png deleted file mode 100644 index 7710ac466..000000000 Binary files a/views/resources/template_screenshots/AdaIDE.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/AdaIDE.darkplus.png b/views/resources/template_screenshots/AdaIDE.darkplus.png deleted file mode 100644 index 8361145b1..000000000 Binary files a/views/resources/template_screenshots/AdaIDE.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/AdaIDE.default.png b/views/resources/template_screenshots/AdaIDE.default.png deleted file mode 100644 index 4b831f0ca..000000000 Binary files a/views/resources/template_screenshots/AdaIDE.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/AdaIDE.onedark.png b/views/resources/template_screenshots/AdaIDE.onedark.png deleted file mode 100644 index 60a8f1296..000000000 Binary files a/views/resources/template_screenshots/AdaIDE.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/AdaIDE.pink.png b/views/resources/template_screenshots/AdaIDE.pink.png deleted file mode 100644 index 622232bb2..000000000 Binary files a/views/resources/template_screenshots/AdaIDE.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/AdaIDE.real-dark.png b/views/resources/template_screenshots/AdaIDE.real-dark.png deleted file mode 100644 index f6b32447b..000000000 Binary files a/views/resources/template_screenshots/AdaIDE.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/Android Java IDE.dark.png b/views/resources/template_screenshots/Android Java IDE.dark.png new file mode 100644 index 000000000..599c9ce77 Binary files /dev/null and b/views/resources/template_screenshots/Android Java IDE.dark.png differ diff --git a/views/resources/template_screenshots/Android Java IDE.darkplus.png b/views/resources/template_screenshots/Android Java IDE.darkplus.png new file mode 100644 index 000000000..1df462017 Binary files /dev/null and b/views/resources/template_screenshots/Android Java IDE.darkplus.png differ diff --git a/views/resources/template_screenshots/Android Java IDE.default.png b/views/resources/template_screenshots/Android Java IDE.default.png new file mode 100644 index 000000000..a5f47915b Binary files /dev/null and b/views/resources/template_screenshots/Android Java IDE.default.png differ diff --git a/views/resources/template_screenshots/Android Java IDE.onedark.png b/views/resources/template_screenshots/Android Java IDE.onedark.png new file mode 100644 index 000000000..df9028d4c Binary files /dev/null and b/views/resources/template_screenshots/Android Java IDE.onedark.png differ diff --git a/views/resources/template_screenshots/Android Java IDE.pink.png b/views/resources/template_screenshots/Android Java IDE.pink.png new file mode 100644 index 000000000..fe7586bf1 Binary files /dev/null and b/views/resources/template_screenshots/Android Java IDE.pink.png differ diff --git a/views/resources/template_screenshots/Android Java IDE.real-dark.png b/views/resources/template_screenshots/Android Java IDE.real-dark.png new file mode 100644 index 000000000..1df462017 Binary files /dev/null and b/views/resources/template_screenshots/Android Java IDE.real-dark.png differ diff --git a/views/resources/template_screenshots/Android Kotlin IDE.dark.png b/views/resources/template_screenshots/Android Kotlin IDE.dark.png new file mode 100644 index 000000000..7491757bb Binary files /dev/null and b/views/resources/template_screenshots/Android Kotlin IDE.dark.png differ diff --git a/views/resources/template_screenshots/Android Kotlin IDE.darkplus.png b/views/resources/template_screenshots/Android Kotlin IDE.darkplus.png new file mode 100644 index 000000000..7491757bb Binary files /dev/null and b/views/resources/template_screenshots/Android Kotlin IDE.darkplus.png differ diff --git a/views/resources/template_screenshots/Android Kotlin IDE.default.png b/views/resources/template_screenshots/Android Kotlin IDE.default.png new file mode 100644 index 000000000..c93ea2875 Binary files /dev/null and b/views/resources/template_screenshots/Android Kotlin IDE.default.png differ diff --git a/views/resources/template_screenshots/Android Kotlin IDE.onedark.png b/views/resources/template_screenshots/Android Kotlin IDE.onedark.png new file mode 100644 index 000000000..afc4b3073 Binary files /dev/null and b/views/resources/template_screenshots/Android Kotlin IDE.onedark.png differ diff --git a/views/resources/template_screenshots/Android Kotlin IDE.pink.png b/views/resources/template_screenshots/Android Kotlin IDE.pink.png new file mode 100644 index 000000000..bfb1ce46f Binary files /dev/null and b/views/resources/template_screenshots/Android Kotlin IDE.pink.png differ diff --git a/views/resources/template_screenshots/Android Kotlin IDE.real-dark.png b/views/resources/template_screenshots/Android Kotlin IDE.real-dark.png new file mode 100644 index 000000000..7491757bb Binary files /dev/null and b/views/resources/template_screenshots/Android Kotlin IDE.real-dark.png differ diff --git a/views/resources/template_screenshots/AndroidJavaIDE.dark.png b/views/resources/template_screenshots/AndroidJavaIDE.dark.png deleted file mode 100644 index 28ec70593..000000000 Binary files a/views/resources/template_screenshots/AndroidJavaIDE.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidJavaIDE.darkplus.png b/views/resources/template_screenshots/AndroidJavaIDE.darkplus.png deleted file mode 100644 index a379f511d..000000000 Binary files a/views/resources/template_screenshots/AndroidJavaIDE.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidJavaIDE.default.png b/views/resources/template_screenshots/AndroidJavaIDE.default.png deleted file mode 100644 index 0643404d1..000000000 Binary files a/views/resources/template_screenshots/AndroidJavaIDE.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidJavaIDE.onedark.png b/views/resources/template_screenshots/AndroidJavaIDE.onedark.png deleted file mode 100644 index 955e93350..000000000 Binary files a/views/resources/template_screenshots/AndroidJavaIDE.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidJavaIDE.pink.png b/views/resources/template_screenshots/AndroidJavaIDE.pink.png deleted file mode 100644 index 8b570c578..000000000 Binary files a/views/resources/template_screenshots/AndroidJavaIDE.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidJavaIDE.real-dark.png b/views/resources/template_screenshots/AndroidJavaIDE.real-dark.png deleted file mode 100644 index 28ec70593..000000000 Binary files a/views/resources/template_screenshots/AndroidJavaIDE.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidKotlinIDE.dark.png b/views/resources/template_screenshots/AndroidKotlinIDE.dark.png deleted file mode 100644 index 55cb57914..000000000 Binary files a/views/resources/template_screenshots/AndroidKotlinIDE.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidKotlinIDE.darkplus.png b/views/resources/template_screenshots/AndroidKotlinIDE.darkplus.png deleted file mode 100644 index 55cb57914..000000000 Binary files a/views/resources/template_screenshots/AndroidKotlinIDE.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidKotlinIDE.default.png b/views/resources/template_screenshots/AndroidKotlinIDE.default.png deleted file mode 100644 index 64aa043cb..000000000 Binary files a/views/resources/template_screenshots/AndroidKotlinIDE.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidKotlinIDE.onedark.png b/views/resources/template_screenshots/AndroidKotlinIDE.onedark.png deleted file mode 100644 index 82534bbcd..000000000 Binary files a/views/resources/template_screenshots/AndroidKotlinIDE.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidKotlinIDE.pink.png b/views/resources/template_screenshots/AndroidKotlinIDE.pink.png deleted file mode 100644 index 951b3cf8b..000000000 Binary files a/views/resources/template_screenshots/AndroidKotlinIDE.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/AndroidKotlinIDE.real-dark.png b/views/resources/template_screenshots/AndroidKotlinIDE.real-dark.png deleted file mode 100644 index 55cb57914..000000000 Binary files a/views/resources/template_screenshots/AndroidKotlinIDE.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/C++ Cmake.dark.png b/views/resources/template_screenshots/C++ Cmake.dark.png new file mode 100644 index 000000000..3d529f55e Binary files /dev/null and b/views/resources/template_screenshots/C++ Cmake.dark.png differ diff --git a/views/resources/template_screenshots/C++ Cmake.darkplus.png b/views/resources/template_screenshots/C++ Cmake.darkplus.png new file mode 100644 index 000000000..9634d7697 Binary files /dev/null and b/views/resources/template_screenshots/C++ Cmake.darkplus.png differ diff --git a/views/resources/template_screenshots/C++ Cmake.default.png b/views/resources/template_screenshots/C++ Cmake.default.png new file mode 100644 index 000000000..8cb8813b2 Binary files /dev/null and b/views/resources/template_screenshots/C++ Cmake.default.png differ diff --git a/views/resources/template_screenshots/C++ Cmake.onedark.png b/views/resources/template_screenshots/C++ Cmake.onedark.png new file mode 100644 index 000000000..3ade62623 Binary files /dev/null and b/views/resources/template_screenshots/C++ Cmake.onedark.png differ diff --git a/views/resources/template_screenshots/C++ Cmake.pink.png b/views/resources/template_screenshots/C++ Cmake.pink.png new file mode 100644 index 000000000..6a5804b40 Binary files /dev/null and b/views/resources/template_screenshots/C++ Cmake.pink.png differ diff --git a/views/resources/template_screenshots/C++ Cmake.real-dark.png b/views/resources/template_screenshots/C++ Cmake.real-dark.png new file mode 100644 index 000000000..ca5e0145d Binary files /dev/null and b/views/resources/template_screenshots/C++ Cmake.real-dark.png differ diff --git a/views/resources/template_screenshots/CCmake.dark.png b/views/resources/template_screenshots/CCmake.dark.png deleted file mode 100644 index 47851be18..000000000 Binary files a/views/resources/template_screenshots/CCmake.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/CCmake.darkplus.png b/views/resources/template_screenshots/CCmake.darkplus.png deleted file mode 100644 index 7b995ed53..000000000 Binary files a/views/resources/template_screenshots/CCmake.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/CCmake.default.png b/views/resources/template_screenshots/CCmake.default.png deleted file mode 100644 index d1ea2e949..000000000 Binary files a/views/resources/template_screenshots/CCmake.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/CCmake.onedark.png b/views/resources/template_screenshots/CCmake.onedark.png deleted file mode 100644 index 1c1f10ff0..000000000 Binary files a/views/resources/template_screenshots/CCmake.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/CCmake.pink.png b/views/resources/template_screenshots/CCmake.pink.png deleted file mode 100644 index 4c8735896..000000000 Binary files a/views/resources/template_screenshots/CCmake.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/CCmake.real-dark.png b/views/resources/template_screenshots/CCmake.real-dark.png deleted file mode 100644 index af287ca3c..000000000 Binary files a/views/resources/template_screenshots/CCmake.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/Diff of Two Compilers.dark.png b/views/resources/template_screenshots/Diff of Two Compilers.dark.png new file mode 100644 index 000000000..f65d74b1a Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Compilers.dark.png differ diff --git a/views/resources/template_screenshots/Diff of Two Compilers.darkplus.png b/views/resources/template_screenshots/Diff of Two Compilers.darkplus.png new file mode 100644 index 000000000..b4478a614 Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Compilers.darkplus.png differ diff --git a/views/resources/template_screenshots/Diff of Two Compilers.default.png b/views/resources/template_screenshots/Diff of Two Compilers.default.png new file mode 100644 index 000000000..6a7d977b3 Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Compilers.default.png differ diff --git a/views/resources/template_screenshots/Diff of Two Compilers.onedark.png b/views/resources/template_screenshots/Diff of Two Compilers.onedark.png new file mode 100644 index 000000000..2cee56afa Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Compilers.onedark.png differ diff --git a/views/resources/template_screenshots/Diff of Two Compilers.pink.png b/views/resources/template_screenshots/Diff of Two Compilers.pink.png new file mode 100644 index 000000000..67ade4478 Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Compilers.pink.png differ diff --git a/views/resources/template_screenshots/Diff of Two Compilers.real-dark.png b/views/resources/template_screenshots/Diff of Two Compilers.real-dark.png new file mode 100644 index 000000000..363d46362 Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Compilers.real-dark.png differ diff --git a/views/resources/template_screenshots/Diff of Two Sources.dark.png b/views/resources/template_screenshots/Diff of Two Sources.dark.png new file mode 100644 index 000000000..b62f8f16d Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Sources.dark.png differ diff --git a/views/resources/template_screenshots/Diff of Two Sources.darkplus.png b/views/resources/template_screenshots/Diff of Two Sources.darkplus.png new file mode 100644 index 000000000..cad452c4b Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Sources.darkplus.png differ diff --git a/views/resources/template_screenshots/Diff of Two Sources.default.png b/views/resources/template_screenshots/Diff of Two Sources.default.png new file mode 100644 index 000000000..0b172b23a Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Sources.default.png differ diff --git a/views/resources/template_screenshots/Diff of Two Sources.onedark.png b/views/resources/template_screenshots/Diff of Two Sources.onedark.png new file mode 100644 index 000000000..ba890c897 Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Sources.onedark.png differ diff --git a/views/resources/template_screenshots/Diff of Two Sources.pink.png b/views/resources/template_screenshots/Diff of Two Sources.pink.png new file mode 100644 index 000000000..1a4fdc306 Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Sources.pink.png differ diff --git a/views/resources/template_screenshots/Diff of Two Sources.real-dark.png b/views/resources/template_screenshots/Diff of Two Sources.real-dark.png new file mode 100644 index 000000000..b62f8f16d Binary files /dev/null and b/views/resources/template_screenshots/Diff of Two Sources.real-dark.png differ diff --git a/views/resources/template_screenshots/DiffofTwoCompilers.dark.png b/views/resources/template_screenshots/DiffofTwoCompilers.dark.png deleted file mode 100644 index 7c15c7343..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoCompilers.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoCompilers.darkplus.png b/views/resources/template_screenshots/DiffofTwoCompilers.darkplus.png deleted file mode 100644 index abaf2c19a..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoCompilers.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoCompilers.default.png b/views/resources/template_screenshots/DiffofTwoCompilers.default.png deleted file mode 100644 index b06e818bb..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoCompilers.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoCompilers.onedark.png b/views/resources/template_screenshots/DiffofTwoCompilers.onedark.png deleted file mode 100644 index 186ba8852..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoCompilers.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoCompilers.pink.png b/views/resources/template_screenshots/DiffofTwoCompilers.pink.png deleted file mode 100644 index 47ca98c8c..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoCompilers.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoCompilers.real-dark.png b/views/resources/template_screenshots/DiffofTwoCompilers.real-dark.png deleted file mode 100644 index d17b3b5e1..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoCompilers.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoSources.dark.png b/views/resources/template_screenshots/DiffofTwoSources.dark.png deleted file mode 100644 index 69130dd0d..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoSources.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoSources.darkplus.png b/views/resources/template_screenshots/DiffofTwoSources.darkplus.png deleted file mode 100644 index d5a3196ff..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoSources.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoSources.default.png b/views/resources/template_screenshots/DiffofTwoSources.default.png deleted file mode 100644 index 9e33819e9..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoSources.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoSources.onedark.png b/views/resources/template_screenshots/DiffofTwoSources.onedark.png deleted file mode 100644 index f245b3ed0..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoSources.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoSources.pink.png b/views/resources/template_screenshots/DiffofTwoSources.pink.png deleted file mode 100644 index a28ee5e56..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoSources.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/DiffofTwoSources.real-dark.png b/views/resources/template_screenshots/DiffofTwoSources.real-dark.png deleted file mode 100644 index d73bde534..000000000 Binary files a/views/resources/template_screenshots/DiffofTwoSources.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/Java IDE.dark.png b/views/resources/template_screenshots/Java IDE.dark.png new file mode 100644 index 000000000..d88c57778 Binary files /dev/null and b/views/resources/template_screenshots/Java IDE.dark.png differ diff --git a/views/resources/template_screenshots/Java IDE.darkplus.png b/views/resources/template_screenshots/Java IDE.darkplus.png new file mode 100644 index 000000000..fef0392dc Binary files /dev/null and b/views/resources/template_screenshots/Java IDE.darkplus.png differ diff --git a/views/resources/template_screenshots/Java IDE.default.png b/views/resources/template_screenshots/Java IDE.default.png new file mode 100644 index 000000000..06401daab Binary files /dev/null and b/views/resources/template_screenshots/Java IDE.default.png differ diff --git a/views/resources/template_screenshots/Java IDE.onedark.png b/views/resources/template_screenshots/Java IDE.onedark.png new file mode 100644 index 000000000..27904eb66 Binary files /dev/null and b/views/resources/template_screenshots/Java IDE.onedark.png differ diff --git a/views/resources/template_screenshots/Java IDE.pink.png b/views/resources/template_screenshots/Java IDE.pink.png new file mode 100644 index 000000000..ea8306086 Binary files /dev/null and b/views/resources/template_screenshots/Java IDE.pink.png differ diff --git a/views/resources/template_screenshots/Java IDE.real-dark.png b/views/resources/template_screenshots/Java IDE.real-dark.png new file mode 100644 index 000000000..625bacda2 Binary files /dev/null and b/views/resources/template_screenshots/Java IDE.real-dark.png differ diff --git a/views/resources/template_screenshots/JavaIDE.dark.png b/views/resources/template_screenshots/JavaIDE.dark.png deleted file mode 100644 index 42af97faf..000000000 Binary files a/views/resources/template_screenshots/JavaIDE.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/JavaIDE.darkplus.png b/views/resources/template_screenshots/JavaIDE.darkplus.png deleted file mode 100644 index 25c48fcfd..000000000 Binary files a/views/resources/template_screenshots/JavaIDE.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/JavaIDE.default.png b/views/resources/template_screenshots/JavaIDE.default.png deleted file mode 100644 index 8fdcc928d..000000000 Binary files a/views/resources/template_screenshots/JavaIDE.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/JavaIDE.onedark.png b/views/resources/template_screenshots/JavaIDE.onedark.png deleted file mode 100644 index 02a860e8a..000000000 Binary files a/views/resources/template_screenshots/JavaIDE.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/JavaIDE.pink.png b/views/resources/template_screenshots/JavaIDE.pink.png deleted file mode 100644 index 337f005d4..000000000 Binary files a/views/resources/template_screenshots/JavaIDE.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/JavaIDE.real-dark.png b/views/resources/template_screenshots/JavaIDE.real-dark.png deleted file mode 100644 index 82c6a9ece..000000000 Binary files a/views/resources/template_screenshots/JavaIDE.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/LLVM IR.dark.png b/views/resources/template_screenshots/LLVM IR.dark.png new file mode 100644 index 000000000..9b5df2482 Binary files /dev/null and b/views/resources/template_screenshots/LLVM IR.dark.png differ diff --git a/views/resources/template_screenshots/LLVM IR.darkplus.png b/views/resources/template_screenshots/LLVM IR.darkplus.png new file mode 100644 index 000000000..e4aaba389 Binary files /dev/null and b/views/resources/template_screenshots/LLVM IR.darkplus.png differ diff --git a/views/resources/template_screenshots/LLVM IR.default.png b/views/resources/template_screenshots/LLVM IR.default.png new file mode 100644 index 000000000..9cc474e82 Binary files /dev/null and b/views/resources/template_screenshots/LLVM IR.default.png differ diff --git a/views/resources/template_screenshots/LLVM IR.onedark.png b/views/resources/template_screenshots/LLVM IR.onedark.png new file mode 100644 index 000000000..2162a6270 Binary files /dev/null and b/views/resources/template_screenshots/LLVM IR.onedark.png differ diff --git a/views/resources/template_screenshots/LLVM IR.pink.png b/views/resources/template_screenshots/LLVM IR.pink.png new file mode 100644 index 000000000..82bd4f162 Binary files /dev/null and b/views/resources/template_screenshots/LLVM IR.pink.png differ diff --git a/views/resources/template_screenshots/LLVM IR.real-dark.png b/views/resources/template_screenshots/LLVM IR.real-dark.png new file mode 100644 index 000000000..38aaa910f Binary files /dev/null and b/views/resources/template_screenshots/LLVM IR.real-dark.png differ diff --git a/views/resources/template_screenshots/LLVMIR.dark.png b/views/resources/template_screenshots/LLVMIR.dark.png deleted file mode 100644 index d8f9f2c5e..000000000 Binary files a/views/resources/template_screenshots/LLVMIR.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/LLVMIR.darkplus.png b/views/resources/template_screenshots/LLVMIR.darkplus.png deleted file mode 100644 index 132bc0785..000000000 Binary files a/views/resources/template_screenshots/LLVMIR.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/LLVMIR.default.png b/views/resources/template_screenshots/LLVMIR.default.png deleted file mode 100644 index be371eedf..000000000 Binary files a/views/resources/template_screenshots/LLVMIR.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/LLVMIR.onedark.png b/views/resources/template_screenshots/LLVMIR.onedark.png deleted file mode 100644 index c183e323a..000000000 Binary files a/views/resources/template_screenshots/LLVMIR.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/LLVMIR.pink.png b/views/resources/template_screenshots/LLVMIR.pink.png deleted file mode 100644 index 5d7a7e100..000000000 Binary files a/views/resources/template_screenshots/LLVMIR.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/LLVMIR.real-dark.png b/views/resources/template_screenshots/LLVMIR.real-dark.png deleted file mode 100644 index adf550f9a..000000000 Binary files a/views/resources/template_screenshots/LLVMIR.real-dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/Pascal IDE.dark.png b/views/resources/template_screenshots/Pascal IDE.dark.png new file mode 100644 index 000000000..4649054d1 Binary files /dev/null and b/views/resources/template_screenshots/Pascal IDE.dark.png differ diff --git a/views/resources/template_screenshots/Pascal IDE.darkplus.png b/views/resources/template_screenshots/Pascal IDE.darkplus.png new file mode 100644 index 000000000..16edff2a4 Binary files /dev/null and b/views/resources/template_screenshots/Pascal IDE.darkplus.png differ diff --git a/views/resources/template_screenshots/Pascal IDE.default.png b/views/resources/template_screenshots/Pascal IDE.default.png new file mode 100644 index 000000000..e8eb22ab2 Binary files /dev/null and b/views/resources/template_screenshots/Pascal IDE.default.png differ diff --git a/views/resources/template_screenshots/Pascal IDE.onedark.png b/views/resources/template_screenshots/Pascal IDE.onedark.png new file mode 100644 index 000000000..9684e4b8a Binary files /dev/null and b/views/resources/template_screenshots/Pascal IDE.onedark.png differ diff --git a/views/resources/template_screenshots/Pascal IDE.pink.png b/views/resources/template_screenshots/Pascal IDE.pink.png new file mode 100644 index 000000000..c59b2fff5 Binary files /dev/null and b/views/resources/template_screenshots/Pascal IDE.pink.png differ diff --git a/views/resources/template_screenshots/Pascal IDE.real-dark.png b/views/resources/template_screenshots/Pascal IDE.real-dark.png new file mode 100644 index 000000000..c5883a211 Binary files /dev/null and b/views/resources/template_screenshots/Pascal IDE.real-dark.png differ diff --git a/views/resources/template_screenshots/PascalIDE.dark.png b/views/resources/template_screenshots/PascalIDE.dark.png deleted file mode 100644 index 284dbe519..000000000 Binary files a/views/resources/template_screenshots/PascalIDE.dark.png and /dev/null differ diff --git a/views/resources/template_screenshots/PascalIDE.darkplus.png b/views/resources/template_screenshots/PascalIDE.darkplus.png deleted file mode 100644 index 62b41fd8f..000000000 Binary files a/views/resources/template_screenshots/PascalIDE.darkplus.png and /dev/null differ diff --git a/views/resources/template_screenshots/PascalIDE.default.png b/views/resources/template_screenshots/PascalIDE.default.png deleted file mode 100644 index 50376ebf2..000000000 Binary files a/views/resources/template_screenshots/PascalIDE.default.png and /dev/null differ diff --git a/views/resources/template_screenshots/PascalIDE.onedark.png b/views/resources/template_screenshots/PascalIDE.onedark.png deleted file mode 100644 index 5cef56924..000000000 Binary files a/views/resources/template_screenshots/PascalIDE.onedark.png and /dev/null differ diff --git a/views/resources/template_screenshots/PascalIDE.pink.png b/views/resources/template_screenshots/PascalIDE.pink.png deleted file mode 100644 index 94260c77c..000000000 Binary files a/views/resources/template_screenshots/PascalIDE.pink.png and /dev/null differ diff --git a/views/resources/template_screenshots/PascalIDE.real-dark.png b/views/resources/template_screenshots/PascalIDE.real-dark.png deleted file mode 100644 index 9d5c824ee..000000000 Binary files a/views/resources/template_screenshots/PascalIDE.real-dark.png and /dev/null differ