{"version":3,"names":["DropOnBodyHandler","DropElementHandler","applyDragCSSClass","addEventListener","evt","classList","add","remove","appendToContainerAt","node","dropOnDocumentBehavior","openAt","findDropContext","element","path","container","document","body","find","ea","contains","localName","__unload__","removeListeners","pt","debounce","through","asDragImageFor","getObjectFor","removeTempKey","letsScript","MicrosoftAcademicEntities","Strings","constructor","mimeType","handler","handle","dt","dataTransfer","types","includes","getData","then","r","customHandler","handleElement","composedPath","appendChild","lively","setClientPosition","getPosition","lastDragOffset","moveBy","tempKey","cb","removeEventListener","load","onDragOver","onDrop","handlers","dataTempKey","data","viewTempKey","sourceView","icon","offset","JSON","parse","clientX","clientY","subPt","knotURL","create","urlString","match","openInspector","getClientPosition","existing","querySelector","notify","infoSpan","link","info","m","matchAll","id","raw","files","loadJSON","entity","entities","type","getEntityType","Ty","label","innerHTML","preventDefault","stopPropagation","openBrowser","replace","elementByID","parentElement","text","comp","updateView","entries","querySelectorAll","length","style","width","htmlString","div","target","lastDropTarget","lastDropTargetHighlight","Array","from","showElement","handleFiles","forEach","file","extension","name","ctrlKey","reader","FileReader","onload","event","dataURL","result","img","readAsDataURL","item","url","readBlobAsDataURL","cssText","split","pair","value","warn"],"sources":["draganddrop.js"],"sourcesContent":["import { pt } from 'src/client/graphics.js';\nimport { debounce, through, asDragImageFor, getObjectFor, removeTempKey } from \"utils\";\nimport { letsScript } from 'src/client/vivide/vivide.js';\nimport { MicrosoftAcademicEntities} from \"src/client/literature.js\"\nimport Strings from \"src/client/strings.js\"\n\n\nexport function applyDragCSSClass() {\n  this.addEventListener('dragenter', evt => this.classList.add(\"drag\"), false);\n  this.addEventListener('dragleave', evt => this.classList.remove(\"drag\"), false);\n  this.addEventListener('drop', evt => this.classList.remove(\"drag\"));\n}\n\nfunction appendToContainerAt(node, evt) {\n  dropOnDocumentBehavior.openAt(node, evt)\n  // document.body.appendChild(node);\n  // lively.setClientPosition(node, pt(evt.clientX, evt.clientY));\n}\n\n\n//class DataTransferItemHandler {\n//  handle() {\n//    \n//  }\n//}\n\nclass DropOnBodyHandler {\n  constructor(mimeType, handler) {\n    this.mimeType = mimeType;\n    this.handler = handler;\n  }\n  \n  handle(evt) {\n    const dt = evt.dataTransfer;\n    if(!dt.types.includes(this.mimeType)) { return false; }\n    \n    const element = this.handler(dt.getData(this.mimeType));\n    if(element) {\n      if(element.then) {\n        element.then( r => {\n          appendToContainerAt(r, evt);  \n        })\n      } else {\n        appendToContainerAt(element, evt);\n      }\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n\nfunction findDropContext(element, path, container=document.body) {\n  return path.find(ea => {\n    return ea && (ea === container || (ea.classList && ea.classList.contains(\"lively-content\")) || ea.localName == \"lively-folder\")\n  }) || container\n}\n\n\n// drop and a dragged html element into a container\nexport class DropElementHandler {\n  constructor(container, customHandler) {\n    this.container = container;\n    if (customHandler) {\n      this.handleElement = customHandler\n    }\n  }\n  \n  handleElement(element, evt) {\n    var container = findDropContext(element, evt.composedPath(), this.container)\n    container.appendChild(element)\n    lively.setClientPosition(element, lively.getPosition(evt))\n    if (element.lastDragOffset) {\n      lively.moveBy(element, element.lastDragOffset)\n    }\n  }\n  \n  handle(evt) {\n    const dt = evt.dataTransfer\n    if(!dt.types.includes(\"lively/element\")) { return false }\n    const tempKey = dt.getData(\"lively/element\")\n    const element = getObjectFor(tempKey)\n    if (!element) return false\n    \n    this.handleElement(element, evt)\n    \n    removeTempKey(tempKey)\n    return true\n  }\n  \n  static handle(evt, container, cb) {\n    new this(container, cb).handle(evt)\n  }\n}\n\nconst dropOnDocumentBehavior = {\n  \n  removeListeners() {\n    lively.removeEventListener(\"dropOnDocumentBehavior\", document);\n  },\n  \n  load() {\n    // #HACK: we remove listeners here, because this module is called three times (without unloading in between!!)\n    this.removeListeners();\n    lively.addEventListener(\"dropOnDocumentBehavior\", document, \"dragover\", ::this.onDragOver);\n    lively.addEventListener(\"dropOnDocumentBehavior\", document, \"drop\", ::this.onDrop);\n    \n    this.handlers = [\n      // lively elements\n      new DropElementHandler(document.body),\n      // {\n      //   handle(evt) {\n      //     const dt = evt.dataTransfer;\n      //     if(!dt.types.includes(\"lively/element\")) { return false; }\n      //     const tempKey = dt.getData(\"lively/element\");\n      //     const element = getObjectFor(tempKey);\n      //     if (!element) return false;\n      //     document.body.appendChild(element)\n      //     lively.setClientPosition(element, lively.getPosition(evt))\n      //     if (element.lastDragOffset) {\n      //       lively.moveBy(element, element.lastDragOffset)\n      //     }\n      //     removeTempKey(tempKey);\n      //     return true;\n      //   }\n      // },\n      // vivide list\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"vivide\")) { return false; }\n          if(!dt.types.includes(\"javascript/object\")) { return false; }\n          const dataTempKey = dt.getData(\"javascript/object\");\n          const data = getObjectFor(dataTempKey);\n          const viewTempKey = dt.getData(\"vivide/source-view\");\n          const sourceView = getObjectFor(viewTempKey);\n          getObjectFor\n          letsScript(data, evt, sourceView);\n          return true;\n        }\n      },\n\n      // move a desktop item\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"desktop-icon/object\")) { return false; }\n          const tempKey = dt.getData(\"desktop-icon/object\");\n          const icon = getObjectFor(tempKey);\n          removeTempKey(tempKey);\n\n          const offset = dt.types.includes(\"desktop-icon/offset\") ?\n            JSON.parse(dt.getData(\"desktop-icon/offset\")) :\n            pt(0, 0);\n          lively.setClientPosition(icon, pt(evt.clientX, evt.clientY).subPt(offset));\n          return true;\n        }\n      },\n\n      // knot/url to desktop item\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"knot/url\")) { return false; }\n          const knotURL = dt.getData(\"knot/url\");\n\n          lively.create('knot-desktop-icon')\n            .through(icon => lively.setClientPosition(icon, pt(evt.clientX, evt.clientY)))\n            .then(icon => icon.knotURL = knotURL);\n\n          return true;\n        }\n      },\n      \n      new DropOnBodyHandler('text/uri-list', urlString => {\n        if (!urlString.match(/^data\\:image\\/png/)) { return false; }\n        \n        return <img class=\"lively-content\" src={urlString}></img>;\n      }),\n      \n      // open javascript/object in inspector\n      {\n        handle(evt) {\n          const dt = evt.dataTransfer;\n          if(!dt.types.includes(\"javascript/object\")) { return false; }\n          const tempKey = dt.getData(\"javascript/object\");\n          \n          lively.openInspector(getObjectFor(tempKey), pt(\n            evt.clientX,\n            evt.clientY).subPt(lively.getClientPosition(document.body)));\n          removeTempKey(tempKey);\n\n          return true;\n        }\n      },\n\n      new DropOnBodyHandler('text/uri-list', urlString => {\n        if (!urlString.match(/^plex:\\//)) { return false; }\n        var existing = document.body.querySelector(`plex-link[src=\"${urlString}\"]`)\n        if (existing) {\n          existing.remove()\n        }\n        lively.notify(\"dropped \" + urlString)\n        return <plex-link src={urlString}></plex-link>\n      }),\n\n      // #ExampleForLeo #Bibilograpy #TODO #Refactor\n      new DropOnBodyHandler('text/uri-list', urlString => {\n        if (!urlString.match(/^academic:\\//)) { return false; }\n        lively.notify(\"academic \" + urlString)\n        \n        var infoSpan = <div id=\"info\"></div>\n        var link = <div class=\"lively-content\" style=\"background-color: lightgray; border:1px solid orange\"><a  href={urlString}>\n            {urlString}  \n        </a>{infoSpan}</div>;\n        \n        (async () => {\n          let info = \"\";\n          for(var m of Strings.matchAll(/[Ii]d=([0-9]+)/, urlString)) {\n            let id = m[1]\n            let raw  = await lively.files.loadJSON(`academic://raw:Id=${id}?attr=AuN,Ty,AA.AuN,Y,Ti,FN`)\n\n            var entity = raw.entities[0]\n            var type = MicrosoftAcademicEntities.getEntityType(entity.Ty)\n            var label = \"\"\n            if(type ==\"author\") { \n              label = entity[\"AuN\"]\n            } else if(type == \"field-of-study\") { \n              label =  entity[\"FN\"] \n            } else if(type ==\"paper\") { \n              label =  entity[\"Ti\"] \n            }\n\n            info += `<span>${id}: ${type}, ${label}</span><br>` \n          }\n          infoSpan.innerHTML = info\n        })()\n        \n        // register the event... to be able to remove it again...\n        lively.addEventListener(\"link\", link, \"click\", evt => {\n          // #TODO make this bevior persistent?\n          evt.preventDefault();\n          evt.stopPropagation();\n          lively.openBrowser(urlString);\n          return true;\n        })\n        return link\n      }),\n      \n      \n      new DropOnBodyHandler('text/uri-list', urlString => {\n        \n        var link = <div class=\"lively-content\"><a  href={urlString}>\n          {urlString.replace(/\\/$/,\"\").replace(/.*\\//,\"\")}\n        </a></div>;\n        // register the event... to be able to remove it again...\n        lively.addEventListener(\"link\", link, \"click\", evt => {\n          // #TODO make this bevior persistent?\n          evt.preventDefault();\n          evt.stopPropagation();\n          lively.openBrowser(urlString);\n          return true;\n        })\n        return link\n      }),\n\n        new DropOnBodyHandler('application/lively4id', id => {\n        var element = lively.elementByID(id)\n    \n        if (element && \n            (element.parentElement === document.body) /* move element */) {          \n          return element\n        }\n        \n        lively.notify(\"drop id:\" + id)\n    \n        return false\n      }),\n  \n      new DropOnBodyHandler('text/plain', async text => {\n        // test for bibtex content\n         if (text.match(/^\\s*@[a-zA-Z]+\\{/)) {          \n            const comp = await (<lively-bibtex style=\"width:700px\"></lively-bibtex>);\n            comp.innerHTML = text;\n            await comp.updateView();\n            var entries = comp.querySelectorAll(\"lively-bibtex-entry\")\n             if (entries.length == 1) {\n                entries[0].style.width = \"700px\"\n                return entries[0]\n             }\n            return comp\n        }\n        return false\n      }),\n  \n  \n      new DropOnBodyHandler('text/html', htmlString => {\n        const div = <div></div>;\n        div.innerHTML = htmlString;\n\n        return div;\n      }),\n  \n  \n      new DropOnBodyHandler('text/plain', text => {\n        return <p>{text}</p>;\n      }),\n\n      // just an ui interaction, no data\n      {\n        handle(evt) {\n          return evt.dataTransfer.types.includes(\"ui/interaction\");\n        }\n      }\n    ];\n  },\n  \n  openAt(node, evt) {  \n    var target = this.lastDropTarget || document.body\n    target.appendChild(node);\n    lively.setClientPosition(node, pt(evt.clientX, evt.clientY));\n    if (this.lastDropTargetHighlight) this.lastDropTargetHighlight.remove()\n  },\n\n\n  \n  \n  onDragOver(evt) {\n    this.lastDropTarget = Array.from(evt.composedPath())\n      .find(ea => ea && ((ea.classList && ea.classList.contains(\"lively-content\")) || ea.localName == \"lively-folder\"))\n    if (this.lastDropTargetHighlight) this.lastDropTargetHighlight.remove()\n    this.lastDropTargetHighlight = lively.showElement(this.lastDropTarget)\n    \n    evt.stopPropagation();\n    evt.preventDefault();\n  },\n\n  handleFiles(evt) {\n    const files = evt.dataTransfer.files;\n\n    if(files.length === 0) { return false; }\n\n    lively.notify(`Dropped ${files.length} file(s).`);\n    Array.from(files).forEach(async (file) => {\n        const extension = lively.files.extension(file.name)\n        // #Research how do we deal with content vs. container... drop a picture here or a file that contains the picture? #Journal #Interesting\n        if (extension == \"png\" && !evt.ctrlKey) {\n            // #Refactor #TODO use lively.files.readBlobAsDataURL\n            const reader = new FileReader();\n            reader.onload = event => {\n              const dataURL = event.target.result.replace(/^data\\:image\\/png;/, `data:image/png;name=${file.name};`);\n              const img = <img class=\"lively-content\" src={dataURL}></img>;\n              appendToContainerAt(img, evt);\n            };\n            reader.readAsDataURL(file); \n        } \n        // else if (extension == \"html\") {\n        //   var source = await lively.files.readBlobAsText(file)\n        //   lively.clipboard.pasteHTMLDataInto(source, document.body, false, lively.getPosition(evt));\n        // } \n        else {          \n          var item = await (<lively-file></lively-file>)\n          item.classList.add(\"lively-content\") // for persistence\n          // #TODO check for existing \"file\"\n          item.name = file.name\n          this.openAt(item, evt);\n          item.url = await lively.files.readBlobAsDataURL(file) \n        }\n      });\n    return true;\n  },\n  \n  async onDrop(evt) {\n    // var target = evt.composedPath().find(ea => ea.classList.contains(\"lively-content\") )\n    const dt = evt.dataTransfer;\n    \n    /*\n    console.group(\"Drop Event on body\");\n    console.log(dt);\n    console.log(`#files ${dt.files.length}`);\n    console.log(Array.from(dt.items));\n    lively.notify(Array.from(dt.types).join(\" \"));\n    console.groupEnd();\n    */\n\n    evt.stopPropagation();\n    evt.preventDefault();\n    \n    if(this.handleFiles(evt)) { return; }\n\n    if(Array.from(dt.types).length > 0) {\n      if(this.handlers.find(handler => handler.handle(evt))) {\n        return;\n      }\n    }\n    var cssText = evt.dataTransfer.getData(\"lively/cssText\")\n    if (this.lastDropTarget && cssText) {\n      cssText.split(/; */).forEach(pair => {\n        var name, value;\n        [name,value] = pair.split(/: */)\n        lively.notify(\"set \" + this.lastDropTarget + \"'s \" + name + \" to \" + value)\n        name = name.replace(/ /g,\"\")\n        this.lastDropTarget.style[name] = value\n        // window.LastDT = this.lastDropTarget\n        // window.LastName = name\n        // window.LastCSS = value\n        // target.style[\"background\"] = \"red\"\n      })\n    } else {  \n      lively.warn(\"Dragged content contained neither files nor handled items\");\n    }\n    \n  }\n}\n\nexport function __unload__() {\n  dropOnDocumentBehavior.removeListeners();\n}\n\ndropOnDocumentBehavior.load()"],"mappings":";;;4QA0BMA,iBAAiB,EAkCVC,kBAAkB;EArDxB,SAASC,iBAAiB,GAAG;IAClC,IAAI,CAACC,gBAAgB,CAAC,WAAW,EAAEC,GAAG,IAAI,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAC5E,IAAI,CAACH,gBAAgB,CAAC,WAAW,EAAEC,GAAG,IAAI,IAAI,CAACC,SAAS,CAACE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAC/E,IAAI,CAACJ,gBAAgB,CAAC,MAAM,EAAEC,GAAG,IAAI,IAAI,CAACC,SAAS,CAACE,MAAM,CAAC,MAAM,CAAC,CAAC;EACrE;EAEA,SAASC,mBAAmB,CAACC,IAAI,EAAEL,GAAG,EAAE;IACtCM,sBAAsB,CAACC,MAAM,CAACF,IAAI,EAAEL,GAAG,CAAC;IACxC;IACA;EACF;;EAGA;EACA;EACA;EACA;EACA;;EA4BA,SAASQ,eAAe,CAACC,OAAO,EAAEC,IAAI,EAAEC,SAAS,GAACC,QAAQ,CAACC,IAAI,EAAE;IAC/D,OAAOH,IAAI,CAACI,IAAI,CAACC,EAAE,IAAI;MACrB,OAAOA,EAAE,KAAKA,EAAE,KAAKJ,SAAS,IAAKI,EAAE,CAACd,SAAS,IAAIc,EAAE,CAACd,SAAS,CAACe,QAAQ,CAAC,gBAAgB,CAAE,IAAID,EAAE,CAACE,SAAS,IAAI,eAAe,CAAC;IACjI,CAAC,CAAC,IAAIN,SAAS;EACjB;;EAGA;;EAoWO,SAASO,UAAU,GAAG;IAC3BZ,sBAAsB,CAACa,eAAe,EAAE;EAC1C;EAAC;IAAA,mBA1ZerB,iBAAiB;IAAA;IAAA,YAwZjBoB;EAAU;EAAA;IAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MA/ZjBE,EAAE,wBAAFA,EAAE;IAAA;MACFC,QAAQ,UAARA,QAAQ;MAAEC,OAAO,UAAPA,OAAO;MAAEC,cAAc,UAAdA,cAAc;MAAEC,YAAY,UAAZA,YAAY;MAAEC,aAAa,UAAbA,aAAa;IAAA;MAC9DC,UAAU,4BAAVA,UAAU;IAAA;MACVC,yBAAyB,0BAAzBA,yBAAyB;IAAA;MAC3BC,OAAO;IAAA;IAAA;MAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,sBA2ZEV,2CAAU;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UA3WjBV,gDAAe;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAvCfJ,oDAAmB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,6BANZN,kDAAiB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAPxBsB,mCAAE;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAC+CK,8CAAa;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAA3BD,6CAAY;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAA5BD,+CAAc;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAvBD,wCAAO;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAjBD,yCAAQ;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACRK,2CAAU;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACVC,0DAAyB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAC3BC,wCAAO;UAAA;QAAA;QAAA;QAAA;MAAA;MAsBRhC,iBAAiB,GAAvB,MAAMA,iBAAiB,CAAC;QACtBiC,WAAW,CAACC,QAAQ,EAAEC,OAAO,EAAE;UAC7B,IAAI,CAACD,QAAQ,GAAGA,QAAQ;UACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;QACxB;QAEAC,MAAM,CAAChC,GAAG,EAAE;UACV,MAAMiC,EAAE,GAAGjC,GAAG,CAACkC,YAAY;UAC3B,IAAG,CAACD,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,IAAI,CAACN,QAAQ,CAAC,EAAE;YAAE,OAAO,KAAK;UAAE;UAEtD,MAAMrB,OAAO,GAAG,IAAI,CAACsB,OAAO,CAACE,EAAE,CAACI,OAAO,CAAC,IAAI,CAACP,QAAQ,CAAC,CAAC;UACvD,IAAGrB,OAAO,EAAE;YACV,IAAGA,OAAO,CAAC6B,IAAI,EAAE;cACf7B,OAAO,CAAC6B,IAAI,CAAEC,CAAC,IAAI;gBACjBnC,mBAAmB,CAACmC,CAAC,EAAEvC,GAAG,CAAC;cAC7B,CAAC,CAAC;YACJ,CAAC,MAAM;cACLI,mBAAmB,CAACK,OAAO,EAAET,GAAG,CAAC;YACnC;YACA,OAAO,IAAI;UACb,CAAC,MAAM;YACL,OAAO,KAAK;UACd;QACF;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAxBKJ,kDAAiB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA,8BAkCVC,kBAAkB,GAAxB,MAAMA,kBAAkB,CAAC;QAC9BgC,WAAW,CAAClB,SAAS,EAAE6B,aAAa,EAAE;UACpC,IAAI,CAAC7B,SAAS,GAAGA,SAAS;UAC1B,IAAI6B,aAAa,EAAE;YACjB,IAAI,CAACC,aAAa,GAAGD,aAAa;UACpC;QACF;QAEAC,aAAa,CAAChC,OAAO,EAAET,GAAG,EAAE;UAC1B,IAAIW,SAAS,GAAGH,eAAe,CAACC,OAAO,EAAET,GAAG,CAAC0C,YAAY,EAAE,EAAE,IAAI,CAAC/B,SAAS,CAAC;UAC5EA,SAAS,CAACgC,WAAW,CAAClC,OAAO,CAAC;UAC9BmC,MAAM,CAACC,iBAAiB,CAACpC,OAAO,EAAEmC,MAAM,CAACE,WAAW,CAAC9C,GAAG,CAAC,CAAC;UAC1D,IAAIS,OAAO,CAACsC,cAAc,EAAE;YAC1BH,MAAM,CAACI,MAAM,CAACvC,OAAO,EAAEA,OAAO,CAACsC,cAAc,CAAC;UAChD;QACF;QAEAf,MAAM,CAAChC,GAAG,EAAE;UACV,MAAMiC,EAAE,GAAGjC,GAAG,CAACkC,YAAY;UAC3B,IAAG,CAACD,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YAAE,OAAO,KAAK;UAAC;UACxD,MAAMa,OAAO,GAAGhB,EAAE,CAACI,OAAO,CAAC,gBAAgB,CAAC;UAC5C,MAAM5B,OAAO,GAAGe,YAAY,CAACyB,OAAO,CAAC;UACrC,IAAI,CAACxC,OAAO,EAAE,OAAO,KAAK;UAE1B,IAAI,CAACgC,aAAa,CAAChC,OAAO,EAAET,GAAG,CAAC;UAEhCyB,aAAa,CAACwB,OAAO,CAAC;UACtB,OAAO,IAAI;QACb;QAEA,OAAOjB,MAAM,CAAChC,GAAG,EAAEW,SAAS,EAAEuC,EAAE,EAAE;UAChC,IAAI,IAAI,CAACvC,SAAS,EAAEuC,EAAE,CAAC,CAAClB,MAAM,CAAChC,GAAG,CAAC;QACrC;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,8BAjCYH,mDAAkB;UAAA;QAAA;QAAA;QAAA;MAAA;MAmCzBS,sBAAsB,GAAG;QAE7Ba,eAAe,GAAG;UAChByB,MAAM,CAACO,mBAAmB,CAAC,wBAAwB,EAAEvC,QAAQ,CAAC;QAChE,CAAC;QAEDwC,IAAI,GAAG;UACL;UACA,IAAI,CAACjC,eAAe,EAAE;UACtByB,MAAM,CAAC7C,gBAAgB,CAAC,wBAAwB,EAAEa,QAAQ,EAAE,UAAU,EAAI,IAAI,CAACyC,UAAU,MAAf,IAAI,EAAY;UAC1FT,MAAM,CAAC7C,gBAAgB,CAAC,wBAAwB,EAAEa,QAAQ,EAAE,MAAM,EAAI,IAAI,CAAC0C,MAAM,MAAX,IAAI,EAAQ;UAElF,IAAI,CAACC,QAAQ,GAAG;UACd;UACA,IAAI1D,kBAAkB,CAACe,QAAQ,CAACC,IAAI,CAAC;UACrC;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;YACEmB,MAAM,CAAChC,GAAG,EAAE;cACV,MAAMiC,EAAE,GAAGjC,GAAG,CAACkC,YAAY;cAC3B,IAAG,CAACD,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,KAAK;cAAE;cACjD,IAAG,CAACH,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;gBAAE,OAAO,KAAK;cAAE;cAC5D,MAAMoB,WAAW,GAAGvB,EAAE,CAACI,OAAO,CAAC,mBAAmB,CAAC;cACnD,MAAMoB,IAAI,GAAGjC,YAAY,CAACgC,WAAW,CAAC;cACtC,MAAME,WAAW,GAAGzB,EAAE,CAACI,OAAO,CAAC,oBAAoB,CAAC;cACpD,MAAMsB,UAAU,GAAGnC,YAAY,CAACkC,WAAW,CAAC;cAC5ClC,YAAY;cACZE,UAAU,CAAC+B,IAAI,EAAEzD,GAAG,EAAE2D,UAAU,CAAC;cACjC,OAAO,IAAI;YACb;UACF,CAAC;UAED;UACA;YACE3B,MAAM,CAAChC,GAAG,EAAE;cACV,MAAMiC,EAAE,GAAGjC,GAAG,CAACkC,YAAY;cAC3B,IAAG,CAACD,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;gBAAE,OAAO,KAAK;cAAE;cAC9D,MAAMa,OAAO,GAAGhB,EAAE,CAACI,OAAO,CAAC,qBAAqB,CAAC;cACjD,MAAMuB,IAAI,GAAGpC,YAAY,CAACyB,OAAO,CAAC;cAClCxB,aAAa,CAACwB,OAAO,CAAC;cAEtB,MAAMY,MAAM,GAAG5B,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,qBAAqB,CAAC,GACrD0B,IAAI,CAACC,KAAK,CAAC9B,EAAE,CAACI,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAC7CjB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;cACVwB,MAAM,CAACC,iBAAiB,CAACe,IAAI,EAAExC,EAAE,CAACpB,GAAG,CAACgE,OAAO,EAAEhE,GAAG,CAACiE,OAAO,CAAC,CAACC,KAAK,CAACL,MAAM,CAAC,CAAC;cAC1E,OAAO,IAAI;YACb;UACF,CAAC;UAED;UACA;YACE7B,MAAM,CAAChC,GAAG,EAAE;cACV,MAAMiC,EAAE,GAAGjC,GAAG,CAACkC,YAAY;cAC3B,IAAG,CAACD,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAAE,OAAO,KAAK;cAAE;cACnD,MAAM+B,OAAO,GAAGlC,EAAE,CAACI,OAAO,CAAC,UAAU,CAAC;cAEtC,mBAAAO,MAAM,CAACwB,MAAM,CAAC,mBAAmB,CAAC;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;cAAA,GAC/B9C,OAAO,CAACsC,IAAI,IAAIhB,MAAM,CAACC,iBAAiB,CAACe,IAAI,EAAExC,EAAE,CAACpB,GAAG,CAACgE,OAAO,EAAEhE,GAAG,CAACiE,OAAO,CAAC,CAAC,CAAC,CAC7E3B,IAAI,CAACsB,IAAI,IAAIA,IAAI,CAACO,OAAO,GAAGA,OAAO,CAAC;cAEvC,OAAO,IAAI;YACb;UACF,CAAC,EAED,IAAIvE,iBAAiB,CAAC,eAAe,EAAEyE,SAAS,IAAI;YAClD,IAAI,CAACA,SAAS,CAACC,KAAK,CAAC,mBAAmB,CAAC,EAAE;cAAE,OAAO,KAAK;YAAE;YAE3D,oEAAkB,gBAAgB,+BAAMD,SAAS;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA;UACnD,CAAC,CAAC;UAEF;UACA;YACErC,MAAM,CAAChC,GAAG,EAAE;cACV,MAAMiC,EAAE,GAAGjC,GAAG,CAACkC,YAAY;cAC3B,IAAG,CAACD,EAAE,CAACE,KAAK,CAACC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;gBAAE,OAAO,KAAK;cAAE;cAC5D,MAAMa,OAAO,GAAGhB,EAAE,CAACI,OAAO,CAAC,mBAAmB,CAAC;cAE/CO,MAAM,CAAC2B,aAAa,CAAC/C,YAAY,CAACyB,OAAO,CAAC,EAAE7B,EAAE,CAC5CpB,GAAG,CAACgE,OAAO,EACXhE,GAAG,CAACiE,OAAO,CAAC,CAACC,KAAK,CAACtB,MAAM,CAAC4B,iBAAiB,CAAC5D,QAAQ,CAACC,IAAI,CAAC,CAAC,CAAC;cAC9DY,aAAa,CAACwB,OAAO,CAAC;cAEtB,OAAO,IAAI;YACb;UACF,CAAC,EAED,IAAIrD,iBAAiB,CAAC,eAAe,EAAEyE,SAAS,IAAI;YAClD,IAAI,CAACA,SAAS,CAACC,KAAK,CAAC,UAAU,CAAC,EAAE;cAAE,OAAO,KAAK;YAAE;YAClD,IAAIG,QAAQ,GAAG7D,QAAQ,CAACC,IAAI,CAAC6D,aAAa,CAAE,kBAAiBL,SAAU,IAAG,CAAC;YAC3E,IAAII,QAAQ,EAAE;cACZA,QAAQ,CAACtE,MAAM,EAAE;YACnB;YACAyC,MAAM,CAAC+B,MAAM,CAAC,UAAU,GAAGN,SAAS,CAAC;YACrC,qEAAuBA,SAAS;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA;UAClC,CAAC,CAAC;UAEF;UACA,IAAIzE,iBAAiB,CAAC,eAAe,EAAEyE,SAAS,IAAI;YAClD,IAAI,CAACA,SAAS,CAACC,KAAK,CAAC,cAAc,CAAC,EAAE;cAAE,OAAO,KAAK;YAAE;YACtD1B,MAAM,CAAC+B,MAAM,CAAC,WAAW,GAAGN,SAAS,CAAC;YAEtC,IAAIO,QAAQ,6DAAW,MAAM;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA,EAAO;YACpC,IAAIC,IAAI,gEAAc,gBAAgB,oCAAO,sDAAsD,mFAAWR,SAAS,6DAClHA,SAAS;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA,sBACTO,QAAQ;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA,EAAO;YAEpB,CAAC,YAAY;cACX,IAAIE,IAAI,GAAG,EAAE;cACb,KAAI,IAAIC,CAAC,IAAInD,OAAO,CAACoD,QAAQ,CAAC,gBAAgB,EAAEX,SAAS,CAAC,EAAE;gBAC1D,IAAIY,EAAE,GAAGF,CAAC,CAAC,CAAC,CAAC;gBACb,IAAIG,GAAG,GAAI,MAAMtC,MAAM,CAACuC,KAAK,CAACC,QAAQ,CAAE,qBAAoBH,EAAG,6BAA4B,CAAC;gBAE5F,IAAII,MAAM,GAAGH,GAAG,CAACI,QAAQ,CAAC,CAAC,CAAC;gBAC5B,IAAIC,IAAI,GAAG5D,yBAAyB,CAAC6D,aAAa,CAACH,MAAM,CAACI,EAAE,CAAC;gBAC7D,IAAIC,KAAK,GAAG,EAAE;gBACd,IAAGH,IAAI,IAAG,QAAQ,EAAE;kBAClBG,KAAK,GAAGL,MAAM,CAAC,KAAK,CAAC;gBACvB,CAAC,MAAM,IAAGE,IAAI,IAAI,gBAAgB,EAAE;kBAClCG,KAAK,GAAIL,MAAM,CAAC,IAAI,CAAC;gBACvB,CAAC,MAAM,IAAGE,IAAI,IAAG,OAAO,EAAE;kBACxBG,KAAK,GAAIL,MAAM,CAAC,IAAI,CAAC;gBACvB;gBAEAP,IAAI,IAAK,SAAQG,EAAG,KAAIM,IAAK,KAAIG,KAAM,aAAY;cACrD;cACAd,QAAQ,CAACe,SAAS,GAAGb,IAAI;YAC3B,CAAC,GAAG;;YAEJ;YACAlC,MAAM,CAAC7C,gBAAgB,CAAC,MAAM,EAAE8E,IAAI,EAAE,OAAO,EAAE7E,GAAG,IAAI;cACpD;cACAA,GAAG,CAAC4F,cAAc,EAAE;cACpB5F,GAAG,CAAC6F,eAAe,EAAE;cACrBjD,MAAM,CAACkD,WAAW,CAACzB,SAAS,CAAC;cAC7B,OAAO,IAAI;YACb,CAAC,CAAC;YACF,OAAOQ,IAAI;UACb,CAAC,CAAC,EAGF,IAAIjF,iBAAiB,CAAC,eAAe,EAAEyE,SAAS,IAAI;YAElD,IAAIQ,IAAI,gEAAc,gBAAgB,mFAAWR,SAAS,2DACvDA,SAAS,CAAC0B,OAAO,CAAC,KAAK,EAAC,EAAE,CAAC,CAACA,OAAO,CAAC,MAAM,EAAC,EAAE,CAAC;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA,EACvC;YACV;YACAnD,MAAM,CAAC7C,gBAAgB,CAAC,MAAM,EAAE8E,IAAI,EAAE,OAAO,EAAE7E,GAAG,IAAI;cACpD;cACAA,GAAG,CAAC4F,cAAc,EAAE;cACpB5F,GAAG,CAAC6F,eAAe,EAAE;cACrBjD,MAAM,CAACkD,WAAW,CAACzB,SAAS,CAAC;cAC7B,OAAO,IAAI;YACb,CAAC,CAAC;YACF,OAAOQ,IAAI;UACb,CAAC,CAAC,EAEA,IAAIjF,iBAAiB,CAAC,uBAAuB,EAAEqF,EAAE,IAAI;YACrD,IAAIxE,OAAO,GAAGmC,MAAM,CAACoD,WAAW,CAACf,EAAE,CAAC;YAEpC,IAAIxE,OAAO,IACNA,OAAO,CAACwF,aAAa,KAAKrF,QAAQ,CAACC,IAAK,CAAC,oBAAoB;cAChE,OAAOJ,OAAO;YAChB;YAEAmC,MAAM,CAAC+B,MAAM,CAAC,UAAU,GAAGM,EAAE,CAAC;YAE9B,OAAO,KAAK;UACd,CAAC,CAAC,EAEF,IAAIrF,iBAAiB,CAAC,YAAY,EAAE,MAAMsG,IAAI,IAAI;YAChD;YACC,IAAIA,IAAI,CAAC5B,KAAK,CAAC,kBAAkB,CAAC,EAAE;cACjC,MAAM6B,IAAI,GAAG,6EAA4B,aAAa;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;cAAA,EAAkB;cACxEA,IAAI,CAACR,SAAS,GAAGO,IAAI;cACrB,MAAMC,IAAI,CAACC,UAAU,EAAE;cACvB,IAAIC,OAAO,GAAGF,IAAI,CAACG,gBAAgB,CAAC,qBAAqB,CAAC;cACzD,IAAID,OAAO,CAACE,MAAM,IAAI,CAAC,EAAE;gBACtBF,OAAO,CAAC,CAAC,CAAC,CAACG,KAAK,CAACC,KAAK,GAAG,OAAO;gBAChC,OAAOJ,OAAO,CAAC,CAAC,CAAC;cACpB;cACD,OAAOF,IAAI;YACf;YACA,OAAO,KAAK;UACd,CAAC,CAAC,EAGF,IAAIvG,iBAAiB,CAAC,WAAW,EAAE8G,UAAU,IAAI;YAC/C,MAAMC,GAAG;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA,EAAc;YACvBA,GAAG,CAAChB,SAAS,GAAGe,UAAU;YAE1B,OAAOC,GAAG;UACZ,CAAC,CAAC,EAGF,IAAI/G,iBAAiB,CAAC,YAAY,EAAEsG,IAAI,IAAI;YAC1C,+DAAWA,IAAI;cAAA;cAAA;gBAAA;gBAAA;cAAA;cAAA;gBAAA;gBAAA;cAAA;YAAA;UACjB,CAAC,CAAC;UAEF;UACA;YACElE,MAAM,CAAChC,GAAG,EAAE;cACV,OAAOA,GAAG,CAACkC,YAAY,CAACC,KAAK,CAACC,QAAQ,CAAC,gBAAgB,CAAC;YAC1D;UACF,CAAC,CACF;QACH,CAAC;QAED7B,MAAM,CAACF,IAAI,EAAEL,GAAG,EAAE;UAChB,IAAI4G,MAAM,GAAG,IAAI,CAACC,cAAc,IAAIjG,QAAQ,CAACC,IAAI;UACjD+F,MAAM,CAACjE,WAAW,CAACtC,IAAI,CAAC;UACxBuC,MAAM,CAACC,iBAAiB,CAACxC,IAAI,EAAEe,EAAE,CAACpB,GAAG,CAACgE,OAAO,EAAEhE,GAAG,CAACiE,OAAO,CAAC,CAAC;UAC5D,IAAI,IAAI,CAAC6C,uBAAuB,EAAE,IAAI,CAACA,uBAAuB,CAAC3G,MAAM,EAAE;QACzE,CAAC;QAKDkD,UAAU,CAACrD,GAAG,EAAE;UACd,IAAI,CAAC6G,cAAc,GAAGE,KAAK,CAACC,IAAI,CAAChH,GAAG,CAAC0C,YAAY,EAAE,CAAC,CACjD5B,IAAI,CAACC,EAAE,IAAIA,EAAE,KAAMA,EAAE,CAACd,SAAS,IAAIc,EAAE,CAACd,SAAS,CAACe,QAAQ,CAAC,gBAAgB,CAAC,IAAKD,EAAE,CAACE,SAAS,IAAI,eAAe,CAAC,CAAC;UACnH,IAAI,IAAI,CAAC6F,uBAAuB,EAAE,IAAI,CAACA,uBAAuB,CAAC3G,MAAM,EAAE;UACvE,IAAI,CAAC2G,uBAAuB,GAAGlE,MAAM,CAACqE,WAAW,CAAC,IAAI,CAACJ,cAAc,CAAC;UAEtE7G,GAAG,CAAC6F,eAAe,EAAE;UACrB7F,GAAG,CAAC4F,cAAc,EAAE;QACtB,CAAC;QAEDsB,WAAW,CAAClH,GAAG,EAAE;UACf,MAAMmF,KAAK,GAAGnF,GAAG,CAACkC,YAAY,CAACiD,KAAK;UAEpC,IAAGA,KAAK,CAACoB,MAAM,KAAK,CAAC,EAAE;YAAE,OAAO,KAAK;UAAE;UAEvC3D,MAAM,CAAC+B,MAAM,CAAE,WAAUQ,KAAK,CAACoB,MAAO,WAAU,CAAC;UACjDQ,KAAK,CAACC,IAAI,CAAC7B,KAAK,CAAC,CAACgC,OAAO,CAAC,MAAOC,IAAI,IAAK;YACtC,MAAMC,SAAS,GAAGzE,MAAM,CAACuC,KAAK,CAACkC,SAAS,CAACD,IAAI,CAACE,IAAI,CAAC;YACnD;YACA,IAAID,SAAS,IAAI,KAAK,IAAI,CAACrH,GAAG,CAACuH,OAAO,EAAE;cACpC;cACA,MAAMC,MAAM,GAAG,IAAIC,UAAU,EAAE;cAC/BD,MAAM,CAACE,MAAM,GAAGC,KAAK,IAAI;gBACvB,MAAMC,OAAO,GAAGD,KAAK,CAACf,MAAM,CAACiB,MAAM,CAAC9B,OAAO,CAAC,oBAAoB,EAAG,uBAAsBqB,IAAI,CAACE,IAAK,GAAE,CAAC;gBACtG,MAAMQ,GAAG,gEAAc,gBAAgB,+BAAMF,OAAO;kBAAA;kBAAA;oBAAA;oBAAA;kBAAA;kBAAA;oBAAA;oBAAA;kBAAA;gBAAA,EAAQ;gBAC5DxH,mBAAmB,CAAC0H,GAAG,EAAE9H,GAAG,CAAC;cAC/B,CAAC;cACDwH,MAAM,CAACO,aAAa,CAACX,IAAI,CAAC;YAC9B;YACA;YACA;YACA;YACA;YAAA,KACK;cACH,IAAIY,IAAI,GAAG;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAA;kBAAA;kBAAA;gBAAA;cAAA,EAAmC;cAC9CA,IAAI,CAAC/H,SAAS,CAACC,GAAG,CAAC,gBAAgB,CAAC,EAAC;cACrC;cACA8H,IAAI,CAACV,IAAI,GAAGF,IAAI,CAACE,IAAI;cACrB,IAAI,CAAC/G,MAAM,CAACyH,IAAI,EAAEhI,GAAG,CAAC;cACtBgI,IAAI,CAACC,GAAG,GAAG,MAAMrF,MAAM,CAACuC,KAAK,CAAC+C,iBAAiB,CAACd,IAAI,CAAC;YACvD;UACF,CAAC,CAAC;UACJ,OAAO,IAAI;QACb,CAAC;QAED,MAAM9D,MAAM,CAACtD,GAAG,EAAE;UAChB;UACA,MAAMiC,EAAE,GAAGjC,GAAG,CAACkC,YAAY;;UAE3B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;UAEIlC,GAAG,CAAC6F,eAAe,EAAE;UACrB7F,GAAG,CAAC4F,cAAc,EAAE;UAEpB,IAAG,IAAI,CAACsB,WAAW,CAAClH,GAAG,CAAC,EAAE;YAAE;UAAQ;UAEpC,IAAG+G,KAAK,CAACC,IAAI,CAAC/E,EAAE,CAACE,KAAK,CAAC,CAACoE,MAAM,GAAG,CAAC,EAAE;YAClC,IAAG,IAAI,CAAChD,QAAQ,CAACzC,IAAI,CAACiB,OAAO,IAAIA,OAAO,CAACC,MAAM,CAAChC,GAAG,CAAC,CAAC,EAAE;cACrD;YACF;UACF;UACA,IAAImI,OAAO,GAAGnI,GAAG,CAACkC,YAAY,CAACG,OAAO,CAAC,gBAAgB,CAAC;UACxD,IAAI,IAAI,CAACwE,cAAc,IAAIsB,OAAO,EAAE;YAClCA,OAAO,CAACC,KAAK,CAAC,KAAK,CAAC,CAACjB,OAAO,CAACkB,IAAI,IAAI;cACnC,IAAIf,IAAI,EAAEgB,KAAK;cACf,CAAChB,IAAI,EAACgB,KAAK,CAAC,GAAGD,IAAI,CAACD,KAAK,CAAC,KAAK,CAAC;cAChCxF,MAAM,CAAC+B,MAAM,CAAC,MAAM,GAAG,IAAI,CAACkC,cAAc,GAAG,KAAK,GAAGS,IAAI,GAAG,MAAM,GAAGgB,KAAK,CAAC;cAC3EhB,IAAI,GAAGA,IAAI,CAACvB,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC;cAC5B,IAAI,CAACc,cAAc,CAACL,KAAK,CAACc,IAAI,CAAC,GAAGgB,KAAK;cACvC;cACA;cACA;cACA;YACF,CAAC,CAAC;UACJ,CAAC,MAAM;YACL1F,MAAM,CAAC2F,IAAI,CAAC,2DAA2D,CAAC;UAC1E;QAEF;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UA9TKjI,uDAAsB;UAAA;QAAA;QAAA;QAAA;MAAA;MAoU5BA,sBAAsB,CAAC8C,IAAI,EAAE;IAAA;EAAA;AAAA"}