{
  "version": 1,
  "id": "scn_order_review_blueprint",
  "slug": "order-review",
  "name": "Weekly order review",
  "icon": "tablecells",
  "tint": "#315FC5",
  "settings": {
    "description": "See what needs attention, agree on the next step, and keep the follow-up with each order.",
    "welcomeSuggestions": [
      {
        "label": "What needs attention?",
        "prompt": "Walk me through the orders that need attention in this review. Show the evidence and suggest a next step."
      },
      {
        "label": "Bring a supplier update",
        "prompt": "The supplier now expects Northstar’s remaining 28 units on Friday, 18 September 2026. Update the review and keep our decisions."
      },
      {
        "label": "Make it mine",
        "prompt": "Help me replace the sample data with my team's orders. What should I attach?"
      }
    ]
  },
  "assets": [
    {
      "id": "review",
      "type": "daslab/webview",
      "name": "Weekly order review",
      "fields": {
        "html": "<!doctype html>\n<html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<style>\n*{box-sizing:border-box}html{height:100%}body{min-height:100%;margin:0;background:#faf8f3;color:#272b28;font:13px/1.45 Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;padding:22px 24px}button,input{font:inherit}input:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid #315fc5;outline-offset:3px}\n.eyebrow{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:#73786f;font-weight:600}.head{display:flex;justify-content:space-between;gap:16px;align-items:start}h1{font-size:24px;line-height:1.15;letter-spacing:-.7px;font-weight:600;margin:5px 0 3px}.sub{color:#777c72;font-size:11px;margin:0}.period{border:1px solid #e6e1d6;border-radius:20px;padding:4px 10px;color:#77756c;font-size:10px;white-space:nowrap}\n.stats{display:flex;gap:26px;margin:12px 0 10px;padding-bottom:10px;border-bottom:1px solid #e6e1d6}.stat strong{font-size:22px;font-weight:500;margin-right:6px;font-variant-numeric:tabular-nums}.stat span{font-size:10px;color:#777c72}.stat.flag strong{color:#a9533c}\n.news{display:flex;gap:10px;align-items:start;background:#f8e6de;border:1px solid #f0d3c6;border-radius:7px;padding:9px 12px;margin:0 0 12px;font-size:11px;color:#7d3f2c}.news b{font-weight:600}.news small{display:block;color:#a06a58;font-size:10px;margin-top:1px}.news i{flex:none;width:7px;height:7px;border-radius:50%;background:#c4613f;margin-top:5px}\n.group{margin-top:12px}.group-head{display:flex;gap:8px;align-items:center;font-size:12px;font-weight:550;margin-bottom:5px}.avatar{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#ece7dc;color:#77756c;font-size:9px;font-weight:500}.group-head small{margin-left:auto;font-weight:400;font-size:10px;color:#858076}.group-head small b{color:#a9533c;font-weight:500}\n.line{border:1px solid #ebe6dc;border-radius:7px;margin:4px 0;background:#fffefa}.line[open]{border-color:#e2dbcd}.line.flag{border-color:#efcdbf;background:#fffaf6}.line.shipped{background:transparent}\n.row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(90px,1fr) 76px 104px;gap:12px;align-items:center;padding:7px 11px;cursor:pointer;list-style:none}.row::-webkit-details-marker{display:none}\n.who{min-width:0}.customer{font-weight:550;font-size:12px;letter-spacing:-.1px}.number{color:#91958a;font-size:10px;margin-left:6px}.item{display:block;font-size:10px;color:#858076;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.supply,.qty,.bar{display:block}.qty{font-size:9px;color:#858076;font-variant-numeric:tabular-nums}.qty b{color:#4b4f49;font-weight:500}.bar{position:relative;height:5px;border-radius:3px;background:#ece7dc;margin-top:3px;overflow:hidden}.bar i{position:absolute;inset:0 auto 0 0;border-radius:3px;background:#8aa37c}.bar.short i{background:#c9a063}.bar.risk i{background:#c4613f}.bar.done i{background:#c8c3b6}\n.date{font-size:10px;color:#6d7168;white-space:nowrap}.date small{display:block;font-size:9px;color:#a0a397}\n.pill{justify-self:end;font-size:9px;padding:3px 7px;border-radius:10px;white-space:nowrap;background:#edf0e7;color:#617054;max-width:100%;overflow:hidden;text-overflow:ellipsis}.pill.open{background:#f2eee5;color:#77756c}.pill.flag{background:#f8edda;color:#976d2c}.pill.risk{background:#f8e6de;color:#a9533c}.pill.shipped{background:transparent;color:#a0a397;border:1px solid #e6e1d6}.pill.sent{background:#e7edf8;color:#315fc5}\n.body{padding:0 11px 10px;font-size:11px;color:#5f635c}.issue{margin:0 0 6px}.change{display:inline-block;font-size:9px;color:#a9533c;border:1px solid #efcdbf;border-radius:3px;padding:0 5px;margin-right:6px;vertical-align:1px}\n.sources{margin:0 0 2px;font-size:10px;color:#858076}.sources summary{cursor:pointer;width:fit-content}.evidence{margin-top:4px!important;white-space:pre-line;background:#f3efe6;border-left:2px solid #e0d8c8;padding:6px 9px;font-size:10px;line-height:1.6;color:#6f736a;margin:0}\n.decision{display:flex;align-items:baseline;gap:10px;border-top:1px solid #eee9df;margin-top:7px;padding-top:6px}.decision label{flex:none;font-size:9px;color:#858076;letter-spacing:.06em;text-transform:uppercase}.decision input{flex:1;min-width:0;background:none;border:0;border-bottom:1px dashed #dcd5c5;padding:3px 0;font-size:12px;color:inherit;border-radius:0}.hint{flex:none;font-size:9px;color:#858076;margin:0}\n.mail{border:1px solid #e1ddd4;border-radius:6px;background:#fff;margin-top:7px;font-size:11px;overflow:hidden}.mail-head{display:flex;gap:8px;justify-content:space-between;padding:6px 10px;border-bottom:1px solid #eeeae1;color:#77756c;font-size:10px}.mail-head b{font-weight:500;color:#4b4f49}.mail p{margin:0;padding:7px 10px;white-space:pre-line;line-height:1.5;color:#4b4f49}.follow{display:flex;gap:6px;align-items:center;font-size:10px;margin-top:6px;color:#77756c}.follow.sent{color:#315fc5}.follow svg{flex:none}\n.foot{border-top:1px solid #e6e1d6;margin-top:16px;padding-top:10px;font-size:10px;color:#858076;display:flex;justify-content:space-between;gap:14px}.foot a{color:inherit;text-underline-offset:3px}.empty{padding:25px 0;color:#777c72}\n@media(max-width:560px){body{padding:16px 13px}h1{font-size:21px}.period{display:none}.stats{gap:16px;margin:12px 0 10px}.stat strong{font-size:19px;display:block}.row{grid-template-columns:minmax(0,1fr) 70px 82px;gap:8px;padding:7px 9px}.date{display:none}.item{display:none}.number{display:none}.body{padding:0 9px 9px}.foot{flex-direction:column;gap:4px}}\n</style></head><body>\n<div class=\"head\"><div><div class=\"eyebrow\">Operations / weekly review</div><h1>Order review</h1><p class=\"sub\" id=\"reviewed\"></p></div><span class=\"period\" id=\"period\"></span></div>\n<div class=\"stats\"><div class=\"stat\"><strong id=\"lines\"></strong><span>order lines</span></div><div class=\"stat flag\"><strong id=\"flagged\"></strong><span>flagged</span></div><div class=\"stat\"><strong id=\"shipped\"></strong><span>shipped</span></div><div class=\"stat\"><strong id=\"owners\"></strong><span>owners</span></div></div>\n<div id=\"news\"></div>\n<div id=\"orders\"></div>\n<div class=\"foot\"><span>Keep this scene. Bring the next update here.</span><a href=\"https://daslab.run/replay/order-review/Orders%20%26%20stock.xlsx\" target=\"_blank\" rel=\"noopener\">Sample workbook ↗</a></div>\n<script>\n(function(){\n  // The view renders the cell's data. Jobs update fields.data with\n  // daslab_write_data and keep stable order ids; per-order decisions use\n  // Daslab's synced asset state (asset:decision:<id>). Each order carries\n  // ordered/available counts for the bar, a status (ready, open, shipped,\n  // risk) and flagged: true for lines the team must discuss. Ask for real\n  // recipients and accounts before sending; never manufacture a sent history.\n  var data=window.__DASLAB_WIDGET_DATA__||{}, orders=Array.isArray(data.orders)?data.orders:[];\n  var esc=function(v){return String(v==null?'':v).replace(/[&<>\"']/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]})};\n  var isFlag=function(o){return !!o.flagged||o.status==='risk'};\n  var rank=function(o){return isFlag(o)?0:o.status==='open'?1:o.status==='shipped'?3:2};\n  var two=function(n){return String(n).padStart(2,'0')};\n  var mail='<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"3\"/><path d=\"m3 7 9 6 9-6\"/></svg>';\n\n  renderSummary();\n  renderNews();\n  renderGroups();\n  keepDecisions();\n\n  function renderSummary(){\n    document.getElementById('period').textContent=data.period||'Weekly review';\n    document.getElementById('reviewed').textContent=data.reviewed||'Check the evidence. Agree on the next step.';\n    document.getElementById('lines').textContent=two(orders.length);\n    document.getElementById('flagged').textContent=two(orders.filter(isFlag).length);\n    document.getElementById('shipped').textContent=two(orders.filter(function(o){return o.status==='shipped'}).length);\n    document.getElementById('owners').textContent=two(new Set(orders.map(function(o){return o.owner||'Unassigned'})).size);\n  }\n  function renderNews(){\n    var n=data.news;if(!n||!n.text)return;\n    document.getElementById('news').innerHTML='<div class=\"news\"><i></i><div><b>'+esc(n.title||'New since the last review')+'</b> '+esc(n.text)+(n.source?'<small>'+esc(n.source)+'</small>':'')+'</div></div>';\n  }\n  function renderGroups(){\n    var groups=new Map();orders.forEach(function(o){var owner=o.owner||'Unassigned';if(!groups.has(owner))groups.set(owner,[]);groups.get(owner).push(o)});\n    var html='';\n    groups.forEach(function(items,owner){\n      var flagged=items.filter(isFlag).length;\n      html+='<section class=\"group\"><div class=\"group-head\"><span class=\"avatar\">'+esc(owner.split(' ').map(function(s){return s[0]}).slice(0,2).join(''))+'</span>'+esc(owner)+'<small>'+items.length+' lines'+(flagged?' · <b>'+flagged+' flagged</b>':'')+'</small></div>';\n      items.slice().sort(function(a,b){return rank(a)-rank(b)}).forEach(function(o){html+=line(o)});\n      html+='</section>';\n    });\n    document.getElementById('orders').innerHTML=html||'<p class=\"empty\">Add orders to this scene to begin your review.</p>';\n  }\n  function line(o){\n    var flag=isFlag(o), shipped=o.status==='shipped', key='asset:decision:'+o.id, decision=null;\n    try{decision=localStorage.getItem(key)}catch(e){}\n    if(decision===null)decision=o.decision||'';\n    return '<details class=\"line'+(flag?' flag':'')+(shipped?' shipped':'')+'\"'+(flag?' open':'')+'><summary class=\"row\">'\n      +'<span class=\"who\"><span class=\"customer\">'+esc(o.customer)+'</span><span class=\"number\">#'+esc(o.id)+'</span><span class=\"item\">'+esc(o.item||'')+'</span></span>'\n      +supply(o)\n      +'<span class=\"date\">'+esc(o.promised)+'<small>promised</small></span>'\n      +'<span class=\"pill '+pillClass(o)+'\">'+esc(o.label||o.status||'')+'</span></summary>'\n      +'<div class=\"body\">'\n      +(o.issue?'<p class=\"issue\">'+(o.change?'<span class=\"change\">'+esc(o.change)+'</span>':'')+esc(o.issue)+'</p>':'')\n      +(o.evidence?'<details class=\"sources\"><summary>Source evidence</summary><p class=\"evidence\">'+esc(o.evidence)+'</p></details>':'')\n      +(shipped?'':'<div class=\"decision\"><label for=\"d-'+esc(o.id)+'\">Agreed next step</label><input id=\"d-'+esc(o.id)+'\" data-key=\"'+esc(key)+'\" value=\"'+esc(decision)+'\" placeholder=\"Add a decision from the meeting…\" maxlength=\"400\"><p class=\"hint\">'+(decision?'Kept with this order'+(o.decisionBy?' · '+esc(o.decisionBy):''):'Ready for your team’s decision')+'</p></div>')\n      +email(o.followUp&&o.followUp.email)+(o.followUp&&o.followUp.text?'<div class=\"follow '+esc(o.followUp.state||'')+'\">'+mail+'<span>'+esc(o.followUp.text)+'</span></div>':'')\n      +'</div></details>';\n  }\n  function email(m){\n    if(!m||!m.body)return '';\n    return '<div class=\"mail\"><div class=\"mail-head\"><span>To <b>'+esc(m.to)+'</b></span><span>'+esc(m.subject)+'</span></div><p>'+esc(String(m.body).replace(/\\n\\n+/g,'\\n'))+'</p></div>';\n  }\n  function supply(o){\n    var ordered=Number(o.ordered)||0, available=Math.min(ordered,Number(o.available)||0), pct=ordered?Math.round(available/ordered*100):0;\n    var tone=o.status==='shipped'?'done':o.status==='risk'?'risk':available<ordered?'short':'';\n    return '<span class=\"supply\"><span class=\"qty\"><b>'+available+'</b> / '+ordered+(o.status==='shipped'?' shipped':' on hand')+'</span><span class=\"bar '+tone+'\"><i style=\"width:'+pct+'%\"></i></span></span>';\n  }\n  function pillClass(o){return o.followUp&&o.followUp.state==='sent'?'sent':o.status==='risk'?'risk':o.flagged?'flag':o.status==='shipped'?'shipped':o.status==='open'?'open':''}\n  function keepDecisions(){\n    document.querySelectorAll('input[data-key]').forEach(function(input){input.addEventListener('input',function(){try{localStorage.setItem(input.dataset.key,input.value)}catch(e){}input.nextElementSibling.textContent='Kept with this order'})});\n  }\n})();\n</script></body></html>\n",
        "data": {
          "period": "Sample · week of 14 Sep 2026",
          "reviewed": "Reviewed Friday, 11 September. Check the evidence, agree the next step.",
          "orders": [
            {
              "id": "1042",
              "customer": "Northstar",
              "owner": "Maya Chen",
              "item": "NS-80 valve kit",
              "ordered": 80,
              "available": 52,
              "promised": "Thu 17 Sep",
              "status": "open",
              "label": "28 inbound Wed",
              "issue": "52 on hand. The remaining 28 are due from the supplier on Wed 16 Sep, a day before the promise.",
              "evidence": "Orders!2 · NS-80 · 80 units · promised Thu 17 Sep\nStock!4 · NS-80 · 52 on hand\nSupplier PO 7715 · 28 units due Wed 16 Sep"
            },
            {
              "id": "1038",
              "customer": "Brightwater",
              "owner": "Maya Chen",
              "item": "BW-12 manifold",
              "ordered": 24,
              "available": 24,
              "promised": "Tue 15 Sep",
              "status": "ready",
              "label": "Credit hold",
              "flagged": true,
              "issue": "Stock is picked. The order is held until the overdue invoice is paid.",
              "evidence": "Orders!3 · BW-12 · 24 units · promised Tue 15 Sep\nStock!7 · BW-12 · 24 picked\nFinance note · invoice 8841 is 21 days overdue"
            },
            {
              "id": "1045",
              "customer": "Atlas Freight",
              "owner": "Maya Chen",
              "item": "AF-20 fittings",
              "ordered": 60,
              "available": 60,
              "promised": "Mon 14 Sep",
              "status": "shipped",
              "label": "Shipped"
            },
            {
              "id": "1047",
              "customer": "Harbor Supply",
              "owner": "Maya Chen",
              "item": "HS-6 gasket set",
              "ordered": 36,
              "available": 36,
              "promised": "Wed 16 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1049",
              "customer": "Kessel Tools",
              "owner": "Maya Chen",
              "item": "KT-40 clamp",
              "ordered": 120,
              "available": 120,
              "promised": "Thu 17 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1051",
              "customer": "Oakridge Mills",
              "owner": "Maya Chen",
              "item": "OM-3 bearing",
              "ordered": 18,
              "available": 18,
              "promised": "Fri 18 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1053",
              "customer": "Pinecrest Labs",
              "owner": "Maya Chen",
              "item": "PL-9 sensor kit",
              "ordered": 40,
              "available": 40,
              "promised": "Mon 14 Sep",
              "status": "shipped",
              "label": "Shipped"
            },
            {
              "id": "1056",
              "customer": "Redfern Marine",
              "owner": "Maya Chen",
              "item": "RM-14 pump seal",
              "ordered": 30,
              "available": 30,
              "promised": "Fri 18 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1058",
              "customer": "Tamsin & Co",
              "owner": "Maya Chen",
              "item": "TC-2 hose reel",
              "ordered": 12,
              "available": 12,
              "promised": "Tue 15 Sep",
              "status": "shipped",
              "label": "Shipped"
            },
            {
              "id": "1043",
              "customer": "Linden",
              "owner": "Jonas Lee",
              "item": "LN-40 valve body",
              "ordered": 40,
              "available": 40,
              "promised": "Fri 18 Sep",
              "status": "ready",
              "label": "Address needed",
              "flagged": true,
              "issue": "Stock is ready. The delivery address still needs confirmation.",
              "evidence": "Orders!10 · LN-40 · 40 units · address unconfirmed\nStock!11 · LN-40 · 40 on hand"
            },
            {
              "id": "1050",
              "customer": "Granite Ridge",
              "owner": "Jonas Lee",
              "item": "GR-7 coupling",
              "ordered": 45,
              "available": 30,
              "promised": "Fri 18 Sep",
              "status": "open",
              "label": "15 inbound Tue",
              "issue": "30 on hand. The remaining 15 are due Tue 15 Sep.",
              "evidence": "Orders!11 · GR-7 · 45 units · promised Fri 18 Sep\nStock!12 · GR-7 · 30 on hand\nSupplier PO 7702 · 15 units due Tue 15 Sep"
            },
            {
              "id": "1040",
              "customer": "Cobalt Works",
              "owner": "Jonas Lee",
              "item": "CW-25 flange",
              "ordered": 64,
              "available": 64,
              "promised": "Mon 14 Sep",
              "status": "shipped",
              "label": "Shipped"
            },
            {
              "id": "1044",
              "customer": "Delmar Foods",
              "owner": "Jonas Lee",
              "item": "DF-1 sanitary valve",
              "ordered": 150,
              "available": 150,
              "promised": "Wed 16 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1046",
              "customer": "Everly Home",
              "owner": "Jonas Lee",
              "item": "EH-8 fitting pack",
              "ordered": 22,
              "available": 22,
              "promised": "Thu 17 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1048",
              "customer": "Fairhaven",
              "owner": "Jonas Lee",
              "item": "FH-30 regulator",
              "ordered": 90,
              "available": 90,
              "promised": "Tue 15 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1052",
              "customer": "Hollis Bakery",
              "owner": "Jonas Lee",
              "item": "HB-4 nozzle",
              "ordered": 10,
              "available": 10,
              "promised": "Mon 14 Sep",
              "status": "shipped",
              "label": "Shipped"
            },
            {
              "id": "1054",
              "customer": "Ivywood",
              "owner": "Jonas Lee",
              "item": "IW-12 manifold",
              "ordered": 55,
              "available": 55,
              "promised": "Thu 17 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1057",
              "customer": "Juniper Air",
              "owner": "Jonas Lee",
              "item": "JA-5 filter housing",
              "ordered": 28,
              "available": 28,
              "promised": "Fri 18 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1041",
              "customer": "Lumen Lighting",
              "owner": "Priya Nair",
              "item": "LL-60 bracket",
              "ordered": 75,
              "available": 60,
              "promised": "Wed 16 Sep",
              "status": "open",
              "label": "15 inbound Tue",
              "issue": "60 on hand. The remaining 15 are due Tue 15 Sep.",
              "evidence": "Orders!20 · LL-60 · 75 units · promised Wed 16 Sep\nStock!21 · LL-60 · 60 on hand\nSupplier PO 7709 · 15 units due Tue 15 Sep"
            },
            {
              "id": "1039",
              "customer": "Kestrel Outdoor",
              "owner": "Priya Nair",
              "item": "KO-18 buckle",
              "ordered": 200,
              "available": 200,
              "promised": "Mon 14 Sep",
              "status": "shipped",
              "label": "Shipped"
            },
            {
              "id": "1055",
              "customer": "Meridian Health",
              "owner": "Priya Nair",
              "item": "MH-2 valve kit",
              "ordered": 16,
              "available": 16,
              "promised": "Tue 15 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1059",
              "customer": "Norwood",
              "owner": "Priya Nair",
              "item": "NW-44 coupling",
              "ordered": 48,
              "available": 48,
              "promised": "Thu 17 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1060",
              "customer": "Orchard Lane",
              "owner": "Priya Nair",
              "item": "OL-6 hose clamp",
              "ordered": 32,
              "available": 32,
              "promised": "Fri 18 Sep",
              "status": "ready",
              "label": "Ready"
            },
            {
              "id": "1061",
              "customer": "Parkside",
              "owner": "Priya Nair",
              "item": "PS-10 gasket",
              "ordered": 20,
              "available": 20,
              "promised": "Mon 14 Sep",
              "status": "shipped",
              "label": "Shipped"
            },
            {
              "id": "1062",
              "customer": "Quarry Hill",
              "owner": "Priya Nair",
              "item": "QH-3 pump seal",
              "ordered": 64,
              "available": 64,
              "promised": "Fri 18 Sep",
              "status": "ready",
              "label": "Ready"
            }
          ]
        }
      },
      "layout": {
        "sortOrder": 0,
        "size": "xlarge"
      }
    },
    {
      "id": "workbook",
      "type": "daslab/file",
      "name": "Orders & stock.xlsx",
      "fields": {
        "url": "https://daslab.run/replay/order-review/Orders%20%26%20stock.xlsx",
        "filename": "Orders & stock.xlsx",
        "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "size_bytes": 8987
      },
      "layout": {
        "sortOrder": 1,
        "size": "icon"
      }
    },
    {
      "id": "guide",
      "type": "daslab/note",
      "name": "Make this review yours",
      "fields": {
        "content": "# Make this review yours\n\nOpen the review, check the source evidence, and add a decision. It stays with the order when you come back.\n\nDrop your workbook into the chat and try:\n\n> Replace the sample orders with this workbook. Keep the review layout and our decisions.\n\nBring the next supplier update here too. Ask what changed, draft a follow-up, or reshape the review around your team.\n\nConnect email when you want to send a message. Once your data source is connected, you can also ask for a recurring review.\n"
      },
      "layout": {
        "sortOrder": 2,
        "size": "medium"
      }
    }
  ],
  "meta": {
    "author": "Daslab",
    "license": "MIT"
  }
}
