{"id":294,"date":"2020-02-27T11:27:00","date_gmt":"2020-02-27T19:27:00","guid":{"rendered":"https:\/\/farmwrangler.com\/blog\/?p=294"},"modified":"2020-02-27T11:29:18","modified_gmt":"2020-02-27T19:29:18","slug":"documentation-giants-debugger","status":"publish","type":"post","link":"https:\/\/farmwrangler.com\/blog\/documentation-giants-debugger\/","title":{"rendered":"Documentation: Giants Debugger"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_introduction\">GIANTS Debugger<\/h2>\n\n\n\n<p>\nThe GIANTS Debugger is a new tool for creating, editing and debugging script mods. \nIt works as an editor and a \u201cremote\u201d debugger in one. \nIt interacts with the game state and provides you with information about the game state.\n<\/p>\n\n\n\n<p><strong>Possible use-case scenarios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>to create or modify LUA and XML files<\/li><li>using breakpoints to see how script is executed<\/li><li>investigating a paused game state by looking through callstack or inspecting variables<\/li><li>seeing when and how variables change<\/li><li>live-coding by writing script while the game is running<\/li><\/ul>\n\n\n\n<p>The Debugger can be used on all kinds of mod configurations. These are the most common three configurations:<\/p>\n\n\n\n<p>\n<strong>Working on a single mod (fast iteration time, but only compatible with singeplayer):<\/strong><br>\nUnzip your mod and put the mod in the \u201cmods\u201d directory (by default in Documents\/My Games\/FarmingSimulator2019\/mods). \nMake sure that the layout of the mod is correct, i.e. the modDesc.xml is directly in the mod folder (i.e. mods\/\/modDesc.xml). \nThen create a new project in the Debugger. \nIn \u201cProject Settings\u201d, set \u201cMod Name\u201d to be the same name as the name of the mod folder and \nset the \u201cMod Directory\u201d as a path to the directory of the mod (mods\/). \nIn case the mod zip file is already in the \u201cmods\u201d directory remove the zip file for the \u201cmods\u201d, \nbecause the zip file has priority over the directory when the game is loading.\n<\/p>\n\n\n\n<p>\n<strong>Working on multiple mods at the same time (fast iteration time, but only compatible with singeplayer):<\/strong><br>\nFollow the instructions above, but when you create a project in the \nDebugger, set the \u201cMod Directory\u201d to \u201cmods\u201d directory instead of the \nspecific mod directory.\nThis way you can edit several mods at the same time. \nIn this configuration, the \u201cMod Name\u201d is not important, you can call it \nanything you like.\n<\/p>\n\n\n\n<p>\n<strong>Working on a single mod outside the \u201cmods\u201d directory (also compatible with multiplayer):<\/strong><br>\nThis is the most complex configuration, and it is the only one that lets\n you debug mods in multiplayer. \nPlace the mod zip file in the \u201cmods\u201d directory and unzip it somewhere \nelse. In \u201cProject Settings\u201d set \nthe \u201cMod Name\u201d to match with the name of the zip file but without .zip \nat the end) and set the \u201cMod Directory\u201d \nas a path to the unzipped directory. \nFor every change you make in the Debugger, you will have to re-create \nthe mod zip file and copy it to the \u201cmods\u201d directory before you start \nthe game. \nExternal tools for zipping are useful for this purpose (not included).\n<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_panels\">Overview of panels<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>File Browser:<\/strong> view files and folders in your project directory<\/li><li><strong>Functions:<\/strong> list of functions defined in the current file<\/li><li><strong>Globals:<\/strong> view global variables<\/li><li><strong>Locals:<\/strong> view local variables<\/li><li><strong>Watch:<\/strong> view the values of user-defined variables<\/li><li><strong>Script console:<\/strong> run user-defined parts of code<\/li><li><strong>Callstack:<\/strong> view current callstack<\/li><li><strong>Breakpoints:<\/strong> manage breakpoints<\/li><li><strong>Output:<\/strong> view log output<\/li><li><strong>Find Results:<\/strong> view results from the Find in Files dialog<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/mainWindow.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_createProject\">Creating a new project<\/h2>\n\n\n\n<p>First you need to open or create a project.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/projectSettings.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<p>\nMost of the required parameters are self-explanatory. \nThe \u201cMod Directory\u201d can be a path to a single mod or a \u201cmods\u201d directory if you are working on several mods at the same time. \nIf you are working on a single mod, the \u201cMod Name\u201d must have the same name as the .zip file. \nThe \u201cUser Profile App Directory\u201d should be saved as a path to a folder where the game stores user data \n(changes are not needed by default if the game configuration has not been changed manually). \nThe debugger uses sockets to communicate with the game and listens at the port defined as the \u201cDebug Network Port\u201d. \n<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_globalsLocals\">Global and local variables<\/h2>\n\n\n\n<p>\nThe function of the \u201cGlobals\u201d and \u201cLocals\u201d panels is the same: \nto explore the value of local and global variables at a current execution point \n(using breakpoints to halt execution and observe these variables, or by hitting the \u2018break all\u2019 button). \nBy right-clicking on a variable, you can add it as a \u201cWatch\u201d or a \u201cBreakpoint\u201d.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/locals.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<p>\nThe \u201dWatch\u201d panel is similar to the \u201cGlobals\u201d and \u201cLocals\u201d panel, but instead of global or local variables, \nyou can select variables that you would like to \u2018watch\u2019. \nValues are updated every time a breakpoint is hit or when you execute the code step-by-step. \nVariable names can be written like most other simple Lua statements:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>variableName<\/li><li>object.member<\/li><li>table[1]<\/li><li>table[index]<\/li><li>table[object.index]<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/watch.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_callstack\">Callstack panel<\/h2>\n\n\n\n<p>\nThe \u201cCallstack\u201d panel shows you the callstack at a current execution point. \nDouble-click on a line to open a file at the location of the call. \nThe Debugger even allows you step through some of the base game functions for which the source code has been made public. \nGrayed-out lines are parts of code that have not been made public.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/callstack.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_scriptPanel\">Running new scripts during debugging<\/h2>\n\n\n\n<p>\nThe \u201cScript Console\u201d executes user-defined Lua code when execution is \npaused (by hitting a breakpoint or break-all being pressed). \nEnter your code in the bottom part of the panel and press Ctrl + Enter \nto execute it.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/console.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_breakpoints\">Breakpoints<\/h2>\n\n\n\n<p>\nThe \u201cBreakpoints\u201d panel is where you manage breakpoints.\n<\/p>\n\n\n\n<p>\nRegular breakpoints can be placed in the code by clicking on the vertical gray bar on the left of the code panel. \nYou can also use F9 to enable\/disable a breakpoint at the current position. \nThe program will stop running when it tries to execute a line with a breakpoint. \n<\/p>\n\n\n\n<p>\nData breakpoints can be placed by right-clicking on a variable name in \nthe \u201cGlobals\u201d\/\u201dLocals\u201d\/\u201dWatch\u201d panel or by right-clicking on a name in the text editor. \nA data breakpoint will be hit when the data for the specified variable changes.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/breakpoints.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<p>\nYou can fine-tune a breakpoint by adding a conditional expression and\/or hit count condition to it.\nThese conditions are evaluated each time a breakpoint is hit and the code will only stop executing once the conditions are met.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/breakpointCondition.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_gameOutput\">Game output<\/h2>\n\n\n\n<p>\nThe \u201cOutput\u201d panel shows the game\u2019s log output. \nIf a script error is reported, this panel will provide you with the file\n name and line number, \nso that you can double-click on it and view the code causing the error. \nThe output is the same as the log file written by the game.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/output.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_searching\">Searching in code<\/h2>\n\n\n\n<p>\nThe \u201cFind Results\u201d panel shows search results from the \u201cFind in Files\u201d dialog. \nDouble-clicking on a result opens a file at the search hit location.\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/findResult.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<p>\nThe \u201cFind Replace\u201d window behaves in a similar way to other text editors. \n\u201cFind\u201d and \u201cReplace\u201d directly show the results in the text editor; \nwhile \u201cFind in Files\u201d searches through the entire file and shows results in the \u201cFind Results\u201d panel. \nOther search modes are available too: \n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u201cExtended\u201d search allows you to use special \u201cescape\u201d characters \n(\\t  = tab, \\n = new line, \\r = carriage return, \\0 NULL character and \n\\\\ = backslash)<\/li><li>\u201cRegular Expression\u201d searches with regular expressions. Captures\n are defined with brackets \u2018(\u2018 and \u2018)&#8217; in the search string and can be \nplaced with $1-$9 in the replace string.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/find.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/findFiles.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/gdn.giants-software.com\/images\/debugger\/findReplace.png?ssl=1\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"debugger_shortcuts\">Shortcuts<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"\"><tbody><tr><th><strong>Key<\/strong><\/th><th><strong>Function<\/strong><\/th><\/tr><tr><td><em>Ctrl-N<\/em><\/td><td>New file\n    <\/td><\/tr><tr><td><em>Ctrl-O<\/em><\/td><td>Open file<\/td><\/tr><tr><td><em>Ctrl-S<\/em><\/td><td>Save file<\/td><\/tr><tr><td><em>Ctrl-Shift-S<\/em><\/td><td>Save all files<\/td><\/tr><tr><td><em>Ctrl-Q<\/em><\/td><td>Quit application<\/td><\/tr><tr><td><em>Ctrl-Z<\/em><\/td><td>Undo<\/td><\/tr><tr><td><em>Ctrl-Y<\/em><\/td><td>Redo<\/td><\/tr><tr><td><em>Ctrl-F<\/em><\/td><td>Find<\/td><\/tr><tr><td><em>Ctrl-H<\/em><\/td><td>Replace<\/td><\/tr><tr><td><em>Ctrl-Shift-F<\/em><\/td><td>Find in files<\/td><\/tr><tr><td><em>F3<\/em><\/td><td>Find next<\/td><\/tr><tr><td><em>Shift-F3<\/em><\/td><td>Find previous<\/td><\/tr><tr><td><em>Ctrl-Shift-G<\/em><\/td><td>Go to file<\/td><\/tr><tr><td><em>Ctrl-G<\/em><\/td><td>Go to line<\/td><\/tr><tr><td><em>Ctrl-K<\/em><\/td><td>Comment lines<\/td><\/tr><tr><td><em>Ctrl-Shift-K<\/em><\/td><td>Uncomment lines<\/td><\/tr><tr><td><em>Ctrl-W<\/em><\/td><td>Close tab<\/td><\/tr><tr><td><em>Ctrl-Shift-T<\/em><\/td><td>Reopen tab<\/td><\/tr><tr><td><em>Alt-Up<\/em><\/td><td>Move line up<\/td><\/tr><tr><td><em>Alt-Down<\/em><\/td><td>Move line down<\/td><\/tr><tr><td><em>Alt-Left<\/em><\/td><td>Navigate backwards<\/td><\/tr><tr><td><em>Alt-Right<\/em><\/td><td>Navigate forward<\/td><\/tr><tr><td><em>F5<\/em><\/td><td>Run \/ Continue execution<\/td><\/tr><tr><td><em>Ctrl-F5<\/em><\/td><td>Run Without Debugging<\/td><\/tr><tr><td><em>F7<\/em><\/td><td>Pause execution<\/td><\/tr><tr><td><em>F6<\/em><\/td><td>Stop execution<\/td><\/tr><tr><td><em>F9<\/em><\/td><td>Toggle Breakpoint<\/td><\/tr><tr><td><em>F11<\/em><\/td><td>Step Into<\/td><\/tr><tr><td><em>F10<\/em><\/td><td>Step Over<\/td><\/tr><tr><td><em>Shift-F11<\/em><\/td><td>Step Out<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>GIANTS Debugger The GIANTS Debugger is a new tool for creating, editing and debugging script mods. It works as an editor and a \u201cremote\u201d debugger in one. It interacts with the game state and provides you with information about the game state. Possible use-case scenarios: to create or modify LUA and XML files using breakpoints [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[28],"tags":[],"class_list":["post-294","post","type-post","status-publish","format-standard","hentry","category-fs22-game-documentation"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":290,"url":"https:\/\/farmwrangler.com\/blog\/documentation-giants-editor\/","url_meta":{"origin":294,"position":0},"title":"Documentation: Giants Editor","author":"FarmWrangler","date":"February 27, 2020","format":false,"excerpt":"Click here for Overview. If you start up the Editor, you might not have all the panel windows open. To open other panel windows open the menu option window and enable the panel you want. You can adjust the width and height of the panels by dragging the outlines and\u2026","rel":"","context":"In &quot;FS22 Game Documentation&quot;","block_context":{"text":"FS22 Game Documentation","link":"https:\/\/farmwrangler.com\/blog\/category\/fs22-game-documentation\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":267,"url":"https:\/\/farmwrangler.com\/blog\/documentation-overview\/","url_meta":{"origin":294,"position":1},"title":"Documentation: Overview","author":"FarmWrangler","date":"February 26, 2020","format":false,"excerpt":"Editor Main Screen Enable development controls Open the file game.xml and change the value of controls from false to true. <?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\" ?> <game> \u00a0\u00a0... \u00a0\u00a0<development> \u00a0\u00a0\u00a0\u00a0<controls>true<\/controls> \u00a0\u00a0<\/development> <\/game> Note: You can turn this control on or off with one click in FS19 Dashboard. Runtime development key short-cuts\u2026","rel":"","context":"In &quot;FS22 Game Documentation&quot;","block_context":{"text":"FS22 Game Documentation","link":"https:\/\/farmwrangler.com\/blog\/category\/fs22-game-documentation\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/editor720_editor.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/editor720_editor.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/editor720_editor.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/editor720_editor.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/editor720_editor.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/editor720_editor.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":480,"url":"https:\/\/farmwrangler.com\/blog\/use-current-savegame-after-terrain-edit-in-ge\/","url_meta":{"origin":294,"position":2},"title":"Use Current Savegame After Terrain Edit in GE","author":"FarmWrangler","date":"July 1, 2020","format":false,"excerpt":"When you make edits to the terrain in a map using Giants Editor, the edits won't show in the current savegame you are using.To get the edits to show, you will need to do the following steps to continue on your current save file:1. Create a new savegame.2. Copy the\u2026","rel":"","context":"In &quot;FS19 FarmSim Tips and Tricks&quot;","block_context":{"text":"FS19 FarmSim Tips and Tricks","link":"https:\/\/farmwrangler.com\/blog\/category\/tips-and-tricks\/"},"img":{"alt_text":"click image to enlarge","src":"https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/50E17A87-300x182.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2097,"url":"https:\/\/farmwrangler.com\/blog\/can-you-unplug-a-monitor-while-windows-is-running\/","url_meta":{"origin":294,"position":3},"title":"Can You Unplug A Monitor While Windows Is Running?","author":"FarmWrangler","date":"October 16, 2023","format":false,"excerpt":"You can unplug a monitor while Windows is running, but you should do so with caution. Windows is designed to handle changes in display configurations to some extent, and it should automatically adjust to the new display setup when you unplug a monitor. However, there are some things to keep\u2026","rel":"","context":"In &quot;Computing&quot;","block_context":{"text":"Computing","link":"https:\/\/farmwrangler.com\/blog\/category\/good-to-know\/computing\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":464,"url":"https:\/\/farmwrangler.com\/blog\/fixing-game-crashing-issues\/","url_meta":{"origin":294,"position":4},"title":"Fixing Game Crashing Issues","author":"FarmWrangler","date":"June 30, 2020","format":false,"excerpt":"I get asked a lot for help in troubleshooting why the game won't load or why it crashes. To do this, we need to understand what is happening in the background when the game loads. First, the game loads all mods\/maps located in the default\/chosen mod folder. The mod folder\u2026","rel":"","context":"In &quot;FS19 FarmSim Tips and Tricks&quot;","block_context":{"text":"FS19 FarmSim Tips and Tricks","link":"https:\/\/farmwrangler.com\/blog\/category\/tips-and-tricks\/"},"img":{"alt_text":"click image to enlarge","src":"https:\/\/i0.wp.com\/farmwrangler.com\/blog\/wp-content\/uploads\/50DE7E82-300x238.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":327,"url":"https:\/\/farmwrangler.com\/blog\/the-map-wont-load-in-the-game\/","url_meta":{"origin":294,"position":5},"title":"The Map Won&#8217;t Load in the Game","author":"FarmWrangler","date":"April 25, 2020","format":false,"excerpt":"This comes up a lot. You download a new map, put it in the Mods folder, run the game and the map isn't listed. Why? There are several reasons why this happens. One is that the map zip file you downloaded has other zip files inside of it. Some map\u2026","rel":"","context":"In &quot;FS19 FarmSim Tips and Tricks&quot;","block_context":{"text":"FS19 FarmSim Tips and Tricks","link":"https:\/\/farmwrangler.com\/blog\/category\/tips-and-tricks\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/posts\/294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/comments?post=294"}],"version-history":[{"count":0,"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/posts\/294\/revisions"}],"wp:attachment":[{"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/media?parent=294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/categories?post=294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/farmwrangler.com\/blog\/wp-json\/wp\/v2\/tags?post=294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}