From 77f298ed110a2a6651694742ba35b3b107631277 Mon Sep 17 00:00:00 2001 From: fred Date: Thu, 28 Mar 2024 18:32:46 +0100 Subject: [PATCH] TW favicon & Tiddler Commander --- templates/twuplanet.html | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/templates/twuplanet.html b/templates/twuplanet.html index 846b2b51..5707703f 100644 --- a/templates/twuplanet.html +++ b/templates/twuplanet.html @@ -677,8 +677,12 @@ Error message and password prompt
  • $:/DefaultTiddlers
  • +
  • $:/favicon.astroport.ico
  • +
  • $:/favicon.ico
  • +
  • $:/favicon.zicmama.ico
  • +
  • $:/Import
  • $:/ipfs/saver/api
  • @@ -777,6 +781,8 @@ Error message and password prompt
  • $:/plugins/ipfs
  • +
  • $:/plugins/kookma/commander
  • +
  • $:/plugins/oeyoews/neotw-pwa
  • $:/plugins/orange/mermaid-tw5
  • @@ -855,6 +861,10 @@ Error message and password prompt
  • $:/state/plugin-info-1867135918-$:/plugins/sycom/atom-feed
  • +
  • $:/state/plugin-info-1867135918-$:/plugins/tiddlywiki/mobiledragdrop
  • + +
  • $:/state/plugin-info-1867135918-$:/plugins/tiddlywiki/mobiledragdrop---475165247
  • +
  • $:/state/plugin-info-1935472218-$:/plugins/ipfs--1406793555
  • $:/state/plugin-info-292606808-$:/plugins/oeyoews/neotw-pwa---1763606351
  • @@ -946,8 +956,10 @@ Error message and password prompt {"created":"20221126144610490","text":"\\whitespace trim\n\u003Cspan class=\"tc-tag-list-item\" data-tag-title=\u003C\u003CcurrentTiddler>>>\n\u003C$set name=\"transclusion\" value=\u003C\u003CcurrentTiddler>>>\n\u003C$macrocall $name=\"tag-pill-body\" tag=\u003C\u003CcurrentTiddler>> icon={{{ [\u003CcurrentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]!is[draft]get[text]] }}} colour={{{ [\u003CcurrentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"tag='span'\"\"\"/>\n\u003C/$set>\n\u003C/span>\n","creator":"Boris","title":"$:/core/ui/TagTemplate","modified":"20240315154257082","modifier":"Boris","tags":"","code-body":"yes"}, {"created":"20240305123140733","text":"\\whitespace trim\n\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) \u003C$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View]!is[draft]]\n\u003C$vars storyTiddler=\u003C\u003CcurrentTiddler>> tiddlerInfoState=\u003C\u003Cqualify \"$:/state/popup/tiddler-info\">>>\n\u003Cdiv data-tiddler-title=\u003C\u003CcurrentTiddler>> data-volatile={{!!is_volatile}} data-tags={{!!tags}} class={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/TiddlerTemplate]!is[draft]] :map:flat[subfilter{!!text}] tc-tiddler-frame tc-tiddler-view-frame [\u003CcurrentTiddler>is[tiddler]then[tc-tiddler-exists]] [\u003CcurrentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [\u003CcurrentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [\u003CcurrentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [\u003CcurrentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [\u003CcurrentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}} role=\"article\">\n\u003C$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!is[draft]]\" variable=\"listItem\">\n\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\n\u003C/$list>\n\u003C/div>\n\u003C/$vars>","title":"$:/core/ui/ViewTemplate","code-body":"yes","modified":"20240305124543845","tags":"$:/isAttachment $:/isEmbedded _PLAYER_"}, {"created":"20231123173043371","title":"$:/DefaultTiddlers","text":"[list[$:/StoryList]]","modified":"20231202141735973"}, -{"created":"20231026192948989","text":"AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABIAAAAUAAAAOAAAAFsAAABbAAAAWwAAAFsAAABbAAAAWwAAAFsAAABbAAAAXAAAAE4AAAAdAAAAEwAAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAWAAAAQQAAAHAAAACsAAAAswAAANMAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADnAAAAvAAAALMAAACQAAAAUgAAACgAAAAMAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAADAAAAB6AAAArgAAAN4AAADzAAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAOsAAADDAAAAlgAAAE8AAAAWAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAANAAAAH4AAADLAAAA9AAAAP4AAAD/AAAA/wAAAP8HBwf/MDAw/1RUVP+wsLD/x8fH/8fHx//Hx8f/x8fH/8fHx//CwsL/f39//zAwMP8hISH/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAADiAAAAowAAAFMAAAAYAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAApAAAAgwAAAM0AAAD1AAAA/wAAAP8AAAD/NTU1/6Ghof/BwcH/6enp//39/f/+/v7////////////////////////////////////////////9/f3/9/f3/8/Pz/+3t7f/bGxs/wAAAP8AAAD/AAAA/wAAAPwAAADkAAAAqAAAAFAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABYAAAAsQAAAPYAAAD/AAAA/wQEBP98fHz/vLy8//Dw8P////////////////////////////////////////////////////////////////////////////////////////////39/f/U1NT/oKCg/z09Pf8AAAD/AAAA/wAAAP0AAADYAAAAfwAAACoAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAADEAAACFAAAA4AAAAP0AAAD/AQEB/4iIiP/c3Nz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z8/P/tra2/zw8PP8AAAD/AAAA/gAAAPYAAACwAAAAVQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADsAAAC5AAAA9wAAAP8AAAD/SUlJ/8TExP/+/v7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////p6en/hISE/wICAv8AAAD/AAAA/AAAAOEAAAByAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAD4AAAC8AAAA+wAAAP8ODg7/lZWV//Hx8f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v/Gxsb/SEhI/wAAAP8AAAD/AAAA5QAAAHYAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEEAAAC/AAAA/AAAAP8eHh7/zs7O//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ly8v9ycnL/AAAA/wAAAP8AAADnAAAAeQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEQAAADCAAAA/AAAAP8nJyf/0dHR////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9fX1/3p6ev8AAAD/AAAA/wAAAOkAAAB9AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUAAADCAAAA/AAAAP8MDAz/wcHB//7+/v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/f/fn5+/wAAAP8AAAD/AAAA6gAAAHUAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAACOAAAA9gAAAP8uLi7/zs7O/7CwsP9CQkL/UlJS/11dXf9paWn/c3Nz/4mJif+Tk5P/iYmJ/3R0dP/Pz8//////////////////yMjI/7Gxsf+wsLD/tbW1/7W1tf+1tbX/tbW1/7a2tv+9vb3/wMDA/8DAwP/AwMD/wMDA/8XFxf/Ly8v/0NDQ/9bW1v/f39//5eXl/+vr6//z8/P/9fX1//n5+f/7+/v//f39//f39/9/f3//AAAA/wAAAP8AAADMAAAAQAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABjAAAA6gAAAP8FBQX/1NTU///////a2tr/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/TExM//r6+v//////+/v7/z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SEhL/IiIi/y8vL//ExMT/+fn5/3V1df8AAAD/AAAA+wAAAKsAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA9AAAAxAAAAP0AAAD/mJiY/////////////v7+/21tbf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Nzc3///////////+urq7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8PDw//5ubm///////h4eH/IiIi/wAAAP8AAADrAAAAegAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAlQAAAPoAAAD/VFRU//f39//////////////////MzMz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/fX19////////////8PDw/ykpKf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/jIyM/////////////////7m5uf8AAAD/AAAA/wAAANUAAAA+AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAARwAAANsAAAD/EBAQ/9PT0///////////////////////+/v7/1NTU/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJCf/l5eX///////////+ioqL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD/93d3f/////////////////6+vr/dHR0/wAAAP8AAAD5AAAAjwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAJkAAAD6AAAA/5qamv////////////////////////////////+9vb3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/pqam////////////6Ojo/xAQEP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Z2dv/+/v7//////////////////////+Pj4/8ODg7/AAAA/wAAANcAAABCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAEsAAADeAAAA/yAgIP/q6ur/////////////////////////////////9fX1/zo6Ov8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zc3N//29vb///////////+QkJD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Q0ND/////////////////////////////////kpKS/wAAAP8AAAD5AAAAkwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACUAAAA+wAAAP+Kior///////////////////////////////////////////+qqqr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/wMDA////////////3t7e/wUFBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9hYWH//Pz8/////////////////////////////////9zc3P8AAAD/AAAA/wAAANcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAwwAAAP8AAAD/xcXF////////////////////////////////////////////7u7u/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/2FhYf/8/Pz///////7+/v95eXn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/x8fH///////////////////////////////////////6+vr/SUlJ/wAAAP8AAADvAAAAagAAAAYAAAAAAAAAAAAAAAAAAAABAAAAVwAAAOwAAAD/WVlZ//r6+v////////////////////////////////////////////////+ampr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/1NTU////////////0dHR/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/U1NT//n5+f///////////////////////////////////////////8DAwP8AAAD/AAAA/gAAAKYAAAASAAAAAAAAAAAAAAAAAAAAEAAAAJgAAAD6AAAA/6ysrP//////////////////////////////////////////////////////4+Pj/wYGBv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/4SEhP////////////z8/P+ZmZn/UFBQ/yoqKv8fHx//FRUV/wgICP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/7m5uf/////////////////////////////////////////////////r6+v/AAAA/wAAAP8AAADYAAAAPQAAAAAAAAAAAAAAAAAAABYAAAC1AAAA/wAAAP/Jycn///////////////////////////////////////////////////////////+Ghob/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/5ubm///////////////////////8/Pz/+/v7//j4+P/z8/P/19fX/xQUFP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zg4OP/09PT/////////////////////////////////////////////////+fn5/0VFRf8AAAD/AAAA7AAAAFAAAAAAAAAAAAAAAAAAAAAnAAAAwwAAAP8gICD/9/f3////////////////////////////////////////////////////////////2dnZ/wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6Ojo/////////////////////////////////////////////z8/P8rKyv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+urq7///////////////////////////////////////////////////////////+kpKT/AAAA/wAAAPAAAABnAAAABAAAAAAAAAABAAAAWgAAAO0AAAD/Kysr//z8/P////////////////////////////////////////////////////////////39/f9ubm7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8pKSn/1tbW//r6+v/9/f3//f39//39/f/+/v7//v7+//7+/v/l5eX/BQUF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8nJyf/8fHx////////////////////////////////////////////////////////////sbGx/wAAAP8AAAD9AAAAqQAAABQAAAAAAAAAAQAAAGIAAADzAAAA/4aGhv//////////////////////////////////////////////////////////////////////y8vL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8eHh7/Li4u/y8vL/84ODj/SEhI/0pKSv9JSUn/JSUl/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/o6Oj/////////////////////////////////////////////////////////////////9nZ2f8BAQH/AAAA/wAAALUAAAAWAAAAAAAAAAEAAABiAAAA8wAAAP++vr7///////////////////////////////////////////////////////////////////////z8/P9ZWVn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/FRUV/+np6f/////////////////////////////////////////////////////////////////7+/v/KSkp/wAAAP8AAAC1AAAAFgAAAAAAAAABAAAAYgAAAPMAAAD/wMDA////////////////////////////////////////////////////////////////////////////v7+//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/46Ojv///////////////////////////////////////////////////////////////////////f39/y0tLf8AAAD/AAAAtQAAABYAAAAAAAAAAQAAAGIAAADzAAAA/8DAwP////////////////////////////////////////////////////////////////////////////b29v8+Pj7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUFBf/e3t7///////////////////////////////////////////////////////////////////////39/f8tLS3/AAAA/wAAALUAAAAWAAAAAAAAAAEAAABiAAAA8wAAAP/AwMD/////////////////////////////////////////////////////////////////////////////////r6+v/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP98fHz////////////////////////////////////////////////////////////////////////////9/f3/LS0t/wAAAP8AAAC1AAAAFgAAAAAAAAABAAAAYgAAAPMAAAD/wMDA//////////////////////////////////////////////////////////////////////////////////Dw8P8oKCj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/1tbW/////////////////////////////////////////////////////////////////////////////f39/y0tLf8AAAD/AAAAtQAAABYAAAAAAAAAAQAAAGIAAADzAAAA/76+vv//////////////////////////////////////////////////////////////////////////////////////np6e/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/bm5u//7+/v////////////////////////////////////////////////////////////////////////////v7+/8pKSn/AAAA/wAAALUAAAAWAAAAAAAAAAEAAABiAAAA8wAAAP+Ghob//////////////////////////////////////////////////////////////////////////////////////+fn5/8MDAz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/8zMzP/////////////////////////////////////////////////////////////////////////////////Z2dn/AQEB/wAAAP8AAAC1AAAAFgAAAAAAAAABAAAAWgAAAO0AAAD/Kysr//z8/P//////////////////////////////////////////////////////////////////////////////////////jY2N/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/1paWv/6+vr/////////////////////////////////////////////////////////////////////////////////sbGx/wAAAP8AAAD9AAAAqQAAABQAAAAAAAAAAAAAACcAAADDAAAA/yAgIP/39/f//////////////////////////////////////////////////////////////////////////////////////93d3f8DAwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/CwsL//////////////////////////////////////////////////////////////////////////////////////6SkpP8AAAD/AAAA8AAAAGcAAAAEAAAAAAAAAAAAAAAWAAAAtQAAAP8AAAD/x8fH///////////////////////////////////////////////////////////////////////////////////////+/v7/eHh4/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9JSUn/+Pj4//////////////////////////////////////////////////////////////////////////////////n5+f9ERET/AAAA/wAAAOwAAABQAAAAAAAAAAAAAAAAAAAAEAAAAJgAAAD6AAAA/6qqqv///////////////////////////////////////////////////////////////////////////////////////////9DQ0P8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/uLi4///////////////////////////////////////////////////////////////////////////////////////q6ur/AAAA/wAAAP8AAADYAAAAPQAAAAAAAAAAAAAAAAAAAAEAAABXAAAA7AAAAP9YWFj/+vr6///////////////////////////////////////////////////////////////////////////////////////8/Pz/XFxc/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/NDQ0//X19f//////////////////////////////////////////////////////////////////////////////////////vLy8/wAAAP8AAAD+AAAApgAAABIAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAMMAAAD/AAAA/8XFxf///////////////////////////////////////////////////////////////////////////////////////////8LCwv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6urq///////////////////////////////////////////////////////////////////////////////////////+fn5/0VFRf8AAAD/AAAA7wAAAGoAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACUAAAA+wAAAP+Hh4f////////////////////////////////////////////////////////////////////////////////////////////4+Pj/RUVF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yMjI//u7u7//////////////////////////////////////////////////////////////////////////////////////9fX1/8AAAD/AAAA/wAAANcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAASwAAAN4AAAD/FBQU/+Tk5P///////////////////////////////////////////////////////////////////////////////////////////7S0tP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+YmJj///////////////////////////////////////////////////////////////////////////////////////7+/v+FhYX/AAAA/wAAAPkAAACTAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAACZAAAA+gAAAP+MjIz////////////////////////////////////////////////////////////////////////////////////////////x8fH/MDAw/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8PDw//5eXl///////////////////////////////////////////////////////////////////////////////////////f39//CAgI/wAAAP8AAADXAAAAQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAARwAAANsAAAD/CQkJ/8zMzP///////////////////////////////////////////////////////////////////////////////////////////6Ojo/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/i4uL///////////////////////////////////////////////////////////////////////////////////////19fX/Z2dn/wAAAP8AAAD5AAAAjwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAACVAAAA+gAAAP9HR0f/8/Pz///////////////////////////////////////////////////////////////////////////////////////p6en/ExMT/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/93d3f//////////////////////////////////////////////////////////////////////////////////////p6en/wAAAP8AAAD/AAAA1QAAAD4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAPQAAAMQAAAD9AAAA/4eHh//+/v7//////////////////////////////////////////////////////////////////////////////////////46Ojv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3V1df/+/v7/////////////////////////////////////////////////////////////////////////////////1tbW/wwMDP8AAAD/AAAA6wAAAHoAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABjAAAA6gAAAP8BAQH/xsbG///////////////////////////////////////////////////////////////////////////////////////f39//BQUF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Q0ND/////////////////////////////////////////////////////////////////////////////////9PT0/2JiYv8AAAD/AAAA+wAAAKsAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAI4AAAD2AAAA/xYWFv/IyMj//////////////////////////////////////////////////////////////////////////////////v7+/3d3d/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9hYWH//Pz8////////////////////////////////////////////////////////////////////////////8vLy/21tbf8AAAD/AAAA/wAAAMwAAABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1AAAAwgAAAPwAAAD/ERER/8XFxf/////////////////////////////////////////////////////////////////////////////////Pz8//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/xsbG////////////////////////////////////////////////////////////////////////////8PDw/2dnZ/8AAAD/AAAA/wAAAOoAAAB1AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEQAAADCAAAA/AAAAP8NDQ3/wcHB/////////////////////////////////////////////////////////////////////////////Pz8/1xcXP8AAAD/AAAA/wAAAP8AAAD/UFBQ//r6+v//////////////////////////////////////////////////////////////////////7+/v/2NjY/8AAAD/AAAA/wAAAOkAAAB9AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQQAAAL8AAAD8AAAA/wkJCf+9vb3//v7+///////////////////////////////////////////////////////////////////////AwMD/AAAA/wAAAP8AAAD/AAAA/7q6uv//////////////////////////////////////////////////////////////////////7Ozs/15eXv8AAAD/AAAA/wAAAOcAAAB5AAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAA+AAAAvAAAAPsAAAD/AgIC/35+fv/r6+v/////////////////////////////////////////////////////////////////9/f3/0NDQ/8AAAD/AAAA/zY2Nv/09PT////////////////////////////////////////////////////////////9/f3/t7e3/zExMf8AAAD/AAAA/wAAAOUAAAB2AAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADsAAAC5AAAA9wAAAP8AAAD/Nzc3/7m5uf/9/f3///////////////////////////////////////////////////////////+zs7P/AAAA/wAAAP+rq6v////////////////////////////////////////////////////////////l5eX/dnZ2/wAAAP8AAAD/AAAA/AAAAOEAAAByAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAMQAAAIUAAADgAAAA/QAAAP8AAAD/enp6/9nZ2f/+/v7/////////////////////////////////////////////////8fHx/y0tLf8pKSn/7+/v//////////////////////////////////////////////////Hx8f+xsbH/MjIy/wAAAP8AAAD+AAAA9gAAALAAAABVAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAWAAAALEAAAD2AAAA/wAAAP8CAgL/dnZ2/7i4uP/v7+////////////////////////////////////////////+np6f/pqam///////////////////////////////////////8/Pz/0NDQ/5qamv83Nzf/AAAA/wAAAP8AAAD9AAAA2AAAAH8AAAAqAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAApAAAAgwAAAM0AAAD1AAAA/wAAAP8AAAD/NDQ0/6Ghof/BwcH/6+vr/////////////////////////////v7+//39/f//////////////////////+fn5/8/Pz/+3t7f/a2tr/wAAAP8AAAD/AAAA/wAAAPwAAADkAAAAqAAAAFAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAA0AAAAfgAAAMsAAAD0AAAA/gAAAP8AAAD/AAAA/w4ODv9NTU3/ZWVl/7i4uP/Pz8//z8/P/8/Pz//Pz8//z8/P/8vLy/+QkJD/UVFR/zU1Nf8AAAD/AAAA/wAAAP8AAAD/AAAA+wAAAOIAAACjAAAAUwAAABgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAwAAAAegAAAK4AAADeAAAA8wAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAADrAAAAwwAAAJYAAABPAAAAFgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAWAAAAQQAAAHAAAACsAAAAswAAANMAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADnAAAAvAAAALMAAACQAAAAUgAAACgAAAAMAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAEgAAABQAAAA4AAAAWwAAAFsAAABbAAAAWwAAAFsAAABbAAAAWwAAAFsAAABcAAAATgAAAB0AAAATAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////gB////////gAAf//////wAAAP/////8AAAAP////+AAAAAP////wAAAAAP///+AAAAAAf///gAAAAAA///8AAAAAAB///gAAAAAAD//8AAAAAAAH//gAAAAAAAP/+AAAAAAAAf/wAAAAAAAA/+AAAAAAAAD/wAAAAAAAAH/AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAB8AAAAAAAAAHwAAAAAAAAAfAAAAAAAAAA4AAAAAAAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAOAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAfAAAAAAAAAB+AAAAAAAAAH4AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAf+AAAAAAAAD/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAP//AAAAAAAB//+AAAAAAAP//8AAAAAAB///4AAAAAAP///4AAAAAB////wAAAAAP////gAAAAD/////wAAAA//////wAAAP//////4AAH///////+AH//////////////8=","title":"$:/favicon.ico","type":"image/x-icon","modified":"20231026192950258","tags":"$:/isAttachment $:/isEmbedded _PLAYER_"}, -{"title":"$:/Import","text":"Les tiddlers suivants ont été importés :\n\n# [[Interface.jpg]]","status":"complete"}, +{"created":"20240328172445145","text":"AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABIAAAAUAAAAOAAAAFsAAABbAAAAWwAAAFsAAABbAAAAWwAAAFsAAABbAAAAXAAAAE4AAAAdAAAAEwAAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAWAAAAQQAAAHAAAACsAAAAswAAANMAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADnAAAAvAAAALMAAACQAAAAUgAAACgAAAAMAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAADAAAAB6AAAArgAAAN4AAADzAAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAOsAAADDAAAAlgAAAE8AAAAWAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAANAAAAH4AAADLAAAA9AAAAP4AAAD/AAAA/wAAAP8HBwf/MDAw/1RUVP+wsLD/x8fH/8fHx//Hx8f/x8fH/8fHx//CwsL/f39//zAwMP8hISH/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAADiAAAAowAAAFMAAAAYAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAApAAAAgwAAAM0AAAD1AAAA/wAAAP8AAAD/NTU1/6Ghof/BwcH/6enp//39/f/+/v7////////////////////////////////////////////9/f3/9/f3/8/Pz/+3t7f/bGxs/wAAAP8AAAD/AAAA/wAAAPwAAADkAAAAqAAAAFAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABYAAAAsQAAAPYAAAD/AAAA/wQEBP98fHz/vLy8//Dw8P////////////////////////////////////////////////////////////////////////////////////////////39/f/U1NT/oKCg/z09Pf8AAAD/AAAA/wAAAP0AAADYAAAAfwAAACoAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAADEAAACFAAAA4AAAAP0AAAD/AQEB/4iIiP/c3Nz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z8/P/tra2/zw8PP8AAAD/AAAA/gAAAPYAAACwAAAAVQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADsAAAC5AAAA9wAAAP8AAAD/SUlJ/8TExP/+/v7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////p6en/hISE/wICAv8AAAD/AAAA/AAAAOEAAAByAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAD4AAAC8AAAA+wAAAP8ODg7/lZWV//Hx8f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v/Gxsb/SEhI/wAAAP8AAAD/AAAA5QAAAHYAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEEAAAC/AAAA/AAAAP8eHh7/zs7O//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ly8v9ycnL/AAAA/wAAAP8AAADnAAAAeQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEQAAADCAAAA/AAAAP8nJyf/0dHR////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9fX1/3p6ev8AAAD/AAAA/wAAAOkAAAB9AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUAAADCAAAA/AAAAP8MDAz/wcHB//7+/v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/f/fn5+/wAAAP8AAAD/AAAA6gAAAHUAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAACOAAAA9gAAAP8uLi7/zs7O/7CwsP9CQkL/UlJS/11dXf9paWn/c3Nz/4mJif+Tk5P/iYmJ/3R0dP/Pz8//////////////////yMjI/7Gxsf+wsLD/tbW1/7W1tf+1tbX/tbW1/7a2tv+9vb3/wMDA/8DAwP/AwMD/wMDA/8XFxf/Ly8v/0NDQ/9bW1v/f39//5eXl/+vr6//z8/P/9fX1//n5+f/7+/v//f39//f39/9/f3//AAAA/wAAAP8AAADMAAAAQAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABjAAAA6gAAAP8FBQX/1NTU///////a2tr/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/TExM//r6+v//////+/v7/z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SEhL/IiIi/y8vL//ExMT/+fn5/3V1df8AAAD/AAAA+wAAAKsAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA9AAAAxAAAAP0AAAD/mJiY/////////////v7+/21tbf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Nzc3///////////+urq7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8PDw//5ubm///////h4eH/IiIi/wAAAP8AAADrAAAAegAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAlQAAAPoAAAD/VFRU//f39//////////////////MzMz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/fX19////////////8PDw/ykpKf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/jIyM/////////////////7m5uf8AAAD/AAAA/wAAANUAAAA+AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAARwAAANsAAAD/EBAQ/9PT0///////////////////////+/v7/1NTU/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJCf/l5eX///////////+ioqL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD/93d3f/////////////////6+vr/dHR0/wAAAP8AAAD5AAAAjwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAJkAAAD6AAAA/5qamv////////////////////////////////+9vb3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/pqam////////////6Ojo/xAQEP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Z2dv/+/v7//////////////////////+Pj4/8ODg7/AAAA/wAAANcAAABCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAEsAAADeAAAA/yAgIP/q6ur/////////////////////////////////9fX1/zo6Ov8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zc3N//29vb///////////+QkJD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Q0ND/////////////////////////////////kpKS/wAAAP8AAAD5AAAAkwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACUAAAA+wAAAP+Kior///////////////////////////////////////////+qqqr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/wMDA////////////3t7e/wUFBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9hYWH//Pz8/////////////////////////////////9zc3P8AAAD/AAAA/wAAANcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAwwAAAP8AAAD/xcXF////////////////////////////////////////////7u7u/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/2FhYf/8/Pz///////7+/v95eXn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/x8fH///////////////////////////////////////6+vr/SUlJ/wAAAP8AAADvAAAAagAAAAYAAAAAAAAAAAAAAAAAAAABAAAAVwAAAOwAAAD/WVlZ//r6+v////////////////////////////////////////////////+ampr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/1NTU////////////0dHR/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/U1NT//n5+f///////////////////////////////////////////8DAwP8AAAD/AAAA/gAAAKYAAAASAAAAAAAAAAAAAAAAAAAAEAAAAJgAAAD6AAAA/6ysrP//////////////////////////////////////////////////////4+Pj/wYGBv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/4SEhP////////////z8/P+ZmZn/UFBQ/yoqKv8fHx//FRUV/wgICP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/7m5uf/////////////////////////////////////////////////r6+v/AAAA/wAAAP8AAADYAAAAPQAAAAAAAAAAAAAAAAAAABYAAAC1AAAA/wAAAP/Jycn///////////////////////////////////////////////////////////+Ghob/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/5ubm///////////////////////8/Pz/+/v7//j4+P/z8/P/19fX/xQUFP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zg4OP/09PT/////////////////////////////////////////////////+fn5/0VFRf8AAAD/AAAA7AAAAFAAAAAAAAAAAAAAAAAAAAAnAAAAwwAAAP8gICD/9/f3////////////////////////////////////////////////////////////2dnZ/wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6Ojo/////////////////////////////////////////////z8/P8rKyv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+urq7///////////////////////////////////////////////////////////+kpKT/AAAA/wAAAPAAAABnAAAABAAAAAAAAAABAAAAWgAAAO0AAAD/Kysr//z8/P////////////////////////////////////////////////////////////39/f9ubm7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8pKSn/1tbW//r6+v/9/f3//f39//39/f/+/v7//v7+//7+/v/l5eX/BQUF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8nJyf/8fHx////////////////////////////////////////////////////////////sbGx/wAAAP8AAAD9AAAAqQAAABQAAAAAAAAAAQAAAGIAAADzAAAA/4aGhv//////////////////////////////////////////////////////////////////////y8vL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8eHh7/Li4u/y8vL/84ODj/SEhI/0pKSv9JSUn/JSUl/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/o6Oj/////////////////////////////////////////////////////////////////9nZ2f8BAQH/AAAA/wAAALUAAAAWAAAAAAAAAAEAAABiAAAA8wAAAP++vr7///////////////////////////////////////////////////////////////////////z8/P9ZWVn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/FRUV/+np6f/////////////////////////////////////////////////////////////////7+/v/KSkp/wAAAP8AAAC1AAAAFgAAAAAAAAABAAAAYgAAAPMAAAD/wMDA////////////////////////////////////////////////////////////////////////////v7+//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/46Ojv///////////////////////////////////////////////////////////////////////f39/y0tLf8AAAD/AAAAtQAAABYAAAAAAAAAAQAAAGIAAADzAAAA/8DAwP////////////////////////////////////////////////////////////////////////////b29v8+Pj7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUFBf/e3t7///////////////////////////////////////////////////////////////////////39/f8tLS3/AAAA/wAAALUAAAAWAAAAAAAAAAEAAABiAAAA8wAAAP/AwMD/////////////////////////////////////////////////////////////////////////////////r6+v/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP98fHz////////////////////////////////////////////////////////////////////////////9/f3/LS0t/wAAAP8AAAC1AAAAFgAAAAAAAAABAAAAYgAAAPMAAAD/wMDA//////////////////////////////////////////////////////////////////////////////////Dw8P8oKCj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/1tbW/////////////////////////////////////////////////////////////////////////////f39/y0tLf8AAAD/AAAAtQAAABYAAAAAAAAAAQAAAGIAAADzAAAA/76+vv//////////////////////////////////////////////////////////////////////////////////////np6e/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/bm5u//7+/v////////////////////////////////////////////////////////////////////////////v7+/8pKSn/AAAA/wAAALUAAAAWAAAAAAAAAAEAAABiAAAA8wAAAP+Ghob//////////////////////////////////////////////////////////////////////////////////////+fn5/8MDAz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/8zMzP/////////////////////////////////////////////////////////////////////////////////Z2dn/AQEB/wAAAP8AAAC1AAAAFgAAAAAAAAABAAAAWgAAAO0AAAD/Kysr//z8/P//////////////////////////////////////////////////////////////////////////////////////jY2N/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/1paWv/6+vr/////////////////////////////////////////////////////////////////////////////////sbGx/wAAAP8AAAD9AAAAqQAAABQAAAAAAAAAAAAAACcAAADDAAAA/yAgIP/39/f//////////////////////////////////////////////////////////////////////////////////////93d3f8DAwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/CwsL//////////////////////////////////////////////////////////////////////////////////////6SkpP8AAAD/AAAA8AAAAGcAAAAEAAAAAAAAAAAAAAAWAAAAtQAAAP8AAAD/x8fH///////////////////////////////////////////////////////////////////////////////////////+/v7/eHh4/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9JSUn/+Pj4//////////////////////////////////////////////////////////////////////////////////n5+f9ERET/AAAA/wAAAOwAAABQAAAAAAAAAAAAAAAAAAAAEAAAAJgAAAD6AAAA/6qqqv///////////////////////////////////////////////////////////////////////////////////////////9DQ0P8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/uLi4///////////////////////////////////////////////////////////////////////////////////////q6ur/AAAA/wAAAP8AAADYAAAAPQAAAAAAAAAAAAAAAAAAAAEAAABXAAAA7AAAAP9YWFj/+vr6///////////////////////////////////////////////////////////////////////////////////////8/Pz/XFxc/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/NDQ0//X19f//////////////////////////////////////////////////////////////////////////////////////vLy8/wAAAP8AAAD+AAAApgAAABIAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAMMAAAD/AAAA/8XFxf///////////////////////////////////////////////////////////////////////////////////////////8LCwv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6urq///////////////////////////////////////////////////////////////////////////////////////+fn5/0VFRf8AAAD/AAAA7wAAAGoAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACUAAAA+wAAAP+Hh4f////////////////////////////////////////////////////////////////////////////////////////////4+Pj/RUVF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yMjI//u7u7//////////////////////////////////////////////////////////////////////////////////////9fX1/8AAAD/AAAA/wAAANcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAASwAAAN4AAAD/FBQU/+Tk5P///////////////////////////////////////////////////////////////////////////////////////////7S0tP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+YmJj///////////////////////////////////////////////////////////////////////////////////////7+/v+FhYX/AAAA/wAAAPkAAACTAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAACZAAAA+gAAAP+MjIz////////////////////////////////////////////////////////////////////////////////////////////x8fH/MDAw/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8PDw//5eXl///////////////////////////////////////////////////////////////////////////////////////f39//CAgI/wAAAP8AAADXAAAAQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAARwAAANsAAAD/CQkJ/8zMzP///////////////////////////////////////////////////////////////////////////////////////////6Ojo/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/i4uL///////////////////////////////////////////////////////////////////////////////////////19fX/Z2dn/wAAAP8AAAD5AAAAjwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAACVAAAA+gAAAP9HR0f/8/Pz///////////////////////////////////////////////////////////////////////////////////////p6en/ExMT/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/93d3f//////////////////////////////////////////////////////////////////////////////////////p6en/wAAAP8AAAD/AAAA1QAAAD4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAPQAAAMQAAAD9AAAA/4eHh//+/v7//////////////////////////////////////////////////////////////////////////////////////46Ojv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3V1df/+/v7/////////////////////////////////////////////////////////////////////////////////1tbW/wwMDP8AAAD/AAAA6wAAAHoAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABjAAAA6gAAAP8BAQH/xsbG///////////////////////////////////////////////////////////////////////////////////////f39//BQUF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Q0ND/////////////////////////////////////////////////////////////////////////////////9PT0/2JiYv8AAAD/AAAA+wAAAKsAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAI4AAAD2AAAA/xYWFv/IyMj//////////////////////////////////////////////////////////////////////////////////v7+/3d3d/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9hYWH//Pz8////////////////////////////////////////////////////////////////////////////8vLy/21tbf8AAAD/AAAA/wAAAMwAAABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1AAAAwgAAAPwAAAD/ERER/8XFxf/////////////////////////////////////////////////////////////////////////////////Pz8//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/xsbG////////////////////////////////////////////////////////////////////////////8PDw/2dnZ/8AAAD/AAAA/wAAAOoAAAB1AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEQAAADCAAAA/AAAAP8NDQ3/wcHB/////////////////////////////////////////////////////////////////////////////Pz8/1xcXP8AAAD/AAAA/wAAAP8AAAD/UFBQ//r6+v//////////////////////////////////////////////////////////////////////7+/v/2NjY/8AAAD/AAAA/wAAAOkAAAB9AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQQAAAL8AAAD8AAAA/wkJCf+9vb3//v7+///////////////////////////////////////////////////////////////////////AwMD/AAAA/wAAAP8AAAD/AAAA/7q6uv//////////////////////////////////////////////////////////////////////7Ozs/15eXv8AAAD/AAAA/wAAAOcAAAB5AAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAA+AAAAvAAAAPsAAAD/AgIC/35+fv/r6+v/////////////////////////////////////////////////////////////////9/f3/0NDQ/8AAAD/AAAA/zY2Nv/09PT////////////////////////////////////////////////////////////9/f3/t7e3/zExMf8AAAD/AAAA/wAAAOUAAAB2AAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADsAAAC5AAAA9wAAAP8AAAD/Nzc3/7m5uf/9/f3///////////////////////////////////////////////////////////+zs7P/AAAA/wAAAP+rq6v////////////////////////////////////////////////////////////l5eX/dnZ2/wAAAP8AAAD/AAAA/AAAAOEAAAByAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAMQAAAIUAAADgAAAA/QAAAP8AAAD/enp6/9nZ2f/+/v7/////////////////////////////////////////////////8fHx/y0tLf8pKSn/7+/v//////////////////////////////////////////////////Hx8f+xsbH/MjIy/wAAAP8AAAD+AAAA9gAAALAAAABVAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAWAAAALEAAAD2AAAA/wAAAP8CAgL/dnZ2/7i4uP/v7+////////////////////////////////////////////+np6f/pqam///////////////////////////////////////8/Pz/0NDQ/5qamv83Nzf/AAAA/wAAAP8AAAD9AAAA2AAAAH8AAAAqAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAApAAAAgwAAAM0AAAD1AAAA/wAAAP8AAAD/NDQ0/6Ghof/BwcH/6+vr/////////////////////////////v7+//39/f//////////////////////+fn5/8/Pz/+3t7f/a2tr/wAAAP8AAAD/AAAA/wAAAPwAAADkAAAAqAAAAFAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAA0AAAAfgAAAMsAAAD0AAAA/gAAAP8AAAD/AAAA/w4ODv9NTU3/ZWVl/7i4uP/Pz8//z8/P/8/Pz//Pz8//z8/P/8vLy/+QkJD/UVFR/zU1Nf8AAAD/AAAA/wAAAP8AAAD/AAAA+wAAAOIAAACjAAAAUwAAABgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAwAAAAegAAAK4AAADeAAAA8wAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAADrAAAAwwAAAJYAAABPAAAAFgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAWAAAAQQAAAHAAAACsAAAAswAAANMAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADyAAAA8gAAAPIAAADnAAAAvAAAALMAAACQAAAAUgAAACgAAAAMAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAEgAAABQAAAA4AAAAWwAAAFsAAABbAAAAWwAAAFsAAABbAAAAWwAAAFsAAABcAAAATgAAAB0AAAATAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////gB////////gAAf//////wAAAP/////8AAAAP////+AAAAAP////wAAAAAP///+AAAAAAf///gAAAAAA///8AAAAAAB///gAAAAAAD//8AAAAAAAH//gAAAAAAAP/+AAAAAAAAf/wAAAAAAAA/+AAAAAAAAD/wAAAAAAAAH/AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAB8AAAAAAAAAHwAAAAAAAAAfAAAAAAAAAA4AAAAAAAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAOAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAfAAAAAAAAAB+AAAAAAAAAH4AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAf+AAAAAAAAD/8AAAAAAAAP/4AAAAAAAB//gAAAAAAAP//AAAAAAAB//+AAAAAAAP//8AAAAAAB///4AAAAAAP///4AAAAAB////wAAAAAP////gAAAAD/////wAAAA//////wAAAP//////4AAH///////+AH//////////////8=","title":"$:/favicon.astroport.ico","type":"image/x-icon","modified":"20240328172601454","tags":"$:/isAttachment $:/isEmbedded _PLAYER_"}, +{"created":"20240328172521001","text":"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","title":"$:/favicon.ico","type":"image/x-icon","modified":"20240328172642319","tags":"$:/isAttachment $:/isEmbedded _PLAYER_"}, +{"created":"20240328172536376","text":"AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA+fn5BeLi4h2urq5Te3t7jG1tbZ5xcXGgcnJyoXNzc6N3d3ekeHh4pXp6eqV7e3unfX19p39/f6h+fn6ofn5+qH9/f6h+fn6ofn5+qH5+fqh8fHyne3t7pnl5eaV4eHikdXV1o3R0dKFxcXGhc3Nzm4ODg4Wtra1U29vbJfX19Qfd3d0kmpqabmZmZsSRkZHgsrKy5by8vOe+vr7nwMDA6MLCwunExMTqxcXF6sfHx+rIyMjqyMjI6snJyerJycnqycnJ6snJyerJycnqyMjI6sfHx+rFxcXqxMTE6sPDw+nBwcHpvr6+5729veezs7PllZWV3mlpacSRkZF72dnZK6ysrGF0dHTPwsLC8tXV1fDf39/q5OTk6ubm5urp6enr6+vr7u3t7fDu7u7y7+/v8u/v7/Lu7u7w7u7u8O7u7vDv7+/w7u7u8O7u7vDu7u7w7e3t8Ozs7O7s7Ozu6+vr7enp6evo6Ojq5ubm6eTk5One3t7qycnJ7nV1ddKqqqplnJycisbGxunW1tbz29vb9ePj4/Pp6enw8PDw8PT09PP29vb1+Pj49/n5+fj5+fn4+Pj4+Pn5+fj4+Pj4+Pj4+Pj4+Pj4+Pj3+Pj49vf39/b39/f29vb29fX19fP09PTz8/Pz8PHx8e7v7+/t7e3t6ufn5+vc3Nzww8PD8I2NjZ+1tbWh4uLi6OLi4u7l5eXz6Ojo9+7u7vj19fX4+fn5+vr7+vrs/Oz82f3Z/eT95P38/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pv7+/z7+/v8+/v7+vv7+/r7+/v6+vr6+vr6+vj5+fn49/f39/T09Pbw8PD16urq9eDg4Pbc3NzzpqamuL6+vq7o6Ojj6urq6ezs7O7u7u718/Pz+Pn5+fr1/PX8n/6f/Tf+N/8X/xf/KP4o/6/+r//9/f3/+/37//P98//6/fr//Pz8/f39/f38/Pz9/Pz8/Pz8/Pz9/f39/f39/fz8/Pz6+vr8+Pj4/PX19fzy8vL66enp9+np6fO8vLy5vr6+refn5+Lq6url7e3t6vHx8fD29vb29/r3+nb+dv0H/wf/AP8A/wD/AP8A/wD/N/43//z9/P2L/ov/O/47/4X+hf/7/Pv8+/v7+vv7+/r6+vr4+vr6+Pr6+vj8/Pz8+fn5+PLy8vbt7e346enp9ejo6PDm5ubr7u7u7sDAwLG7u7uo5eXl3ufn5+Lr6+vn8PDw7vX19fOZ/Zn9Bf8F/wD/AP8A/wD/AP8A/wD/AP8W/xb/eP54/xD/EP8W/xb/Rf5F//X79fr4+Pj39vb29fX19fP09PTy8/Pz8PPz8/D5+fn49vb29+vr6+7p6enq6Ojo5+fn5+Pt7e3qvLy8q7e3t6Tj4+Pc5eXl3urq6uXw8PDt3/jf+BX+Ff8A/wD/AP8A/x/+H/9T/lP9AP8A/wD/AP8A/wD/Sf5J/dH60frl+OX3+Pj49/Pz8/Dw8PDr7u7u6u7u7unt7e3o7Ozs5+vr6+fz8/Py9fX19enp6ePm5ubg5OTk3uzs7Oi4uLiltbW1oeLi4tvl5eXe6urq5fDw8O54/Xj9AP8A/wD/AP8k/iT/1PzU/en66fos/iz/CP8I/1z9XP3h+OH39/f3+PLy8vD5+fn67+/v7uzs7Ojq6url5+fn4Obm5uDn5+fg5ubm3uXl5d7t7e3p9vb29efn5+Di4uLb6+vr57a2tqG0tLSg4uLi2+Xl5eDr6+vo7/Tv8xX+Ff8A/wD/AP8A/1L+Uv/29vb1+fn5+t783v3K+8r87vfu9/j4+Pr19fX29fX19vv7+/3v7+/t8/Pz8/Dw8PDm5ubg6urq5+rq6uXq6url6urq5erq6uXv7+/t+vr6+ubm5uDq6urltLS0obW1taDi4uLc5+fn4Ozs7OnX+Nf3AP8A/wD/AP8A/wD/Df8N/7v7u/q/+r/6xfzF/fT69Pz5+fn46vXq9e7u7ur4+Pj68/Pz8/Hx8fD29vb39fX19fT09PPr6+vo6+vr5+vr6+fr6+vn6+vr5+vr6+Xs7Ozo5eXl3uTk5N61tbWgtbW1oOLi4tzn5+fg7Ozs6cP5w/gA/wD/AP8A/wD/AP8A/wD/Df4N/wz+DP8N/g3/Mv4y/Xb9dv2W/Jb87/Dv7fDw8O7o6Ojj9vb29/Ly8vPp6enj6urq5eHh4dnh4eHZ4eHh2eHh4dnh4eHZ4eHh2eHh4dnh4eHZ4eHh2bW1taC1tbWg4uLi2+bm5uDs7Ozo3/bf9Qf/B/8A/wD/AP8A/wD/AP8a/xr/pPyk/M75zviD/IP8b/1v/a36rfrx8fHu7Ozs6Obm5uD4+Pj67u7u6uHh4dnh4eHZ4eHh2eHh4dnh4eHZ4eHh2eHh4dnh4eHZ4eHh2eHh4dnh4eHZtbW1oLW1taDh4eHa5OTk3uzs7Oj09PTzWv5a/wD/AP8A/wD/EP8Q/8v8y/z39/f33vre+oj9iP1p/mn9mPyY/e747vf09PTy8fHx7vj4+Pjw8PDu6+vr6Ovr6+fr6+vl6+vr5evr6+Xr6+vl6urq5enp6ePk5OTd4eHh2eHh4dm1tbWgtbW1oOHh4drq6urn8vLy8Pb29vXY+9j6D/8P/wD/AP+V/pX/vPy8/WX+Zf0S/hL9Af8B/wD/AP8C/gL/M/4z/eP64/r39/f29/f39vT09PPx8fHw8PDw7vDw8O3w8PDt8PDw7fDw8O3w8PDt8PDw6/Dw8Ovq6urj4eHh2bW1taC1tbWg6enp4/Dw8O3x8fHu9PT08/f39/bI/Mj8kf6R/V7/Xv8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/Jf8l/2j+aP3M+8z69vf29vX19fPy8vLw8PDw7vDw8O3w8PDt8PDw7fDw8O3w8PDt8PDw7fDw8O3p6enjtbW1oLa2tqHw8PDr8PDw7fDw8O7z8/Py9vb29fj4+PiB/oH9Bf8F/wT/BP8A/wD/AP8A/wz/DP9O/k7/af5p/zL+Mv8A/wD/AP8A/wf/B/+W/Zb99vf29/T09PPy8vLw8PDw7vDw8O3w8PDt8PDw7fDw8O3w8PDt8PDw7fDw8Ou2trahu7u7p/Dw8O3w8PDt8PDw7vPz8/L29vb19fr1+qX/pf+1/7X/sP+w/2z/bP8M/wz/t/63//z9/P/9/f3/5f3l/yL/Iv8A/wD/AP8A/wX/Bf++/L789vb29fPz8/Lx8fHu8PDw7fDw8O3w8PDt8PDw7fDw8O3w8PDt8PDw7bu7u6e9vb2r8PDw7fDw8O3w8PDu8/Pz8vb59vjf/t//tv+2/7v/u//l/+X//f/9/8X/xf/y/fL//f39//39/f/9/f3/if6J/wD/AP8A/wD/AP8A/0L+Qv/1+PX39PT08/Hx8fDw8PDu8PDw7fDw8O3w8PDt8PDw7fDw8O3w8PDtvb29q729vavw8PDt8PDw7fDw8O7z9fPztP60/y7/Lv8R/xH/AP8A/zn/Of/L/8v//v/+//v++//s/ez/7P3s/9b91v9G/0b/AP8A/wD/AP8A/wD/Bv8G/+T65Pr19fXz8vLy8PDw8O7w8PDt8PDw7fDw8O3w8PDt8PDw7fDw8O29vb2rvb29q/Dw8O3w8PDt8fHx7uv56/gq/yr/Rv9G/0L/Qv8r/yv/AP8A/0r/Sv/z//P/+//7/z//P/8w/zD/Dv8O/wD/AP8A/wD/AP8A/wD/AP8A/wD/xvvG/Pb29vXy8vLw8PDw7vDw8O3w8PDt8PDw7fDw8O3w8PDt8PDw7b29vau9vb2r8PDw7fDw8O3w8PDu1PrU+gD/AP9P/0//AP8A/1D/UP8A/wD/B/8H//r/+v//////Lv8u/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP/K+8r89fX18/Ly8vDw8PDu8PDw7fDw8O3w8PDt8PDw7fDw8O3w8PDtvb29q729vavw8PDt8PDw7fDw8O7g+eD4EP8Q/zD/MP8a/xr/Tv9O/wD/AP8r/yv/9P/0//n/+f8N/w3/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/DP8M/+r66vr19fXz8vLy8PDw8O7w8PDt8PDw7fDw8O3w8PDt8PDw7fDw8O29vb2rvb29q/Dw8O3w8PDt8PDw7u307fJ+/n79D/8P/0n/Sf9J/0n/Ff8V/5//n//7//v/p/+n/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP9Z/ln99vf29/T09PPx8fHu8PDw7fDw8O3w8PDt8PDw7fDw8O3w8PDt8PDw7b29vau9vb2r8PDw7fDw8O3v7+/t8fHx7uz47Pek/qT9kv+S/yH/If+1/7X/9f/1/8T/xP8c/xz/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/Hv4e/9T71Pr29vbz8/Pz8PDw8O7w8PDt8PDw7fDw8O3w8PDt8PDw7fDw8O3w8PDtvb29q7y8vKrw8PDt8PDw7fDw8O3w8PDu8vLy8PT29Pb0+/T6QP5A/Zz/nP94/3j/FP8U/wD/AP8A/wD/AP8A/wD/AP8A/wD/Av8C/zT+NP/C+8L69vb29fT09PLx8fHu8PDw7fDw8O3w8PDt8PDw7fDw8O3w8PDt8PDw7fDw8O28vLyqt7e3oPDw8O3w8PDt8PDw7fDw8O3w8PDu8vLy8PT09PO9+r36If4h/33+ff9f/l/9Qf5B/zH+Mf8v/i//Ov46/1f+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","title":"$:/favicon.zicmama.ico","type":"image/x-icon","modified":"20240328172546286","tags":"$:/isAttachment $:/isEmbedded _PLAYER_"}, +{"title":"$:/Import","text":"Les tiddlers suivants ont été importés :\n\n# [[$:/plugins/kookma/commander]]","status":"complete"}, {"created":"20231007121534491","title":"$:/ipfs/saver/api","modified":"20231007121534491","tags":"$:/ipfs/core","text":"$:/ipfs/saver/api/http/localhost/5001"}, {"created":"20231007121538423","title":"$:/ipfs/saver/gateway","modified":"20231007121538424","tags":"$:/ipfs/core","text":"$:/ipfs/saver/gateway/http/localhost"}, {"title":"$:/ipfs/saver/ipns/key","modified":"20231007124503071","tags":"$:/ipfs/core","text":"k2k4r8kxfnknsdf7tpyc46ks2jb3s9uvd3lqtcv9xlq9rsoem7jajd75"}, @@ -996,6 +1008,7 @@ Error message and password prompt {"created":"20231021132400558","text":"1","title":"$:/plugins/Gk0Wk/CPL-Repo/config/popup-readme-at-startup","modified":"20231021132400558"}, {"author":"Gk0Wk","dependents":"","description":"draw.io powerful diagram editor for TiddlyWiki","list":"readme config LICENSE","name":"draw.io","plugin-type":"plugin","text":"{\"tiddlers\":{\"$:/config/EditorTypeMappings/text/x-drawio\":{\"title\":\"$:/config/EditorTypeMappings/text/x-drawio\",\"text\":\"drawio\"},\"$:/config/EditorTypeMappings/application/vnd.drawio\":{\"title\":\"$:/config/EditorTypeMappings/application/vnd.drawio\",\"text\":\"drawio\"},\"$:/config/EditorTypeMappings/application/x-drawio\":{\"title\":\"$:/config/EditorTypeMappings/application/x-drawio\",\"text\":\"drawio\"},\"$:/plugins/Gk0Wk/drawio/LICENSE\":{\"title\":\"$:/plugins/Gk0Wk/drawio/LICENSE\",\"type\":\"text/plain\",\"text\":\"\\nMIT License\\n\\nCopyright (c) 2023 Gk0Wk(nmg_wk@yeah.net)\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\"},\"$:/plugins/Gk0Wk/drawio/config/theme-light\":{\"title\":\"$:/plugins/Gk0Wk/drawio/config/theme-light\",\"text\":\"Kennedy\"},\"$:/plugins/Gk0Wk/drawio/config/theme-dark\":{\"title\":\"$:/plugins/Gk0Wk/drawio/config/theme-dark\",\"text\":\"dark\"},\"$:/plugins/Gk0Wk/drawio/config\":{\"title\":\"$:/plugins/Gk0Wk/drawio/config\",\"tags\":\"$:/tags/ControlPanel/SettingsTab\",\"type\":\"text/vnd.tiddlywiki\",\"caption\":\"draw.io\",\"list-after\":\"$:/core/ui/ControlPanel/Settings/TiddlyWiki\",\"text\":\"\\\\define theme-selector(tiddler)\\n$tiddler$\\n\u003C$select tiddler=\\\"$tiddler$\\\" default=\\\"Kennedy\\\">\\n\u003C$list filter=\\\"[[Kennedy dark min simple atlas sketch]split[ ]unique[]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\\\end\\n\\n\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\\n\u003C$list filter=\\\"[\u003Clang>search[zh]]\\\">\\n\\n!! 主题\\n\\n; 日间模式所使用的主题\\n: \u003C\u003Ctheme-selector tiddler:\\\"$:/plugins/Gk0Wk/drawio/config/theme-light\\\" >>\\n\\n; 夜间模式所使用的主题\\n: \u003C\u003Ctheme-selector tiddler:\\\"$:/plugins/Gk0Wk/drawio/config/theme-dark\\\" >>\\n\\n> 不同的主题的样式可以参考[[官网文档|https://www.drawio.com/blog/diagram-editor-theme]]。\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003Clang>!search[zh]]\\\">\\n\\n!! Themes\\n\\n; Theme used for light mode\\n: \u003C\u003Ctheme-selector tiddler:\\\"$:/plugins/Gk0Wk/drawio/config/theme-light\\\" >>\\n\\n; Theme used for dark mode\\n: \u003C\u003Ctheme-selector tiddler:\\\"$:/plugins/Gk0Wk/drawio/config/theme-dark\\\" >>\\n\\n> Different themes can be found in the [[official documentation|https://www.drawio.com/blog/diagram-editor-theme]].\\n\\n\u003C/$list>\\n\u003C/$list>\\n\"},\"$:/plugins/Gk0Wk/drawio/icon\":{\"title\":\"$:/plugins/Gk0Wk/drawio/icon\",\"tags\":\"$:/tags/Image\",\"text\":\"\\\\parameters (size:\\\"22pt\\\")\\n\u003Csvg width=\u003C\u003Csize>> height=\u003C\u003Csize>> class=\\\"tc-image-auto-height tc-image-button\\\" viewBox=\\\"0 0 128 128\\\">\\n \u003Cpath d=\\\"M101.848 114.126L101.848 125.337C101.848 126.984 103.241 128.319 104.958 128.319L110.244 128.319C111.962 128.319 113.354 126.984 113.354 125.337L113.354 114.126L125.046 114.126C126.764 114.126 128.156 112.791 128.156 111.144L128.156 106.373C128.156 104.726 126.764 103.391 125.046 103.391L113.354 103.391L113.354 91.9411C113.354 90.2943 111.962 88.9594 110.244 88.9594L104.958 88.9594C103.241 88.9594 101.848 90.2943 101.848 91.9411L101.848 103.391L89.8451 103.391C88.1277 103.391 86.7354 104.726 86.7354 106.373L86.7354 111.144C86.7354 112.791 88.1277 114.126 89.8451 114.126L101.848 114.126ZM60.474 1.59869L60.474 1.59869C60.474 1.59869 60.474 1.59869 60.474 1.59869C55.7146 -1.03617 49.6287 0.527467 46.8808 5.09117L1.49079 80.476C-1.25707 85.0397 0.37363 90.8753 5.13306 93.5102L58.0708 122.817C62.8302 125.452 68.9161 123.888 71.6639 119.324L117.054 43.9396C117.054 43.9396 117.054 43.9396 117.054 43.9396C119.802 39.3759 118.171 33.5403 113.412 30.9054L60.474 1.59869L60.474 1.59869ZM56.5918 51.9022L56.5918 51.9022C55.3231 50.5536 55.1422 48.3175 56.287 46.4161L62.0179 36.8981C63.394 34.6126 66.1645 33.6761 68.206 34.8062L79.5725 41.0988C81.614 42.229 82.1534 44.9979 80.7772 47.2834L75.0464 56.8014C73.9006 58.7043 71.7881 59.6721 69.9347 59.2904L68.8553 76.1343L75.2842 79.6934C77.3257 80.8236 77.8651 83.5926 76.489 85.878L70.7581 95.396C69.382 97.6815 66.6115 98.6181 64.57 97.4879L53.2035 91.1953C51.162 90.0651 50.6227 87.2962 51.9988 85.0107L57.7296 75.4927C59.1058 73.2072 61.8763 72.2707 63.9177 73.4009L64.925 73.9585C65.1558 69.9973 65.6868 60.8327 65.8722 57.2402L60.4735 54.2514C57.3215 56.2016 49.3099 61.2249 45.8476 63.3971L46.8405 63.9468C48.882 65.0769 49.4214 67.8459 48.0453 70.1314L42.3144 79.6493C40.9383 81.9348 38.1678 82.8714 36.1263 81.7412L24.7598 75.4486C22.7183 74.3185 22.1789 71.5495 23.555 69.264L29.2859 59.7461C30.662 57.4606 33.4325 56.524 35.474 57.6542L41.9174 61.2213L56.5918 51.9022L56.5918 51.9022L56.5918 51.9022Z\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"none\\\" />\\n\u003C/svg>\\n\"},\"$:/plugins/Gk0Wk/drawio/new-drawio-diagram\":{\"title\":\"$:/plugins/Gk0Wk/drawio/new-drawio-diagram\",\"tags\":\"$:/tags/PageControls $:/tags/ViewToolbar\",\"hint\":\"\u003C$text text={{{ [[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]search[zh]then[新建一个draw.io图表条目]else[Create a new draw.io diagram tiddler]] }}} />\",\"description\":\"\u003C$text text={{{ [[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]search[zh]then[新建一个draw.io图表条目]else[Create a new draw.io diagram tiddler]] }}} />\",\"caption\":\"{{$:/plugins/Gk0Wk/drawio/icon}} \u003C$text text={{{ [[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]search[zh]then[新建图表]else[new diagram]] }}} />\",\"text\":\"\\\\whitespace trim\\n\\n\\\\define createDiagram()\\n\u003C$action-createtiddler $basetitle={{{ [[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]search[zh]then[图表]else[Diagram]] }}} type=\\\"application/vnd.drawio\\\" >\\n\u003C$action-sendmessage $message=\\\"tm-edit-tiddler\\\" $param=\u003C\u003CcreateTiddler-title>>/>\\n\u003C/$action-createtiddler>\\n\\\\end\\n\\n\\\\define drawioButton()\\n\\\\whitespace trim\\n\u003C$button tooltip={{{ [[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]search[zh]then[新建一个draw.io图表条目]else[Create a new draw.io diagram tiddler]] }}} aria-label={{{ [[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]search[zh]then[新建图表]else[new diagram]] }}} class=\u003C\u003Ctv-config-toolbar-class>> actions=\u003C\u003CcreateDiagram>> >\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/plugins/Gk0Wk/drawio/icon}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\\n\u003C$text text={{{ [[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]search[zh]then[新建图表]else[new diagram]] }}} />\\n\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\\n\\n\u003C\u003CdrawioButton>>\\n\"},\"$:/plugins/Gk0Wk/drawio/readme\":{\"title\":\"$:/plugins/Gk0Wk/drawio/readme\",\"type\":\"text/vnd.tiddlywiki\",\"caption\":\"draw.io\",\"text\":\"\u003Cimg src=\\\"https://www.drawio.com/assets/img/blog/feature-flag-gitflow-tags.png\\\" width=\\\"100%\\\" height=\\\"auto\\\" >\\n\\n\u003C$list filter=\\\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\\\" variable=\\\"lang\\\">\\n\u003C$list filter=\\\"[\u003Clang>search[zh]]\\\">\\n\\ndraw.io 是一个强大的在线图表编辑器,可以用来绘制流程图、组织结构图、UML图、网络图、平面图、电路图、数据库图、房屋平面图、地图等等。\\n\\n现在我将其集成到了 \u003C$text text=\\\"TiddlyWiki\\\" /> 中,你可以在这里使用它。点击 {{$:/plugins/Gk0Wk/drawio/icon}} 按钮,就可以创建一个新的图表条目,该条目在非编辑模式下会显示其绘制的内容,而在编辑模式下则会进入 draw.io 的编辑界面。\\n\\n注意:编辑模式需要联网才能使用,因为 draw.io 是在线编辑器,初次加载需要一定的时间,所以请耐心等待。但是预览图片不需要联网,所以你可以在离线状态下查看图表,此时它和你其他的图片没有区别。\\n\\n你可以在插件的设置中修改编辑器在日间或夜间模式下的主题。\\n\\n在编辑器中,你可以导入和导出各种类型的图表文件。图标实际上将以 SVG+嵌入式 XML 的形式保存在 \u003C$text text=\\\"TiddlyWiki\\\" /> 中,这样可以保证图表的可编辑性。你可以在编辑器中导出为各种格式的文件,也可以在 \u003C$text text=\\\"TiddlyWiki\\\" /> 中导出为 SVG、PNG 等文件。\\n\\n> 如果你觉得编辑器太小,在编辑器的右下角有一个 {{$:/core/images/full-screen-button}} 全屏按钮,点击即可全屏编辑器,再次按 \u003Ckbd>Esc\u003C/kbd> 即可退出全屏!\\n\\n你可以在这里查看 draw.io 的官方文档:https://www.drawio.com/\\n\\n快来试试吧!\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[\u003Clang>!search[zh]]\\\">\\n\\ndraw.io is a powerful online diagram editor that can be used to draw flowcharts, organizational charts, UML diagrams, network diagrams, floor plans, circuit diagrams, database diagrams, house floor plans, maps, etc.\\n\\nNow I have integrated it into \u003C$text text=\\\"TiddlyWiki\\\" />, you can use it here. Click the {{$:/plugins/Gk0Wk/drawio/icon}} button to create a new diagram tiddler, which will display its drawing content in non-editing mode, and will enter the draw.io editing interface in editing mode.\\n\\nNote: The editing mode requires networking, because draw.io is an online editor, which takes some time to load for the first time, so please be patient. But the preview image does not require networking, so you can view the chart in offline mode, and it is no different from your other images.\\n\\nYou can modify the theme of the editor in the settings of the plugin in day or night mode.\\n\\nIn the editor, you can import and export various types of chart files. The icon is actually saved in the form of SVG+embedded XML in \u003C$text text=\\\"TiddlyWiki\\\" />, which ensures the editability of the chart. You can export to various formats of files in the editor, or export to SVG, PNG and other files in \u003C$text text=\\\"TiddlyWiki\\\" />.\\n\\n> If you think the editor is too small, there is a {{$:/core/images/full-screen-button}} full screen button in the lower right corner of the editor, click to enter full screen editor, press \u003Ckbd>Esc\u003C/kbd> again to exit full screen!\\n\\nYou can view the official documentation of draw.io here: https://www.drawio.com/\\n\\nCome and try it!\\n\\n\u003C/$list>\\n\u003C/$list>\\n\"},\"$:/plugins/Gk0Wk/drawio/edit-drawio.js\":{\"title\":\"$:/plugins/Gk0Wk/drawio/edit-drawio.js\",\"module-type\":\"widget\",\"type\":\"application/javascript\",\"Modern.TiddlyDev#Origin\":\"edit-drawio.ts\",\"text\":\"\\\"use strict\\\";var drawioUnmountCheckTimer,editTextWidgetFactory=require(\\\"$:/core/modules/editor/factory.js\\\")[\\\"editTextWidgetFactory\\\"],SimpleEngine=require(\\\"$:/core/modules/editor/engines/simple.js\\\")[\\\"SimpleEngine\\\"],checkIfDarkMode=($tw.utils.registerFileType(\\\"application/x-drawio\\\",\\\"utf8\\\",\\\".drawio\\\",{flags:[\\\"image\\\"],deserializerType:\\\"image/svg+xml\\\"}),$tw.utils.registerFileType(\\\"application/vnd.drawio\\\",\\\"utf8\\\",\\\".drawio\\\",{flags:[\\\"image\\\"],deserializerType:\\\"image/svg+xml\\\"}),()=>{var e;return\\\"dark\\\"===(null==(e=null==(e=$tw.wiki.getTiddler($tw.wiki.getTiddlerText(\\\"$:/palette\\\")))?void 0:e.fields)?void 0:e[\\\"color-scheme\\\"])}),isChinese=()=>$tw.wiki.getTiddler(\\\"$:/language\\\").fields.text.includes(\\\"zh\\\"),drawioEditorInstance=new Set,registerInstance=e=>{$tw.browser&&void 0===drawioUnmountCheckTimer&&(drawioEditorInstance.add(e),drawioUnmountCheckTimer=setInterval(()=>{var e=[];for(const t of drawioEditorInstance)void 0!==t.iframeNode&&document.contains(t.iframeNode)||e.push(t);for(const i of e)drawioEditorInstance[\\\"delete\\\"](i);drawioEditorInstance.size\u003C1&&(drawioUnmountCheckTimer=void 0,clearInterval(drawioUnmountCheckTimer))},1e3))},DrawIOEditor=class{constructor({widget:d,value:e,parentNode:t,nextSibling:i}){if(this.parentNode=t,this.nextSibling=i,$tw.browser){this.iframeNode=$tw.utils.domMaker(\\\"iframe\\\",{document:d.document,\\\"class\\\":\\\"gk0wk-drawio-iframe\\\",attributes:{frameborder:\\\"0\\\"},style:{margin:\\\"0\\\",border:\\\"none\\\",width:\\\"100%\\\",minHeight:\\\"700px\\\",maxHeight:\\\"90vh\\\",height:\\\"100%\\\"}}),t.insertBefore(this.iframeNode,i),d.domNodes.push(this.iframeNode);var r=$tw.utils.domMaker(\\\"button\\\",{\\\"class\\\":\\\"full-screen-button\\\",innerHTML:$tw.wiki.renderTiddler(\\\"text/html\\\",\\\"$:/core/images/full-screen-button\\\"),attributes:{title:isChinese()?\\\"全屏模式\\\":\\\"Full screen mode\\\"},style:{position:\\\"absolute\\\",right:\\\"0\\\",bottom:\\\"-42px\\\",padding:\\\"0 15px\\\",background:\\\"#fff3\\\",border:\\\"1px #fff7 solid\\\",cursor:\\\"pointer\\\"}});r.onclick=()=>this.setFullscreen(!0),t.insertBefore(r,i),d.domNodes.push(r),this.xml=e;let a=!1;const o=({data:e,source:t})=>{var i;if(null!==(null==(i=this.iframeNode)?void 0:i.contentWindow)&&t===this.iframeNode.contentWindow){const{event:n,...s}=$tw.utils.parseJSONSafe(e,()=>({}));switch(n){case\\\"init\\\":if(a)return;a=!0,this.iframeNode.contentWindow.postMessage(JSON.stringify({action:\\\"load\\\",xml:this.xml,autosave:1}),\\\"*\\\");break;case\\\"configure\\\":this.iframeNode.contentWindow.postMessage(JSON.stringify({action:\\\"configure\\\",config:{compressXml:!0,enableCssDarkMode:!1}}),\\\"*\\\");break;case\\\"load\\\":case\\\"save\\\":case\\\"autosave\\\":this.iframeNode.contentWindow.postMessage(JSON.stringify({action:\\\"export\\\",format:\\\"xmlsvg\\\",embedImages:!0,keepTheme:!0,twEditor:!0}),\\\"*\\\");break;case\\\"openLink\\\":var{href:r,target:o}=s;window.open(r,o);break;case\\\"export\\\":var{message:r,data:o}=s;if(o&&r.twEditor){r=$tw.utils.base64Decode(o.split(\\\",\\\",2)[1]);if(r===this.xml)return;this.xml=r,d.saveChanges(r)}}}};var r=$tw.wiki.getTiddlerText(checkIfDarkMode()?\\\"$:/plugins/Gk0Wk/drawio/config/theme-dark\\\":\\\"$:/plugins/Gk0Wk/drawio/config/theme-light\\\",\\\"\\\")||\\\"Kennedy\\\";window.addEventListener(\\\"message\\\",o),this.iframeNode.setAttribute(\\\"src\\\",`https://embed.diagrams.net/?embed=1&ui=${r}&spin=1&libraries=1&noExitBtn=1&saveAndExit=0&noSaveBtn=1&proto=json&protocol=json&configure=1`),this.unmount=()=>{window.removeEventListener(\\\"message\\\",o)},registerInstance(this)}else r=$tw.utils.domMaker(\\\"div\\\",{document:d.document,\\\"class\\\":\\\"gk0wk-drawio-preview\\\",style:{margin:\\\"0\\\",border:\\\"none\\\",width:\\\"100%\\\",height:\\\"100%\\\"},innerHTML:e}),t.insertBefore(r,i),d.domNodes.push(r),this.xml=\\\"\\\",this.unmount=()=>null}loadXml(e){var t,i;e!==this.xml&&null!=(i=null==(t=null==(t=this.iframeNode)?void 0:t.contentWindow)?void 0:t.postMessage)&&i.call(t,JSON.stringify({action:\\\"load\\\",xml:e,autosave:1}),\\\"*\\\")}resize(){}fixHeight(){this.resize()}focus(){var e,t;null!=(t=null==(e=this.iframeNode)?void 0:e.focus)&&t.call(e)}createTextOperation(){return{text:\\\"\\\",selection:\\\"\\\",selStart:0,selEnd:0,cutStart:null,cutEnd:null,replacement:null,newSelStart:null,newSelEnd:null}}executeTextOperation(){return this.xml}updateDomNodeText(e){this.loadXml(e)}setText(e,t){this.loadXml(e)}setFullscreen(e=!0){var t,i;e?null!=(i=null==(t=this.iframeNode)?void 0:t.requestFullscreen)&&i.call(t):document.exitFullscreen()}},engine=$tw.browser?DrawIOEditor:SimpleEngine;exports[\\\"edit-drawio\\\"]=editTextWidgetFactory(engine,engine);\"}}}","title":"$:/plugins/Gk0Wk/drawio","type":"application/json","version":"0.0.7","Modern.TiddlyDev#SHA256-Hashed":"4131fe02bbddd90fa45c66bb1f29575813d82e14c8590419571bc1eeb6487653"}, {"title":"$:/plugins/ipfs","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/ipfs/image/bluelight\": {\n \"title\": \"$:/ipfs/image/bluelight\",\n \"_canonical_uri\": \"/ipfs/bafybeibi5ldguonidlwomjxwjehodpmypgex5qd2fe6f6yuka4dqvbzvpq\",\n \"_import_uri\": \"/ipfs/bafybeiejplubmcgpkaqwjc23ebo6vorv2p4cwlr7kkhm4cakgtneefjuc4\",\n \"modified\": \"20200526065100279\",\n \"tags\": \"$:/ipfs/documentation $:/isAttachment $:/isIpfs\",\n \"type\": \"image/jpg\",\n \"text\": \"\"\n },\n \"$:/core/images/ens\": {\n \"title\": \"$:/core/images/ens\",\n \"modified\": \"20200528044634920\",\n \"source\": \"https://github.com/ensdomains/ens-app/blob/dev/public/safari-pinned-tab.svg\",\n \"license\": \"https://github.com/ensdomains/ens-app/blob/dev/LICENSE\",\n \"tags\": \"$:/tags/Image $:/ipfs/core $:/isAttachment $:/isEmbedded\",\n \"type\": \"image/svg+xml\",\n \"text\": \"\u003C?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n\u003Csvg\\n xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\"\\n xmlns:cc=\\\"http://creativecommons.org/ns#\\\"\\n xmlns:rdf=\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n version=\\\"1.0\\\"\\n width=\\\"18\\\"\\n height=\\\"18\\\"\\n viewBox=\\\"0 0 128 128\\\"\\n class=\\\"tc-image-button\\\"\\n preserveAspectRatio=\\\"xMidYMid meet\\\"\\n id=\\\"svg14\\\"\\n sodipodi:docname=\\\"ens-small.svg\\\"\\n inkscape:version=\\\"0.92.4 (5da689c313, 2019-01-14)\\\"\\n>\\n \u003Cdefs\\n id=\\\"defs18\\\" />\\n \u003Csodipodi:namedview\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#666666\\\"\\n borderopacity=\\\"1\\\"\\n objecttolerance=\\\"10\\\"\\n gridtolerance=\\\"10\\\"\\n guidetolerance=\\\"10\\\"\\n inkscape:pageopacity=\\\"0\\\"\\n inkscape:pageshadow=\\\"2\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1020\\\"\\n id=\\\"namedview16\\\"\\n showgrid=\\\"false\\\"\\n inkscape:zoom=\\\"12.361274\\\"\\n inkscape:cx=\\\"41.295086\\\"\\n inkscape:cy=\\\"21.734019\\\"\\n inkscape:window-x=\\\"0\\\"\\n inkscape:window-y=\\\"31\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"svg14\\\" />\\n \u003Cmetadata\\n id=\\\"metadata2\\\">\\nCreated by potrace 1.11, written by Peter Selinger 2001-2013\\n\u003Crdf:RDF>\\n \u003Ccc:Work\\n rdf:about=\\\"\\\">\\n \u003Cdc:format>image/svg+xml\u003C/dc:format>\\n \u003Cdc:type\\n rdf:resource=\\\"http://purl.org/dc/dcmitype/StillImage\\\" />\\n \u003Cdc:title>\u003C/dc:title>\\n \u003C/cc:Work>\\n\u003C/rdf:RDF>\\n\u003C/metadata>\\n \u003Cg\\n transform=\\\"matrix(0.08837363,0,0,-0.07925696,-8.0787259,127.6037)\\\"\\n id=\\\"g12\\\"\\n style=\\\"fill:#000000;stroke:none\\\">\\n \u003Cpath\\n d=\\\"m 640,1519 c -69,-48 -173,-122 -231,-163 -94,-65 -110,-82 -134,-129 -30,-63 -37,-155 -15,-222 15,-49 61,-135 71,-135 6,0 437,704 447,731 7,19 -17,4 -138,-82 z\\\"\\n id=\\\"path4\\\"\\n inkscape:connector-curvature=\\\"0\\\" />\\n \u003Cpath\\n d=\\\"m 856,1598 c 4,-7 44,-67 89,-133 118,-175 286,-437 393,-615 93,-154 122,-224 125,-300 2,-55 17,-35 52,75 26,80 28,92 22,217 -7,185 -45,284 -149,387 -35,36 -520,381 -534,381 -3,0 -2,-6 2,-12 z\\\"\\n id=\\\"path6\\\"\\n inkscape:connector-curvature=\\\"0\\\" />\\n \u003Cpath\\n d=\\\"M 141,1068 C 97,969 87,913 93,776 98,649 106,607 146,523 163,485 224,403 254,378 291,346 772,9 776,12 c 2,2 -57,95 -131,206 -132,199 -320,496 -404,639 -48,81 -70,145 -73,210 -1,23 -3,43 -4,43 -2,0 -12,-19 -23,-42 z\\\"\\n id=\\\"path8\\\"\\n inkscape:connector-curvature=\\\"0\\\" />\\n \u003Cpath\\n d=\\\"M 1079,398 C 962,204 859,34 851,20 l -16,-25 30,21 c 306,211 436,304 461,331 51,53 72,165 49,254 -14,51 -63,149 -76,149 -4,0 -103,-159 -220,-352 z\\\"\\n id=\\\"path10\\\"\\n inkscape:connector-curvature=\\\"0\\\" />\\n \u003C/g>\\n\u003C/svg>\"\n },\n \"$:/ipfs/logo/vector/ice/text\": {\n \"title\": \"$:/ipfs/logo/vector/ice/text\",\n \"modified\": \"20200528040053586\",\n \"source\": \"https://github.com/ipfs/logo/blob/master/vector/ipfs-logo-vector-ice-text.svg\",\n \"license\": \"https://github.com/ipfs/logo/blob/master/LICENSE\",\n \"tags\": \"$:/isAttachment $:/isEmbedded\",\n \"type\": \"image/svg+xml\",\n \"text\": \"\u003C?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n\u003Csvg\\n xmlns:rdf=\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\"\\n style=\\\"enable-background:new\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n height=\\\"512\\\"\\n width=\\\"512\\\"\\n version=\\\"1.1\\\"\\n xmlns:cc=\\\"http://creativecommons.org/ns#\\\"\\n xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\"\\n viewBox=\\\"0 0 512 512\\\"\\n>\\n \u003Cdefs>\\n \u003ClinearGradient id=\\\"c\\\" y2=\\\"771.51\\\" gradientUnits=\\\"userSpaceOnUse\\\" y1=\\\"771.51\\\" x2=\\\"527.72\\\" x1=\\\"84.315\\\">\\n \u003Cstop stop-color=\\\"#4a9ea1\\\" offset=\\\"0\\\"/>\\n \u003C/linearGradient>\\n \u003ClinearGradient id=\\\"d\\\" y2=\\\"771.48\\\" gradientUnits=\\\"userSpaceOnUse\\\" y1=\\\"771.48\\\" x2=\\\"512.36\\\" x1=\\\"99.675\\\">\\n \u003Cstop stop-color=\\\"#63d3d7\\\" offset=\\\"0\\\"/>\\n \u003C/linearGradient>\\n \u003C/defs>\\n \u003Cg>\\n \u003Cg style=\\\"enable-background:new\\\" transform=\\\"translate(-50.017,-515.51)\\\">\\n \u003Cpath fill=\\\"url(#c)\\\" d=\\\"m84.315 899.51 221.7 128 221.7-128v-256l-221.7-127.99-221.7 128z\\\"/>\\n \u003Cpath fill=\\\"url(#d)\\\" d=\\\"m283.13 546.35-160.74 92.806c0.32126 2.8543 0.32125 5.7352 0 8.5894l160.75 92.806c13.554-10.001 32.043-10.001 45.597 0l160.75-92.807c-0.32126-2.8543-0.32293-5.7338-0.001-8.588l-160.74-92.806c-13.554 10.001-32.044 10.001-45.599 0zm221.79 127.03-160.92 93.84c1.884 16.739-7.3611 32.751-22.799 39.489l0.18062 184.58c2.6325 1.1489 5.1267 2.5886 7.438 4.294l160.75-92.805c-1.884-16.739 7.3611-32.752 22.799-39.49v-185.61c-2.6325-1.1489-5.1281-2.5886-7.4394-4.294zm-397.81 1.0315c-2.3112 1.7054-4.8054 3.1465-7.438 4.2954v185.61c15.438 6.7378 24.683 22.75 22.799 39.489l160.74 92.806c2.3112-1.7054 4.8069-3.1465 7.4394-4.2954v-185.61c-15.438-6.7378-24.683-22.75-22.799-39.489l-160.74-92.81z\\\"/>\\n \u003C/g>\\n \u003Cg style=\\\"enable-background:new\\\" transform=\\\"translate(0,-196.66)\\\">\\n \u003Cpath fill-opacity=\\\".25098\\\" d=\\\"m256 708.66 221.7-128v-256l-221.7 128v256z\\\"/>\\n \u003Cpath fill-opacity=\\\".039216\\\" d=\\\"m256 708.66v-256l-221.7-128v256l221.7 128z\\\"/>\\n \u003Cpath fill-opacity=\\\".13018\\\" d=\\\"m34.298 324.66 221.7 128 221.7-128-221.7-128-221.7 128z\\\"/>\\n \u003C/g>\\n \u003C/g>\\n \u003Cg style=\\\"enable-background:new\\\" fill=\\\"#fff\\\">\\n \u003Cpath d=\\\"m103.09 186h-29.2v141.2h29.2v-141.2z\\\"/>\\n \u003Cpath d=\\\"m153.97 327.2v-51.8c7.2 0.6 14.4 0.6 20.4 0.6 41.6 0 53.6-20.6 53.6-46 0-30.8-22-44-56-44h-47.2v141.2h29.2zm15.8-71.8c-5.4 0-13.4 0-15.8-0.2v-48h18.2c17.6 0 27.6 8.4 27.6 23.8v0.4c0 12-4.4 24-30 24z\\\"/>\\n \u003Cpath d=\\\"m327.95 186h-88.6v141.2h29.2v-62.2h55.4v-21.2h-55.6v-36.4h57.6l2-21.4z\\\"/>\\n \u003Cpath d=\\\"m423.51 213.6 7.6-19.6c-11.4-8.2-26.8-11.2-46.2-11.2-28.2 0-51.4 13.2-51.4 40.2 0 24.2 17.8 33.8 35.6 39.6l17.8 6c12.2 4.2 22.2 8.2 22.2 21.4 0 12-10.4 16.8-26.2 16.8-16 0-33.2-4.8-43-11l-7.6 21.2c12.8 8.2 29 12.2 50.8 12.2 31 0 55-13.6 55-42.6 0-27-20.6-35.6-41.4-42.6l-19.4-6.4c-8.4-2.8-14.8-6.6-14.8-17.4 0-11 9-15.4 22.4-15.4 16.4 0 29.2 3 38.6 8.8z\\\"/>\\n \u003C/g>\\n\u003C/svg>\"\n },\n \"$:/core/images/ipfs\": {\n \"title\": \"$:/core/images/ipfs\",\n \"modified\": \"20200528044634920\",\n \"source\": \"https://github.com/ipfs/logo/blob/master/vector/ipfs-logo-vector-black.svg\",\n \"license\": \"https://github.com/ipfs/logo/blob/master/LICENSE\",\n \"tags\": \"$:/tags/Image $:/ipfs/core $:/isAttachment $:/isEmbedded\",\n \"type\": \"image/svg+xml\",\n \"text\": \"\u003C?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n\u003Csvg\\n xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\"\\n xmlns:cc=\\\"http://creativecommons.org/ns#\\\"\\n xmlns:rdf=\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\"\\n xmlns:svg=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:sodipodi=\\\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\\\"\\n xmlns:inkscape=\\\"http://www.inkscape.org/namespaces/inkscape\\\"\\n style=\\\"enable-background:new\\\"\\n height=\\\"22\\\"\\n width=\\\"22\\\"\\n version=\\\"1.1\\\"\\n viewBox=\\\"0 0 128 128\\\"\\n class=\\\"tc-image-button\\\"\\n id=\\\"svg24\\\"\\n sodipodi:docname=\\\"ipfs-small.svg\\\"\\n inkscape:version=\\\"0.92.4 (5da689c313, 2019-01-14)\\\"\\n>\\n \u003Cmetadata\\n id=\\\"metadata28\\\">\\n \u003Crdf:RDF>\\n \u003Ccc:Work\\n rdf:about=\\\"\\\">\\n \u003Cdc:format>image/svg+xml\u003C/dc:format>\\n \u003Cdc:type\\n rdf:resource=\\\"http://purl.org/dc/dcmitype/StillImage\\\" />\\n \u003Cdc:title>\u003C/dc:title>\\n \u003C/cc:Work>\\n \u003C/rdf:RDF>\\n \u003C/metadata>\\n \u003Csodipodi:namedview\\n pagecolor=\\\"#ffffff\\\"\\n bordercolor=\\\"#666666\\\"\\n borderopacity=\\\"1\\\"\\n objecttolerance=\\\"10\\\"\\n gridtolerance=\\\"10\\\"\\n guidetolerance=\\\"10\\\"\\n inkscape:pageopacity=\\\"0\\\"\\n inkscape:pageshadow=\\\"2\\\"\\n inkscape:window-width=\\\"1920\\\"\\n inkscape:window-height=\\\"1020\\\"\\n id=\\\"namedview26\\\"\\n showgrid=\\\"false\\\"\\n units=\\\"pt\\\"\\n inkscape:zoom=\\\"5.2149125\\\"\\n inkscape:cx=\\\"133.61143\\\"\\n inkscape:cy=\\\"41.576599\\\"\\n inkscape:window-x=\\\"0\\\"\\n inkscape:window-y=\\\"31\\\"\\n inkscape:window-maximized=\\\"1\\\"\\n inkscape:current-layer=\\\"svg24\\\" />\\n \u003Cdefs\\n id=\\\"defs8\\\">\\n \u003ClinearGradient\\n id=\\\"b\\\"\\n y2=\\\"771.51001\\\"\\n gradientUnits=\\\"userSpaceOnUse\\\"\\n x2=\\\"527.71997\\\"\\n y1=\\\"771.51001\\\"\\n x1=\\\"84.315002\\\">\\n \u003Cstop\\n offset=\\\"0\\\"\\n id=\\\"stop2\\\" />\\n \u003C/linearGradient>\\n \u003ClinearGradient\\n id=\\\"a\\\"\\n y2=\\\"771.47998\\\"\\n gradientUnits=\\\"userSpaceOnUse\\\"\\n x2=\\\"512.35999\\\"\\n y1=\\\"771.47998\\\"\\n x1=\\\"99.675003\\\">\\n \u003Cstop\\n stop-color=\\\"#d8d8d8\\\"\\n offset=\\\"0\\\"\\n id=\\\"stop5\\\" />\\n \u003C/linearGradient>\\n \u003C/defs>\\n \u003Cg\\n transform=\\\"matrix(0.28867709,0,0,0.24999998,-24.339808,-128.87748)\\\"\\n id=\\\"g14\\\">\\n \u003Cpath\\n d=\\\"m 84.315,899.51 221.7,128 221.7,-128 v -256 l -221.7,-127.99 -221.7,128 z\\\"\\n id=\\\"path10\\\"\\n style=\\\"fill:url(#b)\\\"\\n inkscape:connector-curvature=\\\"0\\\" />\\n \u003Cpath\\n d=\\\"m 283.13,546.35 -160.74,92.806 c 0.32126,2.8543 0.32125,5.7352 0,8.5894 l 160.75,92.806 c 13.554,-10.001 32.043,-10.001 45.597,0 l 160.75,-92.807 c -0.32126,-2.8543 -0.32293,-5.7338 -0.001,-8.588 l -160.74,-92.806 c -13.554,10.001 -32.044,10.001 -45.599,0 z M 504.92,673.38 344,767.22 c 1.884,16.739 -7.3611,32.751 -22.799,39.489 l 0.18062,184.58 c 2.6325,1.1489 5.1267,2.5886 7.438,4.294 l 160.75,-92.805 c -1.884,-16.739 7.3611,-32.752 22.799,-39.49 v -185.61 c -2.6325,-1.1489 -5.1281,-2.5886 -7.4394,-4.294 z m -397.81,1.0315 c -2.3112,1.7054 -4.8054,3.1465 -7.438,4.2954 v 185.61 c 15.438,6.7378 24.683,22.75 22.799,39.489 l 160.74,92.806 c 2.3112,-1.7054 4.8069,-3.1465 7.4394,-4.2954 v -185.61 c -15.438,-6.7378 -24.683,-22.75 -22.799,-39.489 l -160.74,-92.81 z\\\"\\n id=\\\"path12\\\"\\n style=\\\"fill:url(#a)\\\"\\n inkscape:connector-curvature=\\\"0\\\" />\\n \u003C/g>\\n \u003Cg\\n transform=\\\"matrix(0.28867709,0,0,0.24999998,-9.9010468,-49.164992)\\\"\\n id=\\\"g22\\\">\\n \u003Cpath\\n d=\\\"m 256,708.66 221.7,-128 v -256 l -221.7,128 z\\\"\\n id=\\\"path16\\\"\\n inkscape:connector-curvature=\\\"0\\\"\\n style=\\\"fill-opacity:0.25097997\\\" />\\n \u003Cpath\\n d=\\\"m 256,708.66 v -256 l -221.7,-128 v 256 z\\\"\\n id=\\\"path18\\\"\\n inkscape:connector-curvature=\\\"0\\\"\\n style=\\\"fill-opacity:0.03921599\\\" />\\n \u003Cpath\\n d=\\\"m 34.298,324.66 221.7,128 221.7,-128 -221.7,-128 z\\\"\\n id=\\\"path20\\\"\\n inkscape:connector-curvature=\\\"0\\\"\\n style=\\\"fill-opacity:0.13018003\\\" />\\n \u003C/g>\\n\u003C/svg>\"\n },\n \"$:/core/images/bluelight\": {\n \"title\": \"$:/core/images/bluelight\",\n \"modified\": \"20200528045157536\",\n \"tags\": \"$:/tags/Image $:/ipfs/core $:/isAttachment $:/isEmbedded\",\n \"type\": \"image/png\",\n \"text\": \"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Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICB4bWxuczpwbHVzPSJodHRwOi8vbnMudXNlcGx1cy5vcmcvbGRmL3htcC8xLjAvIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUyRjFBQzkzNzUzNTExRTQ4QTkwRTdFRDUwRTU1MTZBIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmMzMGY2MGJkLTBlYTAtNDU4YS1iZjVkLTUzYzIzNTFhY2UwMCIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjllMzlkYmZlLTA5ZGEtNDYyNi04ZmUzLTRjZGVkNzIzY2M3OSIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iTGludXgiCiAgIEdJTVA6VGltZVN0YW1wPSIxNTg4NDg0NDExOTg4ODc5IgogICBHSU1QOlZlcnNpb249IjIuMTAuOCIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIj4KICAgPGlwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25DcmVhdGVkPgogICA8aXB0Y0V4dDpMb2NhdGlvblNob3duPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgPGlwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6QXJ0d29ya09yT2JqZWN0PgogICA8aXB0Y0V4dDpSZWdpc3RyeUlkPgogICAgPHJkZjpCYWcvPgogICA8L2lwdGNFeHQ6UmVnaXN0cnlJZD4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Y2U5MDE2NGYtZGMzYS00ZDg2LWFiNDMtMzQ2ODk4NDExMmI1IgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKExpbnV4KSIKICAgICAgc3RFdnQ6d2hlbj0iKzA1OjMwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICAgPHhtcE1NOkRlcml2ZWRGcm9tCiAgICBzdFJlZjpkb2N1bWVudElEPSI2OUJCODkzQzc1RTJBODMyMDU4MTA4OTg4OEU1MTAxRSIKICAgIHN0UmVmOmluc3RhbmNlSUQ9IjY5QkI4OTNDNzVFMkE4MzIwNTgxMDg5ODg4RTUxMDFFIi8+CiAgIDxwbHVzOkltYWdlU3VwcGxpZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZVN1cHBsaWVyPgogICA8cGx1czpJbWFnZUNyZWF0b3I+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpJbWFnZUNyZWF0b3I+CiAgIDxwbHVzOkNvcHlyaWdodE93bmVyPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6Q29weXJpZ2h0T3duZXI+CiAgIDxwbHVzOkxpY2Vuc29yPgogICAgPHJkZjpTZXEvPgogICA8L3BsdXM6TGljZW5zb3I+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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\"\n },\n \"$:/ipfs/image/tiddlywiki\": {\n \"title\": \"$:/ipfs/image/tiddlywiki\",\n \"_canonical_uri\": \"/ipfs/bafkreihzzc42nwumjeaz4d6kxsbxa6vy5llnsvqtz3xjjwnjrhwkjy5loq\",\n \"modified\": \"20200528080350311\",\n \"tags\": \"$:/ipfs/documentation $:/isAttachment $:/isIpfs\",\n \"type\": \"image/svg+xml\"\n },\n \"$:/ipfs/saver/api\": {\n \"title\": \"$:/ipfs/saver/api\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"$:/ipfs/saver/api/https/tube.copylaradio.com/5001\"\n },\n \"$:/ipfs/saver/ens/domain\": {\n \"title\": \"$:/ipfs/saver/ens/domain\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"\"\n },\n \"$:/ipfs/saver/export\": {\n \"title\": \"$:/ipfs/saver/export\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"json\"\n },\n \"$:/ipfs/saver/gateway\": {\n \"title\": \"$:/ipfs/saver/gateway\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"$:/ipfs/saver/gateway/https/tube.copylaradio.com\"\n },\n \"$:/ipfs/saver/ipns/key\": {\n \"title\": \"$:/ipfs/saver/ipns/key\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"\"\n },\n \"$:/ipfs/saver/ipns/name\": {\n \"title\": \"$:/ipfs/saver/ipns/name\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"\"\n },\n \"$:/ipfs/saver/policy\": {\n \"title\": \"$:/ipfs/saver/policy\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"gateway\"\n },\n \"$:/config/PreferredSaver\": {\n \"title\": \"$:/config/PreferredSaver\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"$:/plugins/ipfs/ipfs-saver.js\"\n },\n \"$:/ipfs/saver/protocol\": {\n \"title\": \"$:/ipfs/saver/protocol\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"ipfs\"\n },\n \"$:/ipfs/saver/provider\": {\n \"title\": \"$:/ipfs/saver/provider\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"http\"\n },\n \"$:/ipfs/saver/unpin\": {\n \"title\": \"$:/ipfs/saver/unpin\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"bluelightav.eth\",\n \"text\": \"no\"\n },\n \"$:/ipfs/saver/verbose\": {\n \"title\": \"$:/ipfs/saver/verbose\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"bluelightav.eth\",\n \"text\": \"yes\"\n },\n \"$:/plugins/ipfs/modules/parsers/audioparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/audioparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/audioparser.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: parser\\n\\nThe audio parser parses an audio tiddler into an embeddable HTML element\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n var name = 'ipfs-audioparser'\\n\\n var AudioParser = function (type, text, options) {\\n var self = this\\n var value = 'data:' + type + ';base64,'\\n var element = {\\n type: 'element',\\n tag: 'audio',\\n attributes: {\\n controls: { type: 'string', value: 'controls' },\\n style: { type: 'string', value: 'width: 100%; object-fit: contain' }\\n }\\n }\\n if (\\n $tw.browser &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n $tw.ipfs\\n .loadToBase64(url)\\n .then(loaded => {\\n element.attributes.src = {\\n type: 'string',\\n value: value + loaded.data\\n }\\n var parsedTiddler = $tw.utils.getChangedTiddler(\\n options.tiddler\\n )\\n $tw.rootWidget.refresh(parsedTiddler)\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else if (text) {\\n element.attributes.src = { type: 'string', value: value + text }\\n }\\n }\\n // Return the parsed tree\\n this.tree = [element]\\n }\\n\\n AudioParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n exports['audio/ogg'] = AudioParser\\n exports['audio/mpeg'] = AudioParser\\n exports['audio/mp3'] = AudioParser\\n exports['audio/mp4'] = AudioParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"parser\"\n },\n \"$:/plugins/ipfs/modules/parsers/binaryparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/binaryparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/binaryparser.js\\ntype: application/javascript\\nmodule-type: parser\\n\\nThe binary parser parses a binary tiddler into a warning message and download link\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const name = 'ipfs-binaryparser'\\n\\n var BINARY_WARNING_MESSAGE = '$:/core/ui/BinaryWarning'\\n var EXPORT_BUTTON_IMAGE = '$:/core/images/export-button'\\n\\n var BinaryParser = function (type, text, options) {\\n var self = this\\n // Transclude the binary data tiddler warning message\\n var warn = {\\n type: 'element',\\n tag: 'p',\\n children: [\\n {\\n type: 'transclude',\\n attributes: {\\n tiddler: { type: 'string', value: BINARY_WARNING_MESSAGE }\\n }\\n }\\n ]\\n }\\n // Create download link based on binary tiddler title\\n var link = {\\n type: 'element',\\n tag: 'a',\\n attributes: {\\n title: { type: 'indirect', textReference: '!!title' },\\n download: { type: 'indirect', textReference: '!!title' }\\n },\\n children: [\\n {\\n type: 'transclude',\\n attributes: {\\n tiddler: { type: 'string', value: EXPORT_BUTTON_IMAGE }\\n }\\n }\\n ]\\n }\\n if (\\n $tw.browser &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n link.attributes.href = {\\n type: 'string',\\n value: url\\n }\\n var parsedTiddler = $tw.utils.getChangedTiddler(options.tiddler)\\n $tw.rootWidget.refresh(parsedTiddler)\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else if (text) {\\n link.attributes.href = {\\n type: 'string',\\n value: 'data:' + type + ';base64,' + text\\n }\\n }\\n }\\n // Combine warning message and download link in a div\\n var element = {\\n type: 'element',\\n tag: 'div',\\n attributes: {\\n class: { type: 'string', value: 'tc-binary-warning' }\\n },\\n children: [warn, link]\\n }\\n this.tree = [element]\\n }\\n\\n BinaryParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n exports['application/octet-stream'] = BinaryParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"parser\"\n },\n \"$:/plugins/ipfs/modules/parsers/htmlparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/htmlparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/htmlparser.js\\ntype: application/javascript\\nmodule-type: parser\\n\\nThe HTML parser displays text as raw HTML\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const name = 'ipfs-binaryparser'\\n\\n var HtmlParser = function (type, text, options) {\\n var self = this\\n var value = 'data:text/html;charset=utf-8,'\\n var src\\n if (\\n $tw.browser &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n src = url\\n var parsedTiddler = $tw.utils.getChangedTiddler(options.tiddler)\\n $tw.rootWidget.refresh(parsedTiddler)\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else if (text) {\\n src = value + encodeURIComponent(text)\\n }\\n }\\n this.tree = [\\n {\\n type: 'element',\\n tag: 'iframe',\\n attributes: {\\n src: { type: 'string', value: src },\\n sandbox: { type: 'string', value: '' }\\n }\\n }\\n ]\\n }\\n\\n HtmlParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n exports['text/html'] = HtmlParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"parser\"\n },\n \"$:/plugins/ipfs/modules/parsers/imageparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/imageparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/imageparser.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: parser\\n\\nThe image parser parses an image into an embeddable HTML element\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n var name = 'ipfs-imageparser'\\n\\n var ImageParser = function (type, text, options) {\\n var self = this\\n var value = 'data:' + type + ';base64,'\\n var element = {\\n type: 'element',\\n tag: 'img',\\n attributes: {}\\n }\\n if (\\n $tw.browser &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n $tw.ipfs\\n .loadToBase64(url)\\n .then(loaded => {\\n element.attributes.src = {\\n type: 'string',\\n value: value + loaded.data\\n }\\n var parsedTiddler = $tw.utils.getChangedTiddler(\\n options.tiddler\\n )\\n $tw.rootWidget.refresh(parsedTiddler)\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else if (text) {\\n element.attributes.src = { type: 'string', value: value + text }\\n }\\n }\\n // Return the parsed tree\\n this.tree = [element]\\n }\\n\\n ImageParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n exports['image/jpg'] = ImageParser\\n exports['image/jpeg'] = ImageParser\\n exports['image/png'] = ImageParser\\n exports['image/gif'] = ImageParser\\n exports['image/webp'] = ImageParser\\n exports['image/heic'] = ImageParser\\n exports['image/heif'] = ImageParser\\n exports['image/x-icon'] = ImageParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"parser\"\n },\n \"$:/plugins/ipfs/modules/parsers/pdfparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/pdfparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/pdfparser.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: parser\\n\\nThe PDF parser embeds a PDF viewer\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const name = 'ipfs-pdfparser'\\n\\n var PdfParser = function (type, text, options) {\\n var self = this\\n var value = 'data:application/pdf;base64,'\\n var element = {\\n type: 'element',\\n tag: 'embed',\\n attributes: {}\\n }\\n if (\\n $tw.browser &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n $tw.ipfs\\n .loadToBase64(url)\\n .then(loaded => {\\n element.attributes.src = {\\n type: 'string',\\n value: value + loaded.data\\n }\\n var parsedTiddler = $tw.utils.getChangedTiddler(\\n options.tiddler\\n )\\n $tw.rootWidget.refresh(parsedTiddler)\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else if (text) {\\n element.attributes.src = { type: 'string', value: value + text }\\n }\\n }\\n // Return the parsed tree\\n this.tree = [element]\\n }\\n\\n PdfParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n exports['application/pdf'] = PdfParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"parser\"\n },\n \"$:/plugins/ipfs/modules/parsers/svgparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/svgparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/svgparser.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: parser\\n\\nThe image parser parses an image into an embeddable HTML element\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const name = 'ipfs-svgparser'\\n\\n var SvgParser = function (type, text, options) {\\n var self = this\\n var value = 'data:image/svg+xml,'\\n var element = {\\n type: 'element',\\n tag: 'img',\\n attributes: {}\\n }\\n if (\\n $tw.browser &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n $tw.ipfs\\n .loadToUtf8(url)\\n .then(loaded => {\\n element.attributes.src = {\\n type: 'string',\\n value: value + encodeURIComponent(loaded.data)\\n }\\n var parsedTiddler = $tw.utils.getChangedTiddler(\\n options.tiddler\\n )\\n $tw.rootWidget.refresh(parsedTiddler)\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else {\\n element.attributes.src = {\\n type: 'string',\\n value: value + encodeURIComponent(text)\\n }\\n }\\n }\\n // Return the parsed tree\\n this.tree = [element]\\n }\\n\\n SvgParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n exports['image/svg+xml'] = SvgParser\\n exports['.svg'] = SvgParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"parser\"\n },\n \"$:/plugins/ipfs/modules/parsers/videoparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/videoparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/videoparser.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: parser\\n\\nThe video parser parses a video tiddler into an embeddable HTML element\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const name = 'ipfs-videoparser'\\n\\n var VideoParser = function (type, text, options) {\\n var self = this\\n var value = 'data:' + type + ';base64,'\\n var element = {\\n type: 'element',\\n tag: 'video',\\n attributes: {\\n controls: { type: 'string', value: 'controls' },\\n style: { type: 'string', value: 'width: 100%; object-fit: contain' }\\n }\\n }\\n if (\\n $tw.browser &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n $tw.ipfs\\n .loadToBase64(url)\\n .then(loaded => {\\n element.attributes.src = {\\n type: 'string',\\n value: value + loaded.data\\n }\\n var parsedTiddler = $tw.utils.getChangedTiddler(\\n options.tiddler\\n )\\n $tw.rootWidget.refresh(parsedTiddler)\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else if (text) {\\n element.attributes.src = { type: 'string', value: value + text }\\n }\\n }\\n // Return the parsed tree\\n this.tree = [element]\\n }\\n\\n VideoParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n exports['video/ogg'] = VideoParser\\n exports['video/webm'] = VideoParser\\n exports['video/mp4'] = VideoParser\\n exports['video/quicktime'] = VideoParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"parser\"\n },\n \"$:/plugins/ipfs/modules/parsers/wikiparser/wikiparser.js\": {\n \"title\": \"$:/plugins/ipfs/modules/parsers/wikiparser/wikiparser.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/parsers/wikiparser/wikiparser.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: parser\\n\\nwikiparser\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2020, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const IpfsImport = require('$:/plugins/ipfs/ipfs-import.js').IpfsImport\\n\\n var name = 'ipfs-wikiparser'\\n\\n var WikiParser = function (type, text, options) {\\n var self = this\\n this.wiki = options.wiki\\n // Check for an externally linked tiddler\\n if (\\n $tw.browser &&\\n (text || '') === '' &&\\n options.tiddler !== undefined &&\\n options.tiddler !== null\\n ) {\\n var canonicalUri = options.tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n var importUri = options.tiddler.fields._import_uri\\n importUri =\\n importUri === undefined || importUri == null || importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n if (canonicalUri !== null || importUri !== null) {\\n var ipfsImport = new IpfsImport()\\n ipfsImport\\n .import(canonicalUri, importUri, options.tiddler)\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n text = $tw.language.getRawString('LazyLoadingWarning')\\n }\\n }\\n // Initialise the classes if we don't have them already\\n if (!this.pragmaRuleClasses) {\\n WikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\\n 'wikirule',\\n 'pragma',\\n $tw.WikiRuleBase\\n )\\n this.setupRules(\\n WikiParser.prototype.pragmaRuleClasses,\\n '$:/config/WikiParserRules/Pragmas/'\\n )\\n }\\n if (!this.blockRuleClasses) {\\n WikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\\n 'wikirule',\\n 'block',\\n $tw.WikiRuleBase\\n )\\n this.setupRules(\\n WikiParser.prototype.blockRuleClasses,\\n '$:/config/WikiParserRules/Block/'\\n )\\n }\\n if (!this.inlineRuleClasses) {\\n WikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\\n 'wikirule',\\n 'inline',\\n $tw.WikiRuleBase\\n )\\n this.setupRules(\\n WikiParser.prototype.inlineRuleClasses,\\n '$:/config/WikiParserRules/Inline/'\\n )\\n }\\n // Save the parse text\\n this.type = type || 'text/vnd.tiddlywiki'\\n this.source = text || ''\\n this.sourceLength = this.source.length\\n // Flag for ignoring whitespace\\n this.configTrimWhiteSpace = false\\n // Set current parse position\\n this.pos = 0\\n // Instantiate the pragma parse rules\\n this.pragmaRules = this.instantiateRules(\\n this.pragmaRuleClasses,\\n 'pragma',\\n 0\\n )\\n // Instantiate the parser block and inline rules\\n this.blockRules = this.instantiateRules(this.blockRuleClasses, 'block', 0)\\n this.inlineRules = this.instantiateRules(\\n this.inlineRuleClasses,\\n 'inline',\\n 0\\n )\\n // Parse any pragmas\\n this.tree = []\\n var topBranch = this.parsePragmas()\\n // Parse the text into inline runs or blocks\\n if (options.parseAsInline) {\\n topBranch.push.apply(topBranch, this.parseInlineRun())\\n } else {\\n topBranch.push.apply(topBranch, this.parseBlocks())\\n }\\n // Return the parsed tree\\n }\\n\\n WikiParser.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n /*\\n */\\n WikiParser.prototype.setupRules = function (proto, configPrefix) {\\n var self = this\\n if (!$tw.safemode) {\\n $tw.utils.each(proto, function (object, name) {\\n if (\\n self.wiki.getTiddlerText(configPrefix + name, 'enable') !== 'enable'\\n ) {\\n delete proto[name]\\n }\\n })\\n }\\n }\\n\\n /*\\nInstantiate an array of parse rules\\n*/\\n WikiParser.prototype.instantiateRules = function (classes, type, startPos) {\\n var rulesInfo = []\\n var self = this\\n $tw.utils.each(classes, function (RuleClass) {\\n // Instantiate the rule\\n var rule = new RuleClass(self)\\n rule.is = {}\\n rule.is[type] = true\\n rule.init(self)\\n var matchIndex = rule.findNextMatch(startPos)\\n if (matchIndex !== undefined) {\\n rulesInfo.push({\\n rule: rule,\\n matchIndex: matchIndex\\n })\\n }\\n })\\n return rulesInfo\\n }\\n\\n /*\\nSkip any whitespace at the current position. Options are:\\n treatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\\n*/\\n WikiParser.prototype.skipWhitespace = function (options) {\\n options = options || {}\\n var whitespaceRegExp = options.treatNewlinesAsNonWhitespace\\n ? /([^\\\\S\\\\n]+)/gm\\n : /(\\\\s+)/gm\\n whitespaceRegExp.lastIndex = this.pos\\n var whitespaceMatch = whitespaceRegExp.exec(this.source)\\n if (whitespaceMatch && whitespaceMatch.index === this.pos) {\\n this.pos = whitespaceRegExp.lastIndex\\n }\\n }\\n\\n /*\\nGet the next match out of an array of parse rule instances\\n*/\\n WikiParser.prototype.findNextMatch = function (rules, startPos) {\\n // Find the best matching rule by finding the closest match position\\n var matchingRule\\n var matchingRulePos = this.sourceLength\\n // Step through each rule\\n for (var t = 0; t \u003C rules.length; t++) {\\n var ruleInfo = rules[t]\\n // Ask the rule to get the next match if we've moved past the current one\\n if (ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex \u003C startPos) {\\n ruleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos)\\n }\\n // Adopt this match if it's closer than the current best match\\n if (\\n ruleInfo.matchIndex !== undefined &&\\n ruleInfo.matchIndex \u003C= matchingRulePos\\n ) {\\n matchingRule = ruleInfo\\n matchingRulePos = ruleInfo.matchIndex\\n }\\n }\\n return matchingRule\\n }\\n\\n /*\\nParse any pragmas at the beginning of a block of parse text\\n*/\\n WikiParser.prototype.parsePragmas = function () {\\n var currentTreeBranch = this.tree\\n while (true) {\\n // Skip whitespace\\n this.skipWhitespace()\\n // Check for the end of the text\\n if (this.pos >= this.sourceLength) {\\n break\\n }\\n // Check if we've arrived at a pragma rule match\\n var nextMatch = this.findNextMatch(this.pragmaRules, this.pos)\\n // If not, just exit\\n if (!nextMatch || nextMatch.matchIndex !== this.pos) {\\n break\\n }\\n // Process the pragma rule\\n var subTree = nextMatch.rule.parse()\\n if (subTree.length > 0) {\\n // Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\\n currentTreeBranch.push.apply(currentTreeBranch, subTree)\\n subTree[0].children = []\\n currentTreeBranch = subTree[0].children\\n }\\n }\\n return currentTreeBranch\\n }\\n\\n /*\\nParse a block from the current position\\n terminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\\n*/\\n WikiParser.prototype.parseBlock = function (terminatorRegExpString) {\\n var terminatorRegExp = terminatorRegExpString\\n ? new RegExp('(' + terminatorRegExpString + '|\\\\\\\\r?\\\\\\\\n\\\\\\\\r?\\\\\\\\n)', 'gm')\\n : /(\\\\r?\\\\n\\\\r?\\\\n)/gm\\n this.skipWhitespace()\\n if (this.pos >= this.sourceLength) {\\n return []\\n }\\n // Look for a block rule that applies at the current position\\n var nextMatch = this.findNextMatch(this.blockRules, this.pos)\\n if (nextMatch && nextMatch.matchIndex === this.pos) {\\n return nextMatch.rule.parse()\\n }\\n // Treat it as a paragraph if we didn't find a block rule\\n return [\\n {\\n type: 'element',\\n tag: 'p',\\n children: this.parseInlineRun(terminatorRegExp)\\n }\\n ]\\n }\\n\\n /*\\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\\n terminatorRegExpString: terminating regular expression\\n*/\\n WikiParser.prototype.parseBlocks = function (terminatorRegExpString) {\\n if (terminatorRegExpString) {\\n return this.parseBlocksTerminated(terminatorRegExpString)\\n } else {\\n return this.parseBlocksUnterminated()\\n }\\n }\\n\\n /*\\nParse a block from the current position to the end of the text\\n*/\\n WikiParser.prototype.parseBlocksUnterminated = function () {\\n var tree = []\\n while (this.pos \u003C this.sourceLength) {\\n tree.push.apply(tree, this.parseBlock())\\n }\\n return tree\\n }\\n\\n /*\\nParse blocks of text until a terminating regexp is encountered\\n*/\\n WikiParser.prototype.parseBlocksTerminated = function (\\n terminatorRegExpString\\n ) {\\n var terminatorRegExp = new RegExp('(' + terminatorRegExpString + ')', 'gm')\\n var tree = []\\n // Skip any whitespace\\n this.skipWhitespace()\\n // Check if we've got the end marker\\n terminatorRegExp.lastIndex = this.pos\\n var match = terminatorRegExp.exec(this.source)\\n // Parse the text into blocks\\n while (\\n this.pos \u003C this.sourceLength &&\\n !(match && match.index === this.pos)\\n ) {\\n var blocks = this.parseBlock(terminatorRegExpString)\\n tree.push.apply(tree, blocks)\\n // Skip any whitespace\\n this.skipWhitespace()\\n // Check if we've got the end marker\\n terminatorRegExp.lastIndex = this.pos\\n match = terminatorRegExp.exec(this.source)\\n }\\n if (match && match.index === this.pos) {\\n this.pos = match.index + match[0].length\\n }\\n return tree\\n }\\n\\n /*\\nParse a run of text at the current position\\n terminatorRegExp: a regexp at which to stop the run\\n options: see below\\nOptions available:\\n eatTerminator: move the parse position past any encountered terminator (default false)\\n*/\\n WikiParser.prototype.parseInlineRun = function (terminatorRegExp, options) {\\n if (terminatorRegExp) {\\n return this.parseInlineRunTerminated(terminatorRegExp, options)\\n } else {\\n return this.parseInlineRunUnterminated(options)\\n }\\n }\\n\\n WikiParser.prototype.parseInlineRunUnterminated = function (options) {\\n var tree = []\\n // Find the next occurrence of an inline rule\\n var nextMatch = this.findNextMatch(this.inlineRules, this.pos)\\n // Loop around the matches until we've reached the end of the text\\n while (this.pos \u003C this.sourceLength && nextMatch) {\\n // Process the text preceding the run rule\\n if (nextMatch.matchIndex > this.pos) {\\n this.pushTextWidget(\\n tree,\\n this.source.substring(this.pos, nextMatch.matchIndex)\\n )\\n this.pos = nextMatch.matchIndex\\n }\\n // Process the run rule\\n tree.push.apply(tree, nextMatch.rule.parse())\\n // Look for the next run rule\\n nextMatch = this.findNextMatch(this.inlineRules, this.pos)\\n }\\n // Process the remaining text\\n if (this.pos \u003C this.sourceLength) {\\n this.pushTextWidget(tree, this.source.substr(this.pos))\\n }\\n this.pos = this.sourceLength\\n return tree\\n }\\n\\n WikiParser.prototype.parseInlineRunTerminated = function (\\n terminatorRegExp,\\n options\\n ) {\\n options = options || {}\\n var tree = []\\n // Find the next occurrence of the terminator\\n terminatorRegExp.lastIndex = this.pos\\n var terminatorMatch = terminatorRegExp.exec(this.source)\\n // Find the next occurrence of a inlinerule\\n var inlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos)\\n // Loop around until we've reached the end of the text\\n while (\\n this.pos \u003C this.sourceLength &&\\n (terminatorMatch || inlineRuleMatch)\\n ) {\\n // Return if we've found the terminator, and it precedes any inline rule match\\n if (terminatorMatch) {\\n if (\\n !inlineRuleMatch ||\\n inlineRuleMatch.matchIndex >= terminatorMatch.index\\n ) {\\n if (terminatorMatch.index > this.pos) {\\n this.pushTextWidget(\\n tree,\\n this.source.substring(this.pos, terminatorMatch.index)\\n )\\n }\\n this.pos = terminatorMatch.index\\n if (options.eatTerminator) {\\n this.pos += terminatorMatch[0].length\\n }\\n return tree\\n }\\n }\\n // Process any inline rule, along with the text preceding it\\n if (inlineRuleMatch) {\\n // Preceding text\\n if (inlineRuleMatch.matchIndex > this.pos) {\\n this.pushTextWidget(\\n tree,\\n this.source.substring(this.pos, inlineRuleMatch.matchIndex)\\n )\\n this.pos = inlineRuleMatch.matchIndex\\n }\\n // Process the inline rule\\n tree.push.apply(tree, inlineRuleMatch.rule.parse())\\n // Look for the next inline rule\\n inlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos)\\n // Look for the next terminator match\\n terminatorRegExp.lastIndex = this.pos\\n terminatorMatch = terminatorRegExp.exec(this.source)\\n }\\n }\\n // Process the remaining text\\n if (this.pos \u003C this.sourceLength) {\\n this.pushTextWidget(tree, this.source.substr(this.pos))\\n }\\n this.pos = this.sourceLength\\n return tree\\n }\\n\\n /*\\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\\n*/\\n WikiParser.prototype.pushTextWidget = function (array, text) {\\n if (this.configTrimWhiteSpace) {\\n text = $tw.utils.trim(text)\\n }\\n if (text) {\\n array.push({ type: 'text', text: text })\\n }\\n }\\n\\n /*\\nParse zero or more class specifiers `.classname`\\n*/\\n /*eslint no-useless-escape: \\\"off\\\"*/\\n WikiParser.prototype.parseClasses = function () {\\n var classRegExp = /\\\\.([^\\\\s\\\\.]+)/gm\\n var classNames = []\\n classRegExp.lastIndex = this.pos\\n var match = classRegExp.exec(this.source)\\n while (match && match.index === this.pos) {\\n this.pos = match.index + match[0].length\\n classNames.push(match[1])\\n match = classRegExp.exec(this.source)\\n }\\n return classNames\\n }\\n\\n /*\\nAmend the rules used by this instance of the parser\\n type: `only` keeps just the named rules, `except` keeps all but the named rules\\n names: array of rule names\\n*/\\n WikiParser.prototype.amendRules = function (type, names) {\\n names = names || []\\n // Define the filter function\\n var keepFilter\\n if (type === 'only') {\\n keepFilter = function (name) {\\n return names.indexOf(name) !== -1\\n }\\n } else if (type === 'except') {\\n keepFilter = function (name) {\\n return names.indexOf(name) === -1\\n }\\n } else {\\n return\\n }\\n // Define a function to process each of our rule arrays\\n var processRuleArray = function (ruleArray) {\\n for (var t = ruleArray.length - 1; t >= 0; t--) {\\n if (!keepFilter(ruleArray[t].rule.name)) {\\n ruleArray.splice(t, 1)\\n }\\n }\\n }\\n // Process each rule array\\n processRuleArray(this.pragmaRules)\\n processRuleArray(this.blockRules)\\n processRuleArray(this.inlineRules)\\n }\\n\\n exports['text/vnd.tiddlywiki'] = WikiParser\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"parser\"\n },\n \"$:/core/modules/saver-handler.js\": {\n \"title\": \"$:/core/modules/saver-handler.js\",\n \"text\": \"/*\\\\\\ntitle: $:/core/modules/saver-handler.js\\ntype: application/javascript\\nmodule-type: global\\n\\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /*\\nInstantiate the saver handler with the following options:\\nwiki: wiki to be synced\\ndirtyTracking: true if dirty tracking should be performed\\n*/\\n function SaverHandler (options) {\\n var self = this\\n this.wiki = options.wiki\\n this.dirtyTracking = options.dirtyTracking\\n this.preloadDirty = options.preloadDirty || []\\n this.pendingAutoSave = false\\n // Make a logger\\n this.logger = new $tw.utils.Logger('saver-handler')\\n // Initialise our savers\\n if ($tw.browser) {\\n this.initSavers()\\n }\\n // Only do dirty tracking if required\\n if ($tw.browser && this.dirtyTracking) {\\n // Compile the dirty tiddler filter\\n this.filterFn = this.wiki.compileFilter(\\n this.wiki.getTiddlerText(this.titleSyncFilter)\\n )\\n // Count of changes that have not yet been saved\\n var filteredChanges = self.filterFn.call(self.wiki, function (iterator) {\\n $tw.utils.each(self.preloadDirty, function (title) {\\n var tiddler = self.wiki.getTiddler(title)\\n iterator(tiddler, title)\\n })\\n })\\n this.numChanges = filteredChanges.length\\n // Listen out for changes to tiddlers\\n this.wiki.addEventListener('change', async function (changes) {\\n // Filter the changes so that we only count changes to tiddlers that we care about\\n var filteredChanges = self.filterFn.call(self.wiki, function (\\n iterator\\n ) {\\n $tw.utils.each(changes, function (change, title) {\\n var tiddler = self.wiki.getTiddler(title)\\n iterator(tiddler, title)\\n })\\n })\\n // Adjust the number of changes\\n self.numChanges += filteredChanges.length\\n self.updateDirtyStatus()\\n // Do any autosave if one is pending and there's no more change events\\n if (\\n self.pendingAutoSave &&\\n self.wiki.getSizeOfTiddlerEventQueue() === 0\\n ) {\\n // Check if we're dirty\\n if (self.numChanges > 0) {\\n await self.saveWiki({\\n method: 'autosave',\\n downloadType: 'text/plain'\\n })\\n }\\n self.pendingAutoSave = false\\n }\\n })\\n // Listen for the autosave event\\n $tw.rootWidget.addEventListener('tm-auto-save-wiki', async function (\\n event\\n ) {\\n // Do the autosave unless there are outstanding tiddler change events\\n if (self.wiki.getSizeOfTiddlerEventQueue() === 0) {\\n // Check if we're dirty\\n if (self.numChanges > 0) {\\n await self.saveWiki({\\n method: 'autosave',\\n downloadType: 'text/plain'\\n })\\n }\\n } else {\\n // Otherwise put ourselves in the \\\"pending autosave\\\" state and wait for the change event before we do the autosave\\n self.pendingAutoSave = true\\n }\\n })\\n // Set up our beforeunload handler\\n $tw.addUnloadTask(function (event) {\\n var confirmationMessage\\n if (self.isDirty()) {\\n confirmationMessage = $tw.language.getString('UnsavedChangesWarning')\\n event.returnValue = confirmationMessage // Gecko\\n }\\n return confirmationMessage\\n })\\n }\\n // Install the save action handlers\\n if ($tw.browser) {\\n $tw.rootWidget.addEventListener('tm-save-wiki', async function (event) {\\n await self.saveWiki({\\n template: event.param,\\n downloadType: 'text/plain',\\n variables: event.paramObject\\n })\\n })\\n $tw.rootWidget.addEventListener('tm-download-file', async function (\\n event\\n ) {\\n await self.saveWiki({\\n method: 'download',\\n template: event.param,\\n downloadType: 'text/plain',\\n variables: event.paramObject\\n })\\n })\\n }\\n }\\n\\n SaverHandler.prototype.titleSyncFilter = '$:/config/SaverFilter'\\n SaverHandler.prototype.titleAutoSave = '$:/config/AutoSave'\\n SaverHandler.prototype.titleSavedNotification =\\n '$:/language/Notifications/Save/Done'\\n\\n /*\\nSelect the appropriate saver modules and set them up\\n*/\\n SaverHandler.prototype.initSavers = function (moduleType) {\\n moduleType = moduleType || 'saver'\\n // Instantiate the available savers\\n this.savers = []\\n var self = this\\n $tw.modules.forEachModuleOfType(moduleType, function (title, module) {\\n if (module.canSave(self)) {\\n self.savers.push({ title: title, module: module.create(self.wiki) })\\n }\\n })\\n // Sort savers\\n this.sortSavers()\\n }\\n\\n /*\\n * Sort the savers into priority order\\n */\\n SaverHandler.prototype.sortSavers = function () {\\n this.savers.sort(function (a, b) {\\n if (a.module.info.priority \u003C b.module.info.priority) {\\n return -1\\n } else {\\n if (a.module.info.priority > b.module.info.priority) {\\n return +1\\n } else {\\n return 0\\n }\\n }\\n })\\n }\\n\\n /*\\nSave the wiki contents. Options are:\\nmethod: \\\"save\\\", \\\"autosave\\\" or \\\"download\\\"\\ntemplate: the tiddler containing the template to save\\ndownloadType: the content type for the saved file\\n*/\\n SaverHandler.prototype.saveWiki = async function (options) {\\n options = options || {}\\n var self = this\\n var method = options.method || 'save'\\n // Ignore autosave if disabled\\n if (\\n method === 'autosave' &&\\n this.wiki.getTiddlerText(this.titleAutoSave, 'yes') !== 'yes'\\n ) {\\n return false\\n }\\n var variables = options.variables || {}\\n var template = options.template || '$:/core/save/all'\\n var downloadType = options.downloadType || 'text/plain'\\n var text = this.wiki.renderTiddler(downloadType, template, options)\\n var callback = function (err) {\\n if (err) {\\n alert($tw.language.getString('Error/WhileSaving') + ':\\\\n\\\\n' + err)\\n } else {\\n // Clear the task queue if we're saving (rather than downloading)\\n if (method !== 'download') {\\n self.numChanges = 0\\n self.updateDirtyStatus()\\n }\\n $tw.notifier.display(self.titleSavedNotification)\\n if (options.callback) {\\n options.callback()\\n }\\n }\\n }\\n // Process preferred if any\\n var ignorePreferred = null\\n var preferredSaver = $tw.wiki.getTiddler('$:/config/PreferredSaver')\\n if (preferredSaver !== null && preferredSaver !== undefined) {\\n var title = preferredSaver.getFieldString('text')\\n title =\\n title === undefined || title == null || title.trim() === ''\\n ? null\\n : title.trim()\\n if (title !== null) {\\n ignorePreferred = title\\n // Process preferred saver\\n if (\\n await this.save(\\n this.getSaver(title).module,\\n method,\\n variables,\\n text,\\n callback\\n )\\n ) {\\n return true\\n }\\n }\\n }\\n\\n // Call the highest priority saver that supports this method\\n for (var t = this.savers.length - 1; t >= 0; t--) {\\n // Ignore failed preferred if any\\n if (this.savers[t].title === ignorePreferred) {\\n continue\\n }\\n // Process\\n if (\\n await this.save(\\n this.savers[t].module,\\n method,\\n variables,\\n text,\\n callback\\n )\\n ) {\\n return true\\n }\\n }\\n return false\\n }\\n\\n SaverHandler.prototype.getSaver = function (title) {\\n // Locate saver\\n var saver = null\\n for (var i = 0; i \u003C this.savers.length; i++) {\\n var current = this.savers[i]\\n if (current.title === title) {\\n saver = current\\n break\\n }\\n }\\n return saver\\n }\\n\\n SaverHandler.prototype.save = async function (\\n saver,\\n method,\\n variables,\\n text,\\n callback\\n ) {\\n if (saver.info.capabilities.indexOf(method) !== -1) {\\n var saved = await saver.save(text, method, callback, {\\n variables: { filename: variables.filename }\\n })\\n if (saved) {\\n this.logger.log(\\n 'Saved wiki with method',\\n method,\\n 'through saver',\\n saver.info.name\\n )\\n return true\\n }\\n }\\n return false\\n }\\n\\n /*\\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\\n*/\\n SaverHandler.prototype.isDirty = function () {\\n return this.numChanges > 0\\n }\\n\\n /*\\nUpdate the document body with the class \\\"tc-dirty\\\" if the wiki has unsaved/unsynced changes\\n*/\\n SaverHandler.prototype.updateDirtyStatus = function () {\\n if ($tw.browser) {\\n $tw.utils.toggleClass(document.body, 'tc-dirty', this.isDirty())\\n }\\n }\\n\\n exports.SaverHandler = SaverHandler\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"global\"\n },\n \"$:/plugins/ipfs/modules/widgets/image.js\": {\n \"title\": \"$:/plugins/ipfs/modules/widgets/image.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/widgets/image.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\\n\\n```\\n\u003C$image src=\\\"TiddlerTitle\\\" width=\\\"320\\\" height=\\\"400\\\" class=\\\"classnames\\\">\\n```\\n\\nThe image source can be the title of an existing tiddler or the URL of an external image.\\n\\nExternal images always generate an HTML `\u003Cimg>` tag.\\n\\nTiddlers that have a _canonical_uri field generate an HTML `\u003Cimg>` tag with the src attribute containing the URI.\\n\\nTiddlers that contain image data generate an HTML `\u003Cimg>` tag with the src attribute containing a base64 representation of the image.\\n\\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\\n\\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \\\"px\\\" suffix.\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n var Widget = require('$:/core/modules/widgets/widget.js').widget\\n\\n var name = 'ipfs-image'\\n\\n var ImageWidget = function (parseTreeNode, options) {\\n this.initialise(parseTreeNode, options)\\n }\\n\\n /*\\nInherit from the base widget class\\n*/\\n ImageWidget.prototype = new Widget()\\n\\n ImageWidget.prototype.getLogger = function () {\\n if (window.log) {\\n return window.log.getLogger(name)\\n }\\n return console\\n }\\n\\n /*\\nRender this widget into the DOM\\n*/\\n ImageWidget.prototype.render = function (parent, nextSibling) {\\n this.parentDomNode = parent\\n this.computeAttributes()\\n this.execute()\\n var self = this\\n // Create element\\n // Determine what type of image it is\\n var tiddler = this.wiki.getTiddler(this.imageSource)\\n // Create default element\\n var domNode = this.document.createElement('img')\\n if (!tiddler) {\\n // The source isn't the title of a tiddler, so we'll assume it's a URL\\n domNode.setAttribute(\\n 'src',\\n this.getVariable('tv-get-export-image-link', {\\n params: [{ name: 'src', value: this.imageSource }],\\n defaultValue: this.imageSource\\n })\\n )\\n } else {\\n // Check if it is an image tiddler\\n if (this.wiki.isImageTiddler(this.imageSource)) {\\n var type = tiddler.fields.type\\n var text = tiddler.fields.text\\n var canonicalUri = tiddler.fields._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n // If the tiddler has body text then it doesn't need to be lazily loaded\\n if (text) {\\n // Render the appropriate element for the image type\\n switch (type) {\\n case 'application/pdf':\\n domNode = this.document.createElement('embed')\\n domNode.setAttribute('src', 'data:application/pdf;base64,' + text)\\n break\\n case 'image/svg+xml':\\n domNode.setAttribute(\\n 'src',\\n 'data:image/svg+xml,' + encodeURIComponent(text)\\n )\\n break\\n default:\\n domNode.setAttribute('src', 'data:' + type + ';base64,' + text)\\n break\\n }\\n } else if (canonicalUri) {\\n $tw.ipfs\\n .resolveUrl(false, true, canonicalUri)\\n .then(data => {\\n var { normalizedUrl, resolvedUrl } = data\\n var url =\\n resolvedUrl !== null\\n ? resolvedUrl.toString()\\n : normalizedUrl !== null\\n ? normalizedUrl.toString()\\n : null\\n if (url !== null) {\\n switch (type) {\\n case 'application/pdf':\\n domNode = this.document.createElement('embed')\\n $tw.ipfs\\n .loadToBase64(url)\\n .then(loaded => {\\n if (\\n loaded !== undefined &&\\n loaded !== null &&\\n loaded.data !== undefined &&\\n loaded.data !== null\\n ) {\\n domNode.setAttribute(\\n 'src',\\n 'data:application/pdf;base64,' + loaded.data\\n )\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n break\\n case 'image/svg+xml':\\n $tw.ipfs\\n .loadToUtf8(url)\\n .then(loaded => {\\n if (\\n loaded !== undefined &&\\n loaded !== null &&\\n loaded.data !== undefined &&\\n loaded.data !== null\\n ) {\\n domNode.setAttribute(\\n 'src',\\n 'data:image/svg+xml,' +\\n encodeURIComponent(loaded.data)\\n )\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n break\\n default:\\n $tw.ipfs\\n .loadToBase64(url)\\n .then(loaded => {\\n if (\\n loaded !== undefined &&\\n loaded !== null &&\\n loaded.data !== undefined &&\\n loaded.data !== null\\n ) {\\n domNode.setAttribute(\\n 'src',\\n 'data:' + type + ';base64,' + loaded.data\\n )\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n break\\n }\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n } else {\\n // Just trigger loading of the tiddler\\n this.wiki.getTiddlerText(this.imageSource)\\n domNode.setAttribute('src', '')\\n }\\n }\\n }\\n // Assign the attributes\\n if (this.imageClass) {\\n domNode.setAttribute('class', this.imageClass)\\n }\\n if (this.imageWidth) {\\n domNode.setAttribute('width', this.imageWidth)\\n }\\n if (this.imageHeight) {\\n domNode.setAttribute('height', this.imageHeight)\\n }\\n if (this.imageTooltip) {\\n domNode.setAttribute('title', this.imageTooltip)\\n }\\n if (this.imageAlt) {\\n domNode.setAttribute('alt', this.imageAlt)\\n }\\n // Insert element\\n parent.insertBefore(domNode, nextSibling)\\n this.domNodes.push(domNode)\\n }\\n\\n /*\\nCompute the internal state of the widget\\n*/\\n ImageWidget.prototype.execute = function () {\\n // Get our parameters\\n this.imageSource = this.getAttribute('source')\\n this.imageWidth = this.getAttribute('width')\\n this.imageHeight = this.getAttribute('height')\\n this.imageClass = this.getAttribute('class')\\n this.imageTooltip = this.getAttribute('tooltip')\\n this.imageAlt = this.getAttribute('alt')\\n }\\n\\n /*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\n ImageWidget.prototype.refresh = function (changedTiddlers) {\\n var changedAttributes = this.computeAttributes()\\n if (\\n changedAttributes.source ||\\n changedAttributes.width ||\\n changedAttributes.height ||\\n changedAttributes.class ||\\n changedAttributes.tooltip ||\\n changedTiddlers[this.imageSource]\\n ) {\\n this.refreshSelf()\\n return true\\n } else {\\n return false\\n }\\n }\\n\\n exports.image = ImageWidget\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/ipfs/ipfs-wiki.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-wiki.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-wiki.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: wikimethod\\n\\nwikimethod\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /*\\n * Parse a block of text of a specified MIME type\\n * type: content type of text to be parsed\\n * text: text\\n * options: see below\\n * Options include:\\n * parseAsInline: if true, the text of the tiddler will be parsed as an inline run\\n * _canonical_uri: optional string of the canonical URI of this content\\n */\\n exports.parseText = function (type, text, options) {\\n text = text || ''\\n options = options || {}\\n // Select a parser\\n var Parser = $tw.Wiki.parsers[type]\\n if (!Parser && $tw.utils.getFileExtensionInfo(type)) {\\n Parser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type]\\n }\\n if (!Parser) {\\n Parser = $tw.Wiki.parsers[options.defaultType || 'text/vnd.tiddlywiki']\\n }\\n if (!Parser) {\\n return null\\n }\\n // Return the parser instance\\n return new Parser(type, text, {\\n parseAsInline: options.parseAsInline,\\n wiki: this,\\n _canonical_uri: options._canonical_uri,\\n tiddler: options.tiddler\\n })\\n }\\n\\n /*\\n * Parse a tiddler according to its MIME type\\n */\\n exports.parseTiddler = function (title, options) {\\n options = $tw.utils.extend({}, options)\\n var cacheType = options.parseAsInline ? 'inlineParseTree' : 'blockParseTree'\\n var tiddler = this.getTiddler(title)\\n var self = this\\n return tiddler\\n ? this.getCacheForTiddler(title, cacheType, function () {\\n if (tiddler.hasField('_canonical_uri')) {\\n options._canonical_uri = tiddler.fields._canonical_uri\\n }\\n options.tiddler = tiddler\\n return self.parseText(\\n tiddler.fields.type,\\n tiddler.fields.text,\\n options\\n )\\n })\\n : null\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"wikimethod\"\n },\n \"$:/core/ui/ControlPanel/Saving/General\": {\n \"title\": \"$:/core/ui/ControlPanel/Saving/General\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/tags/ControlPanel/Saving\",\n \"caption\": \"{{$:/language/ControlPanel/Saving/General/Caption}}\",\n \"list-before\": \"\",\n \"text\": \"\\\\define lingo-base() $:/language/ControlPanel/Settings/\\n\\n\\\\define ipfs-saver()\\n\u003C$text text=\u003C\u003Cipfs-info-saver \\\"$(currentTiddler)$\\\">>/>\\n\\\\end\\n\\n{{$:/language/ControlPanel/Saving/General/Hint}}\\n\\n!! \u003C$link to=\\\"$:/config/PreferredSaver\\\">\u003C\u003Clingo PreferredSaver/Caption>>\u003C/$link>\\n\\n\u003C$select tiddler=\\\"$:/config/PreferredSaver\\\">\\n\u003C$list filter=\\\"[savers[]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C\u003Cipfs-saver>>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n!! \u003C$link to=\\\"$:/config/AutoSave\\\">\u003C\u003Clingo AutoSave/Caption>>\u003C/$link>\\n\\n\u003C\u003Clingo AutoSave/Hint>>\\n\\n\u003C$radio tiddler=\\\"$:/config/AutoSave\\\" value=\\\"yes\\\"> \u003C\u003Clingo AutoSave/Enabled/Description>> \u003C/$radio>\\n\\n\u003C$radio tiddler=\\\"$:/config/AutoSave\\\" value=\\\"no\\\"> \u003C\u003Clingo AutoSave/Disabled/Description>> \u003C/$radio>\\n\"\n },\n \"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\": {\n \"title\": \"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\",\n \"modified\": \"20200528094915385\",\n \"text\": \"\\\\define config-title()\\n$(config-base)$$(currentTiddler)$\\n\\\\end\\n\\n\u003C$draggable tiddler=\u003C\u003CcurrentTiddler>>>\\n\u003C$checkbox tiddler=\u003C\u003Cconfig-title>> field=\\\"text\\\" checked=\\\"show\\\" unchecked=\\\"hide\\\" default=\\\"show\\\"/> \u003Cspan class=\\\"tc-icon-wrapper tc-icon-ipfs-wrapper\\\"> \u003C$transclude field=\\\"caption\\\"/> \u003Ci class=\\\"tc-muted\\\">-- \u003C$transclude field=\\\"description\\\"/>\u003C/i>\u003C/span>\\n\u003C/$draggable>\\n\"\n },\n \"$:/core/ui/EditTemplate/body\": {\n \"title\": \"$:/core/ui/EditTemplate/body\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/tags/EditTemplate\",\n \"text\": \"\\\\define lingo-base() $:/language/EditTemplate/Body/\\n\\\\define config-visibility-title()\\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\\n\\\\end\\n\\n\u003C$list filter=\\\"[all[current]has[_canonical_uri]]\\\">\\n \u003Cdiv class=\\\"tc-message-box\\\">\\n \u003C\u003Clingo External/Hint>>\\n \u003Cp>\u003C$ipfslink field=\\\"_canonical_uri\\\" tiddler=\u003C\u003CcurrentTiddler>>/>\u003C/p>\\n \u003C/div>\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[all[current]!has[_canonical_uri]]\\\">\\n \u003C$reveal state=\\\"$:/state/showeditpreview\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n \u003Cdiv class=\\\"tc-tiddler-preview\\\">\\n \u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/editor\\\" mode=\\\"inline\\\"/>\\n \u003Cdiv class=\\\"tc-tiddler-preview-preview\\\">\\n \u003C$transclude tiddler={{$:/state/editpreviewtype}} mode=\\\"inline\\\">\\n \u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/preview/output\\\" mode=\\\"inline\\\"/>\\n \u003C/$transclude>\\n \u003C/div>\\n \u003C/div>\\n \u003C/$reveal>\\n \u003C$reveal state=\\\"$:/state/showeditpreview\\\" type=\\\"nomatch\\\" text=\\\"yes\\\">\\n \u003C$transclude tiddler=\\\"$:/core/ui/EditTemplate/body/editor\\\" mode=\\\"inline\\\"/>\\n \u003C/$reveal>\\n\u003C/$list>\"\n },\n \"$:/core/ui/EditTemplate/fields\": {\n \"title\": \"$:/core/ui/EditTemplate/fields\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/tags/EditTemplate\",\n \"text\": \"\\\\define lingo-base() $:/language/EditTemplate/\\n\\\\define config-title()\\n$:/config/EditTemplateFields/Visibility/$(currentField)$\\n\\\\end\\n\\n\\\\define config-filter()\\n[[hide]] -[title{$(config-title)$}]\\n\\\\end\\n\\n\\\\define current-tiddler-new-field-selector()\\n[data-tiddler-title=\\\"$(currentTiddlerCSSescaped)$\\\"] .tc-edit-field-add-name input\\n\\\\end\\n\\n\\\\define new-field-actions()\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\" $name={{{ [\u003CnewFieldNameTiddler>get[text]] }}} $value={{{ [\u003CnewFieldValueTiddler>get[text]] }}}/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CnewFieldNameTiddler>>/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CnewFieldValueTiddler>>/>\\n\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\u003C\u003Ccurrent-tiddler-new-field-selector>>/>\\n\\\\end\\n\\n\\\\define new-field()\\n\u003C$vars name={{{ [\u003CnewFieldNameTiddler>get[text]] }}}>\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" default=\u003C\u003Cname>>>\\n\u003C$button tooltip=\u003C\u003Clingo Fields/Add/Button/Hint>>>\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\"\\n$name=\u003C\u003Cname>>\\n$value={{{ [\u003CnewFieldValueTiddler>get[text]] }}}/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CnewFieldNameTiddler>>/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CnewFieldValueTiddler>>/>\\n\u003C\u003Clingo Fields/Add/Button>>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" default=\u003C\u003Cname>>>\\n\u003C$button>\\n\u003C\u003Clingo Fields/Add/Button>>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$vars>\\n\\\\end\\n\\\\whitespace trim\\n\\n\u003Cdiv class=\\\"tc-edit-fields\\\">\\n\u003Ctable class=\\\"tc-edit-fields\\\">\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[current]fields[]] +[sort[title]]\\\" variable=\\\"currentField\\\" storyview=\\\"pop\\\">\\n\u003C$list filter=\u003C\u003Cconfig-filter>> variable=\\\"temp\\\">\\n\u003Ctr class=\\\"tc-edit-field\\\">\\n\u003Ctd class=\\\"tc-edit-field-name\\\">\\n\u003C$ipfslink value=\u003C\u003CcurrentField>> field=\u003C\u003CcurrentField>> tiddler=\u003C\u003CcurrentTiddler>>/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\\n\u003C$edit-text tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003CcurrentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-remove\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\\n\u003C$action-deletefield $field=\u003C\u003CcurrentField>>/>\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/tbody>\\n\u003C/table>\\n\u003C/div>\\n\\n\u003C$fieldmangler>\\n\u003Cdiv class=\\\"tc-edit-field-add\\\">\\n\u003Cem class=\\\"tc-edit\\\">\\n\u003C\u003Clingo Fields/Add/Prompt>>  \\n\u003C/em>\\n\u003Cspan class=\\\"tc-edit-field-add-name\\\">\\n\u003C$edit-text tiddler=\u003C\u003CnewFieldNameTiddler>> tag=\\\"input\\\" default=\\\"\\\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> class=\\\"tc-edit-texteditor tc-popup-handle\\\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}}/>\\n\u003C/span> \\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> class=\\\"tc-btn-invisible tc-btn-dropdown\\\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}\u003C/$button> \\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003C$set name=\\\"tv-show-missing-links\\\" value=\\\"yes\\\">\\n\u003C$linkcatcher to=\u003C\u003CnewFieldNameTiddler>>>\\n\u003Cdiv class=\\\"tc-dropdown-item\\\">\\n\u003C\u003Clingo Fields/Add/Dropdown/User>>\\n\u003C/div>\\n\u003C$set name=\\\"newFieldName\\\" value={{{ [\u003CnewFieldNameTiddler>get[text]] }}}>\\n\u003C$list filter=\\\"[!is[shadow]!is[system]fields[]search:title\u003CnewFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\\\" variable=\\\"currentField\\\">\\n\u003C$link to=\u003C\u003CcurrentField>>>\\n\u003C$text text=\u003C\u003CcurrentField>>/>\\n\u003C/$link>\\n\u003C/$list>\\n\u003Cdiv class=\\\"tc-dropdown-item\\\">\\n\u003C\u003Clingo Fields/Add/Dropdown/System>>\\n\u003C/div>\\n\u003C$list filter=\\\"[fields[]search:title\u003CnewFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\\\" variable=\\\"currentField\\\">\\n\u003C$link to=\u003C\u003CcurrentField>>>\\n\u003C$text text=\u003C\u003CcurrentField>>/>\\n\u003C/$link>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$linkcatcher>\\n\u003C/$set>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003Cspan class=\\\"tc-edit-field-add-value\\\">\\n\u003C$set name=\\\"currentTiddlerCSSescaped\\\" value={{{ [\u003CcurrentTiddler>escapecss[]] }}}>\\n\u003C$keyboard key=\\\"((add-field))\\\" actions=\u003C\u003Cnew-field-actions>>>\\n\u003C$edit-text tiddler=\u003C\u003CnewFieldValueTiddler>> tag=\\\"input\\\" default=\\\"\\\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\\\"tc-edit-texteditor\\\" tabindex={{$:/config/EditTabIndex}}/>\\n\u003C/$keyboard>\\n\u003C/$set>\\n\u003C/span> \\n\u003Cspan class=\\\"tc-edit-field-add-button\\\">\\n\u003C$macrocall $name=\\\"new-field\\\"/>\\n\u003C/span>\\n\u003C/div>\\n\u003C/$fieldmangler>\"\n },\n \"$:/core/ui/EditTemplate\": {\n \"title\": \"$:/core/ui/EditTemplate\",\n \"modified\": \"20200528094915385\",\n \"text\": \"\\\\define save-tiddler-actions()\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param={{{ [\u003CnewTagNameTiddler>get[text]] }}}/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CnewTagNameTiddler>>/>\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\" $name={{{ [\u003CnewFieldNameTiddler>get[text]] }}} $value={{{ [\u003CnewFieldValueTiddler>get[text]] }}}/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CnewFieldNameTiddler>>/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CnewFieldValueTiddler>>/>\\n\u003C$action-sendmessage $message=\\\"tm-save-tiddler\\\"/>\\n\\\\end\\n\u003Cdiv data-tiddler-title=\u003C\u003CcurrentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [\u003CcurrentTiddler>is[tiddler]then[tc-tiddler-exists]] [\u003CcurrentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [\u003CcurrentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [\u003CcurrentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [\u003CcurrentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\\n\u003C$fieldmangler>\\n\u003C$vars storyTiddler=\u003C\u003CcurrentTiddler>> newTagNameTiddler=\u003C\u003Cqualify \\\"$:/temp/NewTagName\\\">> newFieldNameTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldName\\\">> newFieldValueTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldValue\\\">>>\\n\u003C$keyboard key=\\\"((cancel-edit-tiddler))\\\" message=\\\"tm-cancel-tiddler\\\">\\n\u003C$keyboard key=\\\"((save-tiddler))\\\" actions=\u003C\u003Csave-tiddler-actions>>>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]list[$:/tags/EditTemplate]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" filter=\\\"[\u003Ctv-config-toolbar-class>] [\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\">\\n\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\u003C/$set>\\n\u003C/$list>\\n\u003C/$keyboard>\\n\u003C/$keyboard>\\n\u003C/$vars>\\n\u003C/$fieldmangler>\\n\u003C/div>\"\n },\n \"$:/core/ui/SideBar/Tools\": {\n \"title\": \"$:/core/ui/SideBar/Tools\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/SideBar\",\n \"caption\": \"{{$:/language/SideBar/Tools/Caption}}\",\n \"text\": \"\\\\define lingo-base() $:/language/ControlPanel/\\n\\\\define config-title()\\n$:/config/PageControlButtons/Visibility/$(listItem)$\\n\\\\end\\n\\n\u003C\u003Clingo Basics/Version/Prompt>> \u003Cb>\u003C\u003Cversion>>\u003C/b>, \u003C\u003Clingo Ipfs/Version/Prompt>> \u003Cb>\u003C\u003Cipfs-plugin-version>>\u003C/b>\\n\\n\u003C$set name=\\\"tv-config-toolbar-icons\\\" value=\\\"yes\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-text\\\" value=\\\"yes\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" value=\\\"\\\">\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n\\n\u003Cdiv style=\\\"position:relative;\\\" class={{{ [\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\\n\\n\u003C$checkbox tiddler=\u003C\u003Cconfig-title>> field=\\\"text\\\" checked=\\\"show\\\" unchecked=\\\"hide\\\" default=\\\"show\\\"/> \u003C$transclude tiddler=\u003C\u003ClistItem>>/> \u003Ci class=\\\"tc-muted\\\">\u003C$transclude tiddler=\u003C\u003ClistItem>> field=\\\"description\\\"/>\u003C/i>\\n\\n\u003C/div>\\n\\n\u003C/$list>\\n\\n\u003C/$set>\\n\\n\u003C/$set>\\n\\n\u003C/$set>\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"show\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"show\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipfs/pin\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipfs/pin\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipfs/unpin\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipfs/unpin\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipfs/console/mobile\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipfs/console/mobile\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"show\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"show\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ens/publish\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ens/publish\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipns/publish\": {\n \"title\": \"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/ipns/publish\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/export\": {\n \"title\": \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/export\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/export/content\": {\n \"title\": \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/export/content\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/export/attachment\": {\n \"title\": \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/export/attachment\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/refresh\": {\n \"title\": \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/refresh\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/tiddler/pin\": {\n \"title\": \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/tiddler/pin\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/tiddler/unpin\": {\n \"title\": \"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/ipfs/tiddler/unpin\",\n \"modified\": \"20200529094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"hide\"\n },\n \"$:/plugins/ipfs/ens-action.js\": {\n \"title\": \"$:/plugins/ipfs/ens-action.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ens-action.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nENS Action\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const fileProtocol = 'file:'\\n\\n const name = 'ens-action'\\n\\n var EnsAction = function () {\\n this.once = false\\n }\\n\\n EnsAction.prototype.getLogger = function () {\\n return window.log.getLogger(name)\\n }\\n\\n EnsAction.prototype.init = function () {\\n // Init once\\n if (this.once) {\\n return\\n }\\n const self = this\\n $tw.rootWidget.addEventListener('tm-ens-manager-open', function (event) {\\n return self.handleOpenEnsManager(event)\\n })\\n $tw.rootWidget.addEventListener('tm-ens-resolve-and-open', async function (\\n event\\n ) {\\n return await self.handleResolveEnsAndOpen(event)\\n })\\n $tw.rootWidget.addEventListener('tm-ens-publish', async function (event) {\\n return await self.handlePublishToEns(event)\\n })\\n // Init once\\n this.once = true\\n }\\n\\n EnsAction.prototype.handleOpenEnsManager = function (event) {\\n // Retrieve ENS domain\\n const ensDomain = $tw.utils.getIpfsEnsDomain()\\n // Check\\n if (ensDomain == null) {\\n window.open('https://app.ens.domains', '_blank', 'noopener,noreferrer')\\n } else {\\n window.open(\\n `https://app.ens.domains/name/${ensDomain}`,\\n '_blank',\\n 'noopener,noreferrer'\\n )\\n }\\n return true\\n }\\n\\n EnsAction.prototype.handleResolveEnsAndOpen = async function (event) {\\n const ensDomain = $tw.utils.getIpfsEnsDomain()\\n if (ensDomain == null) {\\n $tw.utils.alert(name, 'Undefined ENS domain...')\\n return false\\n }\\n try {\\n this.getLogger().info(`ENS domain: ${ensDomain}`)\\n const { resolvedUrl } = await $tw.ipfs.resolveEns(ensDomain)\\n if (resolvedUrl !== null) {\\n window.open(resolvedUrl.toString(), '_blank', 'noopener,noreferrer')\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n return true\\n }\\n\\n EnsAction.prototype.handlePublishToEns = async function (event) {\\n const self = this\\n const wiki = $tw.ipfs.getDocumentUrl()\\n if (wiki.protocol === fileProtocol) {\\n $tw.utils.alert(name, 'Undefined IPFS identifier...')\\n return false\\n }\\n if (wiki.pathname === '/') {\\n $tw.utils.alert(name, 'Unknown IPFS identifier...')\\n return false\\n }\\n var cid = null\\n var ensCid = null\\n var ensResolvedUrl = null\\n var ipnsKey = null\\n try {\\n var { cid, ipnsKey } = await $tw.ipfs.resolveUrl(true, false, wiki)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n const ensDomain = $tw.utils.getIpfsEnsDomain()\\n if (ensDomain == null) {\\n $tw.utils.alert(name, 'Undefined ENS domain...')\\n return false\\n }\\n if (cid == null && ipnsKey !== null) {\\n $tw.utils.alert(name, 'Nothing to publish to ENS...')\\n return false\\n }\\n try {\\n var {\\n cid: ensCid,\\n resolvedUrl: ensResolvedUrl\\n } = await $tw.ipfs.resolveUrl(false, true, ensDomain)\\n if (cid !== null && ensCid !== null && cid === ensCid) {\\n $tw.utils.alert(\\n name,\\n 'The current resolved ENS domain content is up to date...'\\n )\\n return false\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n if (cid !== null) {\\n $tw.utils.alert(name, `Publishing to ENS: ${ensDomain}`)\\n $tw.ipfs\\n .requestToUnpin(ensCid)\\n .then(data => {\\n if (data) {\\n $tw.ipfs.removeFromPinUnpin(ensCid, ensResolvedUrl)\\n }\\n $tw.ipfs\\n .setEns(ensDomain, cid)\\n .then(data => {\\n $tw.utils.alert(name, 'Successfully published to ENS...')\\n })\\n .catch(error => {\\n $tw.ipfs.requestToPin(ensCid)\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n } else if (ipnsKey !== null) {\\n $tw.utils.alert(name, `Publishing to ENS: ${ensDomain}`)\\n $tw.ipfs\\n .resolveUrl(true, false, wiki)\\n .then(data => {\\n const { cid: ipnsCid } = data\\n $tw.ipfs\\n .requestToUnpin(ensCid)\\n .then(data => {\\n if (data) {\\n $tw.ipfs.removeFromPinUnpin(ensCid, ensResolvedUrl)\\n }\\n $tw.ipfs\\n .setEns(ensDomain, ipnsCid)\\n .then(data => {\\n $tw.utils.alert(name, 'Successfully Published to ENS...')\\n })\\n .catch(error => {\\n $tw.ipfs.requestToPin(ensCid)\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n return true\\n }\\n\\n exports.EnsAction = EnsAction\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/ens-wrapper.js\": {\n \"title\": \"$:/plugins/ipfs/ens-wrapper.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ens-wrapper.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nENS Wrapper\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /**\\n * https://github.com/purposeindustries/window-or-global\\n * The MIT License (MIT) Copyright (c) Purpose Industries\\n * version: 1.0.1\\n */\\n const root =\\n (typeof self === 'object' && self.self === self && self) ||\\n (typeof global === 'object' && global.global === global && global) ||\\n this\\n\\n const name = 'ens-wrapper'\\n\\n var EnsWrapper = function (ipfsBundle) {\\n this.account = null\\n this.chainId = null\\n this.ethereum = null\\n this.provider = null\\n this.web3 = null\\n this.ipfsBundle = ipfsBundle\\n this.ensLibrary = ipfsBundle.ensLibrary\\n }\\n\\n EnsWrapper.prototype.getLogger = function () {\\n return root.log.getLogger(name)\\n }\\n\\n EnsWrapper.prototype.getChainId = function () {\\n return this.chainId\\n }\\n\\n EnsWrapper.prototype.getEthereumProvider = function () {\\n if (this.ethereum == null) {\\n const self = this\\n this.ethereum = this.ensLibrary.getProvider()\\n // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md\\n this.ethereum.on('accountsChanged', function accountChanged (accounts) {\\n self.accountChanged(accounts)\\n })\\n this.ethereum.on('chainChanged', function networkChanged (chainId) {\\n self.networkChanged(chainId)\\n })\\n this.ethereum.on('close', function closeProvider (code, reason) {\\n self.closeConnection(code, reason)\\n })\\n this.ethereum.on('networkChanged', function networkChanged (chainId) {\\n self.networkChanged(chainId)\\n })\\n }\\n return this.ethereum\\n }\\n\\n EnsWrapper.prototype.accountChanged = async function (accounts) {\\n if (\\n accounts === undefined ||\\n accounts == null ||\\n Array.isArray(accounts) === false ||\\n accounts.length === 0\\n ) {\\n this.web3 = null\\n this.chainId = null\\n this.account = null\\n this.getLogger().info('Closing Ethereum connection...')\\n } else if (this.account !== accounts[0]) {\\n try {\\n if (this.web3 == null && this.chainId == null) {\\n const { web3, chainId } = await this.getWeb3Provider()\\n this.web3 = web3\\n this.chainId = chainId\\n }\\n this.account = accounts[0]\\n const etherscan = this.getEtherscanRegistry()\\n this.getLogger().info(\\n `Current Ethereum account:\\\\n ${etherscan[this.chainId]}/address/${\\n this.account\\n }`\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n }\\n }\\n\\n EnsWrapper.prototype.closeConnection = function (code, reason) {\\n this.web3 = null\\n this.chainId = null\\n this.account = null\\n this.getLogger().info(\\n `Closing Ethereum Connection:\\\\n Reason: ${reason}\\\\n Code: ${code}`\\n )\\n }\\n\\n EnsWrapper.prototype.networkChanged = function (chainId) {\\n if (this.chainId !== chainId) {\\n const network = this.getNetwork()\\n try {\\n this.web3 = null\\n this.chainId = chainId\\n this.account = null\\n this.getLogger().info(`Current Ethereum network:\\\\n ${network[chainId]}`)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n }\\n }\\n\\n EnsWrapper.prototype.getEnabledWeb3Provider = async function () {\\n var web3 = null\\n var chainId = null\\n var account = null\\n const provider = this.getEthereumProvider()\\n const network = this.getNetwork()\\n const etherscan = this.getEtherscanRegistry()\\n var msg = 'Reuse Web3 provider:'\\n if (this.account == null) {\\n try {\\n var {\\n web3,\\n chainId,\\n account\\n } = await this.ensLibrary.getEnabledWeb3Provider(provider)\\n } catch (error) {\\n this.getLogger().error(error)\\n throw new Error('Unable to retrieve an enabled Ethereum provider...')\\n }\\n this.web3 = web3\\n this.chainId = chainId\\n this.account = account\\n msg = 'New Web3 provider:'\\n }\\n // Log\\n this.getLogger().info(\\n `${msg}\\\\n network: ${network[this.chainId]}\\\\n account: ${\\n etherscan[this.chainId]\\n }/address/${this.account}`\\n )\\n return {\\n web3: this.web3,\\n chainId: this.chainId,\\n account: this.account\\n }\\n }\\n\\n EnsWrapper.prototype.getWeb3Provider = async function () {\\n var web3 = null\\n var chainId = null\\n const provider = this.getEthereumProvider()\\n const network = this.getNetwork()\\n var info = 'Reuse Web3 provider:'\\n if (this.web3 == null) {\\n try {\\n var { web3, chainId } = await this.ensLibrary.getWeb3Provider(provider)\\n } catch (error) {\\n this.getLogger().error(error)\\n throw new Error('Unable to retrieve an Ethereum provider...')\\n }\\n this.web3 = web3\\n this.chainId = chainId\\n info = 'New Web3 provider:'\\n }\\n // Log\\n this.getLogger().info(`${info}\\\\n network: ${network[this.chainId]}`)\\n return {\\n web3: this.web3,\\n chainId: this.chainId\\n }\\n }\\n\\n EnsWrapper.prototype.getContentHash = async function (domain, web3) {\\n try {\\n var { content, protocol } = await this.ensLibrary.getContentHash(\\n domain,\\n web3\\n )\\n if (content !== null && protocol !== null) {\\n // Convert CidV0 to CidV1\\n content = this.ipfsBundle.cidV0ToCidV1(content)\\n // Success\\n return {\\n content: content,\\n protocol: protocol\\n }\\n }\\n $tw.utils.alert(name, 'Unassigned ENS domain content...')\\n return {\\n content: null,\\n protocol: null\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n throw new Error('Unable to fetch ENS domain content...')\\n }\\n }\\n\\n EnsWrapper.prototype.setContentHash = async function (\\n domain,\\n cid,\\n web3,\\n account\\n ) {\\n try {\\n const isOwner = await this.ensLibrary.isOwner(domain, web3, account)\\n if (isOwner === false) {\\n const error = new Error(\\n 'Unauthorized Owner. Unable to set ENS domain content...'\\n )\\n error.name = 'OwnerError'\\n throw error\\n }\\n const cidV0 = this.ipfsBundle.cidV1ToCidV0(cid)\\n await this.ensLibrary.setContentHash(domain, cidV0, web3, account)\\n return {\\n cidV0: cidV0\\n }\\n } catch (error) {\\n if (error.name === 'OwnerError') {\\n throw error\\n }\\n this.getLogger().error(error)\\n throw new Error('Unable to set ENS domain content...')\\n }\\n }\\n\\n EnsWrapper.prototype.getEtherscanRegistry = function () {\\n return this.ensLibrary.getEtherscanRegistry()\\n }\\n\\n EnsWrapper.prototype.getNetwork = function () {\\n return this.ensLibrary.getNetwork()\\n }\\n\\n EnsWrapper.prototype.getENSRegistry = function () {\\n return this.ensLibrary.getENSRegistry()\\n }\\n\\n exports.EnsWrapper = EnsWrapper\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/loglevel/loglevel.js\": {\n \"text\": \"/*\\n* loglevel - https://github.com/pimterry/loglevel\\n*\\n* Copyright (c) 2013 Tim Perry\\n* Licensed under the MIT license.\\n*/\\n(function (root, definition) {\\n \\\"use strict\\\";\\n if (typeof define === 'function' && define.amd) {\\n define(definition);\\n } else if (typeof module === 'object' && module.exports) {\\n module.exports = definition();\\n } else {\\n root.log = definition();\\n }\\n}(this, function () {\\n \\\"use strict\\\";\\n\\n // Slightly dubious tricks to cut down minimized file size\\n var noop = function() {};\\n var undefinedType = \\\"undefined\\\";\\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\\n /Trident\\\\/|MSIE /.test(window.navigator.userAgent)\\n );\\n\\n var logMethods = [\\n \\\"trace\\\",\\n \\\"debug\\\",\\n \\\"info\\\",\\n \\\"warn\\\",\\n \\\"error\\\"\\n ];\\n\\n // Cross-browser bind equivalent that works at least back to IE6\\n function bindMethod(obj, methodName) {\\n var method = obj[methodName];\\n if (typeof method.bind === 'function') {\\n return method.bind(obj);\\n } else {\\n try {\\n return Function.prototype.bind.call(method, obj);\\n } catch (e) {\\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\\n return function() {\\n return Function.prototype.apply.apply(method, [obj, arguments]);\\n };\\n }\\n }\\n }\\n\\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\\n function traceForIE() {\\n if (console.log) {\\n if (console.log.apply) {\\n console.log.apply(console, arguments);\\n } else {\\n // In old IE, native console methods themselves don't have apply().\\n Function.prototype.apply.apply(console.log, [console, arguments]);\\n }\\n }\\n if (console.trace) console.trace();\\n }\\n\\n // Build the best logging method possible for this env\\n // Wherever possible we want to bind, not wrap, to preserve stack traces\\n function realMethod(methodName) {\\n if (methodName === 'debug') {\\n methodName = 'log';\\n }\\n\\n if (typeof console === undefinedType) {\\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\\n } else if (methodName === 'trace' && isIE) {\\n return traceForIE;\\n } else if (console[methodName] !== undefined) {\\n return bindMethod(console, methodName);\\n } else if (console.log !== undefined) {\\n return bindMethod(console, 'log');\\n } else {\\n return noop;\\n }\\n }\\n\\n // These private functions always need `this` to be set properly\\n\\n function replaceLoggingMethods(level, loggerName) {\\n /*jshint validthis:true */\\n for (var i = 0; i \u003C logMethods.length; i++) {\\n var methodName = logMethods[i];\\n this[methodName] = (i \u003C level) ?\\n noop :\\n this.methodFactory(methodName, level, loggerName);\\n }\\n\\n // Define log.log as an alias for log.debug\\n this.log = this.debug;\\n }\\n\\n // In old IE versions, the console isn't present until you first open it.\\n // We build realMethod() replacements here that regenerate logging methods\\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\\n return function () {\\n if (typeof console !== undefinedType) {\\n replaceLoggingMethods.call(this, level, loggerName);\\n this[methodName].apply(this, arguments);\\n }\\n };\\n }\\n\\n // By default, we use closely bound real methods wherever possible, and\\n // otherwise we wait for a console to appear, and then try again.\\n function defaultMethodFactory(methodName, level, loggerName) {\\n /*jshint validthis:true */\\n return realMethod(methodName) ||\\n enableLoggingWhenConsoleArrives.apply(this, arguments);\\n }\\n\\n function Logger(name, defaultLevel, factory) {\\n var self = this;\\n var currentLevel;\\n var storageKey = \\\"loglevel\\\";\\n if (name) {\\n storageKey += \\\":\\\" + name;\\n }\\n\\n function persistLevelIfPossible(levelNum) {\\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\\n\\n if (typeof window === undefinedType) return;\\n\\n // Use localStorage if available\\n try {\\n window.localStorage[storageKey] = levelName;\\n return;\\n } catch (ignore) {}\\n\\n // Use session cookie as fallback\\n try {\\n window.document.cookie =\\n encodeURIComponent(storageKey) + \\\"=\\\" + levelName + \\\";\\\";\\n } catch (ignore) {}\\n }\\n\\n function getPersistedLevel() {\\n var storedLevel;\\n\\n if (typeof window === undefinedType) return;\\n\\n try {\\n storedLevel = window.localStorage[storageKey];\\n } catch (ignore) {}\\n\\n // Fallback to cookies if local storage gives us nothing\\n if (typeof storedLevel === undefinedType) {\\n try {\\n var cookie = window.document.cookie;\\n var location = cookie.indexOf(\\n encodeURIComponent(storageKey) + \\\"=\\\");\\n if (location !== -1) {\\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\\n }\\n } catch (ignore) {}\\n }\\n\\n // If the stored level is not valid, treat it as if nothing was stored.\\n if (self.levels[storedLevel] === undefined) {\\n storedLevel = undefined;\\n }\\n\\n return storedLevel;\\n }\\n\\n /*\\n *\\n * Public logger API - see https://github.com/pimterry/loglevel for details\\n *\\n */\\n\\n self.name = name;\\n\\n self.levels = { \\\"TRACE\\\": 0, \\\"DEBUG\\\": 1, \\\"INFO\\\": 2, \\\"WARN\\\": 3,\\n \\\"ERROR\\\": 4, \\\"SILENT\\\": 5};\\n\\n self.methodFactory = factory || defaultMethodFactory;\\n\\n self.getLevel = function () {\\n return currentLevel;\\n };\\n\\n self.setLevel = function (level, persist) {\\n if (typeof level === \\\"string\\\" && self.levels[level.toUpperCase()] !== undefined) {\\n level = self.levels[level.toUpperCase()];\\n }\\n if (typeof level === \\\"number\\\" && level >= 0 && level \u003C= self.levels.SILENT) {\\n currentLevel = level;\\n if (persist !== false) { // defaults to true\\n persistLevelIfPossible(level);\\n }\\n replaceLoggingMethods.call(self, level, name);\\n if (typeof console === undefinedType && level \u003C self.levels.SILENT) {\\n return \\\"No console available for logging\\\";\\n }\\n } else {\\n throw \\\"log.setLevel() called with invalid level: \\\" + level;\\n }\\n };\\n\\n self.setDefaultLevel = function (level) {\\n if (!getPersistedLevel()) {\\n self.setLevel(level, false);\\n }\\n };\\n\\n self.enableAll = function(persist) {\\n self.setLevel(self.levels.TRACE, persist);\\n };\\n\\n self.disableAll = function(persist) {\\n self.setLevel(self.levels.SILENT, persist);\\n };\\n\\n // Initialize with the right level\\n var initialLevel = getPersistedLevel();\\n if (initialLevel == null) {\\n initialLevel = defaultLevel == null ? \\\"WARN\\\" : defaultLevel;\\n }\\n self.setLevel(initialLevel, false);\\n }\\n\\n /*\\n *\\n * Top-level API\\n *\\n */\\n\\n var defaultLogger = new Logger();\\n\\n var _loggersByName = {};\\n defaultLogger.getLogger = function getLogger(name) {\\n if (typeof name !== \\\"string\\\" || name === \\\"\\\") {\\n throw new TypeError(\\\"You must supply a name when creating a logger.\\\");\\n }\\n\\n var logger = _loggersByName[name];\\n if (!logger) {\\n logger = _loggersByName[name] = new Logger(\\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\\n }\\n return logger;\\n };\\n\\n // Grab the current global log variable in case of overwrite\\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\\n defaultLogger.noConflict = function() {\\n if (typeof window !== undefinedType &&\\n window.log === defaultLogger) {\\n window.log = _log;\\n }\\n\\n return defaultLogger;\\n };\\n\\n defaultLogger.getLoggers = function getLoggers() {\\n return _loggersByName;\\n };\\n\\n return defaultLogger;\\n}));\\n\",\n \"type\": \"application/javascript\",\n \"title\": \"$:/plugins/ipfs/loglevel/loglevel.js\",\n \"global-module\": \"true\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/loglevel/license\": {\n \"text\": \"Copyright (c) 2013 Tim Perry\\r\\n\\r\\nPermission is hereby granted, free of charge, to any person\\r\\nobtaining a copy of this software and associated documentation\\r\\nfiles (the \\\"Software\\\"), to deal in the Software without\\r\\nrestriction, including without limitation the rights to use,\\r\\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\\r\\ncopies of the Software, and to permit persons to whom the\\r\\nSoftware is furnished to do so, subject to the following\\r\\nconditions:\\r\\n\\r\\nThe above copyright notice and this permission notice shall be\\r\\nincluded in all copies or substantial portions of the Software.\\r\\n\\r\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND,\\r\\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\\r\\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\\r\\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\\r\\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\\r\\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\\r\\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\\r\\nOTHER DEALINGS IN THE SOFTWARE.\\r\\n\",\n \"type\": \"text/plain\",\n \"title\": \"$:/plugins/ipfs/loglevel/license\"\n },\n \"$:/plugins/ipfs/ipfs-action.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-action.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-action.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nIPFS Action\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const fileProtocol = 'file:'\\n const ipfsKeyword = 'ipfs'\\n const ipnsKeyword = 'ipns'\\n\\n const name = 'ipfs-action'\\n\\n var IpfsAction = function () {\\n this.once = false\\n this.console = false\\n this.ipnsName = $tw.utils.getIpfsIpnsName()\\n this.ipnsKey = $tw.utils.getIpfsIpnsKey()\\n }\\n\\n IpfsAction.prototype.getLogger = function () {\\n return window.log.getLogger(name)\\n }\\n\\n IpfsAction.prototype.init = function () {\\n // Init once\\n if (this.once) {\\n return\\n }\\n const self = this\\n // Widget\\n $tw.rootWidget.addEventListener('tm-ipfs-export', async function (event) {\\n return await self.handleExportToIpfs(event, false)\\n })\\n $tw.rootWidget.addEventListener('tm-ipfs-export-content', async function (\\n event\\n ) {\\n return await self.handleExportToIpfs(event, true)\\n })\\n $tw.rootWidget.addEventListener('tm-ipns-fetch', async function (event) {\\n return await self.handleFetchIpnsKey(event)\\n })\\n $tw.rootWidget.addEventListener('tm-ipns-generate', async function (event) {\\n return await self.handleGenerateIpnsKey(event)\\n })\\n $tw.rootWidget.addEventListener('tm-console-mobile', async function (\\n event\\n ) {\\n return await self.handleMobileConsole(event)\\n })\\n $tw.rootWidget.addEventListener(\\n 'tm-ipfs-export-attachment',\\n async function (event) {\\n return await self.handleExportAttachmentToIpfs(event)\\n }\\n )\\n $tw.rootWidget.addEventListener('tm-ipns-publish', async function (event) {\\n return await self.handlePublishToIpns(event)\\n })\\n $tw.rootWidget.addEventListener('tm-ipns-remove', async function (event) {\\n return await self.handleRemoveIpnsKey(event)\\n })\\n $tw.rootWidget.addEventListener('tm-ipns-rename', async function (event) {\\n return await self.handleRenameIpnsName(event)\\n })\\n $tw.rootWidget.addEventListener('tm-ipns-resolve-and-open', async function (\\n event\\n ) {\\n return await self.handleResolveIpnsKeyAndOpen(event)\\n })\\n // Init once\\n this.once = true\\n }\\n\\n IpfsAction.prototype.handleExportToIpfs = async function (event, child) {\\n var cid = null\\n var ipnsKey = null\\n var ipnsName = null\\n var normalizedUrl = null\\n var added = null\\n var fields = []\\n const self = this\\n const title = event.tiddlerTitle\\n var tiddler = $tw.wiki.getTiddler(title)\\n var exportUri = tiddler.getFieldString('_export_uri')\\n try {\\n var { cid, ipnsKey, ipnsName, normalizedUrl } = await $tw.ipfs.resolveUrl(\\n true,\\n true,\\n exportUri\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n // Retrieve content\\n const content = await this.exportTiddler(child, exportUri, tiddler)\\n // Check\\n if (content == null) {\\n return false\\n }\\n this.getLogger().info(`Uploading Tiddler: ${content.length} bytes`)\\n try {\\n var { added } = await $tw.ipfs.addToIpfs(content)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n // Prepare New value\\n fields.push({ key: '_export_uri', value: `/${ipfsKeyword}/${added}` })\\n var tiddler = $tw.wiki.getTiddler(title)\\n var updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n addTags: ['$:/isExported', '$:/isIpfs'],\\n fields: fields\\n })\\n $tw.wiki.addTiddler(updatedTiddler)\\n if (ipnsKey !== null) {\\n $tw.utils.alert(name, `Publishing IPNS name: ${ipnsName}`)\\n $tw.ipfs\\n .pinToIpfs(added)\\n .then(data => {\\n $tw.ipfs\\n .publishIpnsName(added, ipnsKey, ipnsName)\\n .then(data => {\\n fields.push({ key: '_export_uri', value: exportUri })\\n tiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n addTags: ['$:/isExported', '$:/isIpfs'],\\n fields: fields\\n })\\n $tw.wiki.addTiddler(tiddler)\\n $tw.utils.alert(\\n name,\\n `Successfully Published IPNS name: ${ipnsName}`\\n )\\n if ($tw.utils.getIpfsUnpin()) {\\n $tw.ipfs\\n .unpinFromIpfs(cid)\\n .then(data => {\\n if (data !== undefined && data !== null) {\\n $tw.ipfs.removeFromPinUnpin(cid, normalizedUrl)\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n $tw.ipfs.requestToUnpin(added)\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n } else if (\\n normalizedUrl !== null &&\\n normalizedUrl.hostname.endsWith('.eth')\\n ) {\\n $tw.utils.alert(name, `Publishing to ENS: ${normalizedUrl.hostname}`)\\n $tw.ipfs\\n .pinToIpfs(added)\\n .then(data => {\\n $tw.ipfs\\n .setEns(normalizedUrl.hostname, added)\\n .then(data => {\\n fields.push({ key: '_export_uri', value: exportUri })\\n tiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n addTags: ['$:/isExported', '$:/isIpfs'],\\n fields: fields\\n })\\n $tw.wiki.addTiddler(tiddler)\\n $tw.utils.alert(name, 'Successfully Published to ENS...')\\n if ($tw.utils.getIpfsUnpin()) {\\n $tw.ipfs\\n .unpinFromIpfs(cid)\\n .then(data => {\\n if (data !== undefined && data !== null) {\\n $tw.ipfs.removeFromPinUnpin(cid, normalizedUrl)\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n $tw.ipfs.requestToUnpin(added)\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n return true\\n }\\n\\n IpfsAction.prototype.handleExportAttachmentToIpfs = async function (event) {\\n const title = event.tiddlerTitle\\n var tiddler = $tw.wiki.getTiddler(title)\\n const { type, info } = $tw.utils.getContentType(title, tiddler.fields.type)\\n var added = null\\n if (info.encoding !== 'base64' && type !== 'image/svg+xml') {\\n $tw.utils.alert(name, 'This Tiddler do not contain any Attachment...')\\n return false\\n }\\n // Do not process if _canonical_uri is set and the text field is empty\\n const canonicalUri = tiddler.getFieldString('_canonical_uri')\\n if (\\n canonicalUri !== undefined &&\\n canonicalUri !== null &&\\n canonicalUri.trim() !== ''\\n ) {\\n $tw.utils.alert(name, 'Attachment is already published...')\\n return false\\n }\\n try {\\n const content = this.getAttachmentContent(tiddler)\\n if (content == null) {\\n return false\\n }\\n this.getLogger().info(`Uploading attachment: ${content.length} bytes`)\\n var { added } = await $tw.ipfs.addToIpfs(content)\\n $tw.ipfs.requestToPin(added)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n var addTags = []\\n var removeTags = []\\n if ($tw.crypto.hasPassword()) {\\n addTags = ['$:/isAttachment', '$:/isIpfs']\\n removeTags = ['$:/isEmbedded']\\n } else {\\n addTags = ['$:/isAttachment', '$:/isIpfs']\\n removeTags = ['$:/isEmbedded']\\n }\\n // Update\\n tiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n addTags: addTags,\\n removeTags: removeTags,\\n fields: [\\n { key: 'text', value: '' },\\n { key: '_canonical_uri', value: `/${ipfsKeyword}/${added}` }\\n ]\\n })\\n $tw.wiki.addTiddler(tiddler)\\n return true\\n }\\n\\n IpfsAction.prototype.getAttachmentContent = function (tiddler) {\\n const { type, info } = $tw.utils.getContentType(\\n tiddler.fields.title,\\n tiddler.fields.type\\n )\\n if (info.encoding !== 'base64' && type !== 'image/svg+xml') {\\n $tw.utils.alert(name, 'Unsupported Tiddler Content-Type...')\\n return null\\n }\\n var text = tiddler.getFieldString('text')\\n if (text === undefined || text == null || text === '') {\\n $tw.utils.alert(name, 'Empty attachment content...')\\n return null\\n }\\n if ($tw.crypto.hasPassword()) {\\n try {\\n // https://github.com/xmaysonnave/tiddlywiki-ipfs/issues/9\\n if (info.encoding === 'base64') {\\n text = atob(text)\\n }\\n text = $tw.crypto.encrypt(text, $tw.crypto.currentPassword)\\n text = $tw.ipfs.StringToUint8Array(text)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(\\n name,\\n 'Failed to process encrypted Attachment content...'\\n )\\n return null\\n }\\n } else {\\n try {\\n if (info.encoding === 'base64') {\\n text = $tw.ipfs.Base64ToUint8Array(text)\\n } else {\\n text = $tw.ipfs.StringToUint8Array(text)\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, 'Failed to process Attachment content...')\\n return null\\n }\\n }\\n return text\\n }\\n\\n IpfsAction.prototype.handleRenameIpnsName = async function (event) {\\n var ipnsKey = null\\n var ipnsName = $tw.utils.getIpfsIpnsName()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsName == null) {\\n $tw.utils.alert(name, 'Undefined IPNS name....')\\n return false\\n }\\n if (this.ipnsName == null || this.ipnsName === ipnsName) {\\n $tw.utils.alert(name, 'Nothing to rename....')\\n return false\\n }\\n try {\\n var { ipnsKey } = await $tw.ipfs.renameIpnsName(this.ipnsName, ipnsName)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/key')\\n if (tiddler !== undefined && this.ipnsKey !== ipnsKey) {\\n tiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n fields: [{ key: 'text', value: ipnsKey }]\\n })\\n $tw.wiki.addTiddler(tiddler)\\n }\\n this.ipnsKey = ipnsKey\\n this.ipnsName = ipnsName\\n return true\\n }\\n\\n IpfsAction.prototype.handleGenerateIpnsKey = async function (event) {\\n var ipnsKey = null\\n var ipnsName = $tw.utils.getIpfsIpnsName()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsName == null) {\\n $tw.utils.alert(name, 'Undefined IPNS name....')\\n return false\\n }\\n try {\\n var ipnsKey = await $tw.ipfs.generateIpnsKey(ipnsName)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/key')\\n if (tiddler !== undefined && this.ipnsKey !== ipnsKey) {\\n tiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n fields: [{ key: 'text', value: ipnsKey }]\\n })\\n $tw.wiki.addTiddler(tiddler)\\n }\\n this.ipnsKey = ipnsKey\\n this.ipnsName = ipnsName\\n return true\\n }\\n\\n IpfsAction.prototype.handleRemoveIpnsKey = async function (event) {\\n var ipnsKey = null\\n var normalizedUrl = null\\n const self = this\\n var ipnsName = $tw.utils.getIpfsIpnsName()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsName == null) {\\n $tw.utils.alert(name, 'Undefined IPNS name....')\\n return false\\n }\\n try {\\n var { ipnsKey, normalizedUrl } = await $tw.ipfs.getIpnsIdentifiers(\\n ipnsName\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n // Async\\n $tw.ipfs\\n .requestToUnpin(null, ipnsKey, normalizedUrl)\\n .then(data => {\\n $tw.ipfs\\n .removeIpnsKey(ipnsName)\\n .then(data => {\\n $tw.utils.alert(name, 'Succesfully removed Ipns key....')\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/name')\\n if (tiddler !== undefined) {\\n const updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n fields: [{ key: 'text', value: '' }]\\n })\\n $tw.wiki.addTiddler(updatedTiddler)\\n }\\n tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/key')\\n if (tiddler !== undefined) {\\n const updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n fields: [{ key: 'text', value: '' }]\\n })\\n $tw.wiki.addTiddler(updatedTiddler)\\n }\\n this.ipnsName = null\\n this.ipnsKey = null\\n return true\\n }\\n\\n IpfsAction.prototype.handleFetchIpnsKey = async function (event) {\\n var ipnsKey = null\\n var ipnsName = $tw.utils.getIpfsIpnsName()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsName == null) {\\n $tw.utils.alert(name, 'Undefined IPNS name....')\\n return false\\n }\\n try {\\n var { ipnsKey } = await $tw.ipfs.getIpnsIdentifiers(ipnsName)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/key')\\n if (tiddler !== undefined && this.ipnsKey !== ipnsKey) {\\n tiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n fields: [{ key: 'text', value: ipnsKey }]\\n })\\n $tw.wiki.addTiddler(tiddler)\\n this.ipnsKey = ipnsKey\\n }\\n this.ipnsName = ipnsName\\n return true\\n }\\n\\n IpfsAction.prototype.handleResolveIpnsKeyAndOpen = async function (event) {\\n var ipnsKey = null\\n var resolvedUrl = null\\n var ipnsName = $tw.utils.getIpfsIpnsName()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsName == null) {\\n $tw.utils.alert(name, 'Undefined IPNS name....')\\n return false\\n }\\n try {\\n var { ipnsKey, resolvedUrl } = await $tw.ipfs.resolveUrl(\\n true,\\n false,\\n `/${ipnsKeyword}/${ipnsName}`\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/key')\\n if (tiddler !== undefined && this.ipnsKey !== ipnsKey) {\\n tiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n fields: [{ key: 'text', value: ipnsKey }]\\n })\\n this.ipnsKey = ipnsKey\\n $tw.wiki.addTiddler(tiddler)\\n }\\n this.ipnsName = ipnsName\\n window.open(resolvedUrl.toString(), '_blank', 'noopener,noreferrer')\\n return true\\n }\\n\\n IpfsAction.prototype.handleMobileConsole = async function (tiddler) {\\n // Load mobile console if applicable\\n if (typeof window.eruda === 'undefined') {\\n try {\\n // Load eruda\\n await $tw.ipfs.ipfsBundle.ipfsLoader.loadErudaLibrary()\\n } catch (error) {\\n this.getLogger().error(error)\\n throw new Error(error.message)\\n }\\n const erudaContainer = window.document.createElement('div')\\n window.document.body.appendChild(erudaContainer)\\n window.eruda.init({\\n container: erudaContainer,\\n tool: ['console'],\\n useShadowDom: true,\\n autoScale: true\\n })\\n // Inherit font\\n erudaContainer.style.fontFamily = 'inherit'\\n // Preserve user preference if any, default is 80\\n if (window.eruda.get().config.get('displaySize') === 80) {\\n window.eruda.get().config.set('displaySize', 40)\\n }\\n // Preserve user preference if any, default is 0.95\\n if (window.eruda.get().config.get('transparency') === 0.95) {\\n window.eruda.get().config.set('transparency', 1)\\n }\\n // Hide Eruda button\\n if (window.eruda._shadowRoot !== undefined) {\\n const btn = window.eruda._shadowRoot.querySelector('.eruda-entry-btn')\\n if (btn !== undefined) {\\n btn.style.display = 'none'\\n }\\n }\\n // Console settings\\n const console = window.eruda.get('console')\\n console.config.set('asyncRender', true)\\n console.config.set('catchGlobalErr', true)\\n console.config.set('displayExtraInfo', false)\\n console.config.set('displayGetterVal', true)\\n console.config.set('displayUnenumerable', true)\\n console.config.set('jsExecution', true)\\n console.config.set('maxLogNum', 'infinite')\\n console.config.set('overrideConsole', true)\\n this.getLogger().info('Mobile console has been loaded...')\\n }\\n if (this.console === false) {\\n window.eruda.show()\\n window.eruda.show('console')\\n this.console = true\\n } else {\\n window.eruda.hide()\\n this.console = false\\n }\\n }\\n\\n IpfsAction.prototype.handlePublishToIpns = async function (event) {\\n var cid = null\\n var ipnsKey = null\\n var wikiCid = null\\n var wikiIpnsKey = null\\n const self = this\\n const wiki = $tw.ipfs.getDocumentUrl()\\n if (wiki.protocol === fileProtocol) {\\n $tw.utils.alert(name, 'Undefined IPFS identifier...')\\n return false\\n }\\n if (wiki.pathname === '/') {\\n $tw.utils.alert(name, 'Unknown IPFS identifier...')\\n return false\\n }\\n var ipnsName = $tw.utils.getIpfsIpnsName()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsName == null) {\\n $tw.utils.alert(name, 'Undefined IPNS name....')\\n return false\\n }\\n try {\\n var { cid, ipnsKey } = await $tw.ipfs.resolveUrl(\\n true,\\n false,\\n `/ipns/${ipnsName}`\\n )\\n var { cid: wikiCid, ipnsKey: wikiIpnsKey } = await $tw.ipfs.resolveUrl(\\n true,\\n true,\\n wiki\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return false\\n }\\n if (wikiIpnsKey !== null && wikiIpnsKey === ipnsKey) {\\n $tw.utils.alert(name, 'Default IPNS key matches current IPNS key....')\\n return false\\n }\\n $tw.utils.alert(name, 'Publishing IPNS name: ' + ipnsName)\\n $tw.ipfs\\n .publishIpnsName(wikiCid, ipnsKey, ipnsName)\\n .then(data => {\\n $tw.ipfs.requestToUnpin(cid)\\n $tw.utils.alert(name, 'Successfully Published IPNS name: ' + ipnsName)\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n return true\\n }\\n\\n IpfsAction.prototype.exportTiddlersAsJson = async function (\\n exportFilter,\\n exportUri,\\n spaces\\n ) {\\n var tiddlers = $tw.wiki.filterTiddlers(exportFilter)\\n var spaces =\\n spaces === undefined ? $tw.config.preferences.jsonSpaces : spaces\\n var data = []\\n // Process Tiddlers\\n for (var t = 0; t \u003C tiddlers.length; t++) {\\n // Load Tiddler\\n var tiddler = $tw.wiki.getTiddler(tiddlers[t])\\n // Process\\n var fields = {}\\n // Process fields\\n for (var field in tiddler.fields) {\\n // Discard\\n if (field === 'tags' || field === '_export_uri') {\\n continue\\n }\\n var ipnsKey = null\\n var fieldValue = tiddler.getFieldString(field)\\n if (field === '_canonical_uri' && fieldValue === exportUri) {\\n continue\\n }\\n if (field === '_import_uri' && fieldValue === exportUri) {\\n continue\\n }\\n try {\\n var { ipnsKey } = await $tw.ipfs.resolveUrl(false, false, fieldValue)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return null\\n }\\n // IPNS\\n if (ipnsKey !== null) {\\n fieldValue = `/${ipnsKeyword}/${ipnsKey}`\\n }\\n // Store field\\n fields[field] = fieldValue\\n }\\n // Process tags\\n var tags = tiddler.fields.tags\\n if (tags !== undefined && tags !== null) {\\n var tagValues = ''\\n for (var i = 0; i \u003C tags.length; i++) {\\n const tag = tags[i]\\n // Discard\\n if (tag === '$:/isExported' || tag === '$:/isImported') {\\n continue\\n }\\n tagValues =\\n (tagValues.length === 0 ? '[[' : `${tagValues} [[`) + `${tag}]]`\\n }\\n // Store tags\\n fields.tags = tagValues\\n }\\n // Store\\n data.push(fields)\\n }\\n return JSON.stringify(data, null, spaces)\\n }\\n\\n IpfsAction.prototype.exportTiddler = async function (\\n child,\\n exportUri,\\n tiddler\\n ) {\\n // Check\\n if (tiddler === undefined || tiddler == null) {\\n const error = new Error('Unknown Tiddler...')\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return null\\n }\\n // Title\\n const title = tiddler.getFieldString('title')\\n // Filter\\n var exportFilter = `[[${tiddler.fields.title}]]`\\n // Child filters\\n if (child) {\\n // Links\\n const linked = $tw.wiki.getTiddlerLinks(title)\\n this.getLogger().info(`Found ${linked.length} Tiddler link(s)...`)\\n // Transcluded\\n const transcluded = this.transcludeContent(title)\\n this.getLogger().info(\\n `Found ${transcluded.length} transcluded Tiddler reference(s)...`\\n )\\n const filtered = linked.concat(transcluded)\\n // Process filtered content\\n for (var i = 0; i \u003C filtered.length; i++) {\\n if (exportFilter.includes(`[[${filtered[i]}]]`) === false) {\\n exportFilter = `${exportFilter} [[${filtered[i]}]]`\\n }\\n }\\n }\\n var content = null\\n if (child || $tw.utils.getIpfsExport() === 'json') {\\n content = await this.exportTiddlersAsJson(exportFilter, exportUri)\\n } else if ($tw.utils.getIpfsExport() === 'static') {\\n // Export Tiddler as Static River\\n const options = {\\n downloadType: 'text/plain',\\n method: 'download',\\n template: '$:/core/templates/exporters/StaticRiver',\\n variables: {\\n exportFilter: exportFilter\\n }\\n }\\n content = $tw.wiki.renderTiddler(\\n 'text/plain',\\n '$:/core/templates/exporters/StaticRiver',\\n options\\n )\\n } else {\\n // Export Tiddler as tid\\n const options = {\\n downloadType: 'text/plain',\\n method: 'download',\\n template: '$:/core/templates/exporters/TidFile',\\n variables: {\\n exportFilter: exportFilter\\n }\\n }\\n content = $tw.wiki.renderTiddler(\\n 'text/plain',\\n '$:/core/templates/exporters/TidFile',\\n options\\n )\\n }\\n if (content !== undefined && content !== null) {\\n // Encrypt\\n if ($tw.crypto.hasPassword()) {\\n try {\\n content = $tw.crypto.encrypt(content, $tw.crypto.currentPassword)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, 'Failed to encrypt content...')\\n return null\\n }\\n }\\n try {\\n content = $tw.ipfs.StringToUint8Array(content)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, 'Failed to convert content...')\\n return null\\n }\\n }\\n return content\\n }\\n\\n IpfsAction.prototype.transcludeContent = function (title) {\\n var tiddlers = []\\n // Build a transclude widget\\n var transclude = $tw.wiki.makeTranscludeWidget(title)\\n // Build a fake document element\\n const container = $tw.fakeDocument.createElement('div')\\n // Transclude\\n transclude.render(container, null)\\n // Process children\\n this.locateTiddlers(transclude, tiddlers)\\n // Return\\n return tiddlers\\n }\\n\\n IpfsAction.prototype.locateTiddlers = function (transclude, tiddlers) {\\n // Children lookup\\n for (var i = 0; i \u003C transclude.children.length; i++) {\\n // Current child\\n const child = transclude.children[i]\\n if (child.variables !== undefined && child.variables !== null) {\\n // Locate Tiddler\\n const currentTiddler = 'currentTiddler'\\n const current = child.variables[currentTiddler]\\n if (\\n current !== undefined &&\\n current !== null &&\\n current.value !== undefined &&\\n current.value !== null\\n ) {\\n if (tiddlers.indexOf(current.value) === -1) {\\n tiddlers.push(current.value)\\n }\\n }\\n }\\n // Process children\\n this.locateTiddlers(child, tiddlers)\\n }\\n }\\n\\n exports.IpfsAction = IpfsAction\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/ipfs-bundle.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-bundle.js\",\n \"text\": \"(function(f){if(typeof exports===\\\"object\\\"&&typeof module!==\\\"undefined\\\"){module.exports=f()}else if(typeof define===\\\"function\\\"&&define.amd){define([],f)}else{var g;if(typeof window!==\\\"undefined\\\"){g=window}else if(typeof global!==\\\"undefined\\\"){g=global}else if(typeof self!==\\\"undefined\\\"){g=self}else{g=this}g.IpfsBundle = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\\\"function\\\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\\\"Cannot find module '\\\"+i+\\\"'\\\");throw a.code=\\\"MODULE_NOT_FOUND\\\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\\\"function\\\"==typeof require&&require,i=0;i\u003Ct.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\\nfunction _asyncIterator(iterable) {\\n var method;\\n\\n if (typeof Symbol !== \\\"undefined\\\") {\\n if (Symbol.asyncIterator) {\\n method = iterable[Symbol.asyncIterator];\\n if (method != null) return method.call(iterable);\\n }\\n\\n if (Symbol.iterator) {\\n method = iterable[Symbol.iterator];\\n if (method != null) return method.call(iterable);\\n }\\n }\\n\\n throw new TypeError(\\\"Object is not async iterable\\\");\\n}\\n\\nmodule.exports = _asyncIterator;\\n},{}],2:[function(require,module,exports){\\nfunction _interopRequireDefault(obj) {\\n return obj && obj.__esModule ? obj : {\\n \\\"default\\\": obj\\n };\\n}\\n\\nmodule.exports = _interopRequireDefault;\\n},{}],3:[function(require,module,exports){\\n'use strict'\\n// base-x encoding / decoding\\n// Copyright (c) 2018 base-x contributors\\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\\n// Distributed under the MIT software license, see the accompanying\\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\\n// @ts-ignore\\nvar _Buffer = require('safe-buffer').Buffer\\nfunction base (ALPHABET) {\\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\\n var BASE_MAP = new Uint8Array(256)\\n for (var j = 0; j \u003C BASE_MAP.length; j++) {\\n BASE_MAP[j] = 255\\n }\\n for (var i = 0; i \u003C ALPHABET.length; i++) {\\n var x = ALPHABET.charAt(i)\\n var xc = x.charCodeAt(0)\\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\\n BASE_MAP[xc] = i\\n }\\n var BASE = ALPHABET.length\\n var LEADER = ALPHABET.charAt(0)\\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\\n function encode (source) {\\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\\n if (source.length === 0) { return '' }\\n // Skip & count leading zeroes.\\n var zeroes = 0\\n var length = 0\\n var pbegin = 0\\n var pend = source.length\\n while (pbegin !== pend && source[pbegin] === 0) {\\n pbegin++\\n zeroes++\\n }\\n // Allocate enough space in big-endian base58 representation.\\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\\n var b58 = new Uint8Array(size)\\n // Process the bytes.\\n while (pbegin !== pend) {\\n var carry = source[pbegin]\\n // Apply \\\"b58 = b58 * 256 + ch\\\".\\n var i = 0\\n for (var it1 = size - 1; (carry !== 0 || i \u003C length) && (it1 !== -1); it1--, i++) {\\n carry += (256 * b58[it1]) >>> 0\\n b58[it1] = (carry % BASE) >>> 0\\n carry = (carry / BASE) >>> 0\\n }\\n if (carry !== 0) { throw new Error('Non-zero carry') }\\n length = i\\n pbegin++\\n }\\n // Skip leading zeroes in base58 result.\\n var it2 = size - length\\n while (it2 !== size && b58[it2] === 0) {\\n it2++\\n }\\n // Translate the result into a string.\\n var str = LEADER.repeat(zeroes)\\n for (; it2 \u003C size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\\n return str\\n }\\n function decodeUnsafe (source) {\\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\\n if (source.length === 0) { return _Buffer.alloc(0) }\\n var psz = 0\\n // Skip leading spaces.\\n if (source[psz] === ' ') { return }\\n // Skip and count leading '1's.\\n var zeroes = 0\\n var length = 0\\n while (source[psz] === LEADER) {\\n zeroes++\\n psz++\\n }\\n // Allocate enough space in big-endian base256 representation.\\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\\n var b256 = new Uint8Array(size)\\n // Process the characters.\\n while (source[psz]) {\\n // Decode character\\n var carry = BASE_MAP[source.charCodeAt(psz)]\\n // Invalid character\\n if (carry === 255) { return }\\n var i = 0\\n for (var it3 = size - 1; (carry !== 0 || i \u003C length) && (it3 !== -1); it3--, i++) {\\n carry += (BASE * b256[it3]) >>> 0\\n b256[it3] = (carry % 256) >>> 0\\n carry = (carry / 256) >>> 0\\n }\\n if (carry !== 0) { throw new Error('Non-zero carry') }\\n length = i\\n psz++\\n }\\n // Skip trailing spaces.\\n if (source[psz] === ' ') { return }\\n // Skip leading zeroes in b256.\\n var it4 = size - length\\n while (it4 !== size && b256[it4] === 0) {\\n it4++\\n }\\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\\n vch.fill(0x00, 0, zeroes)\\n var j = zeroes\\n while (it4 !== size) {\\n vch[j++] = b256[it4++]\\n }\\n return vch\\n }\\n function decode (string) {\\n var buffer = decodeUnsafe(string)\\n if (buffer) { return buffer }\\n throw new Error('Non-base' + BASE + ' character')\\n }\\n return {\\n encode: encode,\\n decodeUnsafe: decodeUnsafe,\\n decode: decode\\n }\\n}\\nmodule.exports = base\\n\\n},{\\\"safe-buffer\\\":63}],4:[function(require,module,exports){\\n'use strict'\\n\\nexports.byteLength = byteLength\\nexports.toByteArray = toByteArray\\nexports.fromByteArray = fromByteArray\\n\\nvar lookup = []\\nvar revLookup = []\\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\\n\\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\\nfor (var i = 0, len = code.length; i \u003C len; ++i) {\\n lookup[i] = code[i]\\n revLookup[code.charCodeAt(i)] = i\\n}\\n\\n// Support decoding URL-safe base64 strings, as Node.js does.\\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\\nrevLookup['-'.charCodeAt(0)] = 62\\nrevLookup['_'.charCodeAt(0)] = 63\\n\\nfunction getLens (b64) {\\n var len = b64.length\\n\\n if (len % 4 > 0) {\\n throw new Error('Invalid string. Length must be a multiple of 4')\\n }\\n\\n // Trim off extra bytes after placeholder bytes are found\\n // See: https://github.com/beatgammit/base64-js/issues/42\\n var validLen = b64.indexOf('=')\\n if (validLen === -1) validLen = len\\n\\n var placeHoldersLen = validLen === len\\n ? 0\\n : 4 - (validLen % 4)\\n\\n return [validLen, placeHoldersLen]\\n}\\n\\n// base64 is 4/3 + up to two characters of the original data\\nfunction byteLength (b64) {\\n var lens = getLens(b64)\\n var validLen = lens[0]\\n var placeHoldersLen = lens[1]\\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\\n}\\n\\nfunction _byteLength (b64, validLen, placeHoldersLen) {\\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\\n}\\n\\nfunction toByteArray (b64) {\\n var tmp\\n var lens = getLens(b64)\\n var validLen = lens[0]\\n var placeHoldersLen = lens[1]\\n\\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\\n\\n var curByte = 0\\n\\n // if there are placeholders, only get up to the last complete 4 chars\\n var len = placeHoldersLen > 0\\n ? validLen - 4\\n : validLen\\n\\n var i\\n for (i = 0; i \u003C len; i += 4) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] \u003C\u003C 18) |\\n (revLookup[b64.charCodeAt(i + 1)] \u003C\u003C 12) |\\n (revLookup[b64.charCodeAt(i + 2)] \u003C\u003C 6) |\\n revLookup[b64.charCodeAt(i + 3)]\\n arr[curByte++] = (tmp >> 16) & 0xFF\\n arr[curByte++] = (tmp >> 8) & 0xFF\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n if (placeHoldersLen === 2) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] \u003C\u003C 2) |\\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n if (placeHoldersLen === 1) {\\n tmp =\\n (revLookup[b64.charCodeAt(i)] \u003C\u003C 10) |\\n (revLookup[b64.charCodeAt(i + 1)] \u003C\u003C 4) |\\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\\n arr[curByte++] = (tmp >> 8) & 0xFF\\n arr[curByte++] = tmp & 0xFF\\n }\\n\\n return arr\\n}\\n\\nfunction tripletToBase64 (num) {\\n return lookup[num >> 18 & 0x3F] +\\n lookup[num >> 12 & 0x3F] +\\n lookup[num >> 6 & 0x3F] +\\n lookup[num & 0x3F]\\n}\\n\\nfunction encodeChunk (uint8, start, end) {\\n var tmp\\n var output = []\\n for (var i = start; i \u003C end; i += 3) {\\n tmp =\\n ((uint8[i] \u003C\u003C 16) & 0xFF0000) +\\n ((uint8[i + 1] \u003C\u003C 8) & 0xFF00) +\\n (uint8[i + 2] & 0xFF)\\n output.push(tripletToBase64(tmp))\\n }\\n return output.join('')\\n}\\n\\nfunction fromByteArray (uint8) {\\n var tmp\\n var len = uint8.length\\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\\n var parts = []\\n var maxChunkLength = 16383 // must be multiple of 3\\n\\n // go through the array every three bytes, we'll deal with trailing stuff later\\n for (var i = 0, len2 = len - extraBytes; i \u003C len2; i += maxChunkLength) {\\n parts.push(encodeChunk(\\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\\n ))\\n }\\n\\n // pad the end with zeros, but make sure to not forget the extra bytes\\n if (extraBytes === 1) {\\n tmp = uint8[len - 1]\\n parts.push(\\n lookup[tmp >> 2] +\\n lookup[(tmp \u003C\u003C 4) & 0x3F] +\\n '=='\\n )\\n } else if (extraBytes === 2) {\\n tmp = (uint8[len - 2] \u003C\u003C 8) + uint8[len - 1]\\n parts.push(\\n lookup[tmp >> 10] +\\n lookup[(tmp >> 4) & 0x3F] +\\n lookup[(tmp \u003C\u003C 2) & 0x3F] +\\n '='\\n )\\n }\\n\\n return parts.join('')\\n}\\n\\n},{}],5:[function(require,module,exports){\\n(function (Buffer){\\n/*!\\n * The buffer module from node.js, for the browser.\\n *\\n * @author Feross Aboukhadijeh \u003Chttps://feross.org>\\n * @license MIT\\n */\\n/* eslint-disable no-proto */\\n\\n'use strict'\\n\\nvar base64 = require('base64-js')\\nvar ieee754 = require('ieee754')\\n\\nexports.Buffer = Buffer\\nexports.SlowBuffer = SlowBuffer\\nexports.INSPECT_MAX_BYTES = 50\\n\\nvar K_MAX_LENGTH = 0x7fffffff\\nexports.kMaxLength = K_MAX_LENGTH\\n\\n/**\\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\\n * === true Use Uint8Array implementation (fastest)\\n * === false Print warning and recommend using `buffer` v4.x which has an Object\\n * implementation (most compatible, even IE6)\\n *\\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\\n * Opera 11.6+, iOS 4.2+.\\n *\\n * We report that the browser does not support typed arrays if the are not subclassable\\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\\n * for __proto__ and has a buggy typed array implementation.\\n */\\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\\n\\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\\n typeof console.error === 'function') {\\n console.error(\\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\\n )\\n}\\n\\nfunction typedArraySupport () {\\n // Can typed array instances can be augmented?\\n try {\\n var arr = new Uint8Array(1)\\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\\n return arr.foo() === 42\\n } catch (e) {\\n return false\\n }\\n}\\n\\nObject.defineProperty(Buffer.prototype, 'parent', {\\n enumerable: true,\\n get: function () {\\n if (!Buffer.isBuffer(this)) return undefined\\n return this.buffer\\n }\\n})\\n\\nObject.defineProperty(Buffer.prototype, 'offset', {\\n enumerable: true,\\n get: function () {\\n if (!Buffer.isBuffer(this)) return undefined\\n return this.byteOffset\\n }\\n})\\n\\nfunction createBuffer (length) {\\n if (length > K_MAX_LENGTH) {\\n throw new RangeError('The value \\\"' + length + '\\\" is invalid for option \\\"size\\\"')\\n }\\n // Return an augmented `Uint8Array` instance\\n var buf = new Uint8Array(length)\\n buf.__proto__ = Buffer.prototype\\n return buf\\n}\\n\\n/**\\n * The Buffer constructor returns instances of `Uint8Array` that have their\\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\\n * returns a single octet.\\n *\\n * The `Uint8Array` prototype remains unmodified.\\n */\\n\\nfunction Buffer (arg, encodingOrOffset, length) {\\n // Common case.\\n if (typeof arg === 'number') {\\n if (typeof encodingOrOffset === 'string') {\\n throw new TypeError(\\n 'The \\\"string\\\" argument must be of type string. Received type number'\\n )\\n }\\n return allocUnsafe(arg)\\n }\\n return from(arg, encodingOrOffset, length)\\n}\\n\\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\\n Buffer[Symbol.species] === Buffer) {\\n Object.defineProperty(Buffer, Symbol.species, {\\n value: null,\\n configurable: true,\\n enumerable: false,\\n writable: false\\n })\\n}\\n\\nBuffer.poolSize = 8192 // not used by this implementation\\n\\nfunction from (value, encodingOrOffset, length) {\\n if (typeof value === 'string') {\\n return fromString(value, encodingOrOffset)\\n }\\n\\n if (ArrayBuffer.isView(value)) {\\n return fromArrayLike(value)\\n }\\n\\n if (value == null) {\\n throw TypeError(\\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\\n 'or Array-like Object. Received type ' + (typeof value)\\n )\\n }\\n\\n if (isInstance(value, ArrayBuffer) ||\\n (value && isInstance(value.buffer, ArrayBuffer))) {\\n return fromArrayBuffer(value, encodingOrOffset, length)\\n }\\n\\n if (typeof value === 'number') {\\n throw new TypeError(\\n 'The \\\"value\\\" argument must not be of type number. Received type number'\\n )\\n }\\n\\n var valueOf = value.valueOf && value.valueOf()\\n if (valueOf != null && valueOf !== value) {\\n return Buffer.from(valueOf, encodingOrOffset, length)\\n }\\n\\n var b = fromObject(value)\\n if (b) return b\\n\\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\\n typeof value[Symbol.toPrimitive] === 'function') {\\n return Buffer.from(\\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\\n )\\n }\\n\\n throw new TypeError(\\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\\n 'or Array-like Object. Received type ' + (typeof value)\\n )\\n}\\n\\n/**\\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\\n * if value is a number.\\n * Buffer.from(str[, encoding])\\n * Buffer.from(array)\\n * Buffer.from(buffer)\\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\\n **/\\nBuffer.from = function (value, encodingOrOffset, length) {\\n return from(value, encodingOrOffset, length)\\n}\\n\\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\\n// https://github.com/feross/buffer/pull/148\\nBuffer.prototype.__proto__ = Uint8Array.prototype\\nBuffer.__proto__ = Uint8Array\\n\\nfunction assertSize (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('\\\"size\\\" argument must be of type number')\\n } else if (size \u003C 0) {\\n throw new RangeError('The value \\\"' + size + '\\\" is invalid for option \\\"size\\\"')\\n }\\n}\\n\\nfunction alloc (size, fill, encoding) {\\n assertSize(size)\\n if (size \u003C= 0) {\\n return createBuffer(size)\\n }\\n if (fill !== undefined) {\\n // Only pay attention to encoding if it's a string. This\\n // prevents accidentally sending in a number that would\\n // be interpretted as a start offset.\\n return typeof encoding === 'string'\\n ? createBuffer(size).fill(fill, encoding)\\n : createBuffer(size).fill(fill)\\n }\\n return createBuffer(size)\\n}\\n\\n/**\\n * Creates a new filled Buffer instance.\\n * alloc(size[, fill[, encoding]])\\n **/\\nBuffer.alloc = function (size, fill, encoding) {\\n return alloc(size, fill, encoding)\\n}\\n\\nfunction allocUnsafe (size) {\\n assertSize(size)\\n return createBuffer(size \u003C 0 ? 0 : checked(size) | 0)\\n}\\n\\n/**\\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\\n * */\\nBuffer.allocUnsafe = function (size) {\\n return allocUnsafe(size)\\n}\\n/**\\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\\n */\\nBuffer.allocUnsafeSlow = function (size) {\\n return allocUnsafe(size)\\n}\\n\\nfunction fromString (string, encoding) {\\n if (typeof encoding !== 'string' || encoding === '') {\\n encoding = 'utf8'\\n }\\n\\n if (!Buffer.isEncoding(encoding)) {\\n throw new TypeError('Unknown encoding: ' + encoding)\\n }\\n\\n var length = byteLength(string, encoding) | 0\\n var buf = createBuffer(length)\\n\\n var actual = buf.write(string, encoding)\\n\\n if (actual !== length) {\\n // Writing a hex string, for example, that contains invalid characters will\\n // cause everything after the first invalid character to be ignored. (e.g.\\n // 'abxxcd' will be treated as 'ab')\\n buf = buf.slice(0, actual)\\n }\\n\\n return buf\\n}\\n\\nfunction fromArrayLike (array) {\\n var length = array.length \u003C 0 ? 0 : checked(array.length) | 0\\n var buf = createBuffer(length)\\n for (var i = 0; i \u003C length; i += 1) {\\n buf[i] = array[i] & 255\\n }\\n return buf\\n}\\n\\nfunction fromArrayBuffer (array, byteOffset, length) {\\n if (byteOffset \u003C 0 || array.byteLength \u003C byteOffset) {\\n throw new RangeError('\\\"offset\\\" is outside of buffer bounds')\\n }\\n\\n if (array.byteLength \u003C byteOffset + (length || 0)) {\\n throw new RangeError('\\\"length\\\" is outside of buffer bounds')\\n }\\n\\n var buf\\n if (byteOffset === undefined && length === undefined) {\\n buf = new Uint8Array(array)\\n } else if (length === undefined) {\\n buf = new Uint8Array(array, byteOffset)\\n } else {\\n buf = new Uint8Array(array, byteOffset, length)\\n }\\n\\n // Return an augmented `Uint8Array` instance\\n buf.__proto__ = Buffer.prototype\\n return buf\\n}\\n\\nfunction fromObject (obj) {\\n if (Buffer.isBuffer(obj)) {\\n var len = checked(obj.length) | 0\\n var buf = createBuffer(len)\\n\\n if (buf.length === 0) {\\n return buf\\n }\\n\\n obj.copy(buf, 0, 0, len)\\n return buf\\n }\\n\\n if (obj.length !== undefined) {\\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\\n return createBuffer(0)\\n }\\n return fromArrayLike(obj)\\n }\\n\\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\\n return fromArrayLike(obj.data)\\n }\\n}\\n\\nfunction checked (length) {\\n // Note: cannot use `length \u003C K_MAX_LENGTH` here because that fails when\\n // length is NaN (which is otherwise coerced to zero.)\\n if (length >= K_MAX_LENGTH) {\\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\\n }\\n return length | 0\\n}\\n\\nfunction SlowBuffer (length) {\\n if (+length != length) { // eslint-disable-line eqeqeq\\n length = 0\\n }\\n return Buffer.alloc(+length)\\n}\\n\\nBuffer.isBuffer = function isBuffer (b) {\\n return b != null && b._isBuffer === true &&\\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\\n}\\n\\nBuffer.compare = function compare (a, b) {\\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\\n throw new TypeError(\\n 'The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array'\\n )\\n }\\n\\n if (a === b) return 0\\n\\n var x = a.length\\n var y = b.length\\n\\n for (var i = 0, len = Math.min(x, y); i \u003C len; ++i) {\\n if (a[i] !== b[i]) {\\n x = a[i]\\n y = b[i]\\n break\\n }\\n }\\n\\n if (x \u003C y) return -1\\n if (y \u003C x) return 1\\n return 0\\n}\\n\\nBuffer.isEncoding = function isEncoding (encoding) {\\n switch (String(encoding).toLowerCase()) {\\n case 'hex':\\n case 'utf8':\\n case 'utf-8':\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n case 'base64':\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return true\\n default:\\n return false\\n }\\n}\\n\\nBuffer.concat = function concat (list, length) {\\n if (!Array.isArray(list)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n }\\n\\n if (list.length === 0) {\\n return Buffer.alloc(0)\\n }\\n\\n var i\\n if (length === undefined) {\\n length = 0\\n for (i = 0; i \u003C list.length; ++i) {\\n length += list[i].length\\n }\\n }\\n\\n var buffer = Buffer.allocUnsafe(length)\\n var pos = 0\\n for (i = 0; i \u003C list.length; ++i) {\\n var buf = list[i]\\n if (isInstance(buf, Uint8Array)) {\\n buf = Buffer.from(buf)\\n }\\n if (!Buffer.isBuffer(buf)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n }\\n buf.copy(buffer, pos)\\n pos += buf.length\\n }\\n return buffer\\n}\\n\\nfunction byteLength (string, encoding) {\\n if (Buffer.isBuffer(string)) {\\n return string.length\\n }\\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\\n return string.byteLength\\n }\\n if (typeof string !== 'string') {\\n throw new TypeError(\\n 'The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\\n 'Received type ' + typeof string\\n )\\n }\\n\\n var len = string.length\\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\\n if (!mustMatch && len === 0) return 0\\n\\n // Use a for loop to avoid recursion\\n var loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n return len\\n case 'utf8':\\n case 'utf-8':\\n return utf8ToBytes(string).length\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return len * 2\\n case 'hex':\\n return len >>> 1\\n case 'base64':\\n return base64ToBytes(string).length\\n default:\\n if (loweredCase) {\\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\\n }\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\nBuffer.byteLength = byteLength\\n\\nfunction slowToString (encoding, start, end) {\\n var loweredCase = false\\n\\n // No need to verify that \\\"this.length \u003C= MAX_UINT32\\\" since it's a read-only\\n // property of a typed array.\\n\\n // This behaves neither like String nor Uint8Array in that we set start/end\\n // to their upper/lower bounds if the value passed is out of range.\\n // undefined is handled specially as per ECMA-262 6th Edition,\\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\\n if (start === undefined || start \u003C 0) {\\n start = 0\\n }\\n // Return early if start > this.length. Done here to prevent potential uint32\\n // coercion fail below.\\n if (start > this.length) {\\n return ''\\n }\\n\\n if (end === undefined || end > this.length) {\\n end = this.length\\n }\\n\\n if (end \u003C= 0) {\\n return ''\\n }\\n\\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\\n end >>>= 0\\n start >>>= 0\\n\\n if (end \u003C= start) {\\n return ''\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n while (true) {\\n switch (encoding) {\\n case 'hex':\\n return hexSlice(this, start, end)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Slice(this, start, end)\\n\\n case 'ascii':\\n return asciiSlice(this, start, end)\\n\\n case 'latin1':\\n case 'binary':\\n return latin1Slice(this, start, end)\\n\\n case 'base64':\\n return base64Slice(this, start, end)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return utf16leSlice(this, start, end)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = (encoding + '').toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\\n// reliably in a browserify context because there could be multiple different\\n// copies of the 'buffer' package in use. This method works even for Buffer\\n// instances that were created from another copy of the `buffer` package.\\n// See: https://github.com/feross/buffer/issues/154\\nBuffer.prototype._isBuffer = true\\n\\nfunction swap (b, n, m) {\\n var i = b[n]\\n b[n] = b[m]\\n b[m] = i\\n}\\n\\nBuffer.prototype.swap16 = function swap16 () {\\n var len = this.length\\n if (len % 2 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 16-bits')\\n }\\n for (var i = 0; i \u003C len; i += 2) {\\n swap(this, i, i + 1)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap32 = function swap32 () {\\n var len = this.length\\n if (len % 4 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 32-bits')\\n }\\n for (var i = 0; i \u003C len; i += 4) {\\n swap(this, i, i + 3)\\n swap(this, i + 1, i + 2)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap64 = function swap64 () {\\n var len = this.length\\n if (len % 8 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 64-bits')\\n }\\n for (var i = 0; i \u003C len; i += 8) {\\n swap(this, i, i + 7)\\n swap(this, i + 1, i + 6)\\n swap(this, i + 2, i + 5)\\n swap(this, i + 3, i + 4)\\n }\\n return this\\n}\\n\\nBuffer.prototype.toString = function toString () {\\n var length = this.length\\n if (length === 0) return ''\\n if (arguments.length === 0) return utf8Slice(this, 0, length)\\n return slowToString.apply(this, arguments)\\n}\\n\\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\\n\\nBuffer.prototype.equals = function equals (b) {\\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\\n if (this === b) return true\\n return Buffer.compare(this, b) === 0\\n}\\n\\nBuffer.prototype.inspect = function inspect () {\\n var str = ''\\n var max = exports.INSPECT_MAX_BYTES\\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\\n if (this.length > max) str += ' ... '\\n return '\u003CBuffer ' + str + '>'\\n}\\n\\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\\n if (isInstance(target, Uint8Array)) {\\n target = Buffer.from(target, target.offset, target.byteLength)\\n }\\n if (!Buffer.isBuffer(target)) {\\n throw new TypeError(\\n 'The \\\"target\\\" argument must be one of type Buffer or Uint8Array. ' +\\n 'Received type ' + (typeof target)\\n )\\n }\\n\\n if (start === undefined) {\\n start = 0\\n }\\n if (end === undefined) {\\n end = target ? target.length : 0\\n }\\n if (thisStart === undefined) {\\n thisStart = 0\\n }\\n if (thisEnd === undefined) {\\n thisEnd = this.length\\n }\\n\\n if (start \u003C 0 || end > target.length || thisStart \u003C 0 || thisEnd > this.length) {\\n throw new RangeError('out of range index')\\n }\\n\\n if (thisStart >= thisEnd && start >= end) {\\n return 0\\n }\\n if (thisStart >= thisEnd) {\\n return -1\\n }\\n if (start >= end) {\\n return 1\\n }\\n\\n start >>>= 0\\n end >>>= 0\\n thisStart >>>= 0\\n thisEnd >>>= 0\\n\\n if (this === target) return 0\\n\\n var x = thisEnd - thisStart\\n var y = end - start\\n var len = Math.min(x, y)\\n\\n var thisCopy = this.slice(thisStart, thisEnd)\\n var targetCopy = target.slice(start, end)\\n\\n for (var i = 0; i \u003C len; ++i) {\\n if (thisCopy[i] !== targetCopy[i]) {\\n x = thisCopy[i]\\n y = targetCopy[i]\\n break\\n }\\n }\\n\\n if (x \u003C y) return -1\\n if (y \u003C x) return 1\\n return 0\\n}\\n\\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\\n// OR the last index of `val` in `buffer` at offset \u003C= `byteOffset`.\\n//\\n// Arguments:\\n// - buffer - a Buffer to search\\n// - val - a string, Buffer, or number\\n// - byteOffset - an index into `buffer`; will be clamped to an int32\\n// - encoding - an optional encoding, relevant is val is a string\\n// - dir - true for indexOf, false for lastIndexOf\\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\\n // Empty buffer means no match\\n if (buffer.length === 0) return -1\\n\\n // Normalize byteOffset\\n if (typeof byteOffset === 'string') {\\n encoding = byteOffset\\n byteOffset = 0\\n } else if (byteOffset > 0x7fffffff) {\\n byteOffset = 0x7fffffff\\n } else if (byteOffset \u003C -0x80000000) {\\n byteOffset = -0x80000000\\n }\\n byteOffset = +byteOffset // Coerce to Number.\\n if (numberIsNaN(byteOffset)) {\\n // byteOffset: it it's undefined, null, NaN, \\\"foo\\\", etc, search whole buffer\\n byteOffset = dir ? 0 : (buffer.length - 1)\\n }\\n\\n // Normalize byteOffset: negative offsets start from the end of the buffer\\n if (byteOffset \u003C 0) byteOffset = buffer.length + byteOffset\\n if (byteOffset >= buffer.length) {\\n if (dir) return -1\\n else byteOffset = buffer.length - 1\\n } else if (byteOffset \u003C 0) {\\n if (dir) byteOffset = 0\\n else return -1\\n }\\n\\n // Normalize val\\n if (typeof val === 'string') {\\n val = Buffer.from(val, encoding)\\n }\\n\\n // Finally, search either indexOf (if dir is true) or lastIndexOf\\n if (Buffer.isBuffer(val)) {\\n // Special case: looking for empty string/buffer always fails\\n if (val.length === 0) {\\n return -1\\n }\\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\\n } else if (typeof val === 'number') {\\n val = val & 0xFF // Search for a byte value [0-255]\\n if (typeof Uint8Array.prototype.indexOf === 'function') {\\n if (dir) {\\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\\n } else {\\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\\n }\\n }\\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\\n }\\n\\n throw new TypeError('val must be string, number or Buffer')\\n}\\n\\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\\n var indexSize = 1\\n var arrLength = arr.length\\n var valLength = val.length\\n\\n if (encoding !== undefined) {\\n encoding = String(encoding).toLowerCase()\\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\\n encoding === 'utf16le' || encoding === 'utf-16le') {\\n if (arr.length \u003C 2 || val.length \u003C 2) {\\n return -1\\n }\\n indexSize = 2\\n arrLength /= 2\\n valLength /= 2\\n byteOffset /= 2\\n }\\n }\\n\\n function read (buf, i) {\\n if (indexSize === 1) {\\n return buf[i]\\n } else {\\n return buf.readUInt16BE(i * indexSize)\\n }\\n }\\n\\n var i\\n if (dir) {\\n var foundIndex = -1\\n for (i = byteOffset; i \u003C arrLength; i++) {\\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\\n if (foundIndex === -1) foundIndex = i\\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\\n } else {\\n if (foundIndex !== -1) i -= i - foundIndex\\n foundIndex = -1\\n }\\n }\\n } else {\\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\\n for (i = byteOffset; i >= 0; i--) {\\n var found = true\\n for (var j = 0; j \u003C valLength; j++) {\\n if (read(arr, i + j) !== read(val, j)) {\\n found = false\\n break\\n }\\n }\\n if (found) return i\\n }\\n }\\n\\n return -1\\n}\\n\\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\\n return this.indexOf(val, byteOffset, encoding) !== -1\\n}\\n\\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\\n}\\n\\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\\n}\\n\\nfunction hexWrite (buf, string, offset, length) {\\n offset = Number(offset) || 0\\n var remaining = buf.length - offset\\n if (!length) {\\n length = remaining\\n } else {\\n length = Number(length)\\n if (length > remaining) {\\n length = remaining\\n }\\n }\\n\\n var strLen = string.length\\n\\n if (length > strLen / 2) {\\n length = strLen / 2\\n }\\n for (var i = 0; i \u003C length; ++i) {\\n var parsed = parseInt(string.substr(i * 2, 2), 16)\\n if (numberIsNaN(parsed)) return i\\n buf[offset + i] = parsed\\n }\\n return i\\n}\\n\\nfunction utf8Write (buf, string, offset, length) {\\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nfunction asciiWrite (buf, string, offset, length) {\\n return blitBuffer(asciiToBytes(string), buf, offset, length)\\n}\\n\\nfunction latin1Write (buf, string, offset, length) {\\n return asciiWrite(buf, string, offset, length)\\n}\\n\\nfunction base64Write (buf, string, offset, length) {\\n return blitBuffer(base64ToBytes(string), buf, offset, length)\\n}\\n\\nfunction ucs2Write (buf, string, offset, length) {\\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nBuffer.prototype.write = function write (string, offset, length, encoding) {\\n // Buffer#write(string)\\n if (offset === undefined) {\\n encoding = 'utf8'\\n length = this.length\\n offset = 0\\n // Buffer#write(string, encoding)\\n } else if (length === undefined && typeof offset === 'string') {\\n encoding = offset\\n length = this.length\\n offset = 0\\n // Buffer#write(string, offset[, length][, encoding])\\n } else if (isFinite(offset)) {\\n offset = offset >>> 0\\n if (isFinite(length)) {\\n length = length >>> 0\\n if (encoding === undefined) encoding = 'utf8'\\n } else {\\n encoding = length\\n length = undefined\\n }\\n } else {\\n throw new Error(\\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\\n )\\n }\\n\\n var remaining = this.length - offset\\n if (length === undefined || length > remaining) length = remaining\\n\\n if ((string.length > 0 && (length \u003C 0 || offset \u003C 0)) || offset > this.length) {\\n throw new RangeError('Attempt to write outside buffer bounds')\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n var loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'hex':\\n return hexWrite(this, string, offset, length)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Write(this, string, offset, length)\\n\\n case 'ascii':\\n return asciiWrite(this, string, offset, length)\\n\\n case 'latin1':\\n case 'binary':\\n return latin1Write(this, string, offset, length)\\n\\n case 'base64':\\n // Warning: maxLength not taken into account in base64Write\\n return base64Write(this, string, offset, length)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return ucs2Write(this, string, offset, length)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\nBuffer.prototype.toJSON = function toJSON () {\\n return {\\n type: 'Buffer',\\n data: Array.prototype.slice.call(this._arr || this, 0)\\n }\\n}\\n\\nfunction base64Slice (buf, start, end) {\\n if (start === 0 && end === buf.length) {\\n return base64.fromByteArray(buf)\\n } else {\\n return base64.fromByteArray(buf.slice(start, end))\\n }\\n}\\n\\nfunction utf8Slice (buf, start, end) {\\n end = Math.min(buf.length, end)\\n var res = []\\n\\n var i = start\\n while (i \u003C end) {\\n var firstByte = buf[i]\\n var codePoint = null\\n var bytesPerSequence = (firstByte > 0xEF) ? 4\\n : (firstByte > 0xDF) ? 3\\n : (firstByte > 0xBF) ? 2\\n : 1\\n\\n if (i + bytesPerSequence \u003C= end) {\\n var secondByte, thirdByte, fourthByte, tempCodePoint\\n\\n switch (bytesPerSequence) {\\n case 1:\\n if (firstByte \u003C 0x80) {\\n codePoint = firstByte\\n }\\n break\\n case 2:\\n secondByte = buf[i + 1]\\n if ((secondByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0x1F) \u003C\u003C 0x6 | (secondByte & 0x3F)\\n if (tempCodePoint > 0x7F) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 3:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) \u003C\u003C 0xC | (secondByte & 0x3F) \u003C\u003C 0x6 | (thirdByte & 0x3F)\\n if (tempCodePoint > 0x7FF && (tempCodePoint \u003C 0xD800 || tempCodePoint > 0xDFFF)) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 4:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n fourthByte = buf[i + 3]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) \u003C\u003C 0x12 | (secondByte & 0x3F) \u003C\u003C 0xC | (thirdByte & 0x3F) \u003C\u003C 0x6 | (fourthByte & 0x3F)\\n if (tempCodePoint > 0xFFFF && tempCodePoint \u003C 0x110000) {\\n codePoint = tempCodePoint\\n }\\n }\\n }\\n }\\n\\n if (codePoint === null) {\\n // we did not generate a valid codePoint so insert a\\n // replacement char (U+FFFD) and advance only 1 byte\\n codePoint = 0xFFFD\\n bytesPerSequence = 1\\n } else if (codePoint > 0xFFFF) {\\n // encode to utf16 (surrogate pair dance)\\n codePoint -= 0x10000\\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\\n codePoint = 0xDC00 | codePoint & 0x3FF\\n }\\n\\n res.push(codePoint)\\n i += bytesPerSequence\\n }\\n\\n return decodeCodePointsArray(res)\\n}\\n\\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\\n// the lowest limit is Chrome, with 0x10000 args.\\n// We go 1 magnitude less, for safety\\nvar MAX_ARGUMENTS_LENGTH = 0x1000\\n\\nfunction decodeCodePointsArray (codePoints) {\\n var len = codePoints.length\\n if (len \u003C= MAX_ARGUMENTS_LENGTH) {\\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\\n }\\n\\n // Decode in chunks to avoid \\\"call stack size exceeded\\\".\\n var res = ''\\n var i = 0\\n while (i \u003C len) {\\n res += String.fromCharCode.apply(\\n String,\\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\\n )\\n }\\n return res\\n}\\n\\nfunction asciiSlice (buf, start, end) {\\n var ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (var i = start; i \u003C end; ++i) {\\n ret += String.fromCharCode(buf[i] & 0x7F)\\n }\\n return ret\\n}\\n\\nfunction latin1Slice (buf, start, end) {\\n var ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (var i = start; i \u003C end; ++i) {\\n ret += String.fromCharCode(buf[i])\\n }\\n return ret\\n}\\n\\nfunction hexSlice (buf, start, end) {\\n var len = buf.length\\n\\n if (!start || start \u003C 0) start = 0\\n if (!end || end \u003C 0 || end > len) end = len\\n\\n var out = ''\\n for (var i = start; i \u003C end; ++i) {\\n out += toHex(buf[i])\\n }\\n return out\\n}\\n\\nfunction utf16leSlice (buf, start, end) {\\n var bytes = buf.slice(start, end)\\n var res = ''\\n for (var i = 0; i \u003C bytes.length; i += 2) {\\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\\n }\\n return res\\n}\\n\\nBuffer.prototype.slice = function slice (start, end) {\\n var len = this.length\\n start = ~~start\\n end = end === undefined ? len : ~~end\\n\\n if (start \u003C 0) {\\n start += len\\n if (start \u003C 0) start = 0\\n } else if (start > len) {\\n start = len\\n }\\n\\n if (end \u003C 0) {\\n end += len\\n if (end \u003C 0) end = 0\\n } else if (end > len) {\\n end = len\\n }\\n\\n if (end \u003C start) end = start\\n\\n var newBuf = this.subarray(start, end)\\n // Return an augmented `Uint8Array` instance\\n newBuf.__proto__ = Buffer.prototype\\n return newBuf\\n}\\n\\n/*\\n * Need to make sure that buffer isn't trying to write out of bounds.\\n */\\nfunction checkOffset (offset, ext, length) {\\n if ((offset % 1) !== 0 || offset \u003C 0) throw new RangeError('offset is not uint')\\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\\n}\\n\\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var val = this[offset]\\n var mul = 1\\n var i = 0\\n while (++i \u003C byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) {\\n checkOffset(offset, byteLength, this.length)\\n }\\n\\n var val = this[offset + --byteLength]\\n var mul = 1\\n while (byteLength > 0 && (mul *= 0x100)) {\\n val += this[offset + --byteLength] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n return this[offset]\\n}\\n\\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return this[offset] | (this[offset + 1] \u003C\u003C 8)\\n}\\n\\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return (this[offset] \u003C\u003C 8) | this[offset + 1]\\n}\\n\\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return ((this[offset]) |\\n (this[offset + 1] \u003C\u003C 8) |\\n (this[offset + 2] \u003C\u003C 16)) +\\n (this[offset + 3] * 0x1000000)\\n}\\n\\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] * 0x1000000) +\\n ((this[offset + 1] \u003C\u003C 16) |\\n (this[offset + 2] \u003C\u003C 8) |\\n this[offset + 3])\\n}\\n\\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var val = this[offset]\\n var mul = 1\\n var i = 0\\n while (++i \u003C byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var i = byteLength\\n var mul = 1\\n var val = this[offset + --i]\\n while (i > 0 && (mul *= 0x100)) {\\n val += this[offset + --i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n if (!(this[offset] & 0x80)) return (this[offset])\\n return ((0xff - this[offset] + 1) * -1)\\n}\\n\\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n var val = this[offset] | (this[offset + 1] \u003C\u003C 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n var val = this[offset + 1] | (this[offset] \u003C\u003C 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset]) |\\n (this[offset + 1] \u003C\u003C 8) |\\n (this[offset + 2] \u003C\u003C 16) |\\n (this[offset + 3] \u003C\u003C 24)\\n}\\n\\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] \u003C\u003C 24) |\\n (this[offset + 1] \u003C\u003C 16) |\\n (this[offset + 2] \u003C\u003C 8) |\\n (this[offset + 3])\\n}\\n\\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, true, 23, 4)\\n}\\n\\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, false, 23, 4)\\n}\\n\\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, true, 52, 8)\\n}\\n\\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\\n offset = offset >>> 0\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, false, 52, 8)\\n}\\n\\nfunction checkInt (buf, value, offset, ext, max, min) {\\n if (!Buffer.isBuffer(buf)) throw new TypeError('\\\"buffer\\\" argument must be a Buffer instance')\\n if (value > max || value \u003C min) throw new RangeError('\\\"value\\\" argument is out of bounds')\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n}\\n\\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) {\\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n var mul = 1\\n var i = 0\\n this[offset] = value & 0xFF\\n while (++i \u003C byteLength && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n byteLength = byteLength >>> 0\\n if (!noAssert) {\\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n var i = byteLength - 1\\n var mul = 1\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n this[offset + 3] = (value >>> 24)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 1] = (value >>> 8)\\n this[offset] = (value & 0xff)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n var limit = Math.pow(2, (8 * byteLength) - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n var i = 0\\n var mul = 1\\n var sub = 0\\n this[offset] = value & 0xFF\\n while (++i \u003C byteLength && (mul *= 0x100)) {\\n if (value \u003C 0 && sub === 0 && this[offset + i - 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n var limit = Math.pow(2, (8 * byteLength) - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n var i = byteLength - 1\\n var mul = 1\\n var sub = 0\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n if (value \u003C 0 && sub === 0 && this[offset + i + 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\\n if (value \u003C 0) value = 0xff + value + 1\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 3] = (value >>> 24)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n if (value \u003C 0) value = 0xffffffff + value + 1\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n return offset + 4\\n}\\n\\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n if (offset \u003C 0) throw new RangeError('Index out of range')\\n}\\n\\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, false, noAssert)\\n}\\n\\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\\n value = +value\\n offset = offset >>> 0\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\\n return offset + 8\\n}\\n\\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, false, noAssert)\\n}\\n\\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\\n if (!start) start = 0\\n if (!end && end !== 0) end = this.length\\n if (targetStart >= target.length) targetStart = target.length\\n if (!targetStart) targetStart = 0\\n if (end > 0 && end \u003C start) end = start\\n\\n // Copy 0 bytes; we're done\\n if (end === start) return 0\\n if (target.length === 0 || this.length === 0) return 0\\n\\n // Fatal error conditions\\n if (targetStart \u003C 0) {\\n throw new RangeError('targetStart out of bounds')\\n }\\n if (start \u003C 0 || start >= this.length) throw new RangeError('Index out of range')\\n if (end \u003C 0) throw new RangeError('sourceEnd out of bounds')\\n\\n // Are we oob?\\n if (end > this.length) end = this.length\\n if (target.length - targetStart \u003C end - start) {\\n end = target.length - targetStart + start\\n }\\n\\n var len = end - start\\n\\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\\n // Use built-in when available, missing from IE11\\n this.copyWithin(targetStart, start, end)\\n } else if (this === target && start \u003C targetStart && targetStart \u003C end) {\\n // descending copy from end\\n for (var i = len - 1; i >= 0; --i) {\\n target[i + targetStart] = this[i + start]\\n }\\n } else {\\n Uint8Array.prototype.set.call(\\n target,\\n this.subarray(start, end),\\n targetStart\\n )\\n }\\n\\n return len\\n}\\n\\n// Usage:\\n// buffer.fill(number[, offset[, end]])\\n// buffer.fill(buffer[, offset[, end]])\\n// buffer.fill(string[, offset[, end]][, encoding])\\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\\n // Handle string cases:\\n if (typeof val === 'string') {\\n if (typeof start === 'string') {\\n encoding = start\\n start = 0\\n end = this.length\\n } else if (typeof end === 'string') {\\n encoding = end\\n end = this.length\\n }\\n if (encoding !== undefined && typeof encoding !== 'string') {\\n throw new TypeError('encoding must be a string')\\n }\\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\\n throw new TypeError('Unknown encoding: ' + encoding)\\n }\\n if (val.length === 1) {\\n var code = val.charCodeAt(0)\\n if ((encoding === 'utf8' && code \u003C 128) ||\\n encoding === 'latin1') {\\n // Fast path: If `val` fits into a single byte, use that numeric value.\\n val = code\\n }\\n }\\n } else if (typeof val === 'number') {\\n val = val & 255\\n }\\n\\n // Invalid ranges are not set to a default, so can range check early.\\n if (start \u003C 0 || this.length \u003C start || this.length \u003C end) {\\n throw new RangeError('Out of range index')\\n }\\n\\n if (end \u003C= start) {\\n return this\\n }\\n\\n start = start >>> 0\\n end = end === undefined ? this.length : end >>> 0\\n\\n if (!val) val = 0\\n\\n var i\\n if (typeof val === 'number') {\\n for (i = start; i \u003C end; ++i) {\\n this[i] = val\\n }\\n } else {\\n var bytes = Buffer.isBuffer(val)\\n ? val\\n : Buffer.from(val, encoding)\\n var len = bytes.length\\n if (len === 0) {\\n throw new TypeError('The value \\\"' + val +\\n '\\\" is invalid for argument \\\"value\\\"')\\n }\\n for (i = 0; i \u003C end - start; ++i) {\\n this[i + start] = bytes[i % len]\\n }\\n }\\n\\n return this\\n}\\n\\n// HELPER FUNCTIONS\\n// ================\\n\\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\\n\\nfunction base64clean (str) {\\n // Node takes equal signs as end of the Base64 encoding\\n str = str.split('=')[0]\\n // Node strips out invalid characters like \\\\n and \\\\t from the string, base64-js does not\\n str = str.trim().replace(INVALID_BASE64_RE, '')\\n // Node converts strings with length \u003C 2 to ''\\n if (str.length \u003C 2) return ''\\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\\n while (str.length % 4 !== 0) {\\n str = str + '='\\n }\\n return str\\n}\\n\\nfunction toHex (n) {\\n if (n \u003C 16) return '0' + n.toString(16)\\n return n.toString(16)\\n}\\n\\nfunction utf8ToBytes (string, units) {\\n units = units || Infinity\\n var codePoint\\n var length = string.length\\n var leadSurrogate = null\\n var bytes = []\\n\\n for (var i = 0; i \u003C length; ++i) {\\n codePoint = string.charCodeAt(i)\\n\\n // is surrogate component\\n if (codePoint > 0xD7FF && codePoint \u003C 0xE000) {\\n // last char was a lead\\n if (!leadSurrogate) {\\n // no lead yet\\n if (codePoint > 0xDBFF) {\\n // unexpected trail\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n } else if (i + 1 === length) {\\n // unpaired lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n }\\n\\n // valid lead\\n leadSurrogate = codePoint\\n\\n continue\\n }\\n\\n // 2 leads in a row\\n if (codePoint \u003C 0xDC00) {\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n leadSurrogate = codePoint\\n continue\\n }\\n\\n // valid surrogate pair\\n codePoint = (leadSurrogate - 0xD800 \u003C\u003C 10 | codePoint - 0xDC00) + 0x10000\\n } else if (leadSurrogate) {\\n // valid bmp char, but last char was a lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n }\\n\\n leadSurrogate = null\\n\\n // encode utf8\\n if (codePoint \u003C 0x80) {\\n if ((units -= 1) \u003C 0) break\\n bytes.push(codePoint)\\n } else if (codePoint \u003C 0x800) {\\n if ((units -= 2) \u003C 0) break\\n bytes.push(\\n codePoint >> 0x6 | 0xC0,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint \u003C 0x10000) {\\n if ((units -= 3) \u003C 0) break\\n bytes.push(\\n codePoint >> 0xC | 0xE0,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint \u003C 0x110000) {\\n if ((units -= 4) \u003C 0) break\\n bytes.push(\\n codePoint >> 0x12 | 0xF0,\\n codePoint >> 0xC & 0x3F | 0x80,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else {\\n throw new Error('Invalid code point')\\n }\\n }\\n\\n return bytes\\n}\\n\\nfunction asciiToBytes (str) {\\n var byteArray = []\\n for (var i = 0; i \u003C str.length; ++i) {\\n // Node's code seems to be doing this and not & 0x7F..\\n byteArray.push(str.charCodeAt(i) & 0xFF)\\n }\\n return byteArray\\n}\\n\\nfunction utf16leToBytes (str, units) {\\n var c, hi, lo\\n var byteArray = []\\n for (var i = 0; i \u003C str.length; ++i) {\\n if ((units -= 2) \u003C 0) break\\n\\n c = str.charCodeAt(i)\\n hi = c >> 8\\n lo = c % 256\\n byteArray.push(lo)\\n byteArray.push(hi)\\n }\\n\\n return byteArray\\n}\\n\\nfunction base64ToBytes (str) {\\n return base64.toByteArray(base64clean(str))\\n}\\n\\nfunction blitBuffer (src, dst, offset, length) {\\n for (var i = 0; i \u003C length; ++i) {\\n if ((i + offset >= dst.length) || (i >= src.length)) break\\n dst[i + offset] = src[i]\\n }\\n return i\\n}\\n\\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\\n// the `instanceof` check but they should be treated as of that type.\\n// See: https://github.com/feross/buffer/issues/166\\nfunction isInstance (obj, type) {\\n return obj instanceof type ||\\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\\n obj.constructor.name === type.name)\\n}\\nfunction numberIsNaN (obj) {\\n // For IE11 support\\n return obj !== obj // eslint-disable-line no-self-compare\\n}\\n\\n}).call(this,require(\\\"buffer\\\").Buffer)\\n},{\\\"base64-js\\\":4,\\\"buffer\\\":5,\\\"ieee754\\\":34}],6:[function(require,module,exports){\\n'use strict'\\n\\nconst mh = require('multihashes')\\nconst { Buffer } = require('buffer')\\nvar CIDUtil = {\\n /**\\n * Test if the given input is a valid CID object.\\n * Returns an error message if it is not.\\n * Returns undefined if it is a valid CID.\\n *\\n * @param {any} other\\n * @returns {string}\\n */\\n checkCIDComponents: function (other) {\\n if (other == null) {\\n return 'null values are not valid CIDs'\\n }\\n\\n if (!(other.version === 0 || other.version === 1)) {\\n return 'Invalid version, must be a number equal to 1 or 0'\\n }\\n\\n if (typeof other.codec !== 'string') {\\n return 'codec must be string'\\n }\\n\\n if (other.version === 0) {\\n if (other.codec !== 'dag-pb') {\\n return \\\"codec must be 'dag-pb' for CIDv0\\\"\\n }\\n if (other.multibaseName !== 'base58btc') {\\n return \\\"multibaseName must be 'base58btc' for CIDv0\\\"\\n }\\n }\\n\\n if (!Buffer.isBuffer(other.multihash)) {\\n return 'multihash must be a Buffer'\\n }\\n\\n try {\\n mh.validate(other.multihash)\\n } catch (err) {\\n let errorMsg = err.message\\n if (!errorMsg) { // Just in case mh.validate() throws an error with empty error message\\n errorMsg = 'Multihash validation failed'\\n }\\n return errorMsg\\n }\\n }\\n}\\n\\nmodule.exports = CIDUtil\\n\\n},{\\\"buffer\\\":5,\\\"multihashes\\\":62}],7:[function(require,module,exports){\\n'use strict'\\n\\nconst { Buffer } = require('buffer')\\nconst mh = require('multihashes')\\nconst multibase = require('multibase')\\nconst multicodec = require('multicodec')\\nconst codecs = require('multicodec/src/base-table.json')\\nconst CIDUtil = require('./cid-util')\\nconst withIs = require('class-is')\\n\\n/**\\n * @typedef {Object} SerializedCID\\n * @param {string} codec\\n * @param {number} version\\n * @param {Buffer} multihash\\n */\\n\\n/**\\n * Test if the given input is a CID.\\n * @function isCID\\n * @memberof CID\\n * @static\\n * @param {any} other\\n * @returns {bool}\\n */\\n\\n/**\\n * Class representing a CID `\u003Cmbase>\u003Cversion>\u003Cmcodec>\u003Cmhash>`\\n * , as defined in [ipld/cid](https://github.com/multiformats/cid).\\n * @class CID\\n */\\nclass CID {\\n /**\\n * Create a new CID.\\n *\\n * The algorithm for argument input is roughly:\\n * ```\\n * if (cid)\\n * -> create a copy\\n * else if (str)\\n * if (1st char is on multibase table) -> CID String\\n * else -> bs58 encoded multihash\\n * else if (Buffer)\\n * if (1st byte is 0 or 1) -> CID\\n * else -> multihash\\n * else if (Number)\\n * -> construct CID by parts\\n * ```\\n *\\n * @param {string|Buffer|CID} version\\n * @param {string} [codec]\\n * @param {Buffer} [multihash]\\n * @param {string} [multibaseName]\\n *\\n * @example\\n * new CID(\u003Cversion>, \u003Ccodec>, \u003Cmultihash>, \u003CmultibaseName>)\\n * new CID(\u003CcidStr>)\\n * new CID(\u003Ccid.buffer>)\\n * new CID(\u003Cmultihash>)\\n * new CID(\u003Cbs58 encoded multihash>)\\n * new CID(\u003Ccid>)\\n */\\n constructor (version, codec, multihash, multibaseName) {\\n if (_CID.isCID(version)) {\\n // version is an exising CID instance\\n const cid = version\\n this.version = cid.version\\n this.codec = cid.codec\\n this.multihash = Buffer.from(cid.multihash)\\n // Default guard for when a CID \u003C 0.7 is passed with no multibaseName\\n this.multibaseName = cid.multibaseName || (cid.version === 0 ? 'base58btc' : 'base32')\\n return\\n }\\n\\n if (typeof version === 'string') {\\n // e.g. 'base32' or false\\n const baseName = multibase.isEncoded(version)\\n if (baseName) {\\n // version is a CID String encoded with multibase, so v1\\n const cid = multibase.decode(version)\\n this.version = parseInt(cid.slice(0, 1).toString('hex'), 16)\\n this.codec = multicodec.getCodec(cid.slice(1))\\n this.multihash = multicodec.rmPrefix(cid.slice(1))\\n this.multibaseName = baseName\\n } else {\\n // version is a base58btc string multihash, so v0\\n this.version = 0\\n this.codec = 'dag-pb'\\n this.multihash = mh.fromB58String(version)\\n this.multibaseName = 'base58btc'\\n }\\n CID.validateCID(this)\\n Object.defineProperty(this, 'string', { value: version })\\n return\\n }\\n\\n if (Buffer.isBuffer(version)) {\\n const firstByte = version.slice(0, 1)\\n const v = parseInt(firstByte.toString('hex'), 16)\\n if (v === 1) {\\n // version is a CID buffer\\n const cid = version\\n this.version = v\\n this.codec = multicodec.getCodec(cid.slice(1))\\n this.multihash = multicodec.rmPrefix(cid.slice(1))\\n this.multibaseName = 'base32'\\n } else {\\n // version is a raw multihash buffer, so v0\\n this.version = 0\\n this.codec = 'dag-pb'\\n this.multihash = version\\n this.multibaseName = 'base58btc'\\n }\\n CID.validateCID(this)\\n return\\n }\\n\\n // otherwise, assemble the CID from the parameters\\n\\n /**\\n * @type {number}\\n */\\n this.version = version\\n\\n /**\\n * @type {string}\\n */\\n this.codec = codec\\n\\n /**\\n * @type {Buffer}\\n */\\n this.multihash = multihash\\n\\n /**\\n * @type {string}\\n */\\n this.multibaseName = multibaseName || (version === 0 ? 'base58btc' : 'base32')\\n\\n CID.validateCID(this)\\n }\\n\\n /**\\n * The CID as a `Buffer`\\n *\\n * @return {Buffer}\\n * @readonly\\n *\\n * @memberOf CID\\n */\\n get buffer () {\\n let buffer = this._buffer\\n\\n if (!buffer) {\\n if (this.version === 0) {\\n buffer = this.multihash\\n } else if (this.version === 1) {\\n buffer = Buffer.concat([\\n Buffer.from('01', 'hex'),\\n multicodec.getCodeVarint(this.codec),\\n this.multihash\\n ])\\n } else {\\n throw new Error('unsupported version')\\n }\\n\\n // Cache this buffer so it doesn't have to be recreated\\n Object.defineProperty(this, '_buffer', { value: buffer })\\n }\\n\\n return buffer\\n }\\n\\n /**\\n * Get the prefix of the CID.\\n *\\n * @returns {Buffer}\\n * @readonly\\n */\\n get prefix () {\\n return Buffer.concat([\\n Buffer.from(`0${this.version}`, 'hex'),\\n multicodec.getCodeVarint(this.codec),\\n mh.prefix(this.multihash)\\n ])\\n }\\n\\n /**\\n * Convert to a CID of version `0`.\\n *\\n * @returns {CID}\\n */\\n toV0 () {\\n if (this.codec !== 'dag-pb') {\\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\\n }\\n\\n const { name, length } = mh.decode(this.multihash)\\n\\n if (name !== 'sha2-256') {\\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\\n }\\n\\n if (length !== 32) {\\n throw new Error('Cannot convert non 32 byte multihash CID to CIDv0')\\n }\\n\\n return new _CID(0, this.codec, this.multihash)\\n }\\n\\n /**\\n * Convert to a CID of version `1`.\\n *\\n * @returns {CID}\\n */\\n toV1 () {\\n return new _CID(1, this.codec, this.multihash)\\n }\\n\\n /**\\n * Encode the CID into a string.\\n *\\n * @param {string} [base=this.multibaseName] - Base encoding to use.\\n * @returns {string}\\n */\\n toBaseEncodedString (base = this.multibaseName) {\\n if (this.string && base === this.multibaseName) {\\n return this.string\\n }\\n let str = null\\n if (this.version === 0) {\\n if (base !== 'base58btc') {\\n throw new Error('not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()')\\n }\\n str = mh.toB58String(this.multihash)\\n } else if (this.version === 1) {\\n str = multibase.encode(base, this.buffer).toString()\\n } else {\\n throw new Error('unsupported version')\\n }\\n if (base === this.multibaseName) {\\n // cache the string value\\n Object.defineProperty(this, 'string', { value: str })\\n }\\n return str\\n }\\n\\n /**\\n * CID(QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n)\\n *\\n * @returns {String}\\n */\\n [Symbol.for('nodejs.util.inspect.custom')] () {\\n return 'CID(' + this.toString() + ')'\\n }\\n\\n toString (base) {\\n return this.toBaseEncodedString(base)\\n }\\n\\n /**\\n * Serialize to a plain object.\\n *\\n * @returns {SerializedCID}\\n */\\n toJSON () {\\n return {\\n codec: this.codec,\\n version: this.version,\\n hash: this.multihash\\n }\\n }\\n\\n /**\\n * Compare equality with another CID.\\n *\\n * @param {CID} other\\n * @returns {bool}\\n */\\n equals (other) {\\n return this.codec === other.codec &&\\n this.version === other.version &&\\n this.multihash.equals(other.multihash)\\n }\\n\\n /**\\n * Test if the given input is a valid CID object.\\n * Throws if it is not.\\n *\\n * @param {any} other\\n * @returns {void}\\n */\\n static validateCID (other) {\\n const errorMsg = CIDUtil.checkCIDComponents(other)\\n if (errorMsg) {\\n throw new Error(errorMsg)\\n }\\n }\\n}\\n\\nconst _CID = withIs(CID, {\\n className: 'CID',\\n symbolName: '@ipld/js-cid/CID'\\n})\\n\\n_CID.codecs = codecs\\n\\nmodule.exports = _CID\\n\\n},{\\\"./cid-util\\\":6,\\\"buffer\\\":5,\\\"class-is\\\":8,\\\"multibase\\\":53,\\\"multicodec\\\":56,\\\"multicodec/src/base-table.json\\\":54,\\\"multihashes\\\":62}],8:[function(require,module,exports){\\n'use strict';\\n\\nfunction withIs(Class, { className, symbolName }) {\\n const symbol = Symbol.for(symbolName);\\n\\n const ClassIsWrapper = {\\n // The code below assigns the class wrapper to an object to trick\\n // JavaScript engines to show the name of the extended class when\\n // logging an instances.\\n // We are assigning an anonymous class (class wrapper) to the object\\n // with key `className` to keep the correct name.\\n // If this is not supported it falls back to logging `ClassIsWrapper`.\\n [className]: class extends Class {\\n constructor(...args) {\\n super(...args);\\n Object.defineProperty(this, symbol, { value: true });\\n }\\n\\n get [Symbol.toStringTag]() {\\n return className;\\n }\\n },\\n }[className];\\n\\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\\n\\n return ClassIsWrapper;\\n}\\n\\nfunction withIsProto(Class, { className, symbolName, withoutNew }) {\\n const symbol = Symbol.for(symbolName);\\n\\n /* eslint-disable object-shorthand */\\n const ClassIsWrapper = {\\n [className]: function (...args) {\\n if (withoutNew && !(this instanceof ClassIsWrapper)) {\\n return new ClassIsWrapper(...args);\\n }\\n\\n const _this = Class.call(this, ...args) || this;\\n\\n if (_this && !_this[symbol]) {\\n Object.defineProperty(_this, symbol, { value: true });\\n }\\n\\n return _this;\\n },\\n }[className];\\n /* eslint-enable object-shorthand */\\n\\n ClassIsWrapper.prototype = Object.create(Class.prototype);\\n ClassIsWrapper.prototype.constructor = ClassIsWrapper;\\n\\n Object.defineProperty(ClassIsWrapper.prototype, Symbol.toStringTag, {\\n get() {\\n return className;\\n },\\n });\\n\\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\\n\\n return ClassIsWrapper;\\n}\\n\\nmodule.exports = withIs;\\nmodule.exports.proto = withIsProto;\\n\\n},{}],9:[function(require,module,exports){\\nmodule.exports={\\n \\\"identity\\\": 0,\\n \\\"ip4\\\": 4,\\n \\\"tcp\\\": 6,\\n \\\"sha1\\\": 17,\\n \\\"sha2-256\\\": 18,\\n \\\"sha2-512\\\": 19,\\n \\\"sha3-512\\\": 20,\\n \\\"sha3-384\\\": 21,\\n \\\"sha3-256\\\": 22,\\n \\\"sha3-224\\\": 23,\\n \\\"shake-128\\\": 24,\\n \\\"shake-256\\\": 25,\\n \\\"keccak-224\\\": 26,\\n \\\"keccak-256\\\": 27,\\n \\\"keccak-384\\\": 28,\\n \\\"keccak-512\\\": 29,\\n \\\"dccp\\\": 33,\\n \\\"murmur3-128\\\": 34,\\n \\\"murmur3-32\\\": 35,\\n \\\"ip6\\\": 41,\\n \\\"ip6zone\\\": 42,\\n \\\"path\\\": 47,\\n \\\"multicodec\\\": 48,\\n \\\"multihash\\\": 49,\\n \\\"multiaddr\\\": 50,\\n \\\"multibase\\\": 51,\\n \\\"dns\\\": 53,\\n \\\"dns4\\\": 54,\\n \\\"dns6\\\": 55,\\n \\\"dnsaddr\\\": 56,\\n \\\"protobuf\\\": 80,\\n \\\"cbor\\\": 81,\\n \\\"raw\\\": 85,\\n \\\"dbl-sha2-256\\\": 86,\\n \\\"rlp\\\": 96,\\n \\\"bencode\\\": 99,\\n \\\"dag-pb\\\": 112,\\n \\\"dag-cbor\\\": 113,\\n \\\"libp2p-key\\\": 114,\\n \\\"git-raw\\\": 120,\\n \\\"torrent-info\\\": 123,\\n \\\"torrent-file\\\": 124,\\n \\\"leofcoin-block\\\": 129,\\n \\\"leofcoin-tx\\\": 130,\\n \\\"leofcoin-pr\\\": 131,\\n \\\"sctp\\\": 132,\\n \\\"eth-block\\\": 144,\\n \\\"eth-block-list\\\": 145,\\n \\\"eth-tx-trie\\\": 146,\\n \\\"eth-tx\\\": 147,\\n \\\"eth-tx-receipt-trie\\\": 148,\\n \\\"eth-tx-receipt\\\": 149,\\n \\\"eth-state-trie\\\": 150,\\n \\\"eth-account-snapshot\\\": 151,\\n \\\"eth-storage-trie\\\": 152,\\n \\\"bitcoin-block\\\": 176,\\n \\\"bitcoin-tx\\\": 177,\\n \\\"zcash-block\\\": 192,\\n \\\"zcash-tx\\\": 193,\\n \\\"stellar-block\\\": 208,\\n \\\"stellar-tx\\\": 209,\\n \\\"md4\\\": 212,\\n \\\"md5\\\": 213,\\n \\\"bmt\\\": 214,\\n \\\"decred-block\\\": 224,\\n \\\"decred-tx\\\": 225,\\n \\\"ipld-ns\\\": 226,\\n \\\"ipfs-ns\\\": 227,\\n \\\"swarm-ns\\\": 228,\\n \\\"ipns-ns\\\": 229,\\n \\\"zeronet\\\": 230,\\n \\\"ed25519-pub\\\": 237,\\n \\\"dash-block\\\": 240,\\n \\\"dash-tx\\\": 241,\\n \\\"swarm-manifest\\\": 250,\\n \\\"swarm-feed\\\": 251,\\n \\\"udp\\\": 273,\\n \\\"p2p-webrtc-star\\\": 275,\\n \\\"p2p-webrtc-direct\\\": 276,\\n \\\"p2p-stardust\\\": 277,\\n \\\"p2p-circuit\\\": 290,\\n \\\"dag-json\\\": 297,\\n \\\"udt\\\": 301,\\n \\\"utp\\\": 302,\\n \\\"unix\\\": 400,\\n \\\"p2p\\\": 421,\\n \\\"ipfs\\\": 421,\\n \\\"https\\\": 443,\\n \\\"onion\\\": 444,\\n \\\"onion3\\\": 445,\\n \\\"garlic64\\\": 446,\\n \\\"garlic32\\\": 447,\\n \\\"tls\\\": 448,\\n \\\"quic\\\": 460,\\n \\\"ws\\\": 477,\\n \\\"wss\\\": 478,\\n \\\"p2p-websocket-star\\\": 479,\\n \\\"http\\\": 480,\\n \\\"json\\\": 512,\\n \\\"messagepack\\\": 513,\\n \\\"x11\\\": 4352,\\n \\\"blake2b-8\\\": 45569,\\n \\\"blake2b-16\\\": 45570,\\n \\\"blake2b-24\\\": 45571,\\n \\\"blake2b-32\\\": 45572,\\n \\\"blake2b-40\\\": 45573,\\n \\\"blake2b-48\\\": 45574,\\n \\\"blake2b-56\\\": 45575,\\n \\\"blake2b-64\\\": 45576,\\n \\\"blake2b-72\\\": 45577,\\n \\\"blake2b-80\\\": 45578,\\n \\\"blake2b-88\\\": 45579,\\n \\\"blake2b-96\\\": 45580,\\n \\\"blake2b-104\\\": 45581,\\n \\\"blake2b-112\\\": 45582,\\n \\\"blake2b-120\\\": 45583,\\n \\\"blake2b-128\\\": 45584,\\n \\\"blake2b-136\\\": 45585,\\n \\\"blake2b-144\\\": 45586,\\n \\\"blake2b-152\\\": 45587,\\n \\\"blake2b-160\\\": 45588,\\n \\\"blake2b-168\\\": 45589,\\n \\\"blake2b-176\\\": 45590,\\n \\\"blake2b-184\\\": 45591,\\n \\\"blake2b-192\\\": 45592,\\n \\\"blake2b-200\\\": 45593,\\n \\\"blake2b-208\\\": 45594,\\n \\\"blake2b-216\\\": 45595,\\n \\\"blake2b-224\\\": 45596,\\n \\\"blake2b-232\\\": 45597,\\n \\\"blake2b-240\\\": 45598,\\n \\\"blake2b-248\\\": 45599,\\n \\\"blake2b-256\\\": 45600,\\n \\\"blake2b-264\\\": 45601,\\n \\\"blake2b-272\\\": 45602,\\n \\\"blake2b-280\\\": 45603,\\n \\\"blake2b-288\\\": 45604,\\n \\\"blake2b-296\\\": 45605,\\n \\\"blake2b-304\\\": 45606,\\n \\\"blake2b-312\\\": 45607,\\n \\\"blake2b-320\\\": 45608,\\n \\\"blake2b-328\\\": 45609,\\n \\\"blake2b-336\\\": 45610,\\n \\\"blake2b-344\\\": 45611,\\n \\\"blake2b-352\\\": 45612,\\n \\\"blake2b-360\\\": 45613,\\n \\\"blake2b-368\\\": 45614,\\n \\\"blake2b-376\\\": 45615,\\n \\\"blake2b-384\\\": 45616,\\n \\\"blake2b-392\\\": 45617,\\n \\\"blake2b-400\\\": 45618,\\n \\\"blake2b-408\\\": 45619,\\n \\\"blake2b-416\\\": 45620,\\n \\\"blake2b-424\\\": 45621,\\n \\\"blake2b-432\\\": 45622,\\n \\\"blake2b-440\\\": 45623,\\n \\\"blake2b-448\\\": 45624,\\n \\\"blake2b-456\\\": 45625,\\n \\\"blake2b-464\\\": 45626,\\n \\\"blake2b-472\\\": 45627,\\n \\\"blake2b-480\\\": 45628,\\n \\\"blake2b-488\\\": 45629,\\n \\\"blake2b-496\\\": 45630,\\n \\\"blake2b-504\\\": 45631,\\n \\\"blake2b-512\\\": 45632,\\n \\\"blake2s-8\\\": 45633,\\n \\\"blake2s-16\\\": 45634,\\n \\\"blake2s-24\\\": 45635,\\n \\\"blake2s-32\\\": 45636,\\n \\\"blake2s-40\\\": 45637,\\n \\\"blake2s-48\\\": 45638,\\n \\\"blake2s-56\\\": 45639,\\n \\\"blake2s-64\\\": 45640,\\n \\\"blake2s-72\\\": 45641,\\n \\\"blake2s-80\\\": 45642,\\n \\\"blake2s-88\\\": 45643,\\n \\\"blake2s-96\\\": 45644,\\n \\\"blake2s-104\\\": 45645,\\n \\\"blake2s-112\\\": 45646,\\n \\\"blake2s-120\\\": 45647,\\n \\\"blake2s-128\\\": 45648,\\n \\\"blake2s-136\\\": 45649,\\n \\\"blake2s-144\\\": 45650,\\n \\\"blake2s-152\\\": 45651,\\n \\\"blake2s-160\\\": 45652,\\n \\\"blake2s-168\\\": 45653,\\n \\\"blake2s-176\\\": 45654,\\n \\\"blake2s-184\\\": 45655,\\n \\\"blake2s-192\\\": 45656,\\n \\\"blake2s-200\\\": 45657,\\n \\\"blake2s-208\\\": 45658,\\n \\\"blake2s-216\\\": 45659,\\n \\\"blake2s-224\\\": 45660,\\n \\\"blake2s-232\\\": 45661,\\n \\\"blake2s-240\\\": 45662,\\n \\\"blake2s-248\\\": 45663,\\n \\\"blake2s-256\\\": 45664,\\n \\\"skein256-8\\\": 45825,\\n \\\"skein256-16\\\": 45826,\\n \\\"skein256-24\\\": 45827,\\n \\\"skein256-32\\\": 45828,\\n \\\"skein256-40\\\": 45829,\\n \\\"skein256-48\\\": 45830,\\n \\\"skein256-56\\\": 45831,\\n \\\"skein256-64\\\": 45832,\\n \\\"skein256-72\\\": 45833,\\n \\\"skein256-80\\\": 45834,\\n \\\"skein256-88\\\": 45835,\\n \\\"skein256-96\\\": 45836,\\n \\\"skein256-104\\\": 45837,\\n \\\"skein256-112\\\": 45838,\\n \\\"skein256-120\\\": 45839,\\n \\\"skein256-128\\\": 45840,\\n \\\"skein256-136\\\": 45841,\\n \\\"skein256-144\\\": 45842,\\n \\\"skein256-152\\\": 45843,\\n \\\"skein256-160\\\": 45844,\\n \\\"skein256-168\\\": 45845,\\n \\\"skein256-176\\\": 45846,\\n \\\"skein256-184\\\": 45847,\\n \\\"skein256-192\\\": 45848,\\n \\\"skein256-200\\\": 45849,\\n \\\"skein256-208\\\": 45850,\\n \\\"skein256-216\\\": 45851,\\n \\\"skein256-224\\\": 45852,\\n \\\"skein256-232\\\": 45853,\\n \\\"skein256-240\\\": 45854,\\n \\\"skein256-248\\\": 45855,\\n \\\"skein256-256\\\": 45856,\\n \\\"skein512-8\\\": 45857,\\n \\\"skein512-16\\\": 45858,\\n \\\"skein512-24\\\": 45859,\\n \\\"skein512-32\\\": 45860,\\n \\\"skein512-40\\\": 45861,\\n \\\"skein512-48\\\": 45862,\\n \\\"skein512-56\\\": 45863,\\n \\\"skein512-64\\\": 45864,\\n \\\"skein512-72\\\": 45865,\\n \\\"skein512-80\\\": 45866,\\n \\\"skein512-88\\\": 45867,\\n \\\"skein512-96\\\": 45868,\\n \\\"skein512-104\\\": 45869,\\n \\\"skein512-112\\\": 45870,\\n \\\"skein512-120\\\": 45871,\\n \\\"skein512-128\\\": 45872,\\n \\\"skein512-136\\\": 45873,\\n \\\"skein512-144\\\": 45874,\\n \\\"skein512-152\\\": 45875,\\n \\\"skein512-160\\\": 45876,\\n \\\"skein512-168\\\": 45877,\\n \\\"skein512-176\\\": 45878,\\n \\\"skein512-184\\\": 45879,\\n \\\"skein512-192\\\": 45880,\\n \\\"skein512-200\\\": 45881,\\n \\\"skein512-208\\\": 45882,\\n \\\"skein512-216\\\": 45883,\\n \\\"skein512-224\\\": 45884,\\n \\\"skein512-232\\\": 45885,\\n \\\"skein512-240\\\": 45886,\\n \\\"skein512-248\\\": 45887,\\n \\\"skein512-256\\\": 45888,\\n \\\"skein512-264\\\": 45889,\\n \\\"skein512-272\\\": 45890,\\n \\\"skein512-280\\\": 45891,\\n \\\"skein512-288\\\": 45892,\\n \\\"skein512-296\\\": 45893,\\n \\\"skein512-304\\\": 45894,\\n \\\"skein512-312\\\": 45895,\\n \\\"skein512-320\\\": 45896,\\n \\\"skein512-328\\\": 45897,\\n \\\"skein512-336\\\": 45898,\\n \\\"skein512-344\\\": 45899,\\n \\\"skein512-352\\\": 45900,\\n \\\"skein512-360\\\": 45901,\\n \\\"skein512-368\\\": 45902,\\n \\\"skein512-376\\\": 45903,\\n \\\"skein512-384\\\": 45904,\\n \\\"skein512-392\\\": 45905,\\n \\\"skein512-400\\\": 45906,\\n \\\"skein512-408\\\": 45907,\\n \\\"skein512-416\\\": 45908,\\n \\\"skein512-424\\\": 45909,\\n \\\"skein512-432\\\": 45910,\\n \\\"skein512-440\\\": 45911,\\n \\\"skein512-448\\\": 45912,\\n \\\"skein512-456\\\": 45913,\\n \\\"skein512-464\\\": 45914,\\n \\\"skein512-472\\\": 45915,\\n \\\"skein512-480\\\": 45916,\\n \\\"skein512-488\\\": 45917,\\n \\\"skein512-496\\\": 45918,\\n \\\"skein512-504\\\": 45919,\\n \\\"skein512-512\\\": 45920,\\n \\\"skein1024-8\\\": 45921,\\n \\\"skein1024-16\\\": 45922,\\n \\\"skein1024-24\\\": 45923,\\n \\\"skein1024-32\\\": 45924,\\n \\\"skein1024-40\\\": 45925,\\n \\\"skein1024-48\\\": 45926,\\n \\\"skein1024-56\\\": 45927,\\n \\\"skein1024-64\\\": 45928,\\n \\\"skein1024-72\\\": 45929,\\n \\\"skein1024-80\\\": 45930,\\n \\\"skein1024-88\\\": 45931,\\n \\\"skein1024-96\\\": 45932,\\n \\\"skein1024-104\\\": 45933,\\n \\\"skein1024-112\\\": 45934,\\n \\\"skein1024-120\\\": 45935,\\n \\\"skein1024-128\\\": 45936,\\n \\\"skein1024-136\\\": 45937,\\n \\\"skein1024-144\\\": 45938,\\n \\\"skein1024-152\\\": 45939,\\n \\\"skein1024-160\\\": 45940,\\n \\\"skein1024-168\\\": 45941,\\n \\\"skein1024-176\\\": 45942,\\n \\\"skein1024-184\\\": 45943,\\n \\\"skein1024-192\\\": 45944,\\n \\\"skein1024-200\\\": 45945,\\n \\\"skein1024-208\\\": 45946,\\n \\\"skein1024-216\\\": 45947,\\n \\\"skein1024-224\\\": 45948,\\n \\\"skein1024-232\\\": 45949,\\n \\\"skein1024-240\\\": 45950,\\n \\\"skein1024-248\\\": 45951,\\n \\\"skein1024-256\\\": 45952,\\n \\\"skein1024-264\\\": 45953,\\n \\\"skein1024-272\\\": 45954,\\n \\\"skein1024-280\\\": 45955,\\n \\\"skein1024-288\\\": 45956,\\n \\\"skein1024-296\\\": 45957,\\n \\\"skein1024-304\\\": 45958,\\n \\\"skein1024-312\\\": 45959,\\n \\\"skein1024-320\\\": 45960,\\n \\\"skein1024-328\\\": 45961,\\n \\\"skein1024-336\\\": 45962,\\n \\\"skein1024-344\\\": 45963,\\n \\\"skein1024-352\\\": 45964,\\n \\\"skein1024-360\\\": 45965,\\n \\\"skein1024-368\\\": 45966,\\n \\\"skein1024-376\\\": 45967,\\n \\\"skein1024-384\\\": 45968,\\n \\\"skein1024-392\\\": 45969,\\n \\\"skein1024-400\\\": 45970,\\n \\\"skein1024-408\\\": 45971,\\n \\\"skein1024-416\\\": 45972,\\n \\\"skein1024-424\\\": 45973,\\n \\\"skein1024-432\\\": 45974,\\n \\\"skein1024-440\\\": 45975,\\n \\\"skein1024-448\\\": 45976,\\n \\\"skein1024-456\\\": 45977,\\n \\\"skein1024-464\\\": 45978,\\n \\\"skein1024-472\\\": 45979,\\n \\\"skein1024-480\\\": 45980,\\n \\\"skein1024-488\\\": 45981,\\n \\\"skein1024-496\\\": 45982,\\n \\\"skein1024-504\\\": 45983,\\n \\\"skein1024-512\\\": 45984,\\n \\\"skein1024-520\\\": 45985,\\n \\\"skein1024-528\\\": 45986,\\n \\\"skein1024-536\\\": 45987,\\n \\\"skein1024-544\\\": 45988,\\n \\\"skein1024-552\\\": 45989,\\n \\\"skein1024-560\\\": 45990,\\n \\\"skein1024-568\\\": 45991,\\n \\\"skein1024-576\\\": 45992,\\n \\\"skein1024-584\\\": 45993,\\n \\\"skein1024-592\\\": 45994,\\n \\\"skein1024-600\\\": 45995,\\n \\\"skein1024-608\\\": 45996,\\n \\\"skein1024-616\\\": 45997,\\n \\\"skein1024-624\\\": 45998,\\n \\\"skein1024-632\\\": 45999,\\n \\\"skein1024-640\\\": 46000,\\n \\\"skein1024-648\\\": 46001,\\n \\\"skein1024-656\\\": 46002,\\n \\\"skein1024-664\\\": 46003,\\n \\\"skein1024-672\\\": 46004,\\n \\\"skein1024-680\\\": 46005,\\n \\\"skein1024-688\\\": 46006,\\n \\\"skein1024-696\\\": 46007,\\n \\\"skein1024-704\\\": 46008,\\n \\\"skein1024-712\\\": 46009,\\n \\\"skein1024-720\\\": 46010,\\n \\\"skein1024-728\\\": 46011,\\n \\\"skein1024-736\\\": 46012,\\n \\\"skein1024-744\\\": 46013,\\n \\\"skein1024-752\\\": 46014,\\n \\\"skein1024-760\\\": 46015,\\n \\\"skein1024-768\\\": 46016,\\n \\\"skein1024-776\\\": 46017,\\n \\\"skein1024-784\\\": 46018,\\n \\\"skein1024-792\\\": 46019,\\n \\\"skein1024-800\\\": 46020,\\n \\\"skein1024-808\\\": 46021,\\n \\\"skein1024-816\\\": 46022,\\n \\\"skein1024-824\\\": 46023,\\n \\\"skein1024-832\\\": 46024,\\n \\\"skein1024-840\\\": 46025,\\n \\\"skein1024-848\\\": 46026,\\n \\\"skein1024-856\\\": 46027,\\n \\\"skein1024-864\\\": 46028,\\n \\\"skein1024-872\\\": 46029,\\n \\\"skein1024-880\\\": 46030,\\n \\\"skein1024-888\\\": 46031,\\n \\\"skein1024-896\\\": 46032,\\n \\\"skein1024-904\\\": 46033,\\n \\\"skein1024-912\\\": 46034,\\n \\\"skein1024-920\\\": 46035,\\n \\\"skein1024-928\\\": 46036,\\n \\\"skein1024-936\\\": 46037,\\n \\\"skein1024-944\\\": 46038,\\n \\\"skein1024-952\\\": 46039,\\n \\\"skein1024-960\\\": 46040,\\n \\\"skein1024-968\\\": 46041,\\n \\\"skein1024-976\\\": 46042,\\n \\\"skein1024-984\\\": 46043,\\n \\\"skein1024-992\\\": 46044,\\n \\\"skein1024-1000\\\": 46045,\\n \\\"skein1024-1008\\\": 46046,\\n \\\"skein1024-1016\\\": 46047,\\n \\\"skein1024-1024\\\": 46048,\\n \\\"holochain-adr-v0\\\": 8417572,\\n \\\"holochain-adr-v1\\\": 8483108,\\n \\\"holochain-key-v0\\\": 9728292,\\n \\\"holochain-key-v1\\\": 9793828,\\n \\\"holochain-sig-v0\\\": 10645796,\\n \\\"holochain-sig-v1\\\": 10711332\\n}\\n},{}],10:[function(require,module,exports){\\n'use strict'\\n\\nconst table = require('./base-table.json')\\n\\n// map for codecConstant -> code\\nconst constants = {}\\n\\nfor (const [name, code] of Object.entries(table)) {\\n constants[name.toUpperCase().replace(/-/g, '_')] = code\\n}\\n\\nmodule.exports = Object.freeze(constants)\\n\\n},{\\\"./base-table.json\\\":9}],11:[function(require,module,exports){\\n/**\\n * Implementation of the multicodec specification.\\n *\\n * @module multicodec\\n * @example\\n * const multicodec = require('multicodec')\\n *\\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\\n * // prefixedProtobuf 0x50...\\n *\\n */\\n'use strict'\\n\\nconst { Buffer } = require('buffer')\\nconst varint = require('varint')\\nconst intTable = require('./int-table')\\nconst codecNameToCodeVarint = require('./varint-table')\\nconst util = require('./util')\\n\\nexports = module.exports\\n\\n/**\\n * Prefix a buffer with a multicodec-packed.\\n *\\n * @param {string|number} multicodecStrOrCode\\n * @param {Buffer} data\\n * @returns {Buffer}\\n */\\nexports.addPrefix = (multicodecStrOrCode, data) => {\\n let prefix\\n\\n if (Buffer.isBuffer(multicodecStrOrCode)) {\\n prefix = util.varintBufferEncode(multicodecStrOrCode)\\n } else {\\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\\n } else {\\n throw new Error('multicodec not recognized')\\n }\\n }\\n return Buffer.concat([prefix, data])\\n}\\n\\n/**\\n * Decapsulate the multicodec-packed prefix from the data.\\n *\\n * @param {Buffer} data\\n * @returns {Buffer}\\n */\\nexports.rmPrefix = (data) => {\\n varint.decode(data)\\n return data.slice(varint.decode.bytes)\\n}\\n\\n/**\\n * Get the codec of the prefixed data.\\n * @param {Buffer} prefixedData\\n * @returns {string}\\n */\\nexports.getCodec = (prefixedData) => {\\n const code = varint.decode(prefixedData)\\n const codecName = intTable.get(code)\\n if (codecName === undefined) {\\n throw new Error(`Code ${code} not found`)\\n }\\n return codecName\\n}\\n\\n/**\\n * Get the name of the codec.\\n * @param {number} codec\\n * @returns {string}\\n */\\nexports.getName = (codec) => {\\n return intTable.get(codec)\\n}\\n\\n/**\\n * Get the code of the codec\\n * @param {string} name\\n * @returns {number}\\n */\\nexports.getNumber = (name) => {\\n const code = codecNameToCodeVarint[name]\\n if (code === undefined) {\\n throw new Error('Codec `' + name + '` not found')\\n }\\n return util.varintBufferDecode(code)[0]\\n}\\n\\n/**\\n * Get the code of the prefixed data.\\n * @param {Buffer} prefixedData\\n * @returns {number}\\n */\\nexports.getCode = (prefixedData) => {\\n return varint.decode(prefixedData)\\n}\\n\\n/**\\n * Get the code as varint of a codec name.\\n * @param {string} codecName\\n * @returns {Buffer}\\n */\\nexports.getCodeVarint = (codecName) => {\\n const code = codecNameToCodeVarint[codecName]\\n if (code === undefined) {\\n throw new Error('Codec `' + codecName + '` not found')\\n }\\n return code\\n}\\n\\n/**\\n * Get the varint of a code.\\n * @param {Number} code\\n * @returns {Array.\u003Cnumber>}\\n */\\nexports.getVarint = (code) => {\\n return varint.encode(code)\\n}\\n\\n// Make the constants top-level constants\\nconst constants = require('./constants')\\nObject.assign(exports, constants)\\n\\n// Human friendly names for printing, e.g. in error messages\\nexports.print = require('./print')\\n\\n},{\\\"./constants\\\":10,\\\"./int-table\\\":12,\\\"./print\\\":13,\\\"./util\\\":14,\\\"./varint-table\\\":15,\\\"buffer\\\":5,\\\"varint\\\":67}],12:[function(require,module,exports){\\n'use strict'\\nconst baseTable = require('./base-table.json')\\n\\n// map for hexString -> codecName\\nconst nameTable = new Map()\\n\\nfor (const encodingName in baseTable) {\\n const code = baseTable[encodingName]\\n nameTable.set(code, encodingName)\\n}\\n\\nmodule.exports = Object.freeze(nameTable)\\n\\n},{\\\"./base-table.json\\\":9}],13:[function(require,module,exports){\\n'use strict'\\n\\nconst table = require('./base-table.json')\\n\\n// map for code -> print friendly name\\nconst tableByCode = {}\\n\\nfor (const [name, code] of Object.entries(table)) {\\n if (tableByCode[code] === undefined) tableByCode[code] = name\\n}\\n\\nmodule.exports = Object.freeze(tableByCode)\\n\\n},{\\\"./base-table.json\\\":9}],14:[function(require,module,exports){\\n'use strict'\\nconst varint = require('varint')\\nconst { Buffer } = require('buffer')\\n\\nmodule.exports = {\\n numberToBuffer,\\n bufferToNumber,\\n varintBufferEncode,\\n varintBufferDecode,\\n varintEncode\\n}\\n\\nfunction bufferToNumber (buf) {\\n return parseInt(buf.toString('hex'), 16)\\n}\\n\\nfunction numberToBuffer (num) {\\n let hexString = num.toString(16)\\n if (hexString.length % 2 === 1) {\\n hexString = '0' + hexString\\n }\\n return Buffer.from(hexString, 'hex')\\n}\\n\\nfunction varintBufferEncode (input) {\\n return Buffer.from(varint.encode(bufferToNumber(input)))\\n}\\n\\nfunction varintBufferDecode (input) {\\n return numberToBuffer(varint.decode(input))\\n}\\n\\nfunction varintEncode (num) {\\n return Buffer.from(varint.encode(num))\\n}\\n\\n},{\\\"buffer\\\":5,\\\"varint\\\":67}],15:[function(require,module,exports){\\n'use strict'\\n\\nconst baseTable = require('./base-table.json')\\nconst varintEncode = require('./util').varintEncode\\n\\n// map for codecName -> codeVarintBuffer\\nconst varintTable = {}\\n\\nfor (const encodingName in baseTable) {\\n const code = baseTable[encodingName]\\n varintTable[encodingName] = varintEncode(code)\\n}\\n\\nmodule.exports = Object.freeze(varintTable)\\n\\n},{\\\"./base-table.json\\\":9,\\\"./util\\\":14}],16:[function(require,module,exports){\\narguments[4][6][0].apply(exports,arguments)\\n},{\\\"buffer\\\":5,\\\"dup\\\":6,\\\"multihashes\\\":62}],17:[function(require,module,exports){\\narguments[4][7][0].apply(exports,arguments)\\n},{\\\"./cid-util\\\":16,\\\"buffer\\\":5,\\\"class-is\\\":8,\\\"dup\\\":7,\\\"multibase\\\":23,\\\"multicodec\\\":11,\\\"multicodec/src/base-table.json\\\":9,\\\"multihashes\\\":62}],18:[function(require,module,exports){\\n'use strict'\\n\\nclass Base {\\n constructor (name, code, implementation, alphabet) {\\n this.name = name\\n this.code = code\\n this.alphabet = alphabet\\n if (implementation && alphabet) {\\n this.engine = implementation(alphabet)\\n }\\n }\\n\\n encode (stringOrBuffer) {\\n return this.engine.encode(stringOrBuffer)\\n }\\n\\n decode (stringOrBuffer) {\\n return this.engine.decode(stringOrBuffer)\\n }\\n\\n isImplemented () {\\n return this.engine\\n }\\n}\\n\\nmodule.exports = Base\\n\\n},{}],19:[function(require,module,exports){\\n'use strict'\\nconst { Buffer } = require('buffer')\\n\\nmodule.exports = function base16 (alphabet) {\\n return {\\n encode (input) {\\n if (typeof input === 'string') {\\n return Buffer.from(input).toString('hex')\\n }\\n return input.toString('hex')\\n },\\n decode (input) {\\n for (const char of input) {\\n if (alphabet.indexOf(char) \u003C 0) {\\n throw new Error('invalid base16 character')\\n }\\n }\\n return Buffer.from(input, 'hex')\\n }\\n }\\n}\\n\\n},{\\\"buffer\\\":5}],20:[function(require,module,exports){\\n'use strict'\\n\\nfunction decode (input, alphabet) {\\n input = input.replace(new RegExp('=', 'g'), '')\\n const length = input.length\\n\\n let bits = 0\\n let value = 0\\n\\n let index = 0\\n const output = new Uint8Array((length * 5 / 8) | 0)\\n\\n for (let i = 0; i \u003C length; i++) {\\n value = (value \u003C\u003C 5) | alphabet.indexOf(input[i])\\n bits += 5\\n\\n if (bits >= 8) {\\n output[index++] = (value >>> (bits - 8)) & 255\\n bits -= 8\\n }\\n }\\n\\n return output.buffer\\n}\\n\\nfunction encode (buffer, alphabet) {\\n const length = buffer.byteLength\\n const view = new Uint8Array(buffer)\\n const padding = alphabet.indexOf('=') === alphabet.length - 1\\n\\n if (padding) {\\n alphabet = alphabet.substring(0, alphabet.length - 1)\\n }\\n\\n let bits = 0\\n let value = 0\\n let output = ''\\n\\n for (let i = 0; i \u003C length; i++) {\\n value = (value \u003C\u003C 8) | view[i]\\n bits += 8\\n\\n while (bits >= 5) {\\n output += alphabet[(value >>> (bits - 5)) & 31]\\n bits -= 5\\n }\\n }\\n\\n if (bits > 0) {\\n output += alphabet[(value \u003C\u003C (5 - bits)) & 31]\\n }\\n\\n if (padding) {\\n while ((output.length % 8) !== 0) {\\n output += '='\\n }\\n }\\n\\n return output\\n}\\n\\nmodule.exports = function base32 (alphabet) {\\n return {\\n encode (input) {\\n if (typeof input === 'string') {\\n return encode(Uint8Array.from(input), alphabet)\\n }\\n\\n return encode(input, alphabet)\\n },\\n decode (input) {\\n for (const char of input) {\\n if (alphabet.indexOf(char) \u003C 0) {\\n throw new Error('invalid base32 character')\\n }\\n }\\n\\n return decode(input, alphabet)\\n }\\n }\\n}\\n\\n},{}],21:[function(require,module,exports){\\n'use strict'\\nconst { Buffer } = require('buffer')\\n\\nmodule.exports = function base64 (alphabet) {\\n // The alphabet is only used to know:\\n // 1. If padding is enabled (must contain '=')\\n // 2. If the output must be url-safe (must contain '-' and '_')\\n // 3. If the input of the output function is valid\\n // The alphabets from RFC 4648 are always used.\\n const padding = alphabet.indexOf('=') > -1\\n const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1\\n\\n return {\\n encode (input) {\\n let output = ''\\n\\n if (typeof input === 'string') {\\n output = Buffer.from(input).toString('base64')\\n } else {\\n output = input.toString('base64')\\n }\\n\\n if (url) {\\n output = output.replace(/\\\\+/g, '-').replace(/\\\\//g, '_')\\n }\\n\\n const pad = output.indexOf('=')\\n if (pad > 0 && !padding) {\\n output = output.substring(0, pad)\\n }\\n\\n return output\\n },\\n decode (input) {\\n for (const char of input) {\\n if (alphabet.indexOf(char) \u003C 0) {\\n throw new Error('invalid base64 character')\\n }\\n }\\n\\n return Buffer.from(input, 'base64')\\n }\\n }\\n}\\n\\n},{\\\"buffer\\\":5}],22:[function(require,module,exports){\\n'use strict'\\n\\nconst Base = require('./base.js')\\nconst baseX = require('base-x')\\nconst base16 = require('./base16')\\nconst base32 = require('./base32')\\nconst base64 = require('./base64')\\n\\n// name, code, implementation, alphabet\\nconst constants = [\\n ['base1', '1', '', '1'],\\n ['base2', '0', baseX, '01'],\\n ['base8', '7', baseX, '01234567'],\\n ['base10', '9', baseX, '0123456789'],\\n ['base16', 'f', base16, '0123456789abcdef'],\\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\\n]\\n\\nconst names = constants.reduce((prev, tupple) => {\\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\\n return prev\\n}, {})\\n\\nconst codes = constants.reduce((prev, tupple) => {\\n prev[tupple[1]] = names[tupple[0]]\\n return prev\\n}, {})\\n\\nmodule.exports = {\\n names: names,\\n codes: codes\\n}\\n\\n},{\\\"./base.js\\\":18,\\\"./base16\\\":19,\\\"./base32\\\":20,\\\"./base64\\\":21,\\\"base-x\\\":3}],23:[function(require,module,exports){\\n/**\\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\\n * @module Multibase\\n */\\n'use strict'\\n\\nconst { Buffer } = require('buffer')\\nconst constants = require('./constants')\\n\\nexports = module.exports = multibase\\nexports.encode = encode\\nexports.decode = decode\\nexports.isEncoded = isEncoded\\nexports.names = Object.freeze(Object.keys(constants.names))\\nexports.codes = Object.freeze(Object.keys(constants.codes))\\n\\nconst errNotSupported = new Error('Unsupported encoding')\\n\\n/**\\n * Create a new buffer with the multibase varint+code.\\n *\\n * @param {string|number} nameOrCode - The multibase name or code number.\\n * @param {Buffer} buf - The data to be prefixed with multibase.\\n * @memberof Multibase\\n * @returns {Buffer}\\n */\\nfunction multibase (nameOrCode, buf) {\\n if (!buf) {\\n throw new Error('requires an encoded buffer')\\n }\\n const base = getBase(nameOrCode)\\n const codeBuf = Buffer.from(base.code)\\n\\n const name = base.name\\n validEncode(name, buf)\\n return Buffer.concat([codeBuf, buf])\\n}\\n\\n/**\\n * Encode data with the specified base and add the multibase prefix.\\n *\\n * @param {string|number} nameOrCode - The multibase name or code number.\\n * @param {Buffer} buf - The data to be encoded.\\n * @returns {Buffer}\\n * @memberof Multibase\\n */\\nfunction encode (nameOrCode, buf) {\\n const base = getBase(nameOrCode)\\n const name = base.name\\n\\n return multibase(name, Buffer.from(base.encode(buf)))\\n}\\n\\n/**\\n * Takes a buffer or string encoded with multibase header, decodes it and\\n * returns the decoded buffer\\n *\\n * @param {Buffer|string} bufOrString\\n * @returns {Buffer}\\n * @memberof Multibase\\n *\\n */\\nfunction decode (bufOrString) {\\n if (Buffer.isBuffer(bufOrString)) {\\n bufOrString = bufOrString.toString()\\n }\\n\\n const code = bufOrString.substring(0, 1)\\n bufOrString = bufOrString.substring(1, bufOrString.length)\\n\\n if (typeof bufOrString === 'string') {\\n bufOrString = Buffer.from(bufOrString)\\n }\\n\\n const base = getBase(code)\\n return Buffer.from(base.decode(bufOrString.toString()))\\n}\\n\\n/**\\n * Is the given data multibase encoded?\\n *\\n * @param {Buffer|string} bufOrString\\n * @returns {boolean}\\n * @memberof Multibase\\n */\\nfunction isEncoded (bufOrString) {\\n if (Buffer.isBuffer(bufOrString)) {\\n bufOrString = bufOrString.toString()\\n }\\n\\n // Ensure bufOrString is a string\\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\\n return false\\n }\\n\\n const code = bufOrString.substring(0, 1)\\n try {\\n const base = getBase(code)\\n return base.name\\n } catch (err) {\\n return false\\n }\\n}\\n\\n/**\\n * @param {string} name\\n * @param {Buffer} buf\\n * @private\\n * @returns {undefined}\\n */\\nfunction validEncode (name, buf) {\\n const base = getBase(name)\\n base.decode(buf.toString())\\n}\\n\\nfunction getBase (nameOrCode) {\\n let base\\n\\n if (constants.names[nameOrCode]) {\\n base = constants.names[nameOrCode]\\n } else if (constants.codes[nameOrCode]) {\\n base = constants.codes[nameOrCode]\\n } else {\\n throw errNotSupported\\n }\\n\\n if (!base.isImplemented()) {\\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\\n }\\n\\n return base\\n}\\n\\n},{\\\"./constants\\\":22,\\\"buffer\\\":5}],24:[function(require,module,exports){\\narguments[4][9][0].apply(exports,arguments)\\n},{\\\"dup\\\":9}],25:[function(require,module,exports){\\narguments[4][10][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":24,\\\"dup\\\":10}],26:[function(require,module,exports){\\n(function (Buffer){\\n/**\\n * Implementation of the multicodec specification.\\n *\\n * @module multicodec\\n * @example\\n * const multicodec = require('multicodec')\\n *\\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\\n * // prefixedProtobuf 0x50...\\n *\\n */\\n'use strict'\\n\\nconst varint = require('varint')\\nconst intTable = require('./int-table')\\nconst codecNameToCodeVarint = require('./varint-table')\\nconst util = require('./util')\\n\\nexports = module.exports\\n\\n/**\\n * Prefix a buffer with a multicodec-packed.\\n *\\n * @param {string|number} multicodecStrOrCode\\n * @param {Buffer} data\\n * @returns {Buffer}\\n */\\nexports.addPrefix = (multicodecStrOrCode, data) => {\\n let prefix\\n\\n if (Buffer.isBuffer(multicodecStrOrCode)) {\\n prefix = util.varintBufferEncode(multicodecStrOrCode)\\n } else {\\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\\n } else {\\n throw new Error('multicodec not recognized')\\n }\\n }\\n return Buffer.concat([prefix, data])\\n}\\n\\n/**\\n * Decapsulate the multicodec-packed prefix from the data.\\n *\\n * @param {Buffer} data\\n * @returns {Buffer}\\n */\\nexports.rmPrefix = (data) => {\\n varint.decode(data)\\n return data.slice(varint.decode.bytes)\\n}\\n\\n/**\\n * Get the codec of the prefixed data.\\n * @param {Buffer} prefixedData\\n * @returns {string}\\n */\\nexports.getCodec = (prefixedData) => {\\n const code = varint.decode(prefixedData)\\n const codecName = intTable.get(code)\\n if (codecName === undefined) {\\n throw new Error(`Code ${code} not found`)\\n }\\n return codecName\\n}\\n\\n/**\\n * Get the name of the codec.\\n * @param {number} codec\\n * @returns {string}\\n */\\nexports.getName = (codec) => {\\n return intTable.get(codec)\\n}\\n\\n/**\\n * Get the code of the codec\\n * @param {string} name\\n * @returns {number}\\n */\\nexports.getNumber = (name) => {\\n const code = codecNameToCodeVarint[name]\\n if (code === undefined) {\\n throw new Error('Codec `' + name + '` not found')\\n }\\n return util.varintBufferDecode(code)[0]\\n}\\n\\n/**\\n * Get the code of the prefixed data.\\n * @param {Buffer} prefixedData\\n * @returns {number}\\n */\\nexports.getCode = (prefixedData) => {\\n return varint.decode(prefixedData)\\n}\\n\\n/**\\n * Get the code as varint of a codec name.\\n * @param {string} codecName\\n * @returns {Buffer}\\n */\\nexports.getCodeVarint = (codecName) => {\\n const code = codecNameToCodeVarint[codecName]\\n if (code === undefined) {\\n throw new Error('Codec `' + codecName + '` not found')\\n }\\n return code\\n}\\n\\n/**\\n * Get the varint of a code.\\n * @param {Number} code\\n * @returns {Array.\u003Cnumber>}\\n */\\nexports.getVarint = (code) => {\\n return varint.encode(code)\\n}\\n\\n// Make the constants top-level constants\\nconst constants = require('./constants')\\nObject.assign(exports, constants)\\n\\n// Human friendly names for printing, e.g. in error messages\\nexports.print = require('./print')\\n\\n}).call(this,require(\\\"buffer\\\").Buffer)\\n},{\\\"./constants\\\":25,\\\"./int-table\\\":27,\\\"./print\\\":28,\\\"./util\\\":29,\\\"./varint-table\\\":30,\\\"buffer\\\":5,\\\"varint\\\":67}],27:[function(require,module,exports){\\narguments[4][12][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":24,\\\"dup\\\":12}],28:[function(require,module,exports){\\narguments[4][13][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":24,\\\"dup\\\":13}],29:[function(require,module,exports){\\n(function (Buffer){\\n'use strict'\\nconst varint = require('varint')\\n\\nmodule.exports = {\\n numberToBuffer,\\n bufferToNumber,\\n varintBufferEncode,\\n varintBufferDecode,\\n varintEncode\\n}\\n\\nfunction bufferToNumber (buf) {\\n return parseInt(buf.toString('hex'), 16)\\n}\\n\\nfunction numberToBuffer (num) {\\n let hexString = num.toString(16)\\n if (hexString.length % 2 === 1) {\\n hexString = '0' + hexString\\n }\\n return Buffer.from(hexString, 'hex')\\n}\\n\\nfunction varintBufferEncode (input) {\\n return Buffer.from(varint.encode(bufferToNumber(input)))\\n}\\n\\nfunction varintBufferDecode (input) {\\n return numberToBuffer(varint.decode(input))\\n}\\n\\nfunction varintEncode (num) {\\n return Buffer.from(varint.encode(num))\\n}\\n\\n}).call(this,require(\\\"buffer\\\").Buffer)\\n},{\\\"buffer\\\":5,\\\"varint\\\":67}],30:[function(require,module,exports){\\narguments[4][15][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":24,\\\"./util\\\":29,\\\"dup\\\":15}],31:[function(require,module,exports){\\n/*\\r\\n\\tISC License\\r\\n\\r\\n\\tCopyright (c) 2019, Pierre-Louis Despaigne\\r\\n\\r\\n\\tPermission to use, copy, modify, and/or distribute this software for any\\r\\n\\tpurpose with or without fee is hereby granted, provided that the above\\r\\n\\tcopyright notice and this permission notice appear in all copies.\\r\\n\\r\\n\\tTHE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\\r\\n\\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\\r\\n\\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\\r\\n\\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\\r\\n\\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\\r\\n\\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\\r\\n\\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\\r\\n*/\\r\\n\\r\\nconst CID = require('cids');\\r\\n\\r\\n/**\\r\\n * Take any ipfsHash and convert it to a CID v1 encoded in base32.\\r\\n * @param {string} ipfsHash a regular ipfs hash either a cid v0 or v1 (v1 will remain unchanged)\\r\\n * @return {string} the resulting ipfs hash as a cid v1\\r\\n */\\r\\nconst cidV0ToV1Base32 = (ipfsHash) => {\\r\\n\\tlet cid = new CID(ipfsHash);\\r\\n\\tif (cid.version === 0) {\\r\\n\\t\\tcid = cid.toV1();\\r\\n\\t}\\r\\n\\treturn cid.toString('base32');\\r\\n}\\r\\n\\r\\nexports.cidV0ToV1Base32 = cidV0ToV1Base32;\\r\\n\\n},{\\\"cids\\\":17}],32:[function(require,module,exports){\\n/*\\r\\n\\tISC License\\r\\n\\r\\n\\tCopyright (c) 2019, Pierre-Louis Despaigne\\r\\n\\r\\n\\tPermission to use, copy, modify, and/or distribute this software for any\\r\\n\\tpurpose with or without fee is hereby granted, provided that the above\\r\\n\\tcopyright notice and this permission notice appear in all copies.\\r\\n\\r\\n\\tTHE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\\r\\n\\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\\r\\n\\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\\r\\n\\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\\r\\n\\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\\r\\n\\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\\r\\n\\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\\r\\n*/\\r\\n\\r\\nconst multiC = require('multicodec');\\r\\n\\r\\nconst { hexStringToBuffer, profiles } = require('./profiles');\\r\\nconst { cidV0ToV1Base32 } = require('./helpers');\\r\\n\\r\\nmodule.exports = {\\r\\n\\r\\n\\t//export some helpers functions\\r\\n\\thelpers: {\\r\\n\\t\\tcidV0ToV1Base32,\\r\\n\\t},\\r\\n\\r\\n\\t/**\\r\\n\\t* Decode a Content Hash.\\r\\n\\t* @param {string} hash an hex string containing a content hash\\r\\n\\t* @return {string} the decoded content\\r\\n\\t*/\\r\\n\\tdecode: function (contentHash) {\\r\\n\\t\\tconst buffer = hexStringToBuffer(contentHash);\\r\\n\\t\\tconst codec = multiC.getCodec(buffer);\\r\\n\\t\\tconst value = multiC.rmPrefix(buffer);\\r\\n\\t\\tlet profile = profiles[codec];\\r\\n\\t\\tif (!profile) profile = profiles['default'];\\r\\n\\t\\treturn profile.decode(value);\\r\\n\\t},\\r\\n\\r\\n\\t/**\\r\\n\\t* Encode an IPFS address into a content hash\\r\\n\\t* @param {string} ipfsHash string containing an IPFS address\\r\\n\\t* @return {string} the resulting content hash\\r\\n\\t*/\\r\\n\\tfromIpfs: function (ipfsHash) {\\r\\n\\t\\treturn this.encode('ipfs-ns', ipfsHash);\\r\\n\\t},\\r\\n\\r\\n\\t/**\\r\\n\\t* Encode a Swarm address into a content hash\\r\\n\\t* @param {string} swarmHash string containing a Swarm address\\r\\n\\t* @return {string} the resulting content hash\\r\\n\\t*/\\r\\n\\tfromSwarm: function (swarmHash) {\\r\\n\\t\\treturn this.encode('swarm-ns', swarmHash);\\r\\n\\t},\\r\\n\\r\\n\\t/**\\r\\n\\t* General purpose encoding function\\r\\n * @param {string} codec \\r\\n * @param {string} value \\r\\n */\\r\\n\\tencode: function (codec, value) {\\r\\n\\t\\tlet profile = profiles[codec];\\r\\n\\t\\tif (!profile) profile = profiles['default'];\\r\\n\\t\\tconst encodedValue = profile.encode(value);\\r\\n\\t\\treturn multiC.addPrefix(codec, encodedValue).toString('hex');\\r\\n\\t},\\r\\n\\r\\n\\t/**\\r\\n\\t* Extract the codec of a content hash\\r\\n\\t* @param {string} hash hex string containing a content hash\\r\\n\\t* @return {string} the extracted codec\\r\\n\\t*/\\r\\n\\tgetCodec: function (hash) {\\r\\n\\t\\tlet buffer = hexStringToBuffer(hash);\\r\\n\\t\\treturn multiC.getCodec(buffer);\\r\\n\\t},\\r\\n}\\r\\n\\n},{\\\"./helpers\\\":31,\\\"./profiles\\\":33,\\\"multicodec\\\":26}],33:[function(require,module,exports){\\n(function (Buffer){\\n/*\\r\\n\\tISC License\\r\\n\\r\\n\\tCopyright (c) 2019, Pierre-Louis Despaigne\\r\\n\\r\\n\\tPermission to use, copy, modify, and/or distribute this software for any\\r\\n\\tpurpose with or without fee is hereby granted, provided that the above\\r\\n\\tcopyright notice and this permission notice appear in all copies.\\r\\n\\r\\n\\tTHE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\\r\\n\\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\\r\\n\\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\\r\\n\\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\\r\\n\\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\\r\\n\\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\\r\\n\\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\\r\\n*/\\r\\n\\r\\nconst CID = require('cids');\\r\\nconst multiH = require('multihashes');\\r\\n\\r\\n/**\\r\\n * Convert an hexadecimal string to a Buffer, the string can start with or without '0x'\\r\\n * @param {string} hex an hexadecimal value\\r\\n * @return {Buffer} the resulting Buffer\\r\\n */\\r\\nconst hexStringToBuffer = (hex) => {\\r\\n\\tlet prefix = hex.slice(0, 2);\\r\\n\\tlet value = hex.slice(2);\\r\\n\\tlet res = '';\\r\\n\\tif (prefix === '0x') res = value;\\r\\n\\telse res = hex;\\r\\n\\treturn multiH.fromHexString(res);\\r\\n}\\r\\n\\r\\n/**\\r\\n* list of known encoding,\\r\\n* encoding should be a function that takes a `string` input,\\r\\n* and return a `Buffer` result\\r\\n*/\\r\\nconst encodes = {\\r\\n /**\\r\\n * @param {string} value\\r\\n * @return {Buffer}\\r\\n */\\r\\n swarm: (value) => {\\r\\n const multihash = multiH.encode(hexStringToBuffer(value), 'keccak-256');\\r\\n\\t\\treturn new CID(1, 'swarm-manifest', multihash).buffer;\\r\\n },\\r\\n /**\\r\\n * @param {string} value\\r\\n * @return {Buffer}\\r\\n */\\r\\n ipfs: (value) => {\\r\\n const multihash = multiH.fromB58String(value);\\r\\n return new CID(1, 'dag-pb', multihash).buffer;\\r\\n },\\r\\n /**\\r\\n * @param {string} value\\r\\n * @return {Buffer}\\r\\n */\\r\\n utf8: (value) => {\\r\\n return Buffer.from(value, 'utf8');\\r\\n },\\r\\n};\\r\\n\\r\\n/** \\r\\n* list of known decoding,\\r\\n* decoding should be a function that takes a `Buffer` input,\\r\\n* and return a `string` result\\r\\n*/\\r\\nconst decodes = {\\r\\n /**\\r\\n * @param {Buffer} value \\r\\n */\\r\\n hexMultiHash: (value) => {\\r\\n const cid = new CID(value);\\r\\n return multiH.decode(cid.multihash).digest.toString('hex');\\r\\n },\\r\\n /**\\r\\n * @param {Buffer} value \\r\\n */\\r\\n b58MultiHash: (value) => {\\r\\n const cid = new CID(value);\\r\\n return multiH.toB58String(cid.multihash);\\r\\n },\\r\\n /**\\r\\n * @param {Buffer} value \\r\\n */\\r\\n utf8: (value) => {\\r\\n return value.toString('utf8');\\r\\n },\\r\\n};\\r\\n\\r\\n/**\\r\\n* list of known encoding/decoding for a given codec,\\r\\n* `encode` should be chosen among the `encodes` functions\\r\\n* `decode` should be chosen among the `decodes` functions\\r\\n*/\\r\\nconst profiles = {\\r\\n 'swarm-ns': {\\r\\n encode: encodes.swarm,\\r\\n decode: decodes.hexMultiHash,\\r\\n },\\r\\n 'ipfs-ns': {\\r\\n encode: encodes.ipfs,\\r\\n decode: decodes.b58MultiHash,\\r\\n },\\r\\n 'ipns-ns': {\\r\\n encode: encodes.ipfs,\\r\\n decode: decodes.b58MultiHash,\\r\\n },\\r\\n 'default': {\\r\\n encode: encodes.utf8,\\r\\n decode: decodes.utf8,\\r\\n },\\r\\n};\\r\\n\\r\\nexports.hexStringToBuffer = hexStringToBuffer;\\r\\nexports.profiles = profiles;\\n}).call(this,require(\\\"buffer\\\").Buffer)\\n},{\\\"buffer\\\":5,\\\"cids\\\":17,\\\"multihashes\\\":62}],34:[function(require,module,exports){\\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\\n var e, m\\n var eLen = (nBytes * 8) - mLen - 1\\n var eMax = (1 \u003C\u003C eLen) - 1\\n var eBias = eMax >> 1\\n var nBits = -7\\n var i = isLE ? (nBytes - 1) : 0\\n var d = isLE ? -1 : 1\\n var s = buffer[offset + i]\\n\\n i += d\\n\\n e = s & ((1 \u003C\u003C (-nBits)) - 1)\\n s >>= (-nBits)\\n nBits += eLen\\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\\n\\n m = e & ((1 \u003C\u003C (-nBits)) - 1)\\n e >>= (-nBits)\\n nBits += mLen\\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\\n\\n if (e === 0) {\\n e = 1 - eBias\\n } else if (e === eMax) {\\n return m ? NaN : ((s ? -1 : 1) * Infinity)\\n } else {\\n m = m + Math.pow(2, mLen)\\n e = e - eBias\\n }\\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\\n}\\n\\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\\n var e, m, c\\n var eLen = (nBytes * 8) - mLen - 1\\n var eMax = (1 \u003C\u003C eLen) - 1\\n var eBias = eMax >> 1\\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\\n var i = isLE ? 0 : (nBytes - 1)\\n var d = isLE ? 1 : -1\\n var s = value \u003C 0 || (value === 0 && 1 / value \u003C 0) ? 1 : 0\\n\\n value = Math.abs(value)\\n\\n if (isNaN(value) || value === Infinity) {\\n m = isNaN(value) ? 1 : 0\\n e = eMax\\n } else {\\n e = Math.floor(Math.log(value) / Math.LN2)\\n if (value * (c = Math.pow(2, -e)) \u003C 1) {\\n e--\\n c *= 2\\n }\\n if (e + eBias >= 1) {\\n value += rt / c\\n } else {\\n value += rt * Math.pow(2, 1 - eBias)\\n }\\n if (value * c >= 2) {\\n e++\\n c /= 2\\n }\\n\\n if (e + eBias >= eMax) {\\n m = 0\\n e = eMax\\n } else if (e + eBias >= 1) {\\n m = ((value * c) - 1) * Math.pow(2, mLen)\\n e = e + eBias\\n } else {\\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\\n e = 0\\n }\\n }\\n\\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\\n\\n e = (e \u003C\u003C mLen) | m\\n eLen += mLen\\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\\n\\n buffer[offset + i - d] |= s * 128\\n}\\n\\n},{}],35:[function(require,module,exports){\\n'use strict'\\n\\nmodule.exports = {\\n DEFAULT_HTTP_API: '/ip4/127.0.0.1/tcp/5001'\\n}\\n\\n},{}],36:[function(require,module,exports){\\n'use strict'\\n\\nmodule.exports = {\\n httpClient: 'httpClient',\\n windowIpfs: 'windowIpfs',\\n jsIpfs: 'jsIpfs',\\n webExt: 'webExt'\\n}\\n\\n},{}],37:[function(require,module,exports){\\n(function (global){\\n'use strict'\\n/* global self */\\n\\n// Establish the root object, `window` in the browser, `self` in Service Worker. or `global` on the server.\\n// Credit: https://github.com/megawac/underscore/commit/365311c9a440438531ca1c6bfd49e3c7c5f46079\\nmodule.exports = (typeof self === 'object' && self.self === self && self) ||\\n (typeof global === 'object' && global.global === global && global) ||\\n this\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],38:[function(require,module,exports){\\n'use strict'\\n\\nconst root = require('./constants/root')\\nconst mergeOptions = require('merge-options')\\nconst tryWebExt = require('./providers/webext')\\nconst tryWindow = require('./providers/window-ipfs')\\nconst tryHttpClient = require('./providers/http-client')\\nconst tryJsIpfs = require('./providers/js-ipfs')\\n\\nconst defaultGlobalOpts = {\\n connectionTest: async (ipfs) => {\\n // ipfs connection is working if we can fetch data via async iterator API\\n const cid = 'QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn'\\n for await (const file of ipfs.get(cid)) {\\n return file.type === 'dir' && file.name === cid\\n }\\n }\\n}\\n\\nconst makeProvider = (fn, defaults = {}) => {\\n return (options = {}) => {\\n return (globalOpts) => {\\n options = mergeOptions(defaultGlobalOpts, defaults, globalOpts, options)\\n return fn(options)\\n }\\n }\\n}\\n\\nconst providers = {\\n httpClient: makeProvider((options) => {\\n return tryHttpClient({ root, ...options })\\n }),\\n windowIpfs: makeProvider(options => {\\n return tryWindow({ root, ...options })\\n }),\\n jsIpfs: makeProvider(options => {\\n return tryJsIpfs(options)\\n }),\\n webExt: makeProvider(options => {\\n return tryWebExt({ root, ...options })\\n })\\n}\\n\\nconst defaultProviders = [\\n providers.windowIpfs(),\\n providers.httpClient()\\n]\\n\\nasync function getIpfs ({ providers = defaultProviders, ...options } = {}) {\\n for (const provider of providers) {\\n try {\\n const res = await provider(options)\\n if (res) return res\\n } catch (err) {\\n // provider failed unexpectedly, log error and move to the next one\\n console.error('[ipfs-provider]', err) // eslint-disable-line no-console\\n }\\n }\\n}\\n\\nmodule.exports = {\\n getIpfs,\\n providers,\\n makeProvider\\n}\\n\\n},{\\\"./constants/root\\\":37,\\\"./providers/http-client\\\":39,\\\"./providers/js-ipfs\\\":40,\\\"./providers/webext\\\":41,\\\"./providers/window-ipfs\\\":42,\\\"merge-options\\\":47}],39:[function(require,module,exports){\\n'use strict'\\n\\nconst { URL } = require('iso-url')\\nconst PROVIDERS = require('../constants/providers')\\nconst { DEFAULT_HTTP_API } = require('../constants/defaults')\\n\\n/*\\n * This provider lazy-loads https://github.com/ipfs/js-ipfs-http-client\\n * so it is not included as a dependency if not used.\\n *\\n * HTTP Client init fallback:\\n * 1. Use constructor returned by loadHttpClientModule function\\n * 2. Fallback to window.IpfsHttpClient\\n *\\n * API URL fallback order:\\n * 1. Try user specified API address\\n * 2. Try current origin\\n * 3. Try DEFAULT_HTTP_API\\n*/\\nasync function tryHttpClient ({ loadHttpClientModule, apiAddress, root, connectionTest }) {\\n // Find HTTP client\\n let httpClient\\n if (loadHttpClientModule) httpClient = await loadHttpClientModule()\\n\\n // Final fallback to window.IpfsHttpClient or error\\n if (!httpClient) {\\n if (root.IpfsHttpClient) {\\n httpClient = root.IpfsHttpClient\\n } else {\\n throw new Error('ipfs-provider could not initialize js-ipfs-http-client: make sure its constructor is returned by loadHttpClientModule function or exposed at window.IpfsHttpClient')\\n }\\n }\\n\\n // Allow the use of `import` or `require` on `loadHttpClientModule` fn\\n httpClient = httpClient.default || httpClient // TODO: create 'import' demo in examples/\\n\\n // Explicit custom apiAddress provided. Only try that.\\n if (apiAddress) {\\n return maybeApi({ apiAddress, connectionTest, httpClient })\\n }\\n\\n // Current origin is not localhost:5001 so try with current origin info\\n const { location } = root\\n if (location && !(location.port === '5001' && location.hostname.match(/^127.0.0.1$|^localhost$/))) {\\n const origin = new URL(location.origin)\\n origin.pathname = '/'\\n const res = await maybeApi({\\n apiAddress: origin.toString(),\\n connectionTest,\\n httpClient\\n })\\n if (res) return res\\n }\\n\\n // ...otherwise try /ip4/127.0.0.1/tcp/5001\\n return maybeApi({ apiAddress: DEFAULT_HTTP_API, connectionTest, httpClient })\\n}\\n\\n// Init and test an api client against provded API address.\\n// Returns js-ipfs-http-client instance or null\\nasync function maybeApi ({ apiAddress, connectionTest, httpClient }) {\\n try {\\n const ipfs = httpClient(apiAddress)\\n await connectionTest(ipfs)\\n return { ipfs, provider: PROVIDERS.httpClient, apiAddress }\\n } catch (error) {\\n // Failed to connect to ipfs-api in `apiAddress`\\n // console.error('[ipfs-provider:httpClient]', error)\\n return null\\n }\\n}\\n\\nmodule.exports = tryHttpClient\\n\\n},{\\\"../constants/defaults\\\":35,\\\"../constants/providers\\\":36,\\\"iso-url\\\":44}],40:[function(require,module,exports){\\n'use strict'\\n\\nconst PROVIDERS = require('../constants/providers')\\n\\nfunction createIpfs (ipfsModule, opts) {\\n // Allow the use of `import` or `require` on `getJsIpfs` fn\\n ipfsModule = ipfsModule.default || ipfsModule\\n return ipfsModule.create(opts)\\n}\\n\\nasync function tryJsIpfs ({ connectionTest, loadJsIpfsModule, options, init = createIpfs }) {\\n const ipfsModule = await loadJsIpfsModule()\\n const ipfs = await init(ipfsModule, options)\\n await connectionTest(ipfs)\\n return { ipfs, provider: PROVIDERS.jsIpfs }\\n}\\n\\nmodule.exports = tryJsIpfs\\n\\n},{\\\"../constants/providers\\\":36}],41:[function(require,module,exports){\\n'use strict'\\n\\nconst PROVIDERS = require('../constants/providers')\\n\\nasync function tryWebExt ({ root, connectionTest }) {\\n // Opportunistic optimizations when running inside of web extension (eg. ipfs-companion)\\n if (typeof root.chrome === 'object' && root.chrome.extension && root.chrome.extension.getBackgroundPage) {\\n // Note: under some vendors getBackgroundPage() will return null if window is in incognito mode\\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1329304\\n let bg = null\\n try {\\n bg = root.chrome.extension.getBackgroundPage()\\n } catch (err) {\\n // not in browser extension\\n return null\\n }\\n // If extension is exposing IPFS API as `ipfs` on the background page\\n // it can be used directly for the best performance\\n if (bg && bg.ipfs) {\\n const { ipfs } = bg\\n await connectionTest(ipfs)\\n return { ipfs, provider: PROVIDERS.webExt }\\n }\\n /* Other endpoints can be added here in the future.\\n For example, Companion could provide API for other browser extensions:\\n https://github.com/ipfs-shipyard/ipfs-companion/issues/307 */\\n }\\n}\\n\\nmodule.exports = tryWebExt\\n\\n},{\\\"../constants/providers\\\":36}],42:[function(require,module,exports){\\n'use strict'\\n\\nconst PROVIDERS = require('../constants/providers')\\n\\nasync function tryWindow ({ root, permissions, connectionTest }) {\\n if (root.ipfs) {\\n // files.get is required for testing if API works, ensure we request it\\n if (!(permissions && permissions.commands && permissions.commands.includes('files.get'))) {\\n permissions = permissions || {}\\n permissions = JSON.parse(JSON.stringify(permissions)) // deep copy to work with freezed objects\\n permissions.commands = permissions.commands || []\\n permissions.commands.push('files.get')\\n }\\n // try window.ipfs.enable first: https://github.com/ipfs-shipyard/ipfs-companion/issues/589\\n const ipfs = typeof root.ipfs.enable === 'function'\\n ? await root.ipfs.enable(permissions)\\n : root.ipfs\\n await connectionTest(ipfs)\\n return { ipfs, provider: PROVIDERS.windowIpfs }\\n }\\n}\\n\\nmodule.exports = tryWindow\\n\\n},{\\\"../constants/providers\\\":36}],43:[function(require,module,exports){\\n'use strict';\\n\\nmodule.exports = value => {\\n\\tif (Object.prototype.toString.call(value) !== '[object Object]') {\\n\\t\\treturn false;\\n\\t}\\n\\n\\tconst prototype = Object.getPrototypeOf(value);\\n\\treturn prototype === null || prototype === Object.prototype;\\n};\\n\\n},{}],44:[function(require,module,exports){\\n'use strict';\\n\\nconst {\\n URLWithLegacySupport,\\n format,\\n URLSearchParams,\\n defaultBase\\n} = require('./src/url');\\nconst relative = require('./src/relative');\\n\\nmodule.exports = {\\n URL: URLWithLegacySupport,\\n URLSearchParams,\\n format,\\n relative,\\n defaultBase\\n};\\n\\n},{\\\"./src/relative\\\":45,\\\"./src/url\\\":46}],45:[function(require,module,exports){\\n'use strict';\\n\\nconst { URLWithLegacySupport, format } = require('./url');\\n\\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\\n let protocol = location.protocol ?\\n location.protocol.replace(':', '') :\\n 'http';\\n\\n // Check protocol map\\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\\n let urlParsed;\\n\\n try {\\n urlParsed = new URLWithLegacySupport(url);\\n } catch (err) {\\n urlParsed = {};\\n }\\n\\n const base = Object.assign({}, location, {\\n protocol: protocol || urlParsed.protocol,\\n host: location.host || urlParsed.host\\n });\\n\\n return new URLWithLegacySupport(url, format(base)).toString();\\n};\\n\\n},{\\\"./url\\\":46}],46:[function(require,module,exports){\\n'use strict';\\n\\nconst defaultBase = self.location ?\\n self.location.protocol + '//' + self.location.host :\\n '';\\nconst URL = self.URL;\\n\\nclass URLWithLegacySupport {\\n constructor(url = '', base = defaultBase) {\\n this.super = new URL(url, base);\\n this.path = this.pathname + this.search;\\n this.auth =\\n this.username && this.password ?\\n this.username + ':' + this.password :\\n null;\\n\\n this.query =\\n this.search && this.search.startsWith('?') ?\\n this.search.slice(1) :\\n null;\\n }\\n\\n get hash() {\\n return this.super.hash;\\n }\\n get host() {\\n return this.super.host;\\n }\\n get hostname() {\\n return this.super.hostname;\\n }\\n get href() {\\n return this.super.href;\\n }\\n get origin() {\\n return this.super.origin;\\n }\\n get password() {\\n return this.super.password;\\n }\\n get pathname() {\\n return this.super.pathname;\\n }\\n get port() {\\n return this.super.port;\\n }\\n get protocol() {\\n return this.super.protocol;\\n }\\n get search() {\\n return this.super.search;\\n }\\n get searchParams() {\\n return this.super.searchParams;\\n }\\n get username() {\\n return this.super.username;\\n }\\n\\n set hash(hash) {\\n this.super.hash = hash;\\n }\\n set host(host) {\\n this.super.host = host;\\n }\\n set hostname(hostname) {\\n this.super.hostname = hostname;\\n }\\n set href(href) {\\n this.super.href = href;\\n }\\n set origin(origin) {\\n this.super.origin = origin;\\n }\\n set password(password) {\\n this.super.password = password;\\n }\\n set pathname(pathname) {\\n this.super.pathname = pathname;\\n }\\n set port(port) {\\n this.super.port = port;\\n }\\n set protocol(protocol) {\\n this.super.protocol = protocol;\\n }\\n set search(search) {\\n this.super.search = search;\\n }\\n set searchParams(searchParams) {\\n this.super.searchParams = searchParams;\\n }\\n set username(username) {\\n this.super.username = username;\\n }\\n\\n createObjectURL(o) {\\n return this.super.createObjectURL(o);\\n }\\n revokeObjectURL(o) {\\n this.super.revokeObjectURL(o);\\n }\\n toJSON() {\\n return this.super.toJSON();\\n }\\n toString() {\\n return this.super.toString();\\n }\\n format() {\\n return this.toString();\\n }\\n}\\n\\nfunction format(obj) {\\n if (typeof obj === 'string') {\\n const url = new URL(obj);\\n\\n return url.toString();\\n }\\n\\n if (!(obj instanceof URL)) {\\n const userPass =\\n obj.username && obj.password ?\\n `${obj.username}:${obj.password}@` :\\n '';\\n const auth = obj.auth ? obj.auth + '@' : '';\\n const port = obj.port ? ':' + obj.port : '';\\n const protocol = obj.protocol ? obj.protocol + '//' : '';\\n const host = obj.host || '';\\n const hostname = obj.hostname || '';\\n const search = obj.search || (obj.query ? '?' + obj.query : '');\\n const hash = obj.hash || '';\\n const pathname = obj.pathname || '';\\n const path = obj.path || pathname + search;\\n\\n return `${protocol}${userPass || auth}${host ||\\n hostname + port}${path}${hash}`;\\n }\\n}\\n\\nmodule.exports = {\\n URLWithLegacySupport,\\n URLSearchParams: self.URLSearchParams,\\n defaultBase,\\n format\\n};\\n\\n},{}],47:[function(require,module,exports){\\n'use strict';\\nconst isOptionObject = require('is-plain-obj');\\n\\nconst {hasOwnProperty} = Object.prototype;\\nconst {propertyIsEnumerable} = Object;\\nconst defineProperty = (obj, name, value) => Object.defineProperty(obj, name, {\\n\\tvalue,\\n\\twritable: true,\\n\\tenumerable: true,\\n\\tconfigurable: true\\n});\\n\\nconst globalThis = this;\\nconst defaultMergeOpts = {\\n\\tconcatArrays: false,\\n\\tignoreUndefined: false\\n};\\n\\nconst getEnumerableOwnPropertyKeys = value => {\\n\\tconst keys = [];\\n\\n\\tfor (const key in value) {\\n\\t\\tif (hasOwnProperty.call(value, key)) {\\n\\t\\t\\tkeys.push(key);\\n\\t\\t}\\n\\t}\\n\\n\\t/* istanbul ignore else */\\n\\tif (Object.getOwnPropertySymbols) {\\n\\t\\tconst symbols = Object.getOwnPropertySymbols(value);\\n\\n\\t\\tfor (const symbol of symbols) {\\n\\t\\t\\tif (propertyIsEnumerable.call(value, symbol)) {\\n\\t\\t\\t\\tkeys.push(symbol);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn keys;\\n};\\n\\nfunction clone(value) {\\n\\tif (Array.isArray(value)) {\\n\\t\\treturn cloneArray(value);\\n\\t}\\n\\n\\tif (isOptionObject(value)) {\\n\\t\\treturn cloneOptionObject(value);\\n\\t}\\n\\n\\treturn value;\\n}\\n\\nfunction cloneArray(array) {\\n\\tconst result = array.slice(0, 0);\\n\\n\\tgetEnumerableOwnPropertyKeys(array).forEach(key => {\\n\\t\\tdefineProperty(result, key, clone(array[key]));\\n\\t});\\n\\n\\treturn result;\\n}\\n\\nfunction cloneOptionObject(obj) {\\n\\tconst result = Object.getPrototypeOf(obj) === null ? Object.create(null) : {};\\n\\n\\tgetEnumerableOwnPropertyKeys(obj).forEach(key => {\\n\\t\\tdefineProperty(result, key, clone(obj[key]));\\n\\t});\\n\\n\\treturn result;\\n}\\n\\n/**\\n * @param {*} merged already cloned\\n * @param {*} source something to merge\\n * @param {string[]} keys keys to merge\\n * @param {Object} config Config Object\\n * @returns {*} cloned Object\\n */\\nconst mergeKeys = (merged, source, keys, config) => {\\n\\tkeys.forEach(key => {\\n\\t\\tif (typeof source[key] === 'undefined' && config.ignoreUndefined) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Do not recurse into prototype chain of merged\\n\\t\\tif (key in merged && merged[key] !== Object.getPrototypeOf(merged)) {\\n\\t\\t\\tdefineProperty(merged, key, merge(merged[key], source[key], config));\\n\\t\\t} else {\\n\\t\\t\\tdefineProperty(merged, key, clone(source[key]));\\n\\t\\t}\\n\\t});\\n\\n\\treturn merged;\\n};\\n\\n/**\\n * @param {*} merged already cloned\\n * @param {*} source something to merge\\n * @param {Object} config Config Object\\n * @returns {*} cloned Object\\n *\\n * see [Array.prototype.concat ( ...arguments )](http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.concat)\\n */\\nconst concatArrays = (merged, source, config) => {\\n\\tlet result = merged.slice(0, 0);\\n\\tlet resultIndex = 0;\\n\\n\\t[merged, source].forEach(array => {\\n\\t\\tconst indices = [];\\n\\n\\t\\t// `result.concat(array)` with cloning\\n\\t\\tfor (let k = 0; k \u003C array.length; k++) {\\n\\t\\t\\tif (!hasOwnProperty.call(array, k)) {\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\n\\t\\t\\tindices.push(String(k));\\n\\n\\t\\t\\tif (array === merged) {\\n\\t\\t\\t\\t// Already cloned\\n\\t\\t\\t\\tdefineProperty(result, resultIndex++, array[k]);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdefineProperty(result, resultIndex++, clone(array[k]));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Merge non-index keys\\n\\t\\tresult = mergeKeys(result, array, getEnumerableOwnPropertyKeys(array).filter(key => !indices.includes(key)), config);\\n\\t});\\n\\n\\treturn result;\\n};\\n\\n/**\\n * @param {*} merged already cloned\\n * @param {*} source something to merge\\n * @param {Object} config Config Object\\n * @returns {*} cloned Object\\n */\\nfunction merge(merged, source, config) {\\n\\tif (config.concatArrays && Array.isArray(merged) && Array.isArray(source)) {\\n\\t\\treturn concatArrays(merged, source, config);\\n\\t}\\n\\n\\tif (!isOptionObject(source) || !isOptionObject(merged)) {\\n\\t\\treturn clone(source);\\n\\t}\\n\\n\\treturn mergeKeys(merged, source, getEnumerableOwnPropertyKeys(source), config);\\n}\\n\\nmodule.exports = function (...options) {\\n\\tconst config = merge(clone(defaultMergeOpts), (this !== globalThis && this) || {}, defaultMergeOpts);\\n\\tlet merged = {_: {}};\\n\\n\\tfor (const option of options) {\\n\\t\\tif (option === undefined) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\n\\t\\tif (!isOptionObject(option)) {\\n\\t\\t\\tthrow new TypeError('`' + option + '` is not an Option Object');\\n\\t\\t}\\n\\n\\t\\tmerged = merge(merged, {_: option}, config);\\n\\t}\\n\\n\\treturn merged._;\\n};\\n\\n},{\\\"is-plain-obj\\\":43}],48:[function(require,module,exports){\\narguments[4][18][0].apply(exports,arguments)\\n},{\\\"dup\\\":18}],49:[function(require,module,exports){\\narguments[4][19][0].apply(exports,arguments)\\n},{\\\"buffer\\\":5,\\\"dup\\\":19}],50:[function(require,module,exports){\\narguments[4][20][0].apply(exports,arguments)\\n},{\\\"dup\\\":20}],51:[function(require,module,exports){\\narguments[4][21][0].apply(exports,arguments)\\n},{\\\"buffer\\\":5,\\\"dup\\\":21}],52:[function(require,module,exports){\\narguments[4][22][0].apply(exports,arguments)\\n},{\\\"./base.js\\\":48,\\\"./base16\\\":49,\\\"./base32\\\":50,\\\"./base64\\\":51,\\\"base-x\\\":3,\\\"dup\\\":22}],53:[function(require,module,exports){\\n/**\\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\\n * @module Multibase\\n */\\n'use strict'\\n\\nconst { Buffer } = require('buffer')\\nconst constants = require('./constants')\\n\\nexports = module.exports = multibase\\nexports.encode = encode\\nexports.decode = decode\\nexports.isEncoded = isEncoded\\nexports.names = Object.freeze(Object.keys(constants.names))\\nexports.codes = Object.freeze(Object.keys(constants.codes))\\n\\n/**\\n * Create a new buffer with the multibase varint+code.\\n *\\n * @param {string|number} nameOrCode - The multibase name or code number.\\n * @param {Buffer} buf - The data to be prefixed with multibase.\\n * @memberof Multibase\\n * @returns {Buffer}\\n */\\nfunction multibase (nameOrCode, buf) {\\n if (!buf) {\\n throw new Error('requires an encoded buffer')\\n }\\n const base = getBase(nameOrCode)\\n const codeBuf = Buffer.from(base.code)\\n\\n const name = base.name\\n validEncode(name, buf)\\n return Buffer.concat([codeBuf, buf])\\n}\\n\\n/**\\n * Encode data with the specified base and add the multibase prefix.\\n *\\n * @param {string|number} nameOrCode - The multibase name or code number.\\n * @param {Buffer} buf - The data to be encoded.\\n * @returns {Buffer}\\n * @memberof Multibase\\n */\\nfunction encode (nameOrCode, buf) {\\n const base = getBase(nameOrCode)\\n const name = base.name\\n\\n return multibase(name, Buffer.from(base.encode(buf)))\\n}\\n\\n/**\\n * Takes a buffer or string encoded with multibase header, decodes it and\\n * returns the decoded buffer\\n *\\n * @param {Buffer|string} bufOrString\\n * @returns {Buffer}\\n * @memberof Multibase\\n *\\n */\\nfunction decode (bufOrString) {\\n if (Buffer.isBuffer(bufOrString)) {\\n bufOrString = bufOrString.toString()\\n }\\n\\n const code = bufOrString.substring(0, 1)\\n bufOrString = bufOrString.substring(1, bufOrString.length)\\n\\n if (typeof bufOrString === 'string') {\\n bufOrString = Buffer.from(bufOrString)\\n }\\n\\n const base = getBase(code)\\n return Buffer.from(base.decode(bufOrString.toString()))\\n}\\n\\n/**\\n * Is the given data multibase encoded?\\n *\\n * @param {Buffer|string} bufOrString\\n * @returns {boolean}\\n * @memberof Multibase\\n */\\nfunction isEncoded (bufOrString) {\\n if (Buffer.isBuffer(bufOrString)) {\\n bufOrString = bufOrString.toString()\\n }\\n\\n // Ensure bufOrString is a string\\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\\n return false\\n }\\n\\n const code = bufOrString.substring(0, 1)\\n try {\\n const base = getBase(code)\\n return base.name\\n } catch (err) {\\n return false\\n }\\n}\\n\\n/**\\n * @param {string} name\\n * @param {Buffer} buf\\n * @private\\n * @returns {undefined}\\n */\\nfunction validEncode (name, buf) {\\n const base = getBase(name)\\n base.decode(buf.toString())\\n}\\n\\nfunction getBase (nameOrCode) {\\n let base\\n\\n if (constants.names[nameOrCode]) {\\n base = constants.names[nameOrCode]\\n } else if (constants.codes[nameOrCode]) {\\n base = constants.codes[nameOrCode]\\n } else {\\n throw new Error('Unsupported encoding')\\n }\\n\\n if (!base.isImplemented()) {\\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\\n }\\n\\n return base\\n}\\n\\n},{\\\"./constants\\\":52,\\\"buffer\\\":5}],54:[function(require,module,exports){\\narguments[4][9][0].apply(exports,arguments)\\n},{\\\"dup\\\":9}],55:[function(require,module,exports){\\narguments[4][10][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":54,\\\"dup\\\":10}],56:[function(require,module,exports){\\narguments[4][11][0].apply(exports,arguments)\\n},{\\\"./constants\\\":55,\\\"./int-table\\\":57,\\\"./print\\\":58,\\\"./util\\\":59,\\\"./varint-table\\\":60,\\\"buffer\\\":5,\\\"dup\\\":11,\\\"varint\\\":67}],57:[function(require,module,exports){\\narguments[4][12][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":54,\\\"dup\\\":12}],58:[function(require,module,exports){\\narguments[4][13][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":54,\\\"dup\\\":13}],59:[function(require,module,exports){\\narguments[4][14][0].apply(exports,arguments)\\n},{\\\"buffer\\\":5,\\\"dup\\\":14,\\\"varint\\\":67}],60:[function(require,module,exports){\\narguments[4][15][0].apply(exports,arguments)\\n},{\\\"./base-table.json\\\":54,\\\"./util\\\":59,\\\"dup\\\":15}],61:[function(require,module,exports){\\n/* eslint quote-props: off */\\n/* eslint key-spacing: off */\\n'use strict'\\n\\nexports.names = Object.freeze({\\n 'identity': 0x0,\\n 'sha1': 0x11,\\n 'sha2-256': 0x12,\\n 'sha2-512': 0x13,\\n 'dbl-sha2-256': 0x56,\\n 'sha3-224': 0x17,\\n 'sha3-256': 0x16,\\n 'sha3-384': 0x15,\\n 'sha3-512': 0x14,\\n 'shake-128': 0x18,\\n 'shake-256': 0x19,\\n 'keccak-224': 0x1A,\\n 'keccak-256': 0x1B,\\n 'keccak-384': 0x1C,\\n 'keccak-512': 0x1D,\\n 'murmur3-128': 0x22,\\n 'murmur3-32': 0x23,\\n 'md4': 0xd4,\\n 'md5': 0xd5,\\n 'blake2b-8': 0xb201,\\n 'blake2b-16': 0xb202,\\n 'blake2b-24': 0xb203,\\n 'blake2b-32': 0xb204,\\n 'blake2b-40': 0xb205,\\n 'blake2b-48': 0xb206,\\n 'blake2b-56': 0xb207,\\n 'blake2b-64': 0xb208,\\n 'blake2b-72': 0xb209,\\n 'blake2b-80': 0xb20a,\\n 'blake2b-88': 0xb20b,\\n 'blake2b-96': 0xb20c,\\n 'blake2b-104': 0xb20d,\\n 'blake2b-112': 0xb20e,\\n 'blake2b-120': 0xb20f,\\n 'blake2b-128': 0xb210,\\n 'blake2b-136': 0xb211,\\n 'blake2b-144': 0xb212,\\n 'blake2b-152': 0xb213,\\n 'blake2b-160': 0xb214,\\n 'blake2b-168': 0xb215,\\n 'blake2b-176': 0xb216,\\n 'blake2b-184': 0xb217,\\n 'blake2b-192': 0xb218,\\n 'blake2b-200': 0xb219,\\n 'blake2b-208': 0xb21a,\\n 'blake2b-216': 0xb21b,\\n 'blake2b-224': 0xb21c,\\n 'blake2b-232': 0xb21d,\\n 'blake2b-240': 0xb21e,\\n 'blake2b-248': 0xb21f,\\n 'blake2b-256': 0xb220,\\n 'blake2b-264': 0xb221,\\n 'blake2b-272': 0xb222,\\n 'blake2b-280': 0xb223,\\n 'blake2b-288': 0xb224,\\n 'blake2b-296': 0xb225,\\n 'blake2b-304': 0xb226,\\n 'blake2b-312': 0xb227,\\n 'blake2b-320': 0xb228,\\n 'blake2b-328': 0xb229,\\n 'blake2b-336': 0xb22a,\\n 'blake2b-344': 0xb22b,\\n 'blake2b-352': 0xb22c,\\n 'blake2b-360': 0xb22d,\\n 'blake2b-368': 0xb22e,\\n 'blake2b-376': 0xb22f,\\n 'blake2b-384': 0xb230,\\n 'blake2b-392': 0xb231,\\n 'blake2b-400': 0xb232,\\n 'blake2b-408': 0xb233,\\n 'blake2b-416': 0xb234,\\n 'blake2b-424': 0xb235,\\n 'blake2b-432': 0xb236,\\n 'blake2b-440': 0xb237,\\n 'blake2b-448': 0xb238,\\n 'blake2b-456': 0xb239,\\n 'blake2b-464': 0xb23a,\\n 'blake2b-472': 0xb23b,\\n 'blake2b-480': 0xb23c,\\n 'blake2b-488': 0xb23d,\\n 'blake2b-496': 0xb23e,\\n 'blake2b-504': 0xb23f,\\n 'blake2b-512': 0xb240,\\n 'blake2s-8': 0xb241,\\n 'blake2s-16': 0xb242,\\n 'blake2s-24': 0xb243,\\n 'blake2s-32': 0xb244,\\n 'blake2s-40': 0xb245,\\n 'blake2s-48': 0xb246,\\n 'blake2s-56': 0xb247,\\n 'blake2s-64': 0xb248,\\n 'blake2s-72': 0xb249,\\n 'blake2s-80': 0xb24a,\\n 'blake2s-88': 0xb24b,\\n 'blake2s-96': 0xb24c,\\n 'blake2s-104': 0xb24d,\\n 'blake2s-112': 0xb24e,\\n 'blake2s-120': 0xb24f,\\n 'blake2s-128': 0xb250,\\n 'blake2s-136': 0xb251,\\n 'blake2s-144': 0xb252,\\n 'blake2s-152': 0xb253,\\n 'blake2s-160': 0xb254,\\n 'blake2s-168': 0xb255,\\n 'blake2s-176': 0xb256,\\n 'blake2s-184': 0xb257,\\n 'blake2s-192': 0xb258,\\n 'blake2s-200': 0xb259,\\n 'blake2s-208': 0xb25a,\\n 'blake2s-216': 0xb25b,\\n 'blake2s-224': 0xb25c,\\n 'blake2s-232': 0xb25d,\\n 'blake2s-240': 0xb25e,\\n 'blake2s-248': 0xb25f,\\n 'blake2s-256': 0xb260,\\n 'Skein256-8': 0xb301,\\n 'Skein256-16': 0xb302,\\n 'Skein256-24': 0xb303,\\n 'Skein256-32': 0xb304,\\n 'Skein256-40': 0xb305,\\n 'Skein256-48': 0xb306,\\n 'Skein256-56': 0xb307,\\n 'Skein256-64': 0xb308,\\n 'Skein256-72': 0xb309,\\n 'Skein256-80': 0xb30a,\\n 'Skein256-88': 0xb30b,\\n 'Skein256-96': 0xb30c,\\n 'Skein256-104': 0xb30d,\\n 'Skein256-112': 0xb30e,\\n 'Skein256-120': 0xb30f,\\n 'Skein256-128': 0xb310,\\n 'Skein256-136': 0xb311,\\n 'Skein256-144': 0xb312,\\n 'Skein256-152': 0xb313,\\n 'Skein256-160': 0xb314,\\n 'Skein256-168': 0xb315,\\n 'Skein256-176': 0xb316,\\n 'Skein256-184': 0xb317,\\n 'Skein256-192': 0xb318,\\n 'Skein256-200': 0xb319,\\n 'Skein256-208': 0xb31a,\\n 'Skein256-216': 0xb31b,\\n 'Skein256-224': 0xb31c,\\n 'Skein256-232': 0xb31d,\\n 'Skein256-240': 0xb31e,\\n 'Skein256-248': 0xb31f,\\n 'Skein256-256': 0xb320,\\n 'Skein512-8': 0xb321,\\n 'Skein512-16': 0xb322,\\n 'Skein512-24': 0xb323,\\n 'Skein512-32': 0xb324,\\n 'Skein512-40': 0xb325,\\n 'Skein512-48': 0xb326,\\n 'Skein512-56': 0xb327,\\n 'Skein512-64': 0xb328,\\n 'Skein512-72': 0xb329,\\n 'Skein512-80': 0xb32a,\\n 'Skein512-88': 0xb32b,\\n 'Skein512-96': 0xb32c,\\n 'Skein512-104': 0xb32d,\\n 'Skein512-112': 0xb32e,\\n 'Skein512-120': 0xb32f,\\n 'Skein512-128': 0xb330,\\n 'Skein512-136': 0xb331,\\n 'Skein512-144': 0xb332,\\n 'Skein512-152': 0xb333,\\n 'Skein512-160': 0xb334,\\n 'Skein512-168': 0xb335,\\n 'Skein512-176': 0xb336,\\n 'Skein512-184': 0xb337,\\n 'Skein512-192': 0xb338,\\n 'Skein512-200': 0xb339,\\n 'Skein512-208': 0xb33a,\\n 'Skein512-216': 0xb33b,\\n 'Skein512-224': 0xb33c,\\n 'Skein512-232': 0xb33d,\\n 'Skein512-240': 0xb33e,\\n 'Skein512-248': 0xb33f,\\n 'Skein512-256': 0xb340,\\n 'Skein512-264': 0xb341,\\n 'Skein512-272': 0xb342,\\n 'Skein512-280': 0xb343,\\n 'Skein512-288': 0xb344,\\n 'Skein512-296': 0xb345,\\n 'Skein512-304': 0xb346,\\n 'Skein512-312': 0xb347,\\n 'Skein512-320': 0xb348,\\n 'Skein512-328': 0xb349,\\n 'Skein512-336': 0xb34a,\\n 'Skein512-344': 0xb34b,\\n 'Skein512-352': 0xb34c,\\n 'Skein512-360': 0xb34d,\\n 'Skein512-368': 0xb34e,\\n 'Skein512-376': 0xb34f,\\n 'Skein512-384': 0xb350,\\n 'Skein512-392': 0xb351,\\n 'Skein512-400': 0xb352,\\n 'Skein512-408': 0xb353,\\n 'Skein512-416': 0xb354,\\n 'Skein512-424': 0xb355,\\n 'Skein512-432': 0xb356,\\n 'Skein512-440': 0xb357,\\n 'Skein512-448': 0xb358,\\n 'Skein512-456': 0xb359,\\n 'Skein512-464': 0xb35a,\\n 'Skein512-472': 0xb35b,\\n 'Skein512-480': 0xb35c,\\n 'Skein512-488': 0xb35d,\\n 'Skein512-496': 0xb35e,\\n 'Skein512-504': 0xb35f,\\n 'Skein512-512': 0xb360,\\n 'Skein1024-8': 0xb361,\\n 'Skein1024-16': 0xb362,\\n 'Skein1024-24': 0xb363,\\n 'Skein1024-32': 0xb364,\\n 'Skein1024-40': 0xb365,\\n 'Skein1024-48': 0xb366,\\n 'Skein1024-56': 0xb367,\\n 'Skein1024-64': 0xb368,\\n 'Skein1024-72': 0xb369,\\n 'Skein1024-80': 0xb36a,\\n 'Skein1024-88': 0xb36b,\\n 'Skein1024-96': 0xb36c,\\n 'Skein1024-104': 0xb36d,\\n 'Skein1024-112': 0xb36e,\\n 'Skein1024-120': 0xb36f,\\n 'Skein1024-128': 0xb370,\\n 'Skein1024-136': 0xb371,\\n 'Skein1024-144': 0xb372,\\n 'Skein1024-152': 0xb373,\\n 'Skein1024-160': 0xb374,\\n 'Skein1024-168': 0xb375,\\n 'Skein1024-176': 0xb376,\\n 'Skein1024-184': 0xb377,\\n 'Skein1024-192': 0xb378,\\n 'Skein1024-200': 0xb379,\\n 'Skein1024-208': 0xb37a,\\n 'Skein1024-216': 0xb37b,\\n 'Skein1024-224': 0xb37c,\\n 'Skein1024-232': 0xb37d,\\n 'Skein1024-240': 0xb37e,\\n 'Skein1024-248': 0xb37f,\\n 'Skein1024-256': 0xb380,\\n 'Skein1024-264': 0xb381,\\n 'Skein1024-272': 0xb382,\\n 'Skein1024-280': 0xb383,\\n 'Skein1024-288': 0xb384,\\n 'Skein1024-296': 0xb385,\\n 'Skein1024-304': 0xb386,\\n 'Skein1024-312': 0xb387,\\n 'Skein1024-320': 0xb388,\\n 'Skein1024-328': 0xb389,\\n 'Skein1024-336': 0xb38a,\\n 'Skein1024-344': 0xb38b,\\n 'Skein1024-352': 0xb38c,\\n 'Skein1024-360': 0xb38d,\\n 'Skein1024-368': 0xb38e,\\n 'Skein1024-376': 0xb38f,\\n 'Skein1024-384': 0xb390,\\n 'Skein1024-392': 0xb391,\\n 'Skein1024-400': 0xb392,\\n 'Skein1024-408': 0xb393,\\n 'Skein1024-416': 0xb394,\\n 'Skein1024-424': 0xb395,\\n 'Skein1024-432': 0xb396,\\n 'Skein1024-440': 0xb397,\\n 'Skein1024-448': 0xb398,\\n 'Skein1024-456': 0xb399,\\n 'Skein1024-464': 0xb39a,\\n 'Skein1024-472': 0xb39b,\\n 'Skein1024-480': 0xb39c,\\n 'Skein1024-488': 0xb39d,\\n 'Skein1024-496': 0xb39e,\\n 'Skein1024-504': 0xb39f,\\n 'Skein1024-512': 0xb3a0,\\n 'Skein1024-520': 0xb3a1,\\n 'Skein1024-528': 0xb3a2,\\n 'Skein1024-536': 0xb3a3,\\n 'Skein1024-544': 0xb3a4,\\n 'Skein1024-552': 0xb3a5,\\n 'Skein1024-560': 0xb3a6,\\n 'Skein1024-568': 0xb3a7,\\n 'Skein1024-576': 0xb3a8,\\n 'Skein1024-584': 0xb3a9,\\n 'Skein1024-592': 0xb3aa,\\n 'Skein1024-600': 0xb3ab,\\n 'Skein1024-608': 0xb3ac,\\n 'Skein1024-616': 0xb3ad,\\n 'Skein1024-624': 0xb3ae,\\n 'Skein1024-632': 0xb3af,\\n 'Skein1024-640': 0xb3b0,\\n 'Skein1024-648': 0xb3b1,\\n 'Skein1024-656': 0xb3b2,\\n 'Skein1024-664': 0xb3b3,\\n 'Skein1024-672': 0xb3b4,\\n 'Skein1024-680': 0xb3b5,\\n 'Skein1024-688': 0xb3b6,\\n 'Skein1024-696': 0xb3b7,\\n 'Skein1024-704': 0xb3b8,\\n 'Skein1024-712': 0xb3b9,\\n 'Skein1024-720': 0xb3ba,\\n 'Skein1024-728': 0xb3bb,\\n 'Skein1024-736': 0xb3bc,\\n 'Skein1024-744': 0xb3bd,\\n 'Skein1024-752': 0xb3be,\\n 'Skein1024-760': 0xb3bf,\\n 'Skein1024-768': 0xb3c0,\\n 'Skein1024-776': 0xb3c1,\\n 'Skein1024-784': 0xb3c2,\\n 'Skein1024-792': 0xb3c3,\\n 'Skein1024-800': 0xb3c4,\\n 'Skein1024-808': 0xb3c5,\\n 'Skein1024-816': 0xb3c6,\\n 'Skein1024-824': 0xb3c7,\\n 'Skein1024-832': 0xb3c8,\\n 'Skein1024-840': 0xb3c9,\\n 'Skein1024-848': 0xb3ca,\\n 'Skein1024-856': 0xb3cb,\\n 'Skein1024-864': 0xb3cc,\\n 'Skein1024-872': 0xb3cd,\\n 'Skein1024-880': 0xb3ce,\\n 'Skein1024-888': 0xb3cf,\\n 'Skein1024-896': 0xb3d0,\\n 'Skein1024-904': 0xb3d1,\\n 'Skein1024-912': 0xb3d2,\\n 'Skein1024-920': 0xb3d3,\\n 'Skein1024-928': 0xb3d4,\\n 'Skein1024-936': 0xb3d5,\\n 'Skein1024-944': 0xb3d6,\\n 'Skein1024-952': 0xb3d7,\\n 'Skein1024-960': 0xb3d8,\\n 'Skein1024-968': 0xb3d9,\\n 'Skein1024-976': 0xb3da,\\n 'Skein1024-984': 0xb3db,\\n 'Skein1024-992': 0xb3dc,\\n 'Skein1024-1000': 0xb3dd,\\n 'Skein1024-1008': 0xb3de,\\n 'Skein1024-1016': 0xb3df,\\n 'Skein1024-1024': 0xb3e0\\n})\\n\\nexports.codes = Object.freeze({\\n 0x0: 'identity',\\n\\n // sha family\\n 0x11: 'sha1',\\n 0x12: 'sha2-256',\\n 0x13: 'sha2-512',\\n 0x56: 'dbl-sha2-256',\\n 0x17: 'sha3-224',\\n 0x16: 'sha3-256',\\n 0x15: 'sha3-384',\\n 0x14: 'sha3-512',\\n 0x18: 'shake-128',\\n 0x19: 'shake-256',\\n 0x1A: 'keccak-224',\\n 0x1B: 'keccak-256',\\n 0x1C: 'keccak-384',\\n 0x1D: 'keccak-512',\\n\\n 0x22: 'murmur3-128',\\n 0x23: 'murmur3-32',\\n\\n 0xd4: 'md4',\\n 0xd5: 'md5',\\n\\n // blake2\\n 0xb201: 'blake2b-8',\\n 0xb202: 'blake2b-16',\\n 0xb203: 'blake2b-24',\\n 0xb204: 'blake2b-32',\\n 0xb205: 'blake2b-40',\\n 0xb206: 'blake2b-48',\\n 0xb207: 'blake2b-56',\\n 0xb208: 'blake2b-64',\\n 0xb209: 'blake2b-72',\\n 0xb20a: 'blake2b-80',\\n 0xb20b: 'blake2b-88',\\n 0xb20c: 'blake2b-96',\\n 0xb20d: 'blake2b-104',\\n 0xb20e: 'blake2b-112',\\n 0xb20f: 'blake2b-120',\\n 0xb210: 'blake2b-128',\\n 0xb211: 'blake2b-136',\\n 0xb212: 'blake2b-144',\\n 0xb213: 'blake2b-152',\\n 0xb214: 'blake2b-160',\\n 0xb215: 'blake2b-168',\\n 0xb216: 'blake2b-176',\\n 0xb217: 'blake2b-184',\\n 0xb218: 'blake2b-192',\\n 0xb219: 'blake2b-200',\\n 0xb21a: 'blake2b-208',\\n 0xb21b: 'blake2b-216',\\n 0xb21c: 'blake2b-224',\\n 0xb21d: 'blake2b-232',\\n 0xb21e: 'blake2b-240',\\n 0xb21f: 'blake2b-248',\\n 0xb220: 'blake2b-256',\\n 0xb221: 'blake2b-264',\\n 0xb222: 'blake2b-272',\\n 0xb223: 'blake2b-280',\\n 0xb224: 'blake2b-288',\\n 0xb225: 'blake2b-296',\\n 0xb226: 'blake2b-304',\\n 0xb227: 'blake2b-312',\\n 0xb228: 'blake2b-320',\\n 0xb229: 'blake2b-328',\\n 0xb22a: 'blake2b-336',\\n 0xb22b: 'blake2b-344',\\n 0xb22c: 'blake2b-352',\\n 0xb22d: 'blake2b-360',\\n 0xb22e: 'blake2b-368',\\n 0xb22f: 'blake2b-376',\\n 0xb230: 'blake2b-384',\\n 0xb231: 'blake2b-392',\\n 0xb232: 'blake2b-400',\\n 0xb233: 'blake2b-408',\\n 0xb234: 'blake2b-416',\\n 0xb235: 'blake2b-424',\\n 0xb236: 'blake2b-432',\\n 0xb237: 'blake2b-440',\\n 0xb238: 'blake2b-448',\\n 0xb239: 'blake2b-456',\\n 0xb23a: 'blake2b-464',\\n 0xb23b: 'blake2b-472',\\n 0xb23c: 'blake2b-480',\\n 0xb23d: 'blake2b-488',\\n 0xb23e: 'blake2b-496',\\n 0xb23f: 'blake2b-504',\\n 0xb240: 'blake2b-512',\\n 0xb241: 'blake2s-8',\\n 0xb242: 'blake2s-16',\\n 0xb243: 'blake2s-24',\\n 0xb244: 'blake2s-32',\\n 0xb245: 'blake2s-40',\\n 0xb246: 'blake2s-48',\\n 0xb247: 'blake2s-56',\\n 0xb248: 'blake2s-64',\\n 0xb249: 'blake2s-72',\\n 0xb24a: 'blake2s-80',\\n 0xb24b: 'blake2s-88',\\n 0xb24c: 'blake2s-96',\\n 0xb24d: 'blake2s-104',\\n 0xb24e: 'blake2s-112',\\n 0xb24f: 'blake2s-120',\\n 0xb250: 'blake2s-128',\\n 0xb251: 'blake2s-136',\\n 0xb252: 'blake2s-144',\\n 0xb253: 'blake2s-152',\\n 0xb254: 'blake2s-160',\\n 0xb255: 'blake2s-168',\\n 0xb256: 'blake2s-176',\\n 0xb257: 'blake2s-184',\\n 0xb258: 'blake2s-192',\\n 0xb259: 'blake2s-200',\\n 0xb25a: 'blake2s-208',\\n 0xb25b: 'blake2s-216',\\n 0xb25c: 'blake2s-224',\\n 0xb25d: 'blake2s-232',\\n 0xb25e: 'blake2s-240',\\n 0xb25f: 'blake2s-248',\\n 0xb260: 'blake2s-256',\\n\\n // skein\\n 0xb301: 'Skein256-8',\\n 0xb302: 'Skein256-16',\\n 0xb303: 'Skein256-24',\\n 0xb304: 'Skein256-32',\\n 0xb305: 'Skein256-40',\\n 0xb306: 'Skein256-48',\\n 0xb307: 'Skein256-56',\\n 0xb308: 'Skein256-64',\\n 0xb309: 'Skein256-72',\\n 0xb30a: 'Skein256-80',\\n 0xb30b: 'Skein256-88',\\n 0xb30c: 'Skein256-96',\\n 0xb30d: 'Skein256-104',\\n 0xb30e: 'Skein256-112',\\n 0xb30f: 'Skein256-120',\\n 0xb310: 'Skein256-128',\\n 0xb311: 'Skein256-136',\\n 0xb312: 'Skein256-144',\\n 0xb313: 'Skein256-152',\\n 0xb314: 'Skein256-160',\\n 0xb315: 'Skein256-168',\\n 0xb316: 'Skein256-176',\\n 0xb317: 'Skein256-184',\\n 0xb318: 'Skein256-192',\\n 0xb319: 'Skein256-200',\\n 0xb31a: 'Skein256-208',\\n 0xb31b: 'Skein256-216',\\n 0xb31c: 'Skein256-224',\\n 0xb31d: 'Skein256-232',\\n 0xb31e: 'Skein256-240',\\n 0xb31f: 'Skein256-248',\\n 0xb320: 'Skein256-256',\\n 0xb321: 'Skein512-8',\\n 0xb322: 'Skein512-16',\\n 0xb323: 'Skein512-24',\\n 0xb324: 'Skein512-32',\\n 0xb325: 'Skein512-40',\\n 0xb326: 'Skein512-48',\\n 0xb327: 'Skein512-56',\\n 0xb328: 'Skein512-64',\\n 0xb329: 'Skein512-72',\\n 0xb32a: 'Skein512-80',\\n 0xb32b: 'Skein512-88',\\n 0xb32c: 'Skein512-96',\\n 0xb32d: 'Skein512-104',\\n 0xb32e: 'Skein512-112',\\n 0xb32f: 'Skein512-120',\\n 0xb330: 'Skein512-128',\\n 0xb331: 'Skein512-136',\\n 0xb332: 'Skein512-144',\\n 0xb333: 'Skein512-152',\\n 0xb334: 'Skein512-160',\\n 0xb335: 'Skein512-168',\\n 0xb336: 'Skein512-176',\\n 0xb337: 'Skein512-184',\\n 0xb338: 'Skein512-192',\\n 0xb339: 'Skein512-200',\\n 0xb33a: 'Skein512-208',\\n 0xb33b: 'Skein512-216',\\n 0xb33c: 'Skein512-224',\\n 0xb33d: 'Skein512-232',\\n 0xb33e: 'Skein512-240',\\n 0xb33f: 'Skein512-248',\\n 0xb340: 'Skein512-256',\\n 0xb341: 'Skein512-264',\\n 0xb342: 'Skein512-272',\\n 0xb343: 'Skein512-280',\\n 0xb344: 'Skein512-288',\\n 0xb345: 'Skein512-296',\\n 0xb346: 'Skein512-304',\\n 0xb347: 'Skein512-312',\\n 0xb348: 'Skein512-320',\\n 0xb349: 'Skein512-328',\\n 0xb34a: 'Skein512-336',\\n 0xb34b: 'Skein512-344',\\n 0xb34c: 'Skein512-352',\\n 0xb34d: 'Skein512-360',\\n 0xb34e: 'Skein512-368',\\n 0xb34f: 'Skein512-376',\\n 0xb350: 'Skein512-384',\\n 0xb351: 'Skein512-392',\\n 0xb352: 'Skein512-400',\\n 0xb353: 'Skein512-408',\\n 0xb354: 'Skein512-416',\\n 0xb355: 'Skein512-424',\\n 0xb356: 'Skein512-432',\\n 0xb357: 'Skein512-440',\\n 0xb358: 'Skein512-448',\\n 0xb359: 'Skein512-456',\\n 0xb35a: 'Skein512-464',\\n 0xb35b: 'Skein512-472',\\n 0xb35c: 'Skein512-480',\\n 0xb35d: 'Skein512-488',\\n 0xb35e: 'Skein512-496',\\n 0xb35f: 'Skein512-504',\\n 0xb360: 'Skein512-512',\\n 0xb361: 'Skein1024-8',\\n 0xb362: 'Skein1024-16',\\n 0xb363: 'Skein1024-24',\\n 0xb364: 'Skein1024-32',\\n 0xb365: 'Skein1024-40',\\n 0xb366: 'Skein1024-48',\\n 0xb367: 'Skein1024-56',\\n 0xb368: 'Skein1024-64',\\n 0xb369: 'Skein1024-72',\\n 0xb36a: 'Skein1024-80',\\n 0xb36b: 'Skein1024-88',\\n 0xb36c: 'Skein1024-96',\\n 0xb36d: 'Skein1024-104',\\n 0xb36e: 'Skein1024-112',\\n 0xb36f: 'Skein1024-120',\\n 0xb370: 'Skein1024-128',\\n 0xb371: 'Skein1024-136',\\n 0xb372: 'Skein1024-144',\\n 0xb373: 'Skein1024-152',\\n 0xb374: 'Skein1024-160',\\n 0xb375: 'Skein1024-168',\\n 0xb376: 'Skein1024-176',\\n 0xb377: 'Skein1024-184',\\n 0xb378: 'Skein1024-192',\\n 0xb379: 'Skein1024-200',\\n 0xb37a: 'Skein1024-208',\\n 0xb37b: 'Skein1024-216',\\n 0xb37c: 'Skein1024-224',\\n 0xb37d: 'Skein1024-232',\\n 0xb37e: 'Skein1024-240',\\n 0xb37f: 'Skein1024-248',\\n 0xb380: 'Skein1024-256',\\n 0xb381: 'Skein1024-264',\\n 0xb382: 'Skein1024-272',\\n 0xb383: 'Skein1024-280',\\n 0xb384: 'Skein1024-288',\\n 0xb385: 'Skein1024-296',\\n 0xb386: 'Skein1024-304',\\n 0xb387: 'Skein1024-312',\\n 0xb388: 'Skein1024-320',\\n 0xb389: 'Skein1024-328',\\n 0xb38a: 'Skein1024-336',\\n 0xb38b: 'Skein1024-344',\\n 0xb38c: 'Skein1024-352',\\n 0xb38d: 'Skein1024-360',\\n 0xb38e: 'Skein1024-368',\\n 0xb38f: 'Skein1024-376',\\n 0xb390: 'Skein1024-384',\\n 0xb391: 'Skein1024-392',\\n 0xb392: 'Skein1024-400',\\n 0xb393: 'Skein1024-408',\\n 0xb394: 'Skein1024-416',\\n 0xb395: 'Skein1024-424',\\n 0xb396: 'Skein1024-432',\\n 0xb397: 'Skein1024-440',\\n 0xb398: 'Skein1024-448',\\n 0xb399: 'Skein1024-456',\\n 0xb39a: 'Skein1024-464',\\n 0xb39b: 'Skein1024-472',\\n 0xb39c: 'Skein1024-480',\\n 0xb39d: 'Skein1024-488',\\n 0xb39e: 'Skein1024-496',\\n 0xb39f: 'Skein1024-504',\\n 0xb3a0: 'Skein1024-512',\\n 0xb3a1: 'Skein1024-520',\\n 0xb3a2: 'Skein1024-528',\\n 0xb3a3: 'Skein1024-536',\\n 0xb3a4: 'Skein1024-544',\\n 0xb3a5: 'Skein1024-552',\\n 0xb3a6: 'Skein1024-560',\\n 0xb3a7: 'Skein1024-568',\\n 0xb3a8: 'Skein1024-576',\\n 0xb3a9: 'Skein1024-584',\\n 0xb3aa: 'Skein1024-592',\\n 0xb3ab: 'Skein1024-600',\\n 0xb3ac: 'Skein1024-608',\\n 0xb3ad: 'Skein1024-616',\\n 0xb3ae: 'Skein1024-624',\\n 0xb3af: 'Skein1024-632',\\n 0xb3b0: 'Skein1024-640',\\n 0xb3b1: 'Skein1024-648',\\n 0xb3b2: 'Skein1024-656',\\n 0xb3b3: 'Skein1024-664',\\n 0xb3b4: 'Skein1024-672',\\n 0xb3b5: 'Skein1024-680',\\n 0xb3b6: 'Skein1024-688',\\n 0xb3b7: 'Skein1024-696',\\n 0xb3b8: 'Skein1024-704',\\n 0xb3b9: 'Skein1024-712',\\n 0xb3ba: 'Skein1024-720',\\n 0xb3bb: 'Skein1024-728',\\n 0xb3bc: 'Skein1024-736',\\n 0xb3bd: 'Skein1024-744',\\n 0xb3be: 'Skein1024-752',\\n 0xb3bf: 'Skein1024-760',\\n 0xb3c0: 'Skein1024-768',\\n 0xb3c1: 'Skein1024-776',\\n 0xb3c2: 'Skein1024-784',\\n 0xb3c3: 'Skein1024-792',\\n 0xb3c4: 'Skein1024-800',\\n 0xb3c5: 'Skein1024-808',\\n 0xb3c6: 'Skein1024-816',\\n 0xb3c7: 'Skein1024-824',\\n 0xb3c8: 'Skein1024-832',\\n 0xb3c9: 'Skein1024-840',\\n 0xb3ca: 'Skein1024-848',\\n 0xb3cb: 'Skein1024-856',\\n 0xb3cc: 'Skein1024-864',\\n 0xb3cd: 'Skein1024-872',\\n 0xb3ce: 'Skein1024-880',\\n 0xb3cf: 'Skein1024-888',\\n 0xb3d0: 'Skein1024-896',\\n 0xb3d1: 'Skein1024-904',\\n 0xb3d2: 'Skein1024-912',\\n 0xb3d3: 'Skein1024-920',\\n 0xb3d4: 'Skein1024-928',\\n 0xb3d5: 'Skein1024-936',\\n 0xb3d6: 'Skein1024-944',\\n 0xb3d7: 'Skein1024-952',\\n 0xb3d8: 'Skein1024-960',\\n 0xb3d9: 'Skein1024-968',\\n 0xb3da: 'Skein1024-976',\\n 0xb3db: 'Skein1024-984',\\n 0xb3dc: 'Skein1024-992',\\n 0xb3dd: 'Skein1024-1000',\\n 0xb3de: 'Skein1024-1008',\\n 0xb3df: 'Skein1024-1016',\\n 0xb3e0: 'Skein1024-1024'\\n})\\n\\nexports.defaultLengths = Object.freeze({\\n 0x11: 20,\\n 0x12: 32,\\n 0x13: 64,\\n 0x56: 32,\\n 0x17: 28,\\n 0x16: 32,\\n 0x15: 48,\\n 0x14: 64,\\n 0x18: 32,\\n 0x19: 64,\\n 0x1A: 28,\\n 0x1B: 32,\\n 0x1C: 48,\\n 0x1D: 64,\\n 0x22: 32,\\n\\n 0xb201: 0x01,\\n 0xb202: 0x02,\\n 0xb203: 0x03,\\n 0xb204: 0x04,\\n 0xb205: 0x05,\\n 0xb206: 0x06,\\n 0xb207: 0x07,\\n 0xb208: 0x08,\\n 0xb209: 0x09,\\n 0xb20a: 0x0a,\\n 0xb20b: 0x0b,\\n 0xb20c: 0x0c,\\n 0xb20d: 0x0d,\\n 0xb20e: 0x0e,\\n 0xb20f: 0x0f,\\n 0xb210: 0x10,\\n 0xb211: 0x11,\\n 0xb212: 0x12,\\n 0xb213: 0x13,\\n 0xb214: 0x14,\\n 0xb215: 0x15,\\n 0xb216: 0x16,\\n 0xb217: 0x17,\\n 0xb218: 0x18,\\n 0xb219: 0x19,\\n 0xb21a: 0x1a,\\n 0xb21b: 0x1b,\\n 0xb21c: 0x1c,\\n 0xb21d: 0x1d,\\n 0xb21e: 0x1e,\\n 0xb21f: 0x1f,\\n 0xb220: 0x20,\\n 0xb221: 0x21,\\n 0xb222: 0x22,\\n 0xb223: 0x23,\\n 0xb224: 0x24,\\n 0xb225: 0x25,\\n 0xb226: 0x26,\\n 0xb227: 0x27,\\n 0xb228: 0x28,\\n 0xb229: 0x29,\\n 0xb22a: 0x2a,\\n 0xb22b: 0x2b,\\n 0xb22c: 0x2c,\\n 0xb22d: 0x2d,\\n 0xb22e: 0x2e,\\n 0xb22f: 0x2f,\\n 0xb230: 0x30,\\n 0xb231: 0x31,\\n 0xb232: 0x32,\\n 0xb233: 0x33,\\n 0xb234: 0x34,\\n 0xb235: 0x35,\\n 0xb236: 0x36,\\n 0xb237: 0x37,\\n 0xb238: 0x38,\\n 0xb239: 0x39,\\n 0xb23a: 0x3a,\\n 0xb23b: 0x3b,\\n 0xb23c: 0x3c,\\n 0xb23d: 0x3d,\\n 0xb23e: 0x3e,\\n 0xb23f: 0x3f,\\n 0xb240: 0x40,\\n 0xb241: 0x01,\\n 0xb242: 0x02,\\n 0xb243: 0x03,\\n 0xb244: 0x04,\\n 0xb245: 0x05,\\n 0xb246: 0x06,\\n 0xb247: 0x07,\\n 0xb248: 0x08,\\n 0xb249: 0x09,\\n 0xb24a: 0x0a,\\n 0xb24b: 0x0b,\\n 0xb24c: 0x0c,\\n 0xb24d: 0x0d,\\n 0xb24e: 0x0e,\\n 0xb24f: 0x0f,\\n 0xb250: 0x10,\\n 0xb251: 0x11,\\n 0xb252: 0x12,\\n 0xb253: 0x13,\\n 0xb254: 0x14,\\n 0xb255: 0x15,\\n 0xb256: 0x16,\\n 0xb257: 0x17,\\n 0xb258: 0x18,\\n 0xb259: 0x19,\\n 0xb25a: 0x1a,\\n 0xb25b: 0x1b,\\n 0xb25c: 0x1c,\\n 0xb25d: 0x1d,\\n 0xb25e: 0x1e,\\n 0xb25f: 0x1f,\\n 0xb260: 0x20,\\n 0xb301: 0x01,\\n 0xb302: 0x02,\\n 0xb303: 0x03,\\n 0xb304: 0x04,\\n 0xb305: 0x05,\\n 0xb306: 0x06,\\n 0xb307: 0x07,\\n 0xb308: 0x08,\\n 0xb309: 0x09,\\n 0xb30a: 0x0a,\\n 0xb30b: 0x0b,\\n 0xb30c: 0x0c,\\n 0xb30d: 0x0d,\\n 0xb30e: 0x0e,\\n 0xb30f: 0x0f,\\n 0xb310: 0x10,\\n 0xb311: 0x11,\\n 0xb312: 0x12,\\n 0xb313: 0x13,\\n 0xb314: 0x14,\\n 0xb315: 0x15,\\n 0xb316: 0x16,\\n 0xb317: 0x17,\\n 0xb318: 0x18,\\n 0xb319: 0x19,\\n 0xb31a: 0x1a,\\n 0xb31b: 0x1b,\\n 0xb31c: 0x1c,\\n 0xb31d: 0x1d,\\n 0xb31e: 0x1e,\\n 0xb31f: 0x1f,\\n 0xb320: 0x20,\\n 0xb321: 0x01,\\n 0xb322: 0x02,\\n 0xb323: 0x03,\\n 0xb324: 0x04,\\n 0xb325: 0x05,\\n 0xb326: 0x06,\\n 0xb327: 0x07,\\n 0xb328: 0x08,\\n 0xb329: 0x09,\\n 0xb32a: 0x0a,\\n 0xb32b: 0x0b,\\n 0xb32c: 0x0c,\\n 0xb32d: 0x0d,\\n 0xb32e: 0x0e,\\n 0xb32f: 0x0f,\\n 0xb330: 0x10,\\n 0xb331: 0x11,\\n 0xb332: 0x12,\\n 0xb333: 0x13,\\n 0xb334: 0x14,\\n 0xb335: 0x15,\\n 0xb336: 0x16,\\n 0xb337: 0x17,\\n 0xb338: 0x18,\\n 0xb339: 0x19,\\n 0xb33a: 0x1a,\\n 0xb33b: 0x1b,\\n 0xb33c: 0x1c,\\n 0xb33d: 0x1d,\\n 0xb33e: 0x1e,\\n 0xb33f: 0x1f,\\n 0xb340: 0x20,\\n 0xb341: 0x21,\\n 0xb342: 0x22,\\n 0xb343: 0x23,\\n 0xb344: 0x24,\\n 0xb345: 0x25,\\n 0xb346: 0x26,\\n 0xb347: 0x27,\\n 0xb348: 0x28,\\n 0xb349: 0x29,\\n 0xb34a: 0x2a,\\n 0xb34b: 0x2b,\\n 0xb34c: 0x2c,\\n 0xb34d: 0x2d,\\n 0xb34e: 0x2e,\\n 0xb34f: 0x2f,\\n 0xb350: 0x30,\\n 0xb351: 0x31,\\n 0xb352: 0x32,\\n 0xb353: 0x33,\\n 0xb354: 0x34,\\n 0xb355: 0x35,\\n 0xb356: 0x36,\\n 0xb357: 0x37,\\n 0xb358: 0x38,\\n 0xb359: 0x39,\\n 0xb35a: 0x3a,\\n 0xb35b: 0x3b,\\n 0xb35c: 0x3c,\\n 0xb35d: 0x3d,\\n 0xb35e: 0x3e,\\n 0xb35f: 0x3f,\\n 0xb360: 0x40,\\n 0xb361: 0x01,\\n 0xb362: 0x02,\\n 0xb363: 0x03,\\n 0xb364: 0x04,\\n 0xb365: 0x05,\\n 0xb366: 0x06,\\n 0xb367: 0x07,\\n 0xb368: 0x08,\\n 0xb369: 0x09,\\n 0xb36a: 0x0a,\\n 0xb36b: 0x0b,\\n 0xb36c: 0x0c,\\n 0xb36d: 0x0d,\\n 0xb36e: 0x0e,\\n 0xb36f: 0x0f,\\n 0xb370: 0x10,\\n 0xb371: 0x11,\\n 0xb372: 0x12,\\n 0xb373: 0x13,\\n 0xb374: 0x14,\\n 0xb375: 0x15,\\n 0xb376: 0x16,\\n 0xb377: 0x17,\\n 0xb378: 0x18,\\n 0xb379: 0x19,\\n 0xb37a: 0x1a,\\n 0xb37b: 0x1b,\\n 0xb37c: 0x1c,\\n 0xb37d: 0x1d,\\n 0xb37e: 0x1e,\\n 0xb37f: 0x1f,\\n 0xb380: 0x20,\\n 0xb381: 0x21,\\n 0xb382: 0x22,\\n 0xb383: 0x23,\\n 0xb384: 0x24,\\n 0xb385: 0x25,\\n 0xb386: 0x26,\\n 0xb387: 0x27,\\n 0xb388: 0x28,\\n 0xb389: 0x29,\\n 0xb38a: 0x2a,\\n 0xb38b: 0x2b,\\n 0xb38c: 0x2c,\\n 0xb38d: 0x2d,\\n 0xb38e: 0x2e,\\n 0xb38f: 0x2f,\\n 0xb390: 0x30,\\n 0xb391: 0x31,\\n 0xb392: 0x32,\\n 0xb393: 0x33,\\n 0xb394: 0x34,\\n 0xb395: 0x35,\\n 0xb396: 0x36,\\n 0xb397: 0x37,\\n 0xb398: 0x38,\\n 0xb399: 0x39,\\n 0xb39a: 0x3a,\\n 0xb39b: 0x3b,\\n 0xb39c: 0x3c,\\n 0xb39d: 0x3d,\\n 0xb39e: 0x3e,\\n 0xb39f: 0x3f,\\n 0xb3a0: 0x40,\\n 0xb3a1: 0x41,\\n 0xb3a2: 0x42,\\n 0xb3a3: 0x43,\\n 0xb3a4: 0x44,\\n 0xb3a5: 0x45,\\n 0xb3a6: 0x46,\\n 0xb3a7: 0x47,\\n 0xb3a8: 0x48,\\n 0xb3a9: 0x49,\\n 0xb3aa: 0x4a,\\n 0xb3ab: 0x4b,\\n 0xb3ac: 0x4c,\\n 0xb3ad: 0x4d,\\n 0xb3ae: 0x4e,\\n 0xb3af: 0x4f,\\n 0xb3b0: 0x50,\\n 0xb3b1: 0x51,\\n 0xb3b2: 0x52,\\n 0xb3b3: 0x53,\\n 0xb3b4: 0x54,\\n 0xb3b5: 0x55,\\n 0xb3b6: 0x56,\\n 0xb3b7: 0x57,\\n 0xb3b8: 0x58,\\n 0xb3b9: 0x59,\\n 0xb3ba: 0x5a,\\n 0xb3bb: 0x5b,\\n 0xb3bc: 0x5c,\\n 0xb3bd: 0x5d,\\n 0xb3be: 0x5e,\\n 0xb3bf: 0x5f,\\n 0xb3c0: 0x60,\\n 0xb3c1: 0x61,\\n 0xb3c2: 0x62,\\n 0xb3c3: 0x63,\\n 0xb3c4: 0x64,\\n 0xb3c5: 0x65,\\n 0xb3c6: 0x66,\\n 0xb3c7: 0x67,\\n 0xb3c8: 0x68,\\n 0xb3c9: 0x69,\\n 0xb3ca: 0x6a,\\n 0xb3cb: 0x6b,\\n 0xb3cc: 0x6c,\\n 0xb3cd: 0x6d,\\n 0xb3ce: 0x6e,\\n 0xb3cf: 0x6f,\\n 0xb3d0: 0x70,\\n 0xb3d1: 0x71,\\n 0xb3d2: 0x72,\\n 0xb3d3: 0x73,\\n 0xb3d4: 0x74,\\n 0xb3d5: 0x75,\\n 0xb3d6: 0x76,\\n 0xb3d7: 0x77,\\n 0xb3d8: 0x78,\\n 0xb3d9: 0x79,\\n 0xb3da: 0x7a,\\n 0xb3db: 0x7b,\\n 0xb3dc: 0x7c,\\n 0xb3dd: 0x7d,\\n 0xb3de: 0x7e,\\n 0xb3df: 0x7f,\\n 0xb3e0: 0x80\\n})\\n\\n},{}],62:[function(require,module,exports){\\n/**\\n * Multihash implementation in JavaScript.\\n *\\n * @module multihash\\n */\\n'use strict'\\n\\nconst { Buffer } = require('buffer')\\nconst multibase = require('multibase')\\nconst varint = require('varint')\\nconst cs = require('./constants')\\n\\nexports.names = cs.names\\nexports.codes = cs.codes\\nexports.defaultLengths = cs.defaultLengths\\n\\n/**\\n * Convert the given multihash to a hex encoded string.\\n *\\n * @param {Buffer} hash\\n * @returns {string}\\n */\\nexports.toHexString = function toHexString (hash) {\\n if (!Buffer.isBuffer(hash)) {\\n throw new Error('must be passed a buffer')\\n }\\n\\n return hash.toString('hex')\\n}\\n\\n/**\\n * Convert the given hex encoded string to a multihash.\\n *\\n * @param {string} hash\\n * @returns {Buffer}\\n */\\nexports.fromHexString = function fromHexString (hash) {\\n return Buffer.from(hash, 'hex')\\n}\\n\\n/**\\n * Convert the given multihash to a base58 encoded string.\\n *\\n * @param {Buffer} hash\\n * @returns {string}\\n */\\nexports.toB58String = function toB58String (hash) {\\n if (!Buffer.isBuffer(hash)) {\\n throw new Error('must be passed a buffer')\\n }\\n\\n return multibase.encode('base58btc', hash).toString().slice(1)\\n}\\n\\n/**\\n * Convert the given base58 encoded string to a multihash.\\n *\\n * @param {string|Buffer} hash\\n * @returns {Buffer}\\n */\\nexports.fromB58String = function fromB58String (hash) {\\n let encoded = hash\\n if (Buffer.isBuffer(hash)) {\\n encoded = hash.toString()\\n }\\n\\n return multibase.decode('z' + encoded)\\n}\\n\\n/**\\n * Decode a hash from the given multihash.\\n *\\n * @param {Buffer} buf\\n * @returns {{code: number, name: string, length: number, digest: Buffer}} result\\n */\\nexports.decode = function decode (buf) {\\n if (!(Buffer.isBuffer(buf))) {\\n throw new Error('multihash must be a Buffer')\\n }\\n\\n if (buf.length \u003C 2) {\\n throw new Error('multihash too short. must be > 2 bytes.')\\n }\\n\\n const code = varint.decode(buf)\\n if (!exports.isValidCode(code)) {\\n throw new Error(`multihash unknown function code: 0x${code.toString(16)}`)\\n }\\n buf = buf.slice(varint.decode.bytes)\\n\\n const len = varint.decode(buf)\\n if (len \u003C 0) {\\n throw new Error(`multihash invalid length: ${len}`)\\n }\\n buf = buf.slice(varint.decode.bytes)\\n\\n if (buf.length !== len) {\\n throw new Error(`multihash length inconsistent: 0x${buf.toString('hex')}`)\\n }\\n\\n return {\\n code: code,\\n name: cs.codes[code],\\n length: len,\\n digest: buf\\n }\\n}\\n\\n/**\\n * Encode a hash digest along with the specified function code.\\n *\\n * > **Note:** the length is derived from the length of the digest itself.\\n *\\n * @param {Buffer} digest\\n * @param {string|number} code\\n * @param {number} [length]\\n * @returns {Buffer}\\n */\\nexports.encode = function encode (digest, code, length) {\\n if (!digest || code === undefined) {\\n throw new Error('multihash encode requires at least two args: digest, code')\\n }\\n\\n // ensure it's a hashfunction code.\\n const hashfn = exports.coerceCode(code)\\n\\n if (!(Buffer.isBuffer(digest))) {\\n throw new Error('digest should be a Buffer')\\n }\\n\\n if (length == null) {\\n length = digest.length\\n }\\n\\n if (length && digest.length !== length) {\\n throw new Error('digest length should be equal to specified length.')\\n }\\n\\n return Buffer.concat([\\n Buffer.from(varint.encode(hashfn)),\\n Buffer.from(varint.encode(length)),\\n digest\\n ])\\n}\\n\\n/**\\n * Converts a hash function name into the matching code.\\n * If passed a number it will return the number if it's a valid code.\\n * @param {string|number} name\\n * @returns {number}\\n */\\nexports.coerceCode = function coerceCode (name) {\\n let code = name\\n\\n if (typeof name === 'string') {\\n if (cs.names[name] === undefined) {\\n throw new Error(`Unrecognized hash function named: ${name}`)\\n }\\n code = cs.names[name]\\n }\\n\\n if (typeof code !== 'number') {\\n throw new Error(`Hash function code should be a number. Got: ${code}`)\\n }\\n\\n if (cs.codes[code] === undefined && !exports.isAppCode(code)) {\\n throw new Error(`Unrecognized function code: ${code}`)\\n }\\n\\n return code\\n}\\n\\n/**\\n * Checks wether a code is part of the app range\\n *\\n * @param {number} code\\n * @returns {boolean}\\n */\\nexports.isAppCode = function appCode (code) {\\n return code > 0 && code \u003C 0x10\\n}\\n\\n/**\\n * Checks whether a multihash code is valid.\\n *\\n * @param {number} code\\n * @returns {boolean}\\n */\\nexports.isValidCode = function validCode (code) {\\n if (exports.isAppCode(code)) {\\n return true\\n }\\n\\n if (cs.codes[code]) {\\n return true\\n }\\n\\n return false\\n}\\n\\n/**\\n * Check if the given buffer is a valid multihash. Throws an error if it is not valid.\\n *\\n * @param {Buffer} multihash\\n * @returns {undefined}\\n * @throws {Error}\\n */\\nfunction validate (multihash) {\\n exports.decode(multihash) // throws if bad.\\n}\\nexports.validate = validate\\n\\n/**\\n * Returns a prefix from a valid multihash. Throws an error if it is not valid.\\n *\\n * @param {Buffer} multihash\\n * @returns {undefined}\\n * @throws {Error}\\n */\\nexports.prefix = function prefix (multihash) {\\n validate(multihash)\\n\\n return multihash.slice(0, 2)\\n}\\n\\n},{\\\"./constants\\\":61,\\\"buffer\\\":5,\\\"multibase\\\":53,\\\"varint\\\":67}],63:[function(require,module,exports){\\n/*! safe-buffer. MIT License. Feross Aboukhadijeh \u003Chttps://feross.org/opensource> */\\n/* eslint-disable node/no-deprecated-api */\\nvar buffer = require('buffer')\\nvar Buffer = buffer.Buffer\\n\\n// alternative to using Object.keys for old browsers\\nfunction copyProps (src, dst) {\\n for (var key in src) {\\n dst[key] = src[key]\\n }\\n}\\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\\n module.exports = buffer\\n} else {\\n // Copy properties from require('buffer')\\n copyProps(buffer, exports)\\n exports.Buffer = SafeBuffer\\n}\\n\\nfunction SafeBuffer (arg, encodingOrOffset, length) {\\n return Buffer(arg, encodingOrOffset, length)\\n}\\n\\nSafeBuffer.prototype = Object.create(Buffer.prototype)\\n\\n// Copy static methods from Buffer\\ncopyProps(Buffer, SafeBuffer)\\n\\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\\n if (typeof arg === 'number') {\\n throw new TypeError('Argument must not be a number')\\n }\\n return Buffer(arg, encodingOrOffset, length)\\n}\\n\\nSafeBuffer.alloc = function (size, fill, encoding) {\\n if (typeof size !== 'number') {\\n throw new TypeError('Argument must be a number')\\n }\\n var buf = Buffer(size)\\n if (fill !== undefined) {\\n if (typeof encoding === 'string') {\\n buf.fill(fill, encoding)\\n } else {\\n buf.fill(fill)\\n }\\n } else {\\n buf.fill(0)\\n }\\n return buf\\n}\\n\\nSafeBuffer.allocUnsafe = function (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('Argument must be a number')\\n }\\n return Buffer(size)\\n}\\n\\nSafeBuffer.allocUnsafeSlow = function (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('Argument must be a number')\\n }\\n return buffer.SlowBuffer(size)\\n}\\n\\n},{\\\"buffer\\\":5}],64:[function(require,module,exports){\\n(function (global){\\n\\\"use strict\\\";\\nvar g;\\n\\n\\n\\nif (typeof window !== \\\"undefined\\\")\\n{\\n\\tg = window;\\n}\\nelse if (typeof global !== \\\"undefined\\\")\\n{\\n\\tg = global;\\n}\\nelse if (typeof self !== \\\"undefined\\\")\\n{\\n\\tg = self;\\n}\\nelse\\n{\\n\\tg = this;\\n}\\n\\n\\n\\nvar output =\\n{\\n\\tshim: function(){},\\n\\tURL: g.URL,\\n\\tURLSearchParams: g.URLSearchParams\\n};\\n\\n\\n\\nif (typeof define === \\\"function\\\" && define.amd)\\n{\\n\\tdefine(function(){ return output });\\n}\\nelse if (typeof exports === \\\"object\\\")\\n{\\n\\tmodule.exports = output;\\n}\\nelse\\n{\\n\\tg.UniversalURL = output;\\n}\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],65:[function(require,module,exports){\\nmodule.exports = read\\n\\nvar MSB = 0x80\\n , REST = 0x7F\\n\\nfunction read(buf, offset) {\\n var res = 0\\n , offset = offset || 0\\n , shift = 0\\n , counter = offset\\n , b\\n , l = buf.length\\n\\n do {\\n if (counter >= l) {\\n read.bytes = 0\\n throw new RangeError('Could not decode varint')\\n }\\n b = buf[counter++]\\n res += shift \u003C 28\\n ? (b & REST) \u003C\u003C shift\\n : (b & REST) * Math.pow(2, shift)\\n shift += 7\\n } while (b >= MSB)\\n\\n read.bytes = counter - offset\\n\\n return res\\n}\\n\\n},{}],66:[function(require,module,exports){\\nmodule.exports = encode\\n\\nvar MSB = 0x80\\n , REST = 0x7F\\n , MSBALL = ~REST\\n , INT = Math.pow(2, 31)\\n\\nfunction encode(num, out, offset) {\\n out = out || []\\n offset = offset || 0\\n var oldOffset = offset\\n\\n while(num >= INT) {\\n out[offset++] = (num & 0xFF) | MSB\\n num /= 128\\n }\\n while(num & MSBALL) {\\n out[offset++] = (num & 0xFF) | MSB\\n num >>>= 7\\n }\\n out[offset] = num | 0\\n \\n encode.bytes = offset - oldOffset + 1\\n \\n return out\\n}\\n\\n},{}],67:[function(require,module,exports){\\nmodule.exports = {\\n encode: require('./encode.js')\\n , decode: require('./decode.js')\\n , encodingLength: require('./length.js')\\n}\\n\\n},{\\\"./decode.js\\\":65,\\\"./encode.js\\\":66,\\\"./length.js\\\":68}],68:[function(require,module,exports){\\n\\nvar N1 = Math.pow(2, 7)\\nvar N2 = Math.pow(2, 14)\\nvar N3 = Math.pow(2, 21)\\nvar N4 = Math.pow(2, 28)\\nvar N5 = Math.pow(2, 35)\\nvar N6 = Math.pow(2, 42)\\nvar N7 = Math.pow(2, 49)\\nvar N8 = Math.pow(2, 56)\\nvar N9 = Math.pow(2, 63)\\n\\nmodule.exports = function (value) {\\n return (\\n value \u003C N1 ? 1\\n : value \u003C N2 ? 2\\n : value \u003C N3 ? 3\\n : value \u003C N4 ? 4\\n : value \u003C N5 ? 5\\n : value \u003C N6 ? 6\\n : value \u003C N7 ? 7\\n : value \u003C N8 ? 8\\n : value \u003C N9 ? 9\\n : 10\\n )\\n}\\n\\n},{}],69:[function(require,module,exports){\\n(function (global){\\n'use strict'\\nmodule.exports = (typeof self === 'object' && self.self === self && self) ||\\n (typeof global === 'object' && global.global === global && global) ||\\n this\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],70:[function(require,module,exports){\\n\\\"use strict\\\";\\n\\nvar _interopRequireDefault = require(\\\"@babel/runtime/helpers/interopRequireDefault\\\");\\n\\nvar _cids = _interopRequireDefault(require(\\\"cids\\\"));\\n\\nvar _contentHash = _interopRequireDefault(require(\\\"content-hash\\\"));\\n\\nvar _windowOrGlobal = _interopRequireDefault(require(\\\"window-or-global\\\"));\\n\\n(function () {\\n /*jslint node: true, browser: true*/\\n 'use strict';\\n\\n const name = 'ens-library'; // https://github.com/ensdomains/resolvers\\n\\n var EnsLibrary = function (ipfsLoader) {\\n this.ipfsLoader = ipfsLoader;\\n this.network = {\\n 1: 'Ethereum Main Network: \\\"Mainnet\\\", chainId: \\\"1\\\"',\\n 3: 'Ethereum Test Network (PoW): \\\"Ropsten\\\", chainId: \\\"3\\\"',\\n 4: 'Ethereum Test Network (PoA): \\\"Rinkeby\\\", chainId: \\\"4\\\"',\\n 5: 'Ethereum Test Network (PoA): \\\"Goerli\\\", chainId: \\\"5\\\"',\\n 42: 'Ethereum Test Network (PoA): \\\"Kovan\\\", chainId: \\\"42\\\"'\\n };\\n this.etherscan = {\\n 1: 'https://etherscan.io',\\n 3: 'https://ropsten.etherscan.io',\\n 4: 'https://rinkeby.etherscan.io',\\n 5: 'https://goerli.etherscan.io',\\n 42: 'https://kovan.etherscan.io'\\n }; // https://docs.ens.domains/ens-deployments\\n // https://github.com/ensdomains/ui/blob/master/src/ens.js\\n\\n this.registry = {\\n 1: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\\n 3: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\\n 4: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\\n 5: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e'\\n };\\n };\\n\\n EnsLibrary.prototype.getLogger = function () {\\n return _windowOrGlobal.default.log.getLogger(name);\\n };\\n\\n EnsLibrary.prototype.getEtherscanRegistry = function () {\\n return this.etherscan;\\n };\\n\\n EnsLibrary.prototype.getNetwork = function () {\\n return this.network;\\n };\\n\\n EnsLibrary.prototype.getENSRegistry = function () {\\n return this.registry;\\n };\\n\\n EnsLibrary.prototype.loadEthers = async function () {\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n try {\\n // Load ethers\\n await this.ipfsLoader.loadEtherJsLibrary();\\n\\n if (_windowOrGlobal.default.ethers !== undefined && _windowOrGlobal.default.ethers !== null) {\\n return;\\n }\\n } catch (error) {\\n this.getLogger().error(error);\\n } // Should not happen...\\n\\n\\n throw new Error('Unavailable Ethereum library...');\\n }\\n }; // https://github.com/ensdomains/ui/blob/master/src/utils/contents.js\\n\\n\\n EnsLibrary.prototype.decodeContenthash = function (content) {\\n var decoded = null;\\n var protocol = null;\\n\\n if (content.error) {\\n throw new Error(content.error);\\n }\\n\\n if (content) {\\n const codec = _contentHash.default.getCodec(content);\\n\\n decoded = _contentHash.default.decode(content);\\n\\n if (codec === 'ipfs-ns') {\\n protocol = 'ipfs';\\n } else if (codec === 'swarm-ns') {\\n protocol = 'bzz';\\n } else if (codec === 'onion') {\\n protocol = 'onion';\\n } else if (codec === 'onion3') {\\n protocol = 'onion3';\\n }\\n }\\n\\n return {\\n decoded: decoded,\\n protocol: protocol\\n };\\n }; // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1577.md\\n\\n\\n EnsLibrary.prototype.encodeContenthash = function (content) {\\n var type = null;\\n var text = null;\\n var encoded = null;\\n content = content === undefined || content == null || content.trim() === '' ? null : content.trim();\\n\\n if (content == null) {\\n return null;\\n }\\n\\n const matched = content.match(/^(ipfs|bzz|onion|onion3):\\\\/\\\\/(.*)/) || content.match(/\\\\/(ipfs)\\\\/(.*)/);\\n\\n if (matched) {\\n type = matched[1];\\n text = matched[2];\\n }\\n\\n if (type === 'ipfs') {\\n if (text.length >= 4) {\\n const cid = new _cids.default(text);\\n\\n if (cid.version !== 0) {\\n throw new Error(`ENS domain content should be Base58 (CidV0): ${text}`);\\n }\\n\\n encoded = '0x' + _contentHash.default.fromIpfs(text);\\n }\\n } else {\\n throw new Error(`Unsupported ENS domain protocol: ${type}`);\\n }\\n\\n return {\\n encoded: encoded\\n };\\n };\\n\\n EnsLibrary.prototype.enableProvider = async function (provider) {\\n if (provider === undefined || provider == null) {\\n throw new Error('Undefined Ethereum provider...');\\n } // Enable Provider\\n\\n\\n var accounts = null; // Handle connection, per EIP 1102\\n\\n if (typeof provider.send === 'function') {\\n try {\\n await provider.send('eth_requestAccounts');\\n } catch (error) {\\n // EIP 1193 userRejectedRequest error\\n if (error.code === 4001) {\\n throw new Error('User rejected request...');\\n }\\n\\n throw new Error(error.message);\\n } // Handle user accounts per EIP 1193\\n\\n\\n accounts = await provider.send('eth_accounts'); // https://medium.com/metamask/breaking-changes-to-the-metamask-inpage-provider-b4dde069dd0a\\n // Metamask returns accounts.results rather than an array as described in their above communication\\n\\n if (accounts !== undefined && accounts !== null && typeof accounts.result !== 'undefined' && Array.isArray(accounts.result)) {\\n accounts = accounts.result;\\n } // Legacy\\n\\n } else if (typeof provider.enable === 'function') {\\n accounts = await provider.enable();\\n }\\n\\n if (accounts === undefined || accounts == null || Array.isArray(accounts) === false || accounts.length === 0) {\\n throw new Error('Unable to retrieve an Ethereum account...');\\n } // Return First account\\n\\n\\n return accounts[0];\\n };\\n\\n EnsLibrary.prototype.getProvider = function () {\\n // Retrieve an available Ethereum provider\\n var provider = null;\\n\\n if (typeof _windowOrGlobal.default.ethereum !== 'undefined') {\\n provider = _windowOrGlobal.default.ethereum;\\n this.getLogger().info('Ethereum provider: \\\"window.ethereum\\\"...');\\n }\\n\\n if (provider == null && _windowOrGlobal.default.web3 !== undefined && _windowOrGlobal.default.web3.currentProvider !== undefined) {\\n provider = _windowOrGlobal.default.web3.currentProvider;\\n this.getLogger().info('Ethereum provider: \\\"window.web3.currentProvider\\\"...');\\n }\\n\\n if (provider == null) {\\n throw new Error('Unable to retrieve an Ethereum provider...');\\n } // https://docs.metamask.io/guide/ethereum-provider.html#methods-current-api\\n\\n\\n if (provider.isMetaMask) {\\n provider.autoRefreshOnNetworkChange = false;\\n } // return provider\\n\\n\\n return provider;\\n };\\n\\n EnsLibrary.prototype.getEnabledWeb3Provider = async function (provider) {\\n if (provider === undefined || provider == null) {\\n throw new Error('Undefined Ethereum provider...');\\n }\\n\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n await this.loadEthers();\\n } // Enable provider\\n // https://github.com/ethers-io/ethers.js/issues/433\\n\\n\\n const account = await this.enableProvider(provider); // Instantiate a Web3Provider\\n\\n const web3 = new _windowOrGlobal.default.ethers.providers.Web3Provider(provider); // Retrieve current network\\n\\n const network = await web3.getNetwork();\\n return {\\n web3: web3,\\n chainId: network.chainId,\\n account: account\\n };\\n };\\n\\n EnsLibrary.prototype.getWeb3Provider = async function (provider) {\\n if (provider === undefined || provider == null) {\\n throw new Error('Undefined Ethereum provider...');\\n }\\n\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n await this.loadEthers();\\n } // Instantiate an ethers Web3Provider\\n\\n\\n const web3 = new _windowOrGlobal.default.ethers.providers.Web3Provider(provider); // Retrieve the current network\\n\\n const network = await web3.getNetwork();\\n return {\\n web3: web3,\\n chainId: network.chainId\\n };\\n };\\n\\n EnsLibrary.prototype.getRegistry = async function (web3) {\\n if (web3 === undefined || web3 == null) {\\n throw new Error('Undefined Web3 provider...');\\n } // Retrieve network\\n\\n\\n const network = await web3.getNetwork(); // Retrieve an Ethereum ENS Registry address\\n\\n var registry = null;\\n\\n try {\\n registry = this.registry[network.chainId];\\n } catch (error) {\\n this.getLogger().error(error);\\n }\\n\\n if (registry === undefined || registry == null) {\\n throw new Error(`Unsupported Ethereum network: ${network.chainId}`);\\n } // Return registry address\\n\\n\\n return {\\n chainId: network.chainId,\\n registry: registry\\n };\\n };\\n\\n EnsLibrary.prototype.getResolver = async function (web3, registry, node) {\\n if (web3 === undefined || web3 == null) {\\n throw new Error('Undefined Web3 provider...');\\n }\\n\\n node = node === undefined || node == null || node.trim() === '' ? null : node.trim();\\n\\n if (node == null) {\\n throw new Error('Undefined ENS domain resolver...');\\n }\\n\\n registry = registry === undefined || registry == null || registry.trim() === '' ? null : registry.trim();\\n\\n if (registry == null) {\\n throw new Error('Undefined ENS registry address...');\\n }\\n\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n await this.loadEthers();\\n } // Low level call\\n\\n\\n const abi = [{\\n name: 'resolver',\\n type: 'function',\\n inputs: [{\\n type: 'bytes32'\\n }]\\n }];\\n const iface = new _windowOrGlobal.default.ethers.utils.Interface(abi);\\n const data = iface.functions.resolver.encode([node]);\\n const result = await web3.call({\\n to: registry,\\n data: data\\n });\\n\\n if (result === undefined || result == null || result === '0x') {\\n return null;\\n } // decode if applicable\\n\\n\\n try {\\n const decoded = _windowOrGlobal.default.ethers.utils.defaultAbiCoder.decode(['address'], result);\\n\\n return decoded[0];\\n } catch (error) {\\n this.getLogger().error(error);\\n } // Return\\n\\n\\n return null;\\n }; // https://eips.ethereum.org/EIPS/eip-165\\n\\n\\n EnsLibrary.prototype.checkEip165 = async function (web3, address) {\\n if (web3 === undefined || web3 == null) {\\n throw new Error('Undefined Web3 provider...');\\n }\\n\\n address = address === undefined || address == null || address.trim() === '' ? null : address.trim();\\n\\n if (address == null) {\\n throw new Error('Undefined Ethereum address...');\\n }\\n\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n await this.loadEthers();\\n } // true when interfaceID is 0x01ffc9a7\\n\\n\\n var abi = [{\\n name: 'supportsInterface',\\n type: 'function',\\n inputs: [{\\n type: 'bytes4'\\n }]\\n }];\\n var iface = new _windowOrGlobal.default.ethers.utils.Interface(abi);\\n var data = iface.functions.supportsInterface.encode(['0x01ffc9a7']);\\n var result = await web3.call({\\n to: address,\\n data: data\\n });\\n\\n if (result === undefined || result == null || result === '0x') {\\n return false;\\n } // decode\\n\\n\\n try {\\n var decoded = _windowOrGlobal.default.ethers.utils.defaultAbiCoder.decode(['bool'], result);\\n\\n if (decoded[0] === false) {\\n return false;\\n }\\n } catch (error) {\\n this.getLogger().error(error);\\n return false;\\n } // false when interfaceID is 0xffffffff\\n\\n\\n var data = iface.functions.supportsInterface.encode(['0xffffffff']);\\n var result = await web3.call({\\n to: address,\\n data: data\\n });\\n\\n if (result === undefined || result == null || result === '0x') {\\n return false;\\n } // decode\\n\\n\\n try {\\n var decoded = _windowOrGlobal.default.ethers.utils.defaultAbiCoder.decode(['bool'], result); // conform to spec\\n\\n\\n if (decoded[0] === false) {\\n return true;\\n }\\n } catch (error) {\\n this.getLogger().error(error);\\n } // do not conform to spec\\n\\n\\n return false;\\n }; // https://eips.ethereum.org/EIPS/eip-1577\\n\\n\\n EnsLibrary.prototype.checkEip1577 = async function (web3, address) {\\n if (web3 === undefined || web3 == null) {\\n throw new Error('Undefined Web3 provider...');\\n }\\n\\n address = address === undefined || address == null || address.trim() === '' ? null : address.trim();\\n\\n if (address == null) {\\n throw new Error('Undefined Ethereum address...');\\n }\\n\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n await this.loadEthers();\\n } // contenthash, true when interfaceID is 0xbc1c58d1\\n\\n\\n var abi = [{\\n name: 'supportsInterface',\\n type: 'function',\\n inputs: [{\\n type: 'bytes4'\\n }]\\n }];\\n var iface = new _windowOrGlobal.default.ethers.utils.Interface(abi);\\n var data = iface.functions.supportsInterface.encode(['0xbc1c58d1']);\\n var result = await web3.call({\\n to: address,\\n data: data\\n });\\n\\n if (result === undefined || result == null || result === '0x') {\\n return false;\\n }\\n\\n try {\\n // decode\\n var decoded = _windowOrGlobal.default.ethers.utils.defaultAbiCoder.decode(['bool'], result);\\n\\n if (decoded[0] === false) {\\n return false;\\n }\\n } catch (error) {\\n this.getLogger().error(error);\\n return false;\\n } // return\\n\\n\\n return true;\\n };\\n\\n EnsLibrary.prototype.getContentHash = async function (domain, web3) {\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n await this.loadEthers();\\n }\\n\\n domain = domain === undefined || domain == null || domain.trim() === '' ? null : domain.trim();\\n\\n if (domain == null) {\\n throw new Error('Undefined ENS domain...');\\n }\\n\\n if (web3 === undefined) {\\n var {\\n web3\\n } = await this.getWeb3Provider();\\n } // Resolve domain as namehash\\n\\n\\n const domainHash = _windowOrGlobal.default.ethers.utils.namehash(domain); // Fetch ens registry address\\n\\n\\n const {\\n chainId,\\n registry\\n } = await this.getRegistry(web3); // Log\\n\\n this.getLogger().info(`ENS registry: \\\\n ${this.etherscan[chainId]}/address/${registry}`); // Fetch resolver address\\n\\n var resolver = await this.getResolver(web3, registry, domainHash); // Check\\n\\n if (resolver == null || /^0x0+$/.test(resolver) === true) {\\n throw new Error('Undefined ENS domain resolver...');\\n } // Log\\n\\n\\n this.getLogger().info(`ENS domain resolver:\\\\n ${this.etherscan[chainId]}/address/${resolver}`); // Check if resolver is EIP165\\n\\n const eip165 = await this.checkEip165(web3, resolver);\\n\\n if (eip165 === false) {\\n throw new Error('ENS domain resolver do not conform to EIP165...');\\n } // Check if resolver is EIP1577\\n\\n\\n const eip1577 = await this.checkEip1577(web3, resolver);\\n\\n if (eip1577 === false) {\\n throw new Error('ENS domain resolver do not conform to EIP1577...');\\n } // Retrieve content hash\\n\\n\\n this.getLogger().info('Processing ENS domain content...');\\n const abi = [{\\n name: 'contenthash',\\n type: 'function',\\n inputs: [{\\n type: 'bytes32'\\n }]\\n }];\\n const iface = new _windowOrGlobal.default.ethers.utils.Interface(abi);\\n const data = iface.functions.contenthash.encode([domainHash]);\\n const result = await web3.call({\\n to: resolver,\\n data: data\\n });\\n\\n if (result === undefined || result == null || result === '0x') {\\n return {\\n content: null,\\n protocol: null\\n };\\n } // decode bytes result\\n\\n\\n var content = _windowOrGlobal.default.ethers.utils.defaultAbiCoder.decode(['bytes'], result);\\n\\n if (content === undefined || content == null || Array.isArray(content) === false || content[0] === '0x') {\\n return {\\n content: null,\\n protocol: null\\n };\\n } // Decode content hash\\n\\n\\n var {\\n decoded,\\n protocol\\n } = this.decodeContenthash(content[0]);\\n return {\\n content: decoded,\\n protocol: protocol\\n };\\n };\\n\\n EnsLibrary.prototype.isOwner = async function (domain, web3, account) {\\n if (_windowOrGlobal.default.ethers === undefined || _windowOrGlobal.default.ethers == null) {\\n await this.loadEthers();\\n }\\n\\n domain = domain === undefined || domain == null || domain.trim() === '' ? null : domain.trim();\\n\\n if (domain == null) {\\n throw new Error('Undefined ENS domain...');\\n }\\n\\n if (web3 === undefined || account === undefined) {\\n var {\\n web3,\\n account\\n } = await this.getEnabledWeb3Provider();\\n } // Resolve domain as namehash\\n\\n\\n const domainHash = _windowOrGlobal.default.ethers.utils.namehash(domain); // Fetch ens registry address\\n\\n\\n const {\\n chainId,\\n registry\\n } = await this.getRegistry(web3); // Log\\n\\n this.getLogger().info(`ENS registry: \\\\n ${this.etherscan[chainId]}/address/${registry}`);\\n this.getLogger().info('Processing owner...');\\n const abi = [{\\n name: 'owner',\\n type: 'function',\\n inputs: [{\\n type: 'bytes32'\\n }]\\n }];\\n const iface = new _windowOrGlobal.default.ethers.utils.Interface(abi);\\n const data = iface.functions.owner.encode([domainHash]);\\n const result = await web3.call({\\n to: registry,\\n data: data\\n });\\n\\n if (result === undefined || result == null || result === '0x') {\\n return false;\\n } // decode if applicable\\n\\n\\n try {\\n const decoded = _windowOrGlobal.default.ethers.utils.defaultAbiCoder.decode(['address'], result);\\n\\n return decoded[0].toLowerCase() === account.toLowerCase();\\n } catch (error) {\\n this.getLogger().error(error);\\n }\\n\\n return false;\\n };\\n\\n EnsLibrary.prototype.setContentHash = async function (domain, cid, web3, account) {\\n cid = cid === undefined || cid == null || cid.toString().trim() === '' ? null : cid.toString().trim();\\n\\n if (cid == null) {\\n throw new Error('Undefined IPFS identifier...');\\n }\\n\\n domain = domain === undefined || domain == null || domain.trim() === '' ? null : domain.trim();\\n\\n if (domain == null) {\\n throw new Error('Undefined ENS domain...');\\n }\\n\\n if (web3 === undefined || account === undefined) {\\n var {\\n web3,\\n account\\n } = await this.getEnabledWeb3Provider();\\n } // Resolve domain as namehash\\n\\n\\n const domainHash = _windowOrGlobal.default.ethers.utils.namehash(domain); // Fetch ens registry address\\n\\n\\n const {\\n chainId,\\n registry\\n } = await this.getRegistry(web3);\\n this.getLogger().info(`ENS registry:\\\\n ${this.etherscan[chainId]}/address/${registry}`);\\n var resolver = await this.getResolver(web3, registry, domainHash);\\n\\n if (resolver == null || /^0x0+$/.test(resolver) === true) {\\n throw new Error('Undefined ENS resolver...');\\n }\\n\\n this.getLogger().info(`ENS domain resolver:\\\\n ${this.etherscan[chainId]}/address/${resolver}`); // Check if resolver is EIP165\\n\\n const eip165 = await this.checkEip165(web3, resolver);\\n\\n if (eip165 === false) {\\n throw new Error('ENS resolver do not conform to EIP165...');\\n } // Check if resolver is EIP1577\\n\\n\\n const eip1577 = await this.checkEip1577(web3, resolver);\\n\\n if (eip1577 === false) {\\n throw new Error('ENS resolver do not conform to EIP1577...');\\n } // Encode cid\\n\\n\\n const {\\n encoded\\n } = this.encodeContenthash('ipfs://' + cid); // Set Contenthash\\n\\n this.getLogger().info('Processing ENS domain content...');\\n const abi = [{\\n name: 'setContenthash',\\n type: 'function',\\n inputs: [{\\n type: 'bytes32'\\n }, {\\n type: 'bytes'\\n }]\\n }];\\n const iface = new _windowOrGlobal.default.ethers.utils.Interface(abi);\\n const data = iface.functions.setContenthash.encode([domainHash, encoded]);\\n const signer = web3.getSigner();\\n const tx = await signer.sendTransaction({\\n to: resolver,\\n data: data\\n });\\n this.getLogger().info(`Processing Transaction:\\\\n ${this.etherscan[chainId]}/tx/${tx.hash}`); // Wait for transaction completion\\n\\n await tx.wait();\\n this.getLogger().info('Processed ENS domain content...');\\n };\\n\\n module.exports = EnsLibrary;\\n})();\\n\\n},{\\\"@babel/runtime/helpers/interopRequireDefault\\\":2,\\\"cids\\\":7,\\\"content-hash\\\":32,\\\"window-or-global\\\":69}],71:[function(require,module,exports){\\n\\\"use strict\\\";\\n\\nvar _interopRequireDefault = require(\\\"@babel/runtime/helpers/interopRequireDefault\\\");\\n\\nvar _cids = _interopRequireDefault(require(\\\"cids\\\"));\\n\\nvar _windowOrGlobal = _interopRequireDefault(require(\\\"window-or-global\\\"));\\n\\nvar _ensLibrary = _interopRequireDefault(require(\\\"./ens-library\\\"));\\n\\nvar _ipfsLibrary = _interopRequireDefault(require(\\\"./ipfs-library\\\"));\\n\\nvar _ipfsLoader = _interopRequireDefault(require(\\\"./ipfs-loader\\\"));\\n\\nvar _ipfsUrl = _interopRequireDefault(require(\\\"./ipfs-url\\\"));\\n\\n/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-bundle.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nIPFS Bundle\\n\\n\\\\*/\\n(function () {\\n /*jslint node: true, browser: true*/\\n 'use strict';\\n\\n const cidAnalyser = 'https://cid.ipfs.io/#';\\n const name = 'ipfs-bundle';\\n\\n var IpfsBundle = function () {\\n this.once = false;\\n };\\n\\n IpfsBundle.prototype.getLogger = function () {\\n return _windowOrGlobal.default.log.getLogger(name);\\n };\\n\\n IpfsBundle.prototype.init = function () {\\n // Init once\\n if (this.once) {\\n return;\\n }\\n\\n this.ipfsLoader = new _ipfsLoader.default(this);\\n this.ensLibrary = new _ensLibrary.default(this.ipfsLoader);\\n this.ipfsLibrary = new _ipfsLibrary.default(this);\\n this.ipfsUrl = new _ipfsUrl.default(); // Init once\\n\\n this.once = true;\\n };\\n\\n IpfsBundle.prototype.isJson = function (content) {\\n return this.ipfsLoader.isJson(content);\\n };\\n\\n IpfsBundle.prototype.loadToBase64 = async function (url) {\\n return this.ipfsLoader.loadToBase64(url);\\n };\\n\\n IpfsBundle.prototype.loadToUtf8 = async function (url) {\\n return this.ipfsLoader.loadToUtf8(url);\\n };\\n\\n IpfsBundle.prototype.decodeCid = function (pathname) {\\n // Check\\n if (pathname === undefined || pathname == null || pathname.trim() === '' || pathname.trim() === '/') {\\n return {\\n cid: null,\\n ipnsIdentifier: null,\\n protocol: null\\n };\\n }\\n\\n var identifier = null;\\n var protocol = null; // Parse\\n\\n const members = pathname.trim().split('/');\\n\\n for (var i = 0; i \u003C members.length; i++) {\\n // Ignore\\n if (members[i].trim() === '') {\\n continue;\\n } // First non empty member\\n\\n\\n if (protocol == null) {\\n protocol = members[i];\\n continue;\\n } // Second non empty member\\n\\n\\n if (identifier == null) {\\n identifier = members[i];\\n break;\\n } // Nothing to process\\n\\n\\n break;\\n } // Check\\n\\n\\n if (protocol == null || identifier == null) {\\n return {\\n cid: null,\\n ipnsIdentifier: null,\\n protocol: null\\n };\\n } // Check protocol\\n\\n\\n if (protocol !== 'ipfs' && protocol !== 'ipns') {\\n return {\\n cid: null,\\n ipnsIdentifier: null,\\n protocol: null\\n };\\n } // Check\\n\\n\\n var cid = null;\\n var ipnsIdentifier = null;\\n\\n if (protocol === 'ipns') {\\n ipnsIdentifier = identifier;\\n } else if (this.isCid(identifier)) {\\n cid = identifier;\\n } // All good\\n\\n\\n return {\\n cid: cid,\\n ipnsIdentifier: ipnsIdentifier,\\n protocol: protocol\\n };\\n };\\n\\n IpfsBundle.prototype.isCid = function (cid) {\\n try {\\n const newCid = new _cids.default(cid);\\n return _cids.default.isCID(newCid);\\n } catch (error) {\\n return false;\\n }\\n };\\n\\n IpfsBundle.prototype.cidV1ToCidV0 = function (cidv1) {\\n var cidv0 = new _cids.default(cidv1);\\n\\n if (cidv0.codec !== 'dag-pb') {\\n throw new Error(`This \\\"cid\\\" is not \\\"dag-pb\\\" encoded: ${cidAnalyser}${cidv0}`);\\n }\\n\\n if (cidv0.version === 1) {\\n cidv0 = cidv0.toV0(); // Log\\n\\n this.getLogger().info(`Converted:\\\\n \\\"cidv1\\\" (Base32): ${cidAnalyser}${cidv1} \\\\n to \\\"cidv0\\\" (Base58): ${cidAnalyser}${cidv0}`);\\n } else {\\n // Log\\n this.getLogger().info(`\\\"cidv0\\\" (Base58):\\\\n ${cidAnalyser}${cidv0}`);\\n }\\n\\n return cidv0.toString();\\n };\\n\\n IpfsBundle.prototype.cidV0ToCidV1 = function (cidv0) {\\n var cidv1 = new _cids.default(cidv0);\\n\\n if (cidv1.codec !== 'dag-pb') {\\n throw new Error(`This \\\"cid\\\" is not \\\"dag-pb\\\" encoded: ${cidAnalyser}${cidv1}`);\\n }\\n\\n if (cidv1.version === 0) {\\n cidv1 = cidv1.toV1();\\n this.getLogger().info(`Converted:\\\\n \\\"cidv0\\\" (Base58): ${cidAnalyser}${cidv0} \\\\n to \\\"cidv1\\\" (Base32): ${cidAnalyser}${cidv1}`);\\n } else {\\n // Log\\n this.getLogger().info(`\\\"cidv1\\\" (Base32):\\\\n ${cidAnalyser}${cidv1}`);\\n }\\n\\n return cidv1.toString();\\n };\\n\\n IpfsBundle.prototype.Base64ToUint8Array = function (base64) {\\n var raw = atob(base64);\\n var ua = new Uint8Array(raw.length);\\n\\n for (var i = 0; i \u003C raw.length; i++) {\\n ua[i] = raw.charCodeAt(i);\\n }\\n\\n return ua;\\n };\\n\\n IpfsBundle.prototype.Uint8ArrayToBase64 = function (uint8) {\\n var CHUNK_SIZE = 0x8000; //arbitrary number\\n\\n var index = 0;\\n var length = uint8.length;\\n var str = '';\\n var slice;\\n\\n while (index \u003C length) {\\n slice = uint8.subarray(index, Math.min(index + CHUNK_SIZE, length));\\n str += String.fromCharCode.apply(null, slice);\\n index += CHUNK_SIZE;\\n }\\n\\n return btoa(str);\\n }; // String to uint array\\n\\n\\n IpfsBundle.prototype.StringToUint8Array = function (string) {\\n var escstr = encodeURIComponent(string);\\n var binstr = escstr.replace(/%([0-9A-F]{2})/g, function (match, p1) {\\n return String.fromCharCode('0x' + p1);\\n });\\n var ua = new Uint8Array(binstr.length);\\n Array.prototype.forEach.call(binstr, function (ch, i) {\\n ua[i] = ch.charCodeAt(0);\\n });\\n return ua;\\n }; // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\\n\\n /*\\n * utf.js - UTF-8 \u003C=> UTF-16 convertion\\n *\\n * Copyright (C) 1999 Masanao Izumo \u003Ciz@onicos.co.jp>\\n * Version: 1.0\\n * LastModified: Dec 25 1999\\n * This library is free. You can redistribute it and/or modify it.\\n */\\n\\n\\n IpfsBundle.prototype.Utf8ArrayToStr = function (array) {\\n var c, char2, char3;\\n var out = '';\\n var len = array.length;\\n var i = 0;\\n\\n while (i \u003C len) {\\n c = array[i++];\\n\\n switch (c >> 4) {\\n case 0:\\n case 1:\\n case 2:\\n case 3:\\n case 4:\\n case 5:\\n case 6:\\n case 7:\\n // 0xxxxxxx\\n out += String.fromCharCode(c);\\n break;\\n\\n case 12:\\n case 13:\\n // 110x xxxx 10xx xxxx\\n char2 = array[i++];\\n out += String.fromCharCode((c & 0x1f) \u003C\u003C 6 | char2 & 0x3f);\\n break;\\n\\n case 14:\\n // 1110 xxxx 10xx xxxx 10xx xxxx\\n char2 = array[i++];\\n char3 = array[i++];\\n out += String.fromCharCode((c & 0x0f) \u003C\u003C 12 | (char2 & 0x3f) \u003C\u003C 6 | (char3 & 0x3f) \u003C\u003C 0);\\n break;\\n }\\n }\\n\\n return out;\\n };\\n\\n module.exports = {\\n IpfsBundle\\n };\\n})();\\n\\n},{\\\"./ens-library\\\":70,\\\"./ipfs-library\\\":72,\\\"./ipfs-loader\\\":73,\\\"./ipfs-url\\\":74,\\\"@babel/runtime/helpers/interopRequireDefault\\\":2,\\\"cids\\\":7,\\\"window-or-global\\\":69}],72:[function(require,module,exports){\\n(function (Buffer){\\n\\\"use strict\\\";\\n\\nvar _interopRequireDefault = require(\\\"@babel/runtime/helpers/interopRequireDefault\\\");\\n\\nvar _asyncIterator2 = _interopRequireDefault(require(\\\"@babel/runtime/helpers/asyncIterator\\\"));\\n\\nvar _ipfsProvider = require(\\\"ipfs-provider\\\");\\n\\nvar _windowOrGlobal = _interopRequireDefault(require(\\\"window-or-global\\\"));\\n\\n(function () {\\n /*jslint node: true, browser: true */\\n 'use strict';\\n\\n const name = 'ipfs-library';\\n const {\\n httpClient,\\n windowIpfs\\n } = _ipfsProvider.providers;\\n /*\\n * https://github.com/ipfs/js-ipfs/tree/master/docs/core-api\\n **/\\n\\n var IpfsLibrary = function (ipfsBundle) {\\n this.ipfsBundle = ipfsBundle;\\n this.ipfsLoader = ipfsBundle.ipfsLoader;\\n };\\n\\n IpfsLibrary.prototype.getLogger = function () {\\n return _windowOrGlobal.default.log.getLogger(name);\\n };\\n\\n IpfsLibrary.prototype.loadIpfsHttpClient = async function () {\\n const self = this;\\n\\n if (typeof _windowOrGlobal.default.IpfsHttpClient === 'undefined') {\\n try {\\n await this.ipfsLoader.loadIpfsHttpLibrary();\\n\\n if (typeof _windowOrGlobal.default.IpfsHttpClient !== 'undefined') {\\n return;\\n }\\n } catch (error) {\\n self.getLogger().error(error);\\n } // Should not happen...\\n\\n\\n throw new Error('Unavailable IPFS HTTP Client library...');\\n }\\n }; // Default\\n\\n\\n IpfsLibrary.prototype.getDefaultIpfs = async function (apiUrl) {\\n // IPFS Companion first\\n try {\\n const {\\n ipfs,\\n provider\\n } = await this.getWindowIpfs();\\n\\n if (ipfs !== null) {\\n return {\\n ipfs: ipfs,\\n provider: provider\\n };\\n }\\n } catch (error) {// IPFS Companion failed\\n }\\n\\n apiUrl = apiUrl === undefined || apiUrl == null || apiUrl.toString().trim() === '' ? null : apiUrl;\\n\\n if (apiUrl == null) {\\n throw new Error('Undefined IPFS API URL...');\\n } // Load IpfsHttpClient\\n\\n\\n try {\\n const {\\n ipfs,\\n provider\\n } = await this.getHttpIpfs(apiUrl);\\n\\n if (ipfs !== null) {\\n return {\\n ipfs: ipfs,\\n provider: provider\\n };\\n }\\n } catch (error) {// IPFS HTTP client failed\\n }\\n\\n throw new Error('Unable to retrieve IPFS Companion and IPFS API URL...');\\n }; // IPFS companion\\n\\n\\n IpfsLibrary.prototype.getWindowIpfs = async function () {\\n const self = this;\\n\\n try {\\n this.getLogger().info('Processing connection to IPFS Companion...');\\n const {\\n ipfs,\\n provider\\n } = await (0, _ipfsProvider.getIpfs)({\\n providers: [windowIpfs()]\\n });\\n return {\\n ipfs: ipfs,\\n provider: provider\\n };\\n } catch (error) {\\n self.getLogger().error(error);\\n }\\n\\n throw new Error('Unreachable IPFS Companion...');\\n }; // ipfs-http-client\\n\\n\\n IpfsLibrary.prototype.getHttpIpfs = async function (apiUrl) {\\n apiUrl = apiUrl === undefined || apiUrl == null || apiUrl.toString().trim() === '' ? null : apiUrl;\\n\\n if (apiUrl == null) {\\n throw new Error('Undefined IPFS API URL...');\\n }\\n\\n try {\\n if (typeof _windowOrGlobal.default.IpfsHttpClient === 'undefined') {\\n await this.loadIpfsHttpClient();\\n }\\n\\n this.getLogger().info(`Processing connection to IPFS API URL:\\\\n ${apiUrl}`);\\n var protocol = apiUrl.protocol.slice(0, -1);\\n var port = apiUrl.port;\\n\\n if (port === undefined || port == null || port.trim() === '') {\\n port = 443;\\n\\n if (protocol === 'http') {\\n port = 80;\\n }\\n }\\n\\n const {\\n ipfs,\\n provider\\n } = await (0, _ipfsProvider.getIpfs)({\\n providers: [httpClient({\\n apiAddress: {\\n protocol: protocol,\\n host: apiUrl.hostname,\\n port: port,\\n timeout: '4m'\\n }\\n })]\\n });\\n return {\\n ipfs: ipfs,\\n provider: `${provider}, ${apiUrl}`\\n };\\n } catch (error) {\\n this.getLogger().error(error);\\n }\\n\\n throw new Error('Unreachable IPFS API URL...');\\n };\\n\\n IpfsLibrary.prototype.add = async function (client, content) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n if (content === undefined || content == null) {\\n throw new Error('Undefined content...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['add']\\n });\\n } // Process\\n\\n\\n if (client !== undefined && client.add !== undefined) {\\n // Process\\n var buffer = Buffer.from(content);\\n this.getLogger().info('Processing IPFS add...'); // 1 - https://github.com/ipfs/go-ipfs/issues/5683\\n // default chunker: \\\"size-262144\\\"\\n // chunker: \\\"rabin-262144-524288-1048576\\\"\\n // 2 - TODO: small content generates a wrong cid when cidVersion: 1 is set:\\n // Not a 'dag-pb' but a 'raw' multicodec instead\\n // We generate a V0 and convert it to a V1\\n // https://github.com/xmaysonnave/tiddlywiki-ipfs/issues/14\\n\\n const addSource = await client.add(buffer, {\\n cidVersion: 0,\\n hashAlg: 'sha2-256',\\n chunker: 'rabin-262144-524288-1048576',\\n pin: false\\n }); // https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26\\n\\n var lastResult = null;\\n var _iteratorNormalCompletion = true;\\n var _didIteratorError = false;\\n\\n var _iteratorError;\\n\\n try {\\n for (var _iterator = (0, _asyncIterator2.default)(addSource), _step, _value; _step = await _iterator.next(), _iteratorNormalCompletion = _step.done, _value = await _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {\\n const added = _value;\\n lastResult = added;\\n } // Check\\n\\n } catch (err) {\\n _didIteratorError = true;\\n _iteratorError = err;\\n } finally {\\n try {\\n if (!_iteratorNormalCompletion && _iterator.return != null) {\\n await _iterator.return();\\n }\\n } finally {\\n if (_didIteratorError) {\\n throw _iteratorError;\\n }\\n }\\n }\\n\\n if (lastResult == null || lastResult.path === undefined || lastResult.path == null) {\\n throw new Error('IPFS client returned an unknown result...');\\n }\\n\\n return {\\n hash: this.ipfsBundle.cidV0ToCidV1(lastResult.path),\\n size: lastResult.size\\n };\\n }\\n\\n throw new Error('Undefined IPFS command add...');\\n };\\n\\n IpfsLibrary.prototype.pin = async function (client, cid) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n cid = cid == null || cid === undefined || cid.trim() === '' ? null : cid.trim();\\n\\n if (cid == null) {\\n throw new Error('Undefined IPFS identifier...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['pin']\\n });\\n } // Process\\n\\n\\n if (client !== undefined && client.pin !== undefined && client.pin.add !== undefined) {\\n this.getLogger().info('Processing IPFS pin add...');\\n const result = await client.pin.add(cid, {\\n recursive: true\\n });\\n return result;\\n }\\n\\n throw new Error('Undefined IPFS pin add...');\\n };\\n\\n IpfsLibrary.prototype.unpin = async function (client, cid) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n cid = cid == null || cid === undefined || cid.trim() === '' ? null : cid.trim();\\n\\n if (cid == null) {\\n throw new Error('Undefined IPFS identifier...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['pin']\\n });\\n } // Process\\n\\n\\n if (client !== undefined && client.pin !== undefined && client.pin.rm !== undefined) {\\n this.getLogger().info('Processing IPFS pin rm...');\\n const result = await client.pin.rm(cid, {\\n recursive: true\\n });\\n return result;\\n }\\n\\n throw new Error('Undefined IPFS pin rm');\\n };\\n\\n IpfsLibrary.prototype.publish = async function (client, ipnsName, cid) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n cid = cid == null || cid === undefined || cid.trim() === '' ? null : cid.trim();\\n\\n if (cid == null) {\\n throw new Error('Undefined IPFS identifier...');\\n }\\n\\n ipnsName = ipnsName == null || ipnsName === undefined || ipnsName.trim() === '' ? null : ipnsName.trim();\\n\\n if (ipnsName == null) {\\n throw new Error('Undefined IPNS name...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['name']\\n });\\n }\\n\\n if (client !== undefined && client.name !== undefined && client.name.publish !== undefined) {\\n this.getLogger().info('Processing IPNS name publish...');\\n const result = await client.name.publish(cid, {\\n resolve: true,\\n key: ipnsName,\\n allowOffline: false\\n });\\n\\n if (result === undefined || result == null) {\\n throw new Error('IPFS client returned an unknown result...');\\n }\\n\\n return {\\n name: result.name,\\n value: result.value\\n };\\n }\\n\\n throw new Error('Undefined IPNS name publish...');\\n };\\n\\n IpfsLibrary.prototype.resolve = async function (client, id) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n id = id == null || id === undefined || id.trim() === '' ? null : id.trim();\\n\\n if (id == null) {\\n throw new Error('Undefined IPNS key...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['name']\\n });\\n }\\n\\n if (client !== undefined && client.name !== undefined && client.name.resolve !== undefined) {\\n this.getLogger().info('Processing IPNS name resolve...');\\n const resolvedSource = await client.name.resolve(id, {\\n nocache: false,\\n recursive: true\\n }); // https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26\\n\\n var lastResult = null;\\n var _iteratorNormalCompletion2 = true;\\n var _didIteratorError2 = false;\\n\\n var _iteratorError2;\\n\\n try {\\n for (var _iterator2 = (0, _asyncIterator2.default)(resolvedSource), _step2, _value2; _step2 = await _iterator2.next(), _iteratorNormalCompletion2 = _step2.done, _value2 = await _step2.value, !_iteratorNormalCompletion2; _iteratorNormalCompletion2 = true) {\\n const resolved = _value2;\\n lastResult = resolved;\\n }\\n } catch (err) {\\n _didIteratorError2 = true;\\n _iteratorError2 = err;\\n } finally {\\n try {\\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\\n await _iterator2.return();\\n }\\n } finally {\\n if (_didIteratorError2) {\\n throw _iteratorError2;\\n }\\n }\\n }\\n\\n if (lastResult == null || lastResult === undefined) {\\n throw new Error('IPFS client returned an unknown result...');\\n }\\n\\n return lastResult;\\n }\\n\\n throw new Error('Undefined IPNS name resolve...');\\n };\\n\\n IpfsLibrary.prototype.getKeys = async function (client) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['key']\\n });\\n }\\n\\n if (client !== undefined && client.key !== undefined && client.key.list !== undefined) {\\n this.getLogger().info('Processing IPNS key list...');\\n const result = await client.key.list();\\n\\n if (result === undefined || result == null || Array.isArray(result) === false) {\\n throw new Error('IPFS client returned an unknown result...');\\n }\\n\\n return result;\\n }\\n\\n throw new Error('Undefined IPNS key list...');\\n }; // Only rsa is supported yet...\\n // https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/KEY.md#keygen\\n // https://github.com/libp2p/js-libp2p-crypto/issues/145\\n\\n\\n IpfsLibrary.prototype.genKey = async function (client, ipnsName) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n ipnsName = ipnsName == null || ipnsName === undefined || ipnsName.trim() === '' ? null : ipnsName.trim();\\n\\n if (ipnsName == null) {\\n throw new Error('Undefined IPNS name...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['key']\\n });\\n }\\n\\n if (client !== undefined && client.key !== undefined && client.key.gen !== undefined) {\\n this.getLogger().info('Processing IPNS key gen...');\\n const key = await client.key.gen(ipnsName, {\\n type: 'rsa',\\n size: 2048\\n });\\n\\n if (key === undefined || key == null || key.id === undefined || key.id == null) {\\n throw new Error('IPFS client returned an unknown result...');\\n }\\n\\n return key.id;\\n }\\n\\n throw new Error('Undefined IPNS key gen...');\\n };\\n\\n IpfsLibrary.prototype.rmKey = async function (client, ipnsName) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n ipnsName = ipnsName == null || ipnsName === undefined || ipnsName.trim() === '' ? null : ipnsName.trim();\\n\\n if (ipnsName == null) {\\n throw new Error('Undefined IPNS name...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['key']\\n });\\n }\\n\\n if (client !== undefined && client.key !== undefined && client.key.rm !== undefined) {\\n this.getLogger().info('Processing IPNS key rm...');\\n const key = await client.key.rm(ipnsName);\\n\\n if (key === undefined || key == null || key.id === undefined || key.id == null) {\\n throw new Error('IPFS client returned an unknown result...');\\n }\\n\\n return key.id;\\n }\\n\\n throw new Error('Undefined IPNS key rm...');\\n };\\n\\n IpfsLibrary.prototype.renameKey = async function (client, oldIpnsName, newIpnsName) {\\n if (client === undefined || client == null) {\\n throw new Error('Undefined IPFS provider...');\\n }\\n\\n oldIpnsName = oldIpnsName == null || oldIpnsName === undefined || oldIpnsName.trim() === '' ? null : oldIpnsName.trim();\\n\\n if (oldIpnsName == null) {\\n throw new Error('Undefined Old IPNS name...');\\n }\\n\\n newIpnsName = newIpnsName == null || newIpnsName === undefined || newIpnsName.trim() === '' ? null : newIpnsName.trim();\\n\\n if (newIpnsName == null) {\\n throw new Error('Undefined New IPNS name...');\\n } // Window IPFS policy\\n\\n\\n if (client.enable) {\\n client = await client.enable({\\n commands: ['key']\\n });\\n }\\n\\n if (client !== undefined && client.key !== undefined && client.key.rename !== undefined) {\\n this.getLogger().info('Processing IPNS key rename...');\\n const key = await client.key.rename(oldIpnsName, newIpnsName);\\n\\n if (key === undefined || key == null) {\\n throw new Error('IPFS client returned an unknown result...');\\n }\\n\\n var id = null;\\n\\n if (key.id !== undefined && key.id !== null) {\\n id = key.id;\\n }\\n\\n var was = null;\\n\\n if (key.was !== undefined && key.was !== null) {\\n was = key.was;\\n }\\n\\n var now = null;\\n\\n if (key.now !== undefined && key.now !== null) {\\n now = key.now;\\n }\\n\\n var overwrite = null;\\n\\n if (key.overwrite !== undefined && key.overwrite !== null) {\\n overwrite = key.overwrite;\\n }\\n\\n return {\\n id: id,\\n was: was,\\n now: now,\\n overwrite: overwrite\\n };\\n }\\n\\n throw new Error('Undefined IPNS key rename...');\\n };\\n\\n module.exports = IpfsLibrary;\\n})();\\n\\n}).call(this,require(\\\"buffer\\\").Buffer)\\n},{\\\"@babel/runtime/helpers/asyncIterator\\\":1,\\\"@babel/runtime/helpers/interopRequireDefault\\\":2,\\\"buffer\\\":5,\\\"ipfs-provider\\\":38,\\\"window-or-global\\\":69}],73:[function(require,module,exports){\\n\\\"use strict\\\";\\n\\nvar _interopRequireDefault = require(\\\"@babel/runtime/helpers/interopRequireDefault\\\");\\n\\nvar _windowOrGlobal = _interopRequireDefault(require(\\\"window-or-global\\\"));\\n\\n(function () {\\n /*jslint node: true, browser: true */\\n 'use strict';\\n\\n const name = 'ipfs-loader';\\n const eruda = 'https://cdn.jsdelivr.net/npm/eruda@2.3.3/eruda.min.js';\\n const erudaSri = 'sha384-O4NQOgwNPEet1/xZmB7hYYb/vMdpWyVJcqL+47zpRWuXtRlhwnEoNM/w3/C3HCoP';\\n const ethers = 'https://cdn.jsdelivr.net/npm/ethers@4.0.47/dist/ethers.min.js';\\n const ethersSri = 'sha384-Gqf9kLa8S94/ZNsQCadoW0KeT6tg+fapxds7gOiSL72KeOtfgTOmHvJENrQljse5';\\n const ipfsHttpClient = 'https://cdn.jsdelivr.net/npm/ipfs-http-client@44.1.1/dist/index.min.js';\\n const ipfsHttpClientSri = 'sha384-NvfAKWfwAGQtt53C6QkNMM2whGsF9BeeXkfOWkFV3qmyh1VLVmfxxUrvLcgw0ZYr';\\n\\n var IpfsLoader = function (ipfsBundle) {\\n this.ipfsBundle = ipfsBundle;\\n };\\n\\n IpfsLoader.prototype.getLogger = function () {\\n return _windowOrGlobal.default.log.getLogger(name);\\n }; // https://www.srihash.org/\\n // https://github.com/liriliri/eruda\\n\\n\\n IpfsLoader.prototype.loadErudaLibrary = async function () {\\n if (typeof _windowOrGlobal.default.eruda === 'undefined') {\\n await this.loadLibrary('ErudaLibrary', eruda, erudaSri, true);\\n\\n if (typeof _windowOrGlobal.default.eruda !== 'undefined') {\\n this.getLogger().info(`Loaded ErudaLibrary:\\\\n ${eruda}`);\\n }\\n }\\n }; // https://www.srihash.org/\\n // https://github.com/ethers-io/ethers.js/\\n\\n\\n IpfsLoader.prototype.loadEtherJsLibrary = async function () {\\n if (typeof _windowOrGlobal.default.ethers === 'undefined') {\\n await this.loadLibrary('EtherJsLibrary', ethers, ethersSri, true);\\n\\n if (typeof _windowOrGlobal.default.ethers !== 'undefined') {\\n this.getLogger().info(`Loaded EtherJsLibrary:\\\\n ${ethers}`);\\n }\\n }\\n }; // https://www.srihash.org/\\n // https://github.com/ipfs/js-ipfs-http-client\\n\\n\\n IpfsLoader.prototype.loadIpfsHttpLibrary = async function () {\\n if (typeof _windowOrGlobal.default.IpfsHttpClient === 'undefined') {\\n await this.loadLibrary('IpfsHttpLibrary', ipfsHttpClient, ipfsHttpClientSri, true);\\n\\n if (typeof _windowOrGlobal.default.IpfsHttpClient !== 'undefined') {\\n this.getLogger().info(`Loaded IpfsHttpLibrary:\\\\n ${ipfsHttpClient}`);\\n }\\n }\\n };\\n /*eslint no-new: \\\"off\\\", no-new-func: \\\"off\\\"*/\\n\\n\\n IpfsLoader.prototype.supportDynamicImport = function () {\\n try {\\n new Function('import(\\\"\\\")');\\n return true;\\n } catch (error) {\\n return false;\\n }\\n }; // https://observablehq.com/@bryangingechen/dynamic-import-polyfill\\n\\n\\n IpfsLoader.prototype.loadLibrary = function (id, url, sri, asModule) {\\n // Dynamic import\\n // if (this.supportDynamicImport()) {\\n // try {\\n // return new Function(`return import(\\\"${url}\\\")`)();\\n // } catch (error) {\\n // // Ignore\\n // }\\n // }\\n const self = this;\\n return new Promise((resolve, reject) => {\\n // Process\\n const script = _windowOrGlobal.default.document.createElement('script'); // Functions\\n\\n\\n const cleanup = () => {\\n try {\\n delete _windowOrGlobal.default[id];\\n script.onerror = null;\\n script.onload = null;\\n script.remove();\\n URL.revokeObjectURL(script.src);\\n script.src = '';\\n } catch (error) {\\n self.getLogger().error(error);\\n }\\n };\\n\\n script.onload = () => {\\n resolve(_windowOrGlobal.default[id]);\\n cleanup();\\n };\\n\\n script.onerror = () => {\\n reject(new Error(`Failed to load: ${url}`));\\n cleanup();\\n }; // Attributes\\n\\n\\n if (asModule) {\\n script.type = 'module';\\n } else {\\n script.type = 'text/javascript';\\n }\\n\\n script.id = id;\\n script.async = false;\\n script.defer = 'defer';\\n\\n if (sri) {\\n script.integrity = sri;\\n }\\n\\n script.crossOrigin = 'anonymous'; // URL\\n\\n script.src = url; // Load\\n\\n _windowOrGlobal.default.document.head.appendChild(script);\\n });\\n };\\n\\n IpfsLoader.prototype.isJson = function (content) {\\n if (content !== undefined && content !== null && typeof content === 'string') {\\n try {\\n JSON.parse(content);\\n return true;\\n } catch (error) {// Ignore\\n }\\n }\\n\\n return false;\\n };\\n\\n IpfsLoader.prototype.httpGetToUint8Array = function (url) {\\n const self = this;\\n const xhr = new XMLHttpRequest();\\n return new Promise(function (resolve, reject) {\\n xhr.responseType = 'arraybuffer';\\n\\n xhr.onreadystatechange = function () {\\n if (xhr.readyState === 4 && xhr.status !== 0) {\\n if (xhr.status >= 300) {\\n reject(new Error($tw.language.getString('NetworkError/XMLHttpRequest')));\\n return;\\n }\\n\\n try {\\n const array = new Uint8Array(this.response);\\n self.getLogger().info(`[${xhr.status}] Loaded:\\\\n ${url}`);\\n resolve(array);\\n } catch (error) {\\n reject(error);\\n }\\n }\\n };\\n\\n xhr.onerror = function () {\\n reject(new Error($tw.language.getString('NetworkError/XMLHttpRequest')));\\n };\\n\\n try {\\n xhr.open('get', url, true);\\n xhr.send();\\n } catch (error) {\\n reject(error);\\n }\\n });\\n };\\n /*\\n * Load to Base64\\n */\\n\\n\\n IpfsLoader.prototype.loadToBase64 = async function (url) {\\n const array = await this.httpGetToUint8Array(url);\\n\\n if (array.length === 0) {\\n return {\\n data: '',\\n decrypted: false\\n };\\n } // Decrypt\\n\\n\\n if (this.isUtf8ArrayEncrypted(array)) {\\n const decrypted = await this.decryptUint8ArrayToBase64(array);\\n return {\\n data: decrypted,\\n decrypted: true\\n };\\n }\\n\\n const data = this.ipfsBundle.Uint8ArrayToBase64(array);\\n return {\\n data: data,\\n decrypted: false\\n };\\n };\\n /*\\n * Load to UTF-8\\n */\\n\\n\\n IpfsLoader.prototype.loadToUtf8 = async function (url) {\\n var array = await this.httpGetToUint8Array(url);\\n\\n if (array.length === 0) {\\n return {\\n data: '',\\n decrypted: false\\n };\\n }\\n\\n if (this.isUtf8ArrayEncrypted(array)) {\\n return {\\n data: await this.decryptUint8ArrayToUtf8(array),\\n decrypted: true\\n };\\n }\\n\\n return {\\n data: this.ipfsBundle.Utf8ArrayToStr(array),\\n decrypted: false\\n };\\n };\\n /*\\n * Decrypt Uint8 Array to Base64 String\\n */\\n\\n\\n IpfsLoader.prototype.decryptUint8ArrayToBase64 = async function (array) {\\n var data = this.ipfsBundle.Utf8ArrayToStr(array);\\n\\n if ($tw.crypto.hasPassword() === false) {\\n data = await this.decryptFromPasswordPrompt(data);\\n } else {\\n data = $tw.crypto.decrypt(data, $tw.crypto.currentPassword);\\n }\\n\\n return btoa(data);\\n };\\n /*\\n * Decrypt Uint8 Array to UTF-8 String\\n */\\n\\n\\n IpfsLoader.prototype.decryptUint8ArrayToUtf8 = async function (array) {\\n var data = this.ipfsBundle.Utf8ArrayToStr(array);\\n\\n if ($tw.crypto.hasPassword() === false) {\\n data = await this.decryptFromPasswordPrompt(data);\\n } else {\\n data = $tw.crypto.decrypt(data, $tw.crypto.currentPassword);\\n }\\n\\n return data;\\n };\\n\\n IpfsLoader.prototype.decryptFromPasswordPrompt = function (encrypted) {\\n return new Promise((resolve, reject) => {\\n $tw.passwordPrompt.createPrompt({\\n serviceName: 'Enter a password to decrypt the imported content!!',\\n noUserName: true,\\n canCancel: true,\\n submitText: 'Decrypt',\\n callback: function (data) {\\n if (!data) {\\n return false;\\n } // Decrypt\\n\\n\\n try {\\n const content = $tw.crypto.decrypt(encrypted, data.password);\\n resolve(content);\\n return true;\\n } catch (error) {\\n reject(error);\\n }\\n\\n return false;\\n }\\n });\\n });\\n };\\n\\n IpfsLoader.prototype.isUtf8ArrayEncrypted = function (content) {\\n // Check\\n if (content instanceof Uint8Array === false || content.length === 0) {\\n return false;\\n } // Process\\n\\n\\n const standford = this.ipfsBundle.StringToUint8Array('{\\\"iv\\\":\\\"');\\n var encrypted = false;\\n\\n for (var i = 0; i \u003C content.length && i \u003C standford.length; i++) {\\n if (content[i] === standford[i]) {\\n encrypted = true;\\n } else {\\n encrypted = false;\\n break;\\n }\\n }\\n\\n return encrypted;\\n };\\n\\n module.exports = IpfsLoader;\\n})();\\n\\n},{\\\"@babel/runtime/helpers/interopRequireDefault\\\":2,\\\"window-or-global\\\":69}],74:[function(require,module,exports){\\n\\\"use strict\\\";\\n\\nvar _interopRequireDefault = require(\\\"@babel/runtime/helpers/interopRequireDefault\\\");\\n\\nvar _windowOrGlobal = _interopRequireDefault(require(\\\"window-or-global\\\"));\\n\\nvar _universalUrl = require(\\\"universal-url\\\");\\n\\n(function () {\\n /*jslint node: true, browser: true */\\n 'use strict';\\n\\n const name = 'ipfs-url';\\n\\n var IpfsUrl = function () {};\\n\\n IpfsUrl.prototype.getLogger = function () {\\n return _windowOrGlobal.default.log.getLogger(name);\\n };\\n\\n IpfsUrl.prototype.getIpfsDefaultApiUrl = function () {\\n return new _universalUrl.URL(this.getIpfsDefaultApi());\\n };\\n\\n IpfsUrl.prototype.getIpfsDefaultGatewayUrl = function () {\\n return new _universalUrl.URL(this.getIpfsDefaultGateway());\\n };\\n\\n IpfsUrl.prototype.getIpfsApiUrl = function () {\\n try {\\n return this.getUrl($tw.utils.getIpfsSaverApiUrl());\\n } catch (error) {\\n return this.getIpfsDefaultApiUrl();\\n }\\n };\\n\\n IpfsUrl.prototype.getIpfsGatewayUrl = function () {\\n try {\\n return this.getUrl($tw.utils.getIpfsSaverGatewayUrl());\\n } catch (error) {\\n return this.getIpfsDefaultGatewayUrl();\\n }\\n };\\n\\n IpfsUrl.prototype.getIpfsDefaultApi = function () {\\n return 'https://tube.copylaradio.com:5001';\\n };\\n\\n IpfsUrl.prototype.getIpfsDefaultGateway = function () {\\n return 'https://tube.copylaradio.com';\\n };\\n /**\\n * url.href;\\n * url.origin\\n * url.protocol;\\n * url.username;\\n * url.password;\\n * url.host;\\n * url.hostname;\\n * url.port;\\n * url.pathname;\\n * url.search;\\n * url.hash;\\n * https://jsdom.github.io/whatwg-url/\\n * https://github.com/stevenvachon/universal-url\\n * https://github.com/stevenvachon/universal-url-lite\\n * https://url.spec.whatwg.org/\\n */\\n\\n\\n IpfsUrl.prototype.getDocumentUrl = function () {\\n try {\\n return new _universalUrl.URL(_windowOrGlobal.default.location.href);\\n } catch (error) {\\n this.getLogger().error(error);\\n }\\n\\n throw new Error('Invalid current HTML Document URL...');\\n };\\n\\n IpfsUrl.prototype.getUrl = function (url, base) {\\n try {\\n return new _universalUrl.URL(url, base);\\n } catch (error) {// Ignore\\n }\\n\\n throw new Error('Invalid URL...');\\n };\\n\\n IpfsUrl.prototype.getIpfsBaseUrl = function () {\\n var base = this.getIpfsGatewayUrl();\\n\\n try {\\n if ($tw.utils.getIpfsUrlPolicy() === 'origin') {\\n base = this.getDocumentUrl();\\n\\n if (base.protocol === 'file:') {\\n return this.getUrl(base.toString());\\n }\\n }\\n } catch (error) {\\n base = this.getIpfsGatewayUrl();\\n }\\n\\n return this.getUrl(`${base.protocol}//${base.host}`);\\n };\\n\\n IpfsUrl.prototype.normalizeUrl = function (value, base) {\\n value = value === undefined || value == null || value.toString().trim() === '' ? null : value.toString().trim();\\n\\n if (value == null) {\\n return null;\\n } // Parse\\n\\n\\n var text = false;\\n var url = null; // Text or ENS\\n\\n try {\\n url = this.getUrl(value);\\n } catch (error) {\\n if (value.startsWith('/') === false && value.startsWith('./') === false && value.startsWith('../') === false) {\\n text = true;\\n\\n try {\\n url = this.getUrl(`https://${value}`);\\n\\n if (url.hostname.endsWith('.eth') === false && url.hostname.endsWith('.eth.link') === false) {\\n url = null;\\n } else {\\n text = false;\\n }\\n } catch (error) {// ignore\\n }\\n }\\n }\\n\\n if (text) {\\n return null;\\n } // Invalid URL, try to parse with a Base URL\\n\\n\\n if (url == null) {\\n url = this.getUrl(value, base !== undefined && base !== null ? base : this.getIpfsBaseUrl());\\n } // Remove .link from .eth.link\\n\\n\\n if (url.hostname.endsWith('.eth.link')) {\\n url.hostname = url.hostname.substring(0, url.hostname.indexOf('.link'));\\n }\\n\\n return url;\\n };\\n\\n module.exports = IpfsUrl;\\n})();\\n\\n},{\\\"@babel/runtime/helpers/interopRequireDefault\\\":2,\\\"universal-url\\\":64,\\\"window-or-global\\\":69}]},{},[71])(71)\\n});\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/ipfs-controller.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-controller.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-controller.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nIPFS Controller\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const EnsWrapper = require('$:/plugins/ipfs/ens-wrapper.js').EnsWrapper\\n const IpfsBundle = require('$:/plugins/ipfs/ipfs-bundle.js').IpfsBundle\\n const IpfsWrapper = require('$:/plugins/ipfs/ipfs-wrapper.js').IpfsWrapper\\n\\n const ipfsKeyword = 'ipfs'\\n const ipnsKeyword = 'ipns'\\n\\n const name = 'ipfs-controller'\\n\\n var IpfsController = function () {\\n this.ipfsBundle = new IpfsBundle()\\n this.ipfsBundle.init()\\n this.ensWrapper = new EnsWrapper(this.ipfsBundle)\\n this.ipfsUrl = this.ipfsBundle.ipfsUrl\\n this.ipfsWrapper = new IpfsWrapper(this.ipfsBundle)\\n this.ipfsClients = new Map()\\n this.pin = []\\n this.unpin = []\\n }\\n\\n IpfsController.prototype.getLogger = function () {\\n return window.log.getLogger(name)\\n }\\n\\n IpfsController.prototype.isCid = function (cid) {\\n return this.ipfsBundle.isCid(cid)\\n }\\n\\n IpfsController.prototype.loadToBase64 = async function (url) {\\n return this.ipfsBundle.loadToBase64(url)\\n }\\n\\n IpfsController.prototype.loadToUtf8 = async function (url) {\\n return this.ipfsBundle.loadToUtf8(url)\\n }\\n\\n IpfsController.prototype.Base64ToUint8Array = function (base64) {\\n return this.ipfsBundle.Base64ToUint8Array(base64)\\n }\\n\\n IpfsController.prototype.Uint8ArrayToBase64 = function (uint8) {\\n return this.ipfsBundle.Uint8ArrayToBase64(uint8)\\n }\\n\\n IpfsController.prototype.StringToUint8Array = function (string) {\\n return this.ipfsBundle.StringToUint8Array(string)\\n }\\n\\n IpfsController.prototype.Utf8ArrayToStr = function (array) {\\n return this.ipfsBundle.Utf8ArrayToStr(array)\\n }\\n\\n IpfsController.prototype.requestToPin = function (cid, ipnsKey, value) {\\n const self = this\\n return new Promise((resolve, reject) => {\\n if (ipnsKey !== undefined && ipnsKey !== null) {\\n self\\n .resolveUrl(true, true, value)\\n .then(data => {\\n const { cid, resolvedUrl } = data\\n if (resolvedUrl !== null && cid !== null) {\\n resolve(self.addToPin(cid, resolvedUrl))\\n } else {\\n resolve(false)\\n }\\n })\\n .catch(error => {\\n reject(error)\\n })\\n } else if (cid !== undefined && cid !== null) {\\n const normalizedUrl = self.normalizeUrl(`/${ipfsKeyword}/${cid}`)\\n resolve(self.addToPin(cid, normalizedUrl))\\n } else {\\n resolve(false)\\n }\\n })\\n }\\n\\n IpfsController.prototype.addToPin = function (cid, normalizedUrl) {\\n if (cid !== undefined && cid !== null) {\\n var index = this.unpin.indexOf(cid)\\n if (index !== -1) {\\n this.unpin.splice(index, 1)\\n this.getLogger().info(`Cancel request to Unpin:\\\\n ${normalizedUrl}`)\\n return false\\n }\\n if (this.pin.indexOf(cid) === -1) {\\n this.pin.push(cid)\\n this.getLogger().info(`Request to Pin:\\\\n ${normalizedUrl}`)\\n return true\\n }\\n }\\n return false\\n }\\n\\n IpfsController.prototype.requestToUnpin = function (cid, ipnsKey, value) {\\n const self = this\\n return new Promise((resolve, reject) => {\\n if ($tw.utils.getIpfsUnpin() === false) {\\n resolve(false)\\n }\\n if (ipnsKey !== undefined && ipnsKey !== null) {\\n self\\n .resolveUrl(true, true, value)\\n .then(data => {\\n const { cid, resolvedUrl } = data\\n if (resolvedUrl !== null && cid !== null) {\\n resolve(self.addToUnpin(cid, resolvedUrl))\\n } else {\\n resolve(false)\\n }\\n })\\n .catch(error => {\\n reject(error)\\n })\\n } else if (cid !== undefined && cid !== null) {\\n const normalizedUrl = self.normalizeUrl(`/${ipfsKeyword}/${cid}`)\\n resolve(self.addToUnpin(cid, normalizedUrl))\\n } else {\\n resolve(false)\\n }\\n })\\n }\\n\\n IpfsController.prototype.addToUnpin = function (cid, normalizedUrl) {\\n if (cid !== undefined && cid !== null) {\\n // Discard\\n var index = this.pin.indexOf(cid)\\n if (index !== -1) {\\n this.pin.splice(index, 1)\\n this.getLogger().info(`Cancel request to Pin:\\\\n ${normalizedUrl}`)\\n return false\\n }\\n // Add to unpin\\n if (this.unpin.indexOf(cid) === -1) {\\n this.unpin.push(cid)\\n this.getLogger().info(`Request to unpin:\\\\n ${normalizedUrl}`)\\n return true\\n }\\n }\\n return false\\n }\\n\\n IpfsController.prototype.removeFromPinUnpin = function (cid, normalizedUrl) {\\n if (cid !== undefined && cid !== null) {\\n var index = this.pin.indexOf(cid)\\n if (index !== -1) {\\n this.pin.splice(index, 1)\\n this.getLogger().info(`Cancel request to Pin:\\\\n ${normalizedUrl}`)\\n }\\n var index = this.unpin.indexOf(cid)\\n if (index !== -1) {\\n this.unpin.splice(index, 1)\\n this.getLogger().info(`Cancel request to Unpin:\\\\n ${normalizedUrl}`)\\n }\\n }\\n }\\n\\n IpfsController.prototype.pinToIpfs = async function (cid) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.pinToIpfs(ipfs, cid)\\n }\\n\\n IpfsController.prototype.unpinFromIpfs = async function (cid) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.unpinFromIpfs(ipfs, cid)\\n }\\n\\n IpfsController.prototype.addToIpfs = async function (content) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.addToIpfs(ipfs, content)\\n }\\n\\n IpfsController.prototype.generateIpnsKey = async function (ipnsName) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.generateIpnsKey(ipfs, ipnsName)\\n }\\n\\n IpfsController.prototype.removeIpnsKey = async function (ipnsName) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.removeIpnsKey(ipfs, ipnsName)\\n }\\n\\n IpfsController.prototype.renameIpnsName = async function (\\n oldIpnsName,\\n newIpnsName\\n ) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.renameIpnsName(ipfs, oldIpnsName, newIpnsName)\\n }\\n\\n IpfsController.prototype.decodeCid = function (pathname) {\\n return this.ipfsBundle.decodeCid(pathname)\\n }\\n\\n IpfsController.prototype.getIpnsIdentifiers = async function (\\n identifier,\\n ipnsName\\n ) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.getIpnsIdentifiers(ipfs, identifier, ipnsName)\\n }\\n\\n IpfsController.prototype.resolveIpnsKey = async function (ipnsKey) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.resolveIpnsKey(ipfs, ipnsKey)\\n }\\n\\n IpfsController.prototype.publishIpnsName = async function (\\n cid,\\n ipnsKey,\\n ipnsName\\n ) {\\n const { ipfs } = await this.getIpfsClient()\\n return await this.ipfsWrapper.publishIpnsName(cid, ipfs, ipnsKey, ipnsName)\\n }\\n\\n IpfsController.prototype.getIpfsBaseUrl = function () {\\n return this.ipfsUrl.getIpfsBaseUrl()\\n }\\n\\n IpfsController.prototype.normalizeUrl = function (value, base) {\\n return this.ipfsUrl.normalizeUrl(value, base)\\n }\\n\\n IpfsController.prototype.getDocumentUrl = function () {\\n return this.ipfsUrl.getDocumentUrl()\\n }\\n\\n IpfsController.prototype.getIpfsDefaultApi = function () {\\n return this.ipfsUrl.getIpfsDefaultApi()\\n }\\n\\n IpfsController.prototype.getIpfsDefaultGateway = function () {\\n return this.ipfsUrl.getIpfsDefaultGateway()\\n }\\n\\n IpfsController.prototype.getIpfsApiUrl = function () {\\n return this.ipfsUrl.getIpfsApiUrl()\\n }\\n\\n IpfsController.prototype.getIpfsGatewayUrl = function () {\\n return this.ipfsUrl.getIpfsGatewayUrl()\\n }\\n\\n IpfsController.prototype.resolveUrl = async function (\\n resolveIpns,\\n resolveEns,\\n value,\\n base\\n ) {\\n var cid = null\\n var ipnsKey = null\\n var ipnsName = null\\n var normalizedUrl = null\\n var resolvedUrl = null\\n value =\\n value === undefined || value == null || value.toString().trim() === ''\\n ? null\\n : value.toString().trim()\\n if (value == null) {\\n return {\\n cid: null,\\n ipnsKey: null,\\n ipnsName: null,\\n normalizedUrl: null,\\n resolvedUrl: null\\n }\\n }\\n try {\\n normalizedUrl = this.normalizeUrl(value, base)\\n } catch (error) {\\n // Ignore\\n }\\n if (normalizedUrl == null) {\\n return {\\n cid: null,\\n ipnsKey: null,\\n ipnsName: null,\\n normalizedUrl: null,\\n resolvedUrl: null\\n }\\n }\\n var { cid, ipnsIdentifier, protocol } = this.decodeCid(\\n normalizedUrl.pathname\\n )\\n if (\\n protocol !== null &&\\n protocol === ipnsKeyword &&\\n ipnsIdentifier !== null\\n ) {\\n var { ipnsKey, ipnsName, normalizedUrl } = await this.getIpnsIdentifiers(\\n ipnsIdentifier\\n )\\n if (resolveIpns) {\\n this.getLogger().info(`Resolving IPNS key:\\\\n ${normalizedUrl}`)\\n $tw.utils.alert(name, 'Resolving an IPNS key...')\\n try {\\n cid = await this.resolveIpnsKey(ipnsKey)\\n if (cid !== null) {\\n resolvedUrl = this.normalizeUrl(`/${ipfsKeyword}/${cid}`, base)\\n this.getLogger().info(\\n `Successfully resolved IPNS key:\\\\n ${normalizedUrl}`\\n )\\n $tw.utils.alert(name, 'Successfully resolved an IPNS key...')\\n }\\n } catch (error) {\\n // Unable to resolve the key\\n // It usually happen when the key is not initialized\\n cid = null\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n }\\n } else if (resolveEns && normalizedUrl.hostname.endsWith('.eth')) {\\n var { content: cid, resolvedUrl } = await this.resolveEns(\\n normalizedUrl.hostname\\n )\\n } else {\\n resolvedUrl = normalizedUrl\\n }\\n return {\\n cid: cid,\\n ipnsKey: ipnsKey,\\n ipnsName: ipnsName,\\n normalizedUrl: normalizedUrl,\\n resolvedUrl: resolvedUrl\\n }\\n }\\n\\n IpfsController.prototype.getUrl = function (url, base) {\\n return this.ipfsUrl.getUrl(\\n url,\\n base !== undefined && base !== null ? base : this.getIpfsBaseUrl()\\n )\\n }\\n\\n IpfsController.prototype.isJson = function (content) {\\n return this.ipfsBundle.isJson(content)\\n }\\n\\n IpfsController.prototype.getIpfsClient = async function () {\\n // Provider\\n const ipfsProvider = $tw.utils.getIpfsProvider()\\n // IPFS companion\\n if (ipfsProvider === 'window') {\\n const client = await this.ipfsWrapper.getWindowIpfsClient()\\n return {\\n ipfs: client.ipfs,\\n provider: client.provider\\n }\\n }\\n // Default, try IPFS companion\\n if (ipfsProvider === 'default') {\\n try {\\n const client = await this.ipfsWrapper.getWindowIpfsClient()\\n return {\\n ipfs: client.ipfs,\\n provider: client.provider\\n }\\n } catch (error) {\\n // Ignore, fallback to HTTP\\n }\\n }\\n // Current API URL\\n const url = this.getIpfsApiUrl()\\n // Check\\n if (url === undefined || url == null || url.toString().trim() === '') {\\n throw new Error('Undefined IPFS API URL...')\\n }\\n // HTTP Client\\n const client = this.ipfsClients.get(url.toString())\\n if (client !== undefined) {\\n // Log\\n this.getLogger().info(`Reuse IPFS provider: \\\"${client.provider}\\\"`)\\n // Done\\n return {\\n ipfs: client.ipfs,\\n provider: client.provider\\n }\\n }\\n // Build a new HTTP client\\n const policy = await this.ipfsWrapper.getHttpIpfsClient(url)\\n const ipfs = policy.ipfs\\n const provider = policy.provider\\n // Store\\n this.ipfsClients.set(url.toString(), { ipfs, provider })\\n // Log\\n this.getLogger().info(`New IPFS provider: \\\"${policy.provider}\\\"`)\\n // Done\\n return {\\n ipfs: ipfs,\\n provider: provider\\n }\\n }\\n\\n IpfsController.prototype.resolveEns = async function (ensDomain) {\\n const { web3 } = await this.getWeb3Provider()\\n const { content, protocol } = await this.ensWrapper.getContentHash(\\n ensDomain,\\n web3\\n )\\n if (content !== null && protocol !== null) {\\n const url = this.normalizeUrl(`/${protocol}/${content}`)\\n this.getLogger().info(\\n `Successfully fetched ENS domain content: \\\"${ensDomain}\\\"\\\\n ${url}`\\n )\\n return {\\n content: content,\\n protocol: protocol,\\n resolvedUrl: url\\n }\\n }\\n return {\\n content: null,\\n protocol: null,\\n resolvedUrl: null\\n }\\n }\\n\\n IpfsController.prototype.setEns = async function (ensDomain, cid) {\\n const { web3, account } = await this.getEnabledWeb3Provider()\\n const { cidV0 } = await this.ensWrapper.setContentHash(\\n ensDomain,\\n cid,\\n web3,\\n account\\n )\\n if (cidV0 !== null) {\\n const url = this.normalizeUrl(`/ipfs/${cidV0}`)\\n this.getLogger().info(\\n `Successfully set ENS domain content:\\\\n ${url} \\\\n to: \\\"${ensDomain}\\\"`\\n )\\n return true\\n }\\n return false\\n }\\n\\n IpfsController.prototype.getEthereumProvider = async function () {\\n return await this.ensWrapper.getEthereumProvider()\\n }\\n\\n IpfsController.prototype.getEnabledWeb3Provider = async function () {\\n return await this.ensWrapper.getEnabledWeb3Provider()\\n }\\n\\n IpfsController.prototype.getWeb3Provider = async function () {\\n return await this.ensWrapper.getWeb3Provider()\\n }\\n\\n IpfsController.prototype.getChainId = function () {\\n return this.ensWrapper.getChainId()\\n }\\n\\n exports.IpfsController = IpfsController\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/ipfs-default.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-default.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-default.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: utils\\n\\nIPFS Default\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /*\\n * Retrieve ipfs saver export protocol with default value if applicable\\n */\\n exports.getIpfsExport = function () {\\n var output = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/export')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n output = text\\n }\\n }\\n if (output == null) {\\n output = $tw.utils.getIpfsDefaultExport()\\n }\\n return output\\n }\\n\\n /*\\n * Default Export\\n */\\n exports.getIpfsDefaultExport = function () {\\n return 'json'\\n }\\n\\n /*\\n * Retrieve ipfs saver protocol with default value if applicable\\n */\\n exports.getIpfsProtocol = function () {\\n var protocol = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/protocol')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n protocol = text\\n }\\n }\\n if (protocol == null) {\\n protocol = $tw.utils.getIpfsDefaultProtocol()\\n }\\n return protocol\\n }\\n\\n /*\\n * Default Protocol\\n */\\n exports.getIpfsDefaultProtocol = function () {\\n return 'ipfs'\\n }\\n\\n /*\\n * Retrieve ipfs saver api url with default value if applicable\\n */\\n exports.getIpfsSaverApiUrl = function () {\\n var api = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/api')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n api = text\\n }\\n }\\n if (api !== null) {\\n tiddler = $tw.wiki.getTiddler(api)\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n api = text\\n }\\n }\\n }\\n if (api == null) {\\n api = $tw.ipfs.getIpfsDefaultApi()\\n }\\n return api\\n }\\n\\n /*\\n * Retrieve ipfs saver gateway url with default value if applicable\\n */\\n exports.getIpfsSaverGatewayUrl = function () {\\n var gateway = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/gateway')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n gateway = text\\n }\\n }\\n if (gateway !== null) {\\n tiddler = $tw.wiki.getTiddler(gateway)\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n gateway = text\\n }\\n }\\n }\\n if (gateway == null) {\\n gateway = $tw.ipfs.getIpfsDefaultGateway()\\n }\\n return gateway\\n }\\n\\n /*\\n * Retrieve ipfs saver ens domain with default value if applicable\\n */\\n exports.getIpfsEnsDomain = function () {\\n var ensDomain = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ens/domain')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n ensDomain = text\\n }\\n }\\n return ensDomain\\n }\\n\\n /*\\n * Retrieve ipfs saver ipns name with default value if applicable\\n */\\n exports.getIpfsIpnsName = function () {\\n var ipnsName = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/name')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n ipnsName = text\\n }\\n }\\n return ipnsName\\n }\\n\\n /*\\n * Retrieve ipfs saver ipns key with default value if applicable\\n */\\n exports.getIpfsIpnsKey = function () {\\n var ipnsKey = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/ipns/key')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n ipnsKey = text\\n }\\n }\\n return ipnsKey\\n }\\n\\n /*\\n * Retrieve ipfs saver verbose with default value if applicable\\n */\\n exports.getIpfsVerbose = function () {\\n var verbose = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/verbose')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n verbose = text\\n }\\n }\\n if (verbose == null) {\\n verbose = true // default, see ipfs-saver.tid\\n } else {\\n verbose = verbose === 'yes'\\n }\\n return verbose\\n }\\n\\n /*\\n * Retrieve ipfs saver unpin with default value if applicable\\n */\\n exports.getIpfsUnpin = function () {\\n var unpin = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/unpin')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n unpin = text\\n }\\n }\\n if (unpin == null) {\\n unpin = false // default, see ipfs-saver.tid\\n } else {\\n unpin = unpin === 'yes'\\n }\\n return unpin\\n }\\n\\n /*\\n * Retrieve ipfs saver url policy with default value if applicable\\n */\\n exports.getIpfsUrlPolicy = function () {\\n var policy = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/policy')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n policy = text\\n }\\n }\\n if (policy == null) {\\n policy = $tw.utils.getIpfsDefaultPolicy()\\n }\\n return policy\\n }\\n\\n /*\\n * Default Policy\\n */\\n exports.getIpfsDefaultPolicy = function () {\\n return 'gateway'\\n }\\n\\n /*\\n * Retrieve ipfs saver provider with default value if applicable\\n */\\n exports.getIpfsProvider = function () {\\n var provider = null\\n var tiddler = $tw.wiki.getTiddler('$:/ipfs/saver/provider')\\n if (tiddler !== undefined && tiddler !== null) {\\n var text = tiddler.getFieldString('text')\\n text =\\n text === undefined || text == null || text.trim() === ''\\n ? null\\n : text.trim()\\n if (text !== null) {\\n provider = text\\n }\\n }\\n if (provider == null) {\\n provider = $tw.utils.getIpfsDefaultProvider()\\n }\\n return provider\\n }\\n\\n /*\\n * Default Provider\\n */\\n exports.getIpfsDefaultProvider = function () {\\n return 'http'\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"utils\"\n },\n \"$:/plugins/ipfs/ipfs-import.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-import.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-import.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nIPFS Import\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const name = 'ipfs-import'\\n\\n const local = '\u003Ca href=\\\"'\\n const remote = '\u003Ca rel=\\\"noopener noreferrer\\\" target=\\\"_blank\\\" href=\\\"'\\n\\n const alertFailed = function (\\n strings,\\n msg,\\n key,\\n field,\\n parentField,\\n parentUrl,\\n parentTitle\\n ) {\\n var space = strings[1]\\n var endH1 = strings[2]\\n var endL1 = strings[3]\\n var from = strings[4]\\n var endH2 = strings[5]\\n var endL2 = strings[6]\\n if (\\n parentUrl.hostname === $tw.ipfs.getIpfsBaseUrl().hostname &&\\n parentUrl.pathname === $tw.ipfs.getIpfsBaseUrl().pathname\\n ) {\\n return `${msg}${space}${remote}${key}${endH1}${field}${endL1}${parentField}${from}${local}${parentUrl}${endH2}${parentTitle}${endL2}`\\n } else {\\n return `${msg}${space}${remote}${key}${endH1}${field}${endL1}${parentField}${from}${remote}${parentUrl}${endH2}${parentTitle}${endL2}`\\n }\\n }\\n\\n const alertFieldFailed = function (strings, msg, field, url, title) {\\n var failed = strings[1]\\n var from = strings[2]\\n var endH = strings[3]\\n var endL = strings[4]\\n if (\\n url.hostname === $tw.ipfs.getIpfsBaseUrl().hostname &&\\n url.pathname === $tw.ipfs.getIpfsBaseUrl().pathname\\n ) {\\n return `${msg}${failed}${field}${from}${local}${url}${endH}${title}${endL}`\\n } else {\\n return `${msg}${failed}${field}${from}${remote}${url}${endH}${title}${endL}`\\n }\\n }\\n\\n const alertConditionFailed = function (\\n strings,\\n msg,\\n condition,\\n key,\\n title,\\n parentUrl\\n ) {\\n var space = strings[1]\\n var from = strings[2]\\n var endH1 = strings[3]\\n var endL1 = strings[4]\\n var endH2 = strings[5]\\n var endL2 = strings[6]\\n if (\\n parentUrl.hostname === $tw.ipfs.getIpfsBaseUrl().hostname &&\\n parentUrl.pathname === $tw.ipfs.getIpfsBaseUrl().pathname\\n ) {\\n return `${msg}${space}${condition}${from}${remote}${key}${endH1}${title}${endL1}${local}${parentUrl}${endH2}${title}${endL2}`\\n } else {\\n return `${msg}${space}${condition}${from}${remote}${key}${endH1}${title}${endL1}${remote}${parentUrl}${endH2}${title}${endL2}`\\n }\\n }\\n\\n var IpfsImport = function () {}\\n\\n IpfsImport.prototype.getLogger = function () {\\n return window.log.getLogger(name)\\n }\\n\\n IpfsImport.prototype.removeTiddlers = function (keys, title) {\\n var removed = 0\\n for (var key of this.loaded.keys()) {\\n if (keys.indexOf(key) !== -1) {\\n continue\\n }\\n const { imported, resolvedKey } = this.loaded.get(key)\\n if (imported.delete(title)) {\\n const msg = 'Remove:'\\n const field = ''\\n this.getLogger().info(`${msg} ${field}\\\"${title}\\\"\\\\n ${resolvedKey}`)\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} ${field}${resolvedKey}\\\">${title}\u003C/a>`\\n )\\n removed += 1\\n }\\n }\\n return removed\\n }\\n\\n IpfsImport.prototype.getKey = async function (base, value) {\\n var cid = null\\n var ipnsKey = null\\n var key = null\\n var normalizedUrl = null\\n var resolvedUrl = null\\n value =\\n value === undefined || value == null || value.trim() === ''\\n ? null\\n : value.trim()\\n if (value == null) {\\n return {\\n key: null,\\n isIpfs: false,\\n resolvedUrl: null\\n }\\n }\\n var {\\n cid,\\n ipnsKey,\\n normalizedUrl,\\n resolvedUrl\\n } = await $tw.ipfs.resolveUrl(false, true, value, base)\\n if (normalizedUrl == null && resolvedUrl == null) {\\n throw new Error(`Failed to resolve value: \\\"${value}\\\"`)\\n }\\n if (cid !== null) {\\n key = `/ipfs/${cid}`\\n } else if (ipnsKey !== null) {\\n key = `/ipns/${ipnsKey}`\\n } else if (normalizedUrl.hostname.endsWith('.eth')) {\\n key = normalizedUrl.hostname\\n } else {\\n key = normalizedUrl.toString()\\n }\\n return {\\n key: key,\\n resolvedUrl: resolvedUrl\\n }\\n }\\n\\n IpfsImport.prototype.isIpfs = async function (key) {\\n key =\\n key === undefined || key == null || key.trim() === '' ? null : key.trim()\\n if (key == null) {\\n return false\\n }\\n const { cid, ipnsIdentifier } = $tw.ipfs.decodeCid(key)\\n if (cid !== null || ipnsIdentifier !== null) {\\n return true\\n } else if (key.endsWith('.eth')) {\\n return true\\n }\\n return false\\n }\\n\\n IpfsImport.prototype.import = async function (\\n canonicalUri,\\n importUri,\\n tiddler\\n ) {\\n const self = this\\n var loadedAdded = 0\\n var loadedRemoved = 0\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n importUri =\\n importUri === undefined || importUri == null || importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n this.host = tiddler\\n const { type, info } = $tw.utils.getContentType(\\n tiddler.fields.title,\\n tiddler.fields.type\\n )\\n this.loaded = new Map()\\n this.notLoaded = []\\n this.isEmpty = []\\n this.resolved = new Map()\\n this.notResolved = []\\n this.added = []\\n this.updated = []\\n this.merged = new Map()\\n try {\\n // Load and prepare imported tiddlers to be processed\\n const url = $tw.ipfs.getIpfsBaseUrl()\\n url.hash = tiddler.fields.title\\n if (canonicalUri !== null || importUri !== null) {\\n this.getLogger().info('*** Begin Import ***')\\n this.rootUri = importUri !== null ? importUri : canonicalUri\\n if (this.rootUri !== null) {\\n const {\\n loaded: importLoaded,\\n removed: importRemoved\\n } = await this.load(\\n url,\\n tiddler.fields.title,\\n '_import_uri',\\n importUri,\\n true\\n )\\n loadedAdded += importLoaded\\n loadedRemoved += importRemoved\\n }\\n if (canonicalUri !== null) {\\n var load = true\\n if (info.encoding === 'base64' || type === 'image/svg+xml') {\\n load = false\\n }\\n const {\\n loaded: canonicalLoaded,\\n removed: canonicalRemoved\\n } = await this.load(\\n url,\\n tiddler.fields.title,\\n '_canonical_uri',\\n canonicalUri,\\n load\\n )\\n loadedAdded += canonicalLoaded\\n loadedRemoved += canonicalRemoved\\n }\\n const { processed, removed: processedRemoved } = this.processImported()\\n this.importTiddlers()\\n this.getLogger().info(`*** Loaded: ${this.loaded.size} Resource(s) ***`)\\n this.getLogger().info(\\n `*** Loaded: ${this.isEmpty.length} Empty Resource(s) ***`\\n )\\n this.getLogger().info(\\n `*** Failed to Load: ${this.notLoaded.length} Resource(s) ***`\\n )\\n this.getLogger().info(\\n `*** Failed to Resolve: ${this.notResolved.length} URL(s) ***`\\n )\\n this.getLogger().info(\\n `*** Loaded: ${loadedAdded}, Removed: ${loadedRemoved} Tiddler(s) ***`\\n )\\n this.getLogger().info(\\n `*** Processed: ${processed}, Removed: ${processedRemoved} Tiddler(s) ***`\\n )\\n this.getLogger().info(\\n `*** Added: ${this.added.length}, Updated: ${this.updated.length} Tiddler(s) ***`\\n )\\n }\\n // Update Wiki\\n var reportAdded = ''\\n var reportUpdated = ''\\n for (var [title, merged] of this.merged.entries()) {\\n $tw.wiki.addTiddler(merged)\\n if (\\n this.host !== null &&\\n this.merged.get(this.host.fields.title) === undefined\\n ) {\\n if (this.added.indexOf(title) !== -1) {\\n reportAdded = `${reportAdded}[[${title}]]`\\n } else {\\n reportUpdated = `${reportUpdated}[[${title}]]`\\n }\\n }\\n }\\n // Process deleted\\n var deleted = 0\\n var reportDeleted = ''\\n $tw.wiki.forEachTiddler({ includeSystem: true }, function (\\n title,\\n tiddler\\n ) {\\n var value = tiddler.getFieldString('_canonical_uri')\\n if (\\n value !== undefined &&\\n value !== null &&\\n value === self.rootUri &&\\n self.merged.get(title) === undefined\\n ) {\\n if (\\n self.host !== null &&\\n self.merged.get(self.host.fields.title) === undefined &&\\n self.host.fields.title !== title\\n ) {\\n $tw.wiki.deleteTiddler(title)\\n reportDeleted = `${reportDeleted}[[${title}]]`\\n deleted += 1\\n }\\n return\\n }\\n var value = tiddler.getFieldString('_import_uri')\\n if (\\n value !== undefined &&\\n value !== null &&\\n value === self.rootUri &&\\n self.merged.get(title) === undefined\\n ) {\\n if (\\n self.host !== null &&\\n self.merged.get(self.host.fields.title) === undefined &&\\n self.host.fields.title !== title\\n ) {\\n $tw.wiki.deleteTiddler(title)\\n reportDeleted = `${reportDeleted}[[${title}]]`\\n deleted += 1\\n }\\n }\\n })\\n if (this.merged.size > 0) {\\n $tw.utils.alert(\\n name,\\n 'Successfully Imported, Added: ' +\\n this.added.length +\\n ', Deleted: ' +\\n deleted +\\n ', Updated: ' +\\n this.updated.length\\n )\\n }\\n if (\\n this.host !== null &&\\n this.merged.get(this.host.fields.title) === undefined\\n ) {\\n var updatedTiddler = new $tw.Tiddler(this.host)\\n if (this.merged.size === 0) {\\n updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: updatedTiddler,\\n fields: [\\n {\\n key: 'type',\\n value: 'text/vnd.tiddlywiki'\\n },\\n {\\n key: 'text',\\n value: \\\"''No Tiddlers have been Imported''\\\"\\n }\\n ]\\n })\\n } else {\\n const reportAddedMsg = `\u003Cp align='left'>''Added: ${this.added.length}''\u003C/p>`\\n const reportDeletedMsg = `\u003Cp align='left'>''Deleted: ${deleted}''\u003C/p>`\\n const reportImportedMsg =\\n \\\"\u003Cp align='center'>''Successfully Imported''\u003C/p>\\\"\\n const reportUpdatedMsg = `\u003Cp align='left'>''Updated: ${this.updated.length}''\u003C/p>`\\n var value = `${reportImportedMsg}`\\n if (reportAdded.trim() !== '') {\\n value = `${value}\\\\n\\\\n${reportAddedMsg}\\\\n\\\\n{{{${reportAdded}}}}`\\n }\\n if (reportDeleted.trim() !== '') {\\n value = `${value}\\\\n\\\\n${reportDeletedMsg}\\\\n\\\\n{{{${reportDeleted}}}}`\\n }\\n if (reportUpdated.trim() !== '') {\\n value = `${value}\\\\n\\\\n${reportUpdatedMsg}\\\\n\\\\n{{{${reportUpdated}}}}`\\n }\\n updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: updatedTiddler,\\n fields: [\\n {\\n key: 'type',\\n value: 'text/vnd.tiddlywiki'\\n },\\n {\\n key: 'text',\\n value: value\\n }\\n ]\\n })\\n }\\n $tw.wiki.addTiddler(updatedTiddler)\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n this.getLogger().info('*** End Import ***')\\n this.host = null\\n this.loaded = null\\n this.isEmpty = null\\n this.notLoaded = null\\n this.resolved = null\\n this.notResolved = null\\n this.added = null\\n this.updated = null\\n this.merged = null\\n }\\n\\n IpfsImport.prototype.load = async function (\\n parentUrl,\\n parentTitle,\\n field,\\n url,\\n load\\n ) {\\n var loaded = 0\\n var removed = 0\\n var key = null\\n var resolvedUrl = null\\n if (\\n url !== null &&\\n this.notResolved.indexOf(url) === -1 &&\\n this.resolved.get(url) === undefined\\n ) {\\n try {\\n var { key, resolvedUrl } = await this.getKey(parentUrl, url)\\n this.resolved.set(url, key)\\n } catch (error) {\\n const msg = 'Failed to Resolve:'\\n this.notResolved.push(url)\\n this.getLogger().error(error)\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} \\\"${field}\\\" from ${parentUrl}\\\">${parentTitle}\u003C/a>`\\n )\\n }\\n }\\n if (\\n load &&\\n key !== null &&\\n resolvedUrl !== null &&\\n this.notLoaded.indexOf(key) === -1 &&\\n this.loaded.get(key) === undefined\\n ) {\\n const {\\n loaded: loadedAdded,\\n removed: loadedRemoved\\n } = await this.loadResource(\\n parentUrl,\\n parentTitle,\\n field,\\n url,\\n key,\\n resolvedUrl\\n )\\n loaded = loadedAdded\\n removed = loadedRemoved\\n }\\n return {\\n loaded: loaded,\\n removed: removed\\n }\\n }\\n\\n IpfsImport.prototype.loadResource = async function (\\n parentUrl,\\n parentTitle,\\n parentField,\\n uri,\\n key,\\n resolvedKey\\n ) {\\n var loaded = 0\\n var removed = 0\\n var content = null\\n var imported = new Map()\\n var tiddlers = null\\n try {\\n // Load\\n content = await $tw.ipfs.loadToUtf8(resolvedKey.toString())\\n if ($tw.ipfs.isJson(content.data)) {\\n tiddlers = $tw.wiki.deserializeTiddlers(\\n '.json',\\n content.data,\\n $tw.wiki.getCreationFields()\\n )\\n } else {\\n tiddlers = $tw.wiki.deserializeTiddlers(\\n '.tid',\\n content.data,\\n $tw.wiki.getCreationFields()\\n )\\n }\\n // Loaded\\n if (tiddlers !== undefined && tiddlers !== null) {\\n this.loaded.set(key, { imported, resolvedKey, uri })\\n for (var i in tiddlers) {\\n const tiddler = tiddlers[i]\\n var title = tiddler.title\\n if (title === undefined || title == null || title.trim() === '') {\\n const msg = 'Ignore Unknown:'\\n const field = 'Title'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\"\\\\n ${resolvedKey} \\\\n from \\\"${parentField}\\\", \\\"${parentTitle}\\\"\\\\n ${parentUrl}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFailed`${msg} ${resolvedKey}\\\">${field}\u003C/a>, from \\\"${parentField}\\\", ${parentUrl}\\\">${parentTitle}\u003C/a>`\\n )\\n removed += 1\\n continue\\n }\\n if (imported.get(title) !== undefined) {\\n const msg = 'Ignore Duplicate:'\\n this.getLogger().info(\\n `${msg} \\\"${title}\\\"\\\\n ${resolvedKey} \\\\n from \\\"${parentField}\\\", \\\"${parentTitle}\\\"\\\\n ${parentUrl}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFailed`${msg} ${resolvedKey}\\\">${title}\u003C/a>, from \\\"${parentField}\\\", ${parentUrl}\\\">${parentTitle}\u003C/a>`\\n )\\n removed += 1\\n continue\\n }\\n var type = tiddler.type\\n if (type === undefined || type == null) {\\n type = 'text/vnd.tiddlywiki'\\n }\\n var info = $tw.config.contentTypeInfo[type]\\n if (info === undefined || info == null) {\\n const msg = 'Unknown:'\\n const field = 'Content-Type'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\": \\\"${title}\\\"\\\\n ${resolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} \\\"${field}\\\": ${resolvedKey}\\\">${title}\u003C/a>`\\n )\\n // Default\\n type = 'text/vnd.tiddlywiki'\\n info = $tw.config.contentTypeInfo[type]\\n }\\n tiddler.type = type\\n // Next\\n var canonicalUri = tiddler._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n tiddler._canonical_uri = canonicalUri\\n var importUri = tiddler._import_uri\\n importUri =\\n importUri === undefined ||\\n importUri == null ||\\n importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n tiddler._import_uri = importUri\\n if (canonicalUri !== null || importUri !== null) {\\n if (importUri !== null) {\\n const {\\n loaded: loadedAdded,\\n removed: loadedRemoved\\n } = await this.load(\\n resolvedKey,\\n title,\\n '_import_uri',\\n importUri,\\n true\\n )\\n loaded += loadedAdded\\n removed += loadedRemoved\\n }\\n if (canonicalUri !== null) {\\n var load = true\\n if (\\n info.encoding === 'base64' ||\\n tiddler.type === 'image/svg+xml'\\n ) {\\n load = false\\n }\\n const {\\n loaded: loadedAdded,\\n removed: loadedRemoved\\n } = await this.load(\\n resolvedKey,\\n title,\\n 'canonical_uri',\\n canonicalUri,\\n load\\n )\\n loaded += loadedAdded\\n removed += loadedRemoved\\n }\\n }\\n imported.set(title, tiddler)\\n loaded += 1\\n }\\n }\\n if (imported.size === 0) {\\n this.isEmpty.push(key)\\n const msg = 'Empty:'\\n const field = 'Resource'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\"\\\\n ${resolvedKey} \\\\n from \\\"${parentField}\\\", \\\"${parentTitle}\\\"\\\\n ${parentUrl}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFailed`${msg} ${resolvedKey}\\\">${field}\u003C/a> from \\\"${parentField}\\\", ${parentUrl}\\\">${parentTitle}\u003C/a>`\\n )\\n }\\n } catch (error) {\\n this.notLoaded.push(key)\\n const msg = 'Failed to Load:'\\n const field = 'Resource'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\"\\\\n ${resolvedKey} \\\\n from \\\"${parentField}\\\", \\\"${parentTitle}\\\"\\\\n ${parentUrl}`\\n )\\n this.getLogger().error(error)\\n $tw.utils.alert(\\n name,\\n alertFailed`${msg} ${resolvedKey}\\\">${field}\u003C/a> from \\\"${parentField}\\\", ${parentUrl}\\\">${parentTitle}\u003C/a>`\\n )\\n }\\n return {\\n loaded: loaded,\\n removed: removed\\n }\\n }\\n\\n IpfsImport.prototype.processImported = function () {\\n var processed = 0\\n var removed = 0\\n var processedTitles = []\\n for (var key of this.loaded.keys()) {\\n const { imported, resolvedKey } = this.loaded.get(key)\\n for (var title of imported.keys()) {\\n if (processedTitles.indexOf(title) !== -1) {\\n continue\\n }\\n const keys = []\\n const tiddler = imported.get(title)\\n var type = tiddler.type\\n var info = $tw.config.contentTypeInfo[type]\\n var canonicalUri = tiddler._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n var importUri = tiddler._import_uri\\n importUri =\\n importUri === undefined ||\\n importUri == null ||\\n importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n if (canonicalUri == null && importUri == null) {\\n keys.push(key)\\n } else if (canonicalUri == null && importUri !== null) {\\n const msg = 'Missing:'\\n const field = '_canonical_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from ${title}\\\"\\\\n ${resolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} \\\"${field}\\\" from ${resolvedKey}\\\">${title}\u003C/a>`\\n )\\n } else {\\n var canonicalKey = null\\n if (\\n canonicalUri !== null &&\\n this.notResolved.indexOf(canonicalUri) === -1\\n ) {\\n canonicalKey = this.resolved.get(canonicalUri)\\n }\\n if (canonicalKey !== undefined && canonicalKey !== null) {\\n if (key === canonicalKey) {\\n const msg = 'Cycle Graph:'\\n const field = '_canonical_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from ${title}\\\"\\\\n ${resolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} \\\"${field}\\\" from ${resolvedKey}\\\">${title}\u003C/a>`\\n )\\n } else if (\\n this.processCanonicalKey(\\n keys,\\n resolvedKey,\\n title,\\n canonicalKey,\\n type,\\n info\\n )\\n ) {\\n var importKey = null\\n if (\\n importUri !== null &&\\n this.notResolved.indexOf(importUri) === -1\\n ) {\\n importKey = this.resolved.get(importUri)\\n }\\n if (importKey === undefined || importKey == null) {\\n keys.push(key)\\n } else {\\n if (canonicalKey === importKey) {\\n const msg = 'Matching:'\\n const field = '\\\"_canonical_uri\\\" and \\\"_import_uri\\\"'\\n this.getLogger().info(\\n `${msg} ${field} from \\\"${title}\\\"\\\\n ${resolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} ${field} from ${resolvedKey}\\\">${title}\u003C/a>`\\n )\\n } else if (key === importKey) {\\n const msg = 'Cycle Graph:'\\n const field = '_import_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from \\\"${title}\\\"\\\\n ${resolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} \\\"${field}\\\" from ${resolvedKey}\\\">${title}\u003C/a>`\\n )\\n } else {\\n keys.push(key)\\n this.processImportKey(\\n keys,\\n resolvedKey,\\n title,\\n canonicalKey,\\n importKey\\n )\\n }\\n }\\n }\\n }\\n }\\n processed += keys.length\\n removed += this.removeTiddlers(keys, title)\\n processedTitles.push(title)\\n }\\n }\\n return {\\n processed: processed,\\n removed: removed\\n }\\n }\\n\\n IpfsImport.prototype.processCanonicalKey = function (\\n keys,\\n parentResolvedKey,\\n title,\\n canonicalKey,\\n type,\\n info\\n ) {\\n if (info.encoding === 'base64' || type === 'image/svg+xml') {\\n keys.push(canonicalKey)\\n return true\\n }\\n if (this.notLoaded.indexOf(canonicalKey) !== -1) {\\n return false\\n }\\n const { imported, resolvedKey } = this.loaded.get(canonicalKey)\\n if (imported === undefined) {\\n return false\\n }\\n const tiddler = imported.get(title)\\n if (tiddler === undefined) {\\n return false\\n }\\n var canonicalUri = tiddler._canonical_uri\\n canonicalUri =\\n canonicalUri == null ||\\n canonicalUri === undefined ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n if (canonicalUri !== null) {\\n const msg = 'Inconsistency:'\\n const field = '_canonical_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from \\\"${title}\\\"\\\\n ${resolvedKey} \\\\n and ${parentResolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertConditionFailed`${msg} \\\"${field}\\\" from ${resolvedKey}\\\">${title}\u003C/a> and ${parentResolvedKey}\\\">${title}\u003C/a>`\\n )\\n return false\\n }\\n var importUri = tiddler._import_uri\\n importUri =\\n importUri == null || importUri === undefined || importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n if (importUri !== null) {\\n const msg = 'Inconsistency:'\\n const field = '_import_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from \\\"${title}\\\"\\\\n ${resolvedKey} \\\\n and ${parentResolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertConditionFailed`${msg} \\\"${field}\\\" from ${resolvedKey}\\\">${title}\u003C/a> and ${parentResolvedKey}\\\">${title}\u003C/a>`\\n )\\n return false\\n }\\n keys.push(canonicalKey)\\n return true\\n }\\n\\n IpfsImport.prototype.processImportKey = function (\\n keys,\\n parentResolvedKey,\\n title,\\n canonicalKey,\\n importKey\\n ) {\\n if (this.notLoaded.indexOf(importKey) !== -1) {\\n return\\n }\\n const { imported, resolvedKey: importResolvedKey } = this.loaded.get(\\n importKey\\n )\\n if (imported === undefined) {\\n return\\n }\\n const tiddler = imported.get(title)\\n if (tiddler === undefined) {\\n return\\n }\\n var targetCanonicalUri = tiddler._canonical_uri\\n targetCanonicalUri =\\n targetCanonicalUri == null ||\\n targetCanonicalUri === undefined ||\\n targetCanonicalUri.trim() === ''\\n ? null\\n : targetCanonicalUri.trim()\\n var targetCanonicalKey = null\\n if (\\n targetCanonicalUri !== null &&\\n this.notResolved.indexOf(targetCanonicalUri) === -1\\n ) {\\n targetCanonicalKey = this.resolved.get(targetCanonicalUri)\\n }\\n if (\\n targetCanonicalKey !== undefined &&\\n targetCanonicalKey !== null &&\\n canonicalKey !== targetCanonicalKey\\n ) {\\n const msg = 'Inconsistency:'\\n const field = '_canonical_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from \\\"${title}\\\"\\\\n ${importResolvedKey} \\\\n and ${parentResolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertConditionFailed`${msg} \\\"${field}\\\" from ${importResolvedKey}\\\">${title}\u003C/a> and ${parentResolvedKey}\\\">${title}\u003C/a>`\\n )\\n return\\n }\\n var nextImportUri = tiddler._import_uri\\n nextImportUri =\\n nextImportUri == null ||\\n nextImportUri === undefined ||\\n nextImportUri.trim() === ''\\n ? null\\n : nextImportUri.trim()\\n if (targetCanonicalUri == null && nextImportUri !== null) {\\n const msg = 'Missing:'\\n const field = '_canonical_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from \\\"${title}\\\"\\\\n ${importResolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} \\\"${field}\\\" from ${importResolvedKey}\\\">${title}\u003C/a>`\\n )\\n return\\n }\\n if (nextImportUri == null) {\\n keys.push(importKey)\\n } else {\\n var nextImportKey = null\\n if (\\n nextImportUri !== null &&\\n this.notResolved.indexOf(nextImportUri) === -1\\n ) {\\n nextImportKey = this.resolved.get(nextImportUri)\\n }\\n if (nextImportKey !== undefined && nextImportKey !== null) {\\n if (canonicalKey === nextImportKey) {\\n const msg = 'Matching:'\\n const field = '\\\"_canonical_uri\\\" and \\\"_import_uri\\\"'\\n this.getLogger().info(\\n `${msg} ${field} from \\\"${title}\\\"\\\\n ${importResolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} ${field} from ${importResolvedKey}\\\">${title}\u003C/a>`\\n )\\n } else if (keys.indexOf(nextImportKey) !== -1) {\\n const msg = 'Cycle Graph:'\\n const field = '_import_uri'\\n this.getLogger().info(\\n `${msg} \\\"${field}\\\" from \\\"${title}\\\"\\\\n ${importResolvedKey}`\\n )\\n $tw.utils.alert(\\n name,\\n alertFieldFailed`${msg} \\\"${field}\\\" from ${importResolvedKey}\\\">${title}\u003C/a>`\\n )\\n } else {\\n keys.push(importKey)\\n this.processImportKey(\\n keys,\\n importResolvedKey,\\n title,\\n canonicalKey,\\n nextImportKey\\n )\\n }\\n }\\n }\\n }\\n\\n IpfsImport.prototype.importTiddlers = function () {\\n var processedTitles = []\\n for (var key of this.loaded.keys()) {\\n const { imported, uri } = this.loaded.get(key)\\n for (var title of imported.keys()) {\\n if (processedTitles.indexOf(title) !== -1) {\\n continue\\n }\\n const tiddler = imported.get(title)\\n var type = tiddler.type\\n var info = $tw.config.contentTypeInfo[type]\\n var canonicalUri = tiddler._canonical_uri\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n var importUri = tiddler._import_uri\\n importUri =\\n importUri === undefined ||\\n importUri == null ||\\n importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n var exist = null\\n if (importUri !== null) {\\n exist = this.importTiddler(title, importUri)\\n }\\n if (\\n exist == null &&\\n canonicalUri !== null &&\\n info.encoding !== 'base64' &&\\n type !== 'image/svg+xml'\\n ) {\\n this.importTiddler(title, canonicalUri)\\n }\\n exist = this.mergeTiddler(title, uri)\\n if (exist !== null) {\\n const merged = this.merged.get(title)\\n var type = merged.type\\n var info = $tw.config.contentTypeInfo[type]\\n if (info.encoding === 'base64' || type === 'image/svg+xml') {\\n merged._import_uri = this.rootUri\\n } else {\\n var canonicalUri = merged._canonical_uri\\n if (canonicalUri === undefined || canonicalUri == null) {\\n if (uri !== this.rootUri) {\\n merged._canonical_uri = this.resolved.get(uri)\\n merged._import_uri = this.rootUri\\n } else {\\n merged._canonical_uri = this.rootUri\\n }\\n } else {\\n merged._canonical_uri = this.resolved.get(merged._canonical_uri)\\n if (canonicalUri !== this.rootUri) {\\n merged._import_uri = this.rootUri\\n }\\n }\\n }\\n if (exist) {\\n this.updated.push(title)\\n } else {\\n this.added.push(title)\\n }\\n processedTitles.push(title)\\n }\\n }\\n }\\n }\\n\\n IpfsImport.prototype.importTiddler = function (title, uri) {\\n const key = this.resolved.get(uri)\\n if (key === undefined) {\\n return null\\n }\\n const { imported } = this.loaded.get(key)\\n if (imported === undefined) {\\n return null\\n }\\n const tiddler = imported.get(title)\\n if (tiddler === undefined) {\\n return null\\n }\\n var type = tiddler.type\\n var info = $tw.config.contentTypeInfo[type]\\n var importUri = tiddler._import_uri\\n importUri =\\n importUri == null || importUri === undefined || importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n var canonicalUri = tiddler._canonical_uri\\n canonicalUri =\\n canonicalUri == null ||\\n canonicalUri === undefined ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n var exist = null\\n if (importUri !== null) {\\n exist = this.importTiddler(title, importUri)\\n }\\n if (\\n exist == null &&\\n canonicalUri !== null &&\\n info.encoding !== 'base64' &&\\n type !== 'image/svg+xml'\\n ) {\\n this.importTiddler(title, canonicalUri)\\n }\\n return this.mergeTiddler(title, uri)\\n }\\n\\n IpfsImport.prototype.mergeTiddler = function (title, uri) {\\n var merged = null\\n var currentTiddler = null\\n const key = this.resolved.get(uri)\\n if (key === undefined) {\\n return null\\n }\\n const { imported } = this.loaded.get(key)\\n if (imported === undefined) {\\n return null\\n }\\n const tiddler = imported.get(title)\\n if (tiddler === undefined) {\\n return null\\n }\\n // Retrieve target host Tiddler\\n if (this.host !== null && this.host.fields.title === title) {\\n currentTiddler = this.host\\n } else {\\n currentTiddler = $tw.wiki.getTiddler(title)\\n }\\n // Retrieve or prepare merged content\\n merged = this.merged.get(title)\\n if (merged === undefined) {\\n merged = {}\\n this.merged.set(title, merged)\\n }\\n // Tags\\n var tags = tiddler.tags !== undefined ? tiddler.tags : ''\\n // Fields\\n var hasModified = false\\n for (var field in tiddler) {\\n // Discard\\n if (field === 'tags') {\\n continue\\n }\\n if (field === 'modified') {\\n hasModified = true\\n }\\n // Unknown from leaf to top, we keep the top modified field\\n if (\\n merged[field] === undefined ||\\n merged[field] == null ||\\n field === '_canonical_uri' ||\\n field === '_import_uri' ||\\n field === 'modified'\\n ) {\\n merged[field] = tiddler[field]\\n }\\n }\\n if (hasModified === false) {\\n merged.modified = new Date()\\n }\\n // Merge current Tiddler Tags\\n if (currentTiddler !== undefined && currentTiddler !== null) {\\n const currentTags = (currentTiddler.fields.tags || []).slice(0)\\n for (var i = 0; i \u003C currentTags.length; i++) {\\n const currentTag = currentTags[i]\\n if (tags.includes(currentTag) === false) {\\n tags = `${tags} [[${currentTag}]]`\\n }\\n }\\n }\\n // Merge merged Tags\\n if (merged.tags !== undefined && merged.tags !== null) {\\n const mergedTags = $tw.utils.parseStringArray(merged.tags, false)\\n for (var i = 0; i \u003C mergedTags.length; i++) {\\n const mergedTag = mergedTags[i]\\n if (tags.includes(mergedTag) === false) {\\n tags = `${tags} [[${mergedTag}]]`\\n }\\n }\\n }\\n // IPFS tag\\n if (this.isIpfs(key) && tags.includes('$:/isIpfs') === false) {\\n tags = `${tags} $:/isIpfs`\\n }\\n // Imported tag\\n if (tags.includes('$:/isImported') === false) {\\n tags = `${tags} $:/isImported`\\n }\\n // Processed tags\\n merged.tags = tags\\n if (currentTiddler !== undefined && currentTiddler !== null) {\\n return true\\n }\\n return false\\n }\\n\\n exports.IpfsImport = IpfsImport\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/macro/ipfs-info-saver.js\": {\n \"title\": \"$:/plugins/ipfs/macro/ipfs-info-saver.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/macro/ipfs-info-saver.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: macro\\n\\nIPFS info saver\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /*\\n * Information about this macro\\n */\\n exports.name = 'ipfs-info-saver'\\n\\n exports.params = [{ name: 'tiddler' }]\\n\\n /*\\n * Run the macro\\n */\\n exports.run = function (tiddler) {\\n return $tw.saverHandler.getSaver(tiddler).module.info.name\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"macro\"\n },\n \"$:/plugins/ipfs/modules/widgets/ipfs-link.js\": {\n \"title\": \"$:/plugins/ipfs/modules/widgets/ipfs-link.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/modules/widgets/ipfs-link.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nIPFS link widget\\n\\n\\\\*/\\n\\n/**\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n var Widget = require('$:/core/modules/widgets/widget.js').widget\\n\\n const name = 'ipfs-link'\\n\\n var IpfsLinkWidget = function (parseTreeNode, options) {\\n this.initialise(parseTreeNode, options)\\n }\\n\\n /*\\n * Inherit from the base widget class\\n */\\n IpfsLinkWidget.prototype = new Widget()\\n\\n IpfsLinkWidget.prototype.getLogger = function () {\\n return window.log.getLogger(name)\\n }\\n\\n /*\\n * Render this widget into the DOM\\n */\\n IpfsLinkWidget.prototype.render = function (parent, nextSibling) {\\n var self = this\\n // Save the parent dom node\\n this.parentDomNode = parent\\n // Compute our attributes\\n this.computeAttributes()\\n // Execute our logic\\n this.execute()\\n // Tiddler link\\n var value = this.url !== undefined ? this.url : this.value\\n var tiddler = $tw.wiki.getTiddler(value)\\n if (tiddler !== undefined && tiddler !== null) {\\n this.renderTiddlerLink(parent, nextSibling)\\n } else {\\n this.renderText(parent, nextSibling)\\n $tw.ipfs\\n .resolveUrl(false, false, value)\\n .then(data => {\\n var { normalizedUrl } = data\\n if (normalizedUrl !== null) {\\n self.removeChildDomNodes()\\n self.renderExternalLink(parent, nextSibling, normalizedUrl)\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n })\\n }\\n }\\n\\n /*\\n * Render this widget into the DOM\\n */\\n IpfsLinkWidget.prototype.renderExternalLink = function (\\n parent,\\n nextSibling,\\n url\\n ) {\\n // Sanitise the specified tag\\n var tag = this.linkTag\\n if ($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\\n tag = 'a'\\n }\\n // Create our element\\n var namespace = this.getVariable('namespace', {\\n defaultValue: 'http://www.w3.org/1999/xhtml'\\n })\\n var domNode = this.document.createElementNS(namespace, tag)\\n domNode.setAttribute('href', url)\\n // Add a click event handler\\n $tw.utils.addEventListeners(domNode, [\\n {\\n name: 'click',\\n handlerObject: this,\\n handlerMethod: 'handleExternalClickEvent'\\n }\\n ])\\n // Assign classes\\n var classes = []\\n if (this.classes) {\\n classes.push(this.classes)\\n }\\n if (classes.length > 0) {\\n domNode.setAttribute('class', classes.join(' '))\\n }\\n if (this['aria-label']) {\\n domNode.setAttribute('aria-label', this['aria-label'])\\n }\\n // Insert the URL into the DOM and render any children\\n parent.insertBefore(domNode, nextSibling)\\n // Process\\n this.renderChildren(domNode, null)\\n this.domNodes.push(domNode)\\n }\\n\\n /*\\n * Render this widget into the DOM\\n */\\n IpfsLinkWidget.prototype.renderTiddlerLink = function (parent, nextSibling) {\\n // self\\n var self = this\\n // Sanitise the specified tag\\n var tag = this.linkTag\\n if ($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\\n tag = 'a'\\n }\\n var value = this.url !== undefined ? this.url : this.value\\n var isMissing = !this.wiki.tiddlerExists(value)\\n var isShadow = this.wiki.isShadowTiddler(value)\\n // Create our element\\n var namespace = this.getVariable('namespace', {\\n defaultValue: 'http://www.w3.org/1999/xhtml'\\n })\\n var domNode = this.document.createElementNS(namespace, tag)\\n // Assign classes\\n var classes = []\\n if (this.overrideClasses === undefined) {\\n classes.push('tc-tiddlylink')\\n if (isShadow) {\\n classes.push('tc-tiddlylink-shadow')\\n }\\n if (isMissing && !isShadow) {\\n classes.push('tc-tiddlylink-missing')\\n } else {\\n if (!isMissing) {\\n classes.push('tc-tiddlylink-resolves')\\n }\\n }\\n if (this.linkClasses) {\\n classes.push(this.linkClasses)\\n }\\n } else if (this.overrideClasses !== '') {\\n classes.push(this.overrideClasses)\\n }\\n if (classes.length > 0) {\\n domNode.setAttribute('class', classes.join(' '))\\n }\\n // Set an href\\n var wikilinkTransformFilter = this.getVariable('tv-filter-export-link')\\n var wikiLinkText\\n if (wikilinkTransformFilter) {\\n // Use the filter to construct the href\\n wikiLinkText = this.wiki.filterTiddlers(\\n wikilinkTransformFilter,\\n this,\\n function (iterator) {\\n iterator(self.wiki.getTiddler(value), value)\\n }\\n )[0]\\n } else {\\n // Expand the tv-wikilink-template variable to construct the href\\n var wikiLinkTemplateMacro = this.getVariable('tv-wikilink-template')\\n var wikiLinkTemplate = wikiLinkTemplateMacro\\n ? wikiLinkTemplateMacro.trim()\\n : '#$uri_encoded$'\\n wikiLinkText = $tw.utils.replaceString(\\n wikiLinkTemplate,\\n '$uri_encoded$',\\n encodeURIComponent(value)\\n )\\n wikiLinkText = $tw.utils.replaceString(\\n wikiLinkText,\\n '$uri_doubleencoded$',\\n encodeURIComponent(encodeURIComponent(value))\\n )\\n }\\n // Override with the value of tv-get-export-link if defined\\n wikiLinkText = this.getVariable('tv-get-export-link', {\\n params: [{ name: 'to', value: value }],\\n defaultValue: wikiLinkText\\n })\\n if (tag === 'a') {\\n var namespaceHref =\\n namespace === 'http://www.w3.org/2000/svg'\\n ? 'http://www.w3.org/1999/xlink'\\n : undefined\\n domNode.setAttributeNS(namespaceHref, 'href', wikiLinkText)\\n }\\n // Set the tabindex\\n if (this.tabIndex) {\\n domNode.setAttribute('tabindex', this.tabIndex)\\n }\\n // Set the tooltip\\n // HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \\\"\u003C$transclude field='tooltip'>\u003C$transclude field='title'/>\u003C/$transclude>\\\"\\n var tooltipWikiText =\\n this.tooltip || this.getVariable('tv-wikilink-tooltip')\\n if (tooltipWikiText) {\\n var tooltipText = this.wiki.renderText(\\n 'text/plain',\\n 'text/vnd.tiddlywiki',\\n tooltipWikiText,\\n {\\n parseAsInline: true,\\n variables: {\\n currentTiddler: value\\n },\\n parentWidget: this\\n }\\n )\\n domNode.setAttribute('title', tooltipText)\\n }\\n if (this['aria-label']) {\\n domNode.setAttribute('aria-label', this['aria-label'])\\n }\\n // Add a click event handler\\n $tw.utils.addEventListeners(domNode, [\\n {\\n name: 'click',\\n handlerObject: this,\\n handlerMethod: 'handleTiddlerClickEvent'\\n }\\n ])\\n // Make the link draggable if required\\n if (this.draggable === 'yes') {\\n $tw.utils.makeDraggable({\\n domNode: domNode,\\n dragTiddlerFn: function () {\\n return value\\n },\\n widget: this\\n })\\n }\\n // Insert the link into the DOM and render any children\\n parent.insertBefore(domNode, nextSibling)\\n // Process\\n this.renderChildren(domNode, null)\\n this.domNodes.push(domNode)\\n }\\n\\n /*\\n * Render this widget into the DOM\\n */\\n IpfsLinkWidget.prototype.renderText = function (parent, nextSibling) {\\n const domNode = this.document.createElement('span')\\n // Insert the text into the DOM and render any children\\n parent.insertBefore(domNode, nextSibling)\\n // Process\\n this.renderChildren(domNode, null)\\n this.domNodes.push(domNode)\\n }\\n\\n IpfsLinkWidget.prototype.handleExternalClickEvent = function (event) {\\n const self = this\\n const value = this.url !== undefined ? this.url : this.value\\n $tw.ipfs\\n .resolveUrl(true, true, value)\\n .then(data => {\\n const { resolvedUrl } = data\\n if (resolvedUrl !== null) {\\n window.open(resolvedUrl.toString(), '_blank', 'noopener,noreferrer')\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n event.preventDefault()\\n event.stopPropagation()\\n return false\\n }\\n\\n IpfsLinkWidget.prototype.handleTiddlerClickEvent = function (event) {\\n // Send the click on its way as a navigate event\\n const bounds = this.domNodes[0].getBoundingClientRect()\\n const value = this.url !== undefined ? this.url : this.value\\n this.dispatchEvent({\\n type: 'tm-navigate',\\n navigateTo: value,\\n navigateFromTitle: this.getVariable('storyTiddler'),\\n navigateFromNode: this,\\n navigateFromClientRect: {\\n top: bounds.top,\\n left: bounds.left,\\n width: bounds.width,\\n right: bounds.right,\\n bottom: bounds.bottom,\\n height: bounds.height\\n },\\n navigateSuppressNavigation:\\n event.metaKey || event.ctrlKey || event.button === 1,\\n metaKey: event.metaKey,\\n ctrlKey: event.ctrlKey,\\n altKey: event.altKey,\\n shiftKey: event.shiftKey\\n })\\n if (this.domNodes[0].hasAttribute('href')) {\\n event.preventDefault()\\n }\\n event.stopPropagation()\\n return false\\n }\\n\\n /*\\n * Compute the internal state of the widget\\n */\\n IpfsLinkWidget.prototype.execute = function () {\\n // Pick up our attributes\\n this.url = undefined\\n this.tiddler =\\n this.getAttribute('tiddler') !== undefined\\n ? this.getAttribute('tiddler')\\n : this.getVariable('currentTiddler')\\n const tiddler = $tw.wiki.getTiddler(this.tiddler)\\n this.field = this.getAttribute('field')\\n this.value =\\n this.getAttribute('value') !== undefined\\n ? this.getAttribute('value')\\n : tiddler.getFieldString(this.field) !== ''\\n ? tiddler.getFieldString(this.field)\\n : this.tiddler\\n if (\\n this.getAttribute('value') !== undefined &&\\n tiddler.getFieldString(this.getAttribute('value')) !== ''\\n ) {\\n this.url = tiddler.getFieldString(this.getAttribute('value'))\\n }\\n this.tooltip = this.getAttribute('tooltip')\\n this['aria-label'] = this.getAttribute('aria-label')\\n this.linkClasses = this.getAttribute('class') || 'tc-ipfs-link-external'\\n this.overrideClasses = this.getAttribute('overrideClass')\\n this.tabIndex = this.getAttribute('tabindex')\\n this.draggable = this.getAttribute('draggable', 'yes')\\n this.linkTag = this.getAttribute('tag', 'a')\\n var templateTree\\n if (this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\\n templateTree = this.parseTreeNode.children\\n } else {\\n templateTree = [{ type: 'text', text: this.value }]\\n }\\n this.makeChildWidgets(templateTree)\\n }\\n\\n /*\\n * Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n */\\n IpfsLinkWidget.prototype.refresh = function (changedTiddlers) {\\n const changedAttributes = this.computeAttributes()\\n const tiddler = $tw.wiki.getTiddler(this.tiddler)\\n var value = null\\n if (this.field !== undefined && this.field !== null) {\\n value = tiddler.getFieldString(this.field)\\n }\\n if (\\n changedAttributes.field ||\\n changedTiddlers[this.field] ||\\n changedAttributes.value ||\\n changedTiddlers[this.value] ||\\n changedAttributes.tooltip ||\\n changedAttributes['aria-label'] ||\\n changedTiddlers['$:/ipfs/saver/gateway'] ||\\n changedTiddlers['$:/ipfs/saver/policy'] ||\\n (value !== null && value !== this.value)\\n ) {\\n this.refreshSelf()\\n return true\\n }\\n return this.refreshChildren(changedTiddlers)\\n }\\n\\n exports.ipfslink = IpfsLinkWidget\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"widget\"\n },\n \"$:/plugins/ipfs/macro/ipfs-plugin-version.js\": {\n \"title\": \"$:/plugins/ipfs/macro/ipfs-plugin-version.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/macro/ipfs-plugin-version.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: macro\\n\\nIPFS plugin version\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /*\\n * Information about this macro\\n */\\n exports.name = 'ipfs-plugin-version'\\n\\n exports.params = []\\n\\n /*\\n * Run the macro\\n */\\n exports.run = function () {\\n return $tw.wiki.getTiddler('$:/plugins/ipfs').fields.version\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"macro\"\n },\n \"$:/plugins/ipfs/ipfs-saver.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-saver.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-saver.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: saver\\n\\nIPFS Saver\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const log = require('$:/plugins/ipfs/loglevel/loglevel.js')\\n\\n const EnsAction = require('$:/plugins/ipfs/ens-action.js').EnsAction\\n const IpfsAction = require('$:/plugins/ipfs/ipfs-action.js').IpfsAction\\n const IpfsController = require('$:/plugins/ipfs/ipfs-controller.js')\\n .IpfsController\\n const IpfsTiddler = require('$:/plugins/ipfs/ipfs-tiddler.js').IpfsTiddler\\n\\n const ensKeyword = 'ens'\\n const ipfsKeyword = 'ipfs'\\n const ipnsKeyword = 'ipns'\\n\\n const name = 'ipfs-saver'\\n\\n /*\\n * Select the appropriate saver module and set it up\\n */\\n var IpfsSaver = function (wiki) {\\n this.wiki = wiki\\n this.apiUrl = null\\n this.ipfsProvider = null\\n // Loglevel\\n if (window.log === undefined || window.log == null) {\\n // Init\\n window.log = log.noConflict()\\n if ($tw.utils.getIpfsVerbose()) {\\n log.setLevel('info', false)\\n } else {\\n log.setLevel('warn', false)\\n }\\n }\\n // Controller\\n $tw.ipfs = new IpfsController()\\n // Listener\\n this.ensAction = new EnsAction()\\n this.ipfsAction = new IpfsAction()\\n this.ipfsTiddler = new IpfsTiddler()\\n // Init\\n this.ensAction.init()\\n this.ipfsAction.init()\\n this.ipfsTiddler.init()\\n // Logger\\n const logger = window.log.getLogger(name)\\n // Log\\n logger.info('ipfs-saver is starting up...')\\n // Log url policy\\n const base = $tw.ipfs.getIpfsBaseUrl()\\n if ($tw.utils.getIpfsUrlPolicy() === 'origin') {\\n logger.info(`Origin base URL: ${base}`)\\n } else {\\n logger.info(`Gateway base URL: ${base}`)\\n }\\n }\\n\\n IpfsSaver.prototype.getLogger = function () {\\n return window.log.getLogger(name)\\n }\\n\\n IpfsSaver.prototype.save = async function (text, method, callback, options) {\\n if ($tw.saverHandler.isDirty() === false) {\\n return false\\n }\\n try {\\n var cid = null\\n var ipnsCid = null\\n var ipnsKey = null\\n var ipnsName = null\\n var ensDomain = null\\n var ensCid = null\\n var options = options || {}\\n const wiki = $tw.ipfs.getDocumentUrl()\\n const base = $tw.ipfs.getIpfsBaseUrl()\\n const nextWiki = $tw.ipfs.getUrl(wiki)\\n nextWiki.protocol = base.protocol\\n nextWiki.host = base.host\\n nextWiki.port = base.port\\n try {\\n var { cid, ipnsKey } = await $tw.ipfs.resolveUrl(false, true, wiki)\\n if (cid != null) {\\n await $tw.ipfs.requestToUnpin(cid)\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n callback(error.message)\\n return true\\n }\\n // IPNS\\n if (ipnsKey !== null || $tw.utils.getIpfsProtocol() === ipnsKeyword) {\\n // Resolve current IPNS\\n if (ipnsKey !== null) {\\n try {\\n var { cid: ipnsCid, ipnsName } = await $tw.ipfs.resolveUrl(\\n true,\\n false,\\n wiki\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n } else {\\n // Default IPNS\\n ipnsKey = $tw.utils.getIpfsIpnsKey()\\n ipnsKey =\\n ipnsKey === undefined || ipnsKey == null || ipnsKey.trim() === ''\\n ? null\\n : ipnsKey.trim()\\n ipnsName = $tw.utils.getIpfsIpnsName()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsKey == null && ipnsName == null) {\\n callback(null, 'Unknown default IPNS identifiers...')\\n return true\\n }\\n this.getLogger().info('Processing default IPNS identifiers...')\\n var identifier = ipnsKey\\n if (identifier == null) {\\n identifier = ipnsName\\n }\\n try {\\n var { cid: ipnsCid, ipnsKey, ipnsName } = await $tw.ipfs.resolveUrl(\\n true,\\n false,\\n `/${ipnsKeyword}/${identifier}`\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n }\\n if (ipnsCid != null) {\\n await $tw.ipfs.requestToUnpin(ipnsCid)\\n }\\n }\\n // ENS\\n if ($tw.utils.getIpfsProtocol() === ensKeyword) {\\n ensDomain = $tw.utils.getIpfsEnsDomain()\\n if (ensDomain == null) {\\n callback(null, 'Undefined ENS domain...')\\n return true\\n }\\n var { cid: ensCid } = await $tw.ipfs.resolveUrl(false, true, ensDomain)\\n if (ensCid != null) {\\n await $tw.ipfs.requestToUnpin(ensCid)\\n }\\n }\\n // Upload current document\\n this.getLogger().info(`Uploading wiki: ${text.length} bytes`)\\n // Add\\n const { added } = await $tw.ipfs.addToIpfs(text)\\n // Default next\\n nextWiki.pathname = `/${ipfsKeyword}/${added}`\\n // Pin\\n try {\\n await $tw.ipfs.pinToIpfs(added)\\n } catch (error) {\\n this.getLogger().warn(error)\\n $tw.utils.alert(name, error.message)\\n }\\n // Publish to IPNS\\n if (ipnsKey !== null && ipnsName !== null) {\\n $tw.utils.alert(name, `Publishing IPNS name: ${ipnsName}`)\\n try {\\n await $tw.ipfs.publishIpnsName(added, ipnsKey, ipnsName)\\n nextWiki.pathname = `/${ipnsKeyword}/${ipnsKey}`\\n $tw.utils.alert(name, `Successfully Published IPNS name: ${ipnsName}`)\\n } catch (error) {\\n this.getLogger().warn(error)\\n $tw.utils.alert(name, error.message)\\n $tw.ipfs.requestToPin(ipnsCid)\\n }\\n }\\n // Publish to ENS\\n if ($tw.utils.getIpfsProtocol() === ensKeyword) {\\n try {\\n $tw.utils.alert(name, `Publishing to ENS: ${ensDomain}`)\\n await $tw.ipfs.setEns(ensDomain, added)\\n // const chainId = $tw.ipfs.getChainId()\\n // if (chainId !== null && chainId === 1) {\\n // nextWiki.protocol = 'https:'\\n // nextWiki.host = ensDomain\\n // } else {\\n const { resolvedUrl } = await $tw.ipfs.resolveEns(ensDomain)\\n nextWiki.protocol = resolvedUrl.protocol\\n nextWiki.host = resolvedUrl.host\\n nextWiki.pathname = resolvedUrl.pathname\\n // }\\n $tw.utils.alert(name, `Successfully published to ENS: ${ensDomain}`)\\n } catch (error) {\\n this.getLogger().warn(error)\\n $tw.utils.alert(name, error.message)\\n $tw.ipfs.requestToPin(ensCid)\\n }\\n }\\n $tw.ipfs.pin = []\\n // Unpin\\n if ($tw.utils.getIpfsUnpin()) {\\n for (var i in $tw.ipfs.unpin) {\\n try {\\n const unpin = $tw.ipfs.unpin[i]\\n await $tw.ipfs.unpinFromIpfs(unpin)\\n } catch (error) {\\n this.getLogger().warn(error)\\n $tw.utils.alert(name, error.message)\\n }\\n }\\n }\\n $tw.ipfs.unpin = []\\n // Pin\\n for (var i in $tw.ipfs.pin) {\\n try {\\n const pin = $tw.ipfs.pin[i]\\n await $tw.ipfs.pinToIpfs(pin)\\n } catch (error) {\\n this.getLogger().warn(error)\\n $tw.utils.alert(name, error.message)\\n }\\n }\\n callback(null)\\n if (nextWiki.host !== wiki.host || nextWiki.pathname !== wiki.pathname) {\\n window.location.assign(nextWiki.toString())\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n callback(error.message)\\n return true\\n }\\n callback(null)\\n return true\\n }\\n\\n /*\\n * Information about this saver\\n */\\n IpfsSaver.prototype.info = {\\n name: 'Ipfs',\\n priority: 3100,\\n capabilities: ['save']\\n }\\n\\n /*\\n * Static method that returns true if this saver is capable of working\\n */\\n exports.canSave = function (wiki) {\\n return true\\n }\\n\\n /*\\n * Create an instance of this saver\\n */\\n exports.create = function (wiki) {\\n return new IpfsSaver(wiki)\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"saver\"\n },\n \"$:/plugins/ipfs/operator/ipfs-savers.js\": {\n \"title\": \"$:/plugins/ipfs/operator/ipfs-savers.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/operator/ipfs-savers.js\\ntype: application/javascript\\nmodule-type: filteroperator\\n\\nThis Filter operator return savers title\\n\\n\\\\*/\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /*\\n Export our filter function\\n */\\n exports.savers = function (source, operator, options) {\\n var results = []\\n for (var i in $tw.saverHandler.savers) {\\n results.push($tw.saverHandler.savers[i].title)\\n }\\n return results\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\"\n },\n \"$:/plugins/ipfs/ipfs-startup.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-startup.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-startup.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: startup\\n\\nStartup initialisation\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n exports.platforms = ['browser']\\n exports.after = ['startup']\\n exports.synchronous = true\\n\\n exports.startup = function () {\\n // Logger name\\n const name = 'ipfs-startup'\\n // Missing Media Types\\n $tw.utils.registerFileType('application/gzip', 'base64', '.gz')\\n $tw.utils.registerFileType('audio/mpeg', 'base64', '.mp2')\\n $tw.utils.registerFileType('image/jpg', 'base64', ['.jpg', '.jpeg'], {\\n flags: ['image']\\n })\\n $tw.utils.registerFileType('video/quicktime', 'base64', ['.mov', '.qt'])\\n // Log\\n const logger = window.log.getLogger(name)\\n logger.info('ipfs-startup is starting up...')\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/ipfs/ipfs-tiddler.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-tiddler.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-tiddler.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nIPFS Tiddler\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n const IpfsImport = require('$:/plugins/ipfs/ipfs-import.js').IpfsImport\\n\\n const name = 'ipfs-tiddler'\\n\\n /*\\n * https://tiddlywiki.com/#TiddlerFields\\n * $:/core/modules/server/routes/get-tiddler.js\\n * TODO: expose it as Tiddler ??\\n */\\n const reservedFields = [\\n 'bag',\\n 'caption',\\n 'class',\\n 'color',\\n 'description',\\n 'created',\\n 'creator',\\n 'fields',\\n 'footer',\\n 'hide-body',\\n 'icon',\\n '_is_skinny',\\n 'library',\\n 'list',\\n 'list-after',\\n 'list-before',\\n 'modified',\\n 'modifier',\\n 'name',\\n 'plugin-priority',\\n 'plugin-type',\\n 'permissions',\\n 'recipe',\\n 'revision',\\n // \\\"source\\\",\\n 'subtitle',\\n 'tags',\\n 'text',\\n // \\\"url\\\",\\n 'throttle.refresh',\\n 'toc-link',\\n 'title',\\n 'type'\\n ]\\n\\n var IpfsTiddler = function () {\\n this.once = false\\n }\\n\\n IpfsTiddler.prototype.getLogger = function () {\\n return window.log.getLogger(name)\\n }\\n\\n IpfsTiddler.prototype.init = function () {\\n // Init once\\n if (this.once) {\\n return\\n }\\n const self = this\\n // Wiki\\n $tw.wiki.addEventListener('change', function (changes) {\\n return self.handleChangeEvent(changes)\\n })\\n // Hook\\n $tw.hooks.addHook('th-deleting-tiddler', async function (tiddler) {\\n return await self.handleDeleteTiddler(tiddler)\\n })\\n $tw.hooks.addHook('th-importing-tiddler', function (tiddler) {\\n return self.handleFileImport(tiddler)\\n })\\n $tw.hooks.addHook('th-saving-tiddler', async function (tiddler) {\\n return await self.handleSaveTiddler(tiddler)\\n })\\n // Widget\\n $tw.rootWidget.addEventListener('tm-ipfs-pin', function (event) {\\n return self.handleIpfsPin(event)\\n })\\n $tw.rootWidget.addEventListener('tm-refresh-tiddler', function (event) {\\n return self.handleRefreshTiddler(event)\\n })\\n $tw.rootWidget.addEventListener('tm-ipfs-unpin', function (event) {\\n return self.handleIpfsUnpin(event)\\n })\\n // Init once\\n this.once = true\\n }\\n\\n IpfsTiddler.prototype.handleChangeEvent = function (changes) {\\n // Gateway preference\\n const gateway = changes['$:/ipfs/saver/gateway']\\n if (gateway !== undefined && gateway.modified) {\\n const base = $tw.ipfs.getIpfsBaseUrl()\\n if ($tw.utils.getIpfsUrlPolicy() === 'gateway') {\\n this.getLogger().info(`Gateway Relative URL:\\\\n ${base}`)\\n }\\n }\\n // Policy preference\\n const policy = changes['$:/ipfs/saver/policy']\\n if (policy !== undefined && policy.modified) {\\n const base = $tw.ipfs.getIpfsBaseUrl()\\n if ($tw.utils.getIpfsUrlPolicy() === 'origin') {\\n this.getLogger().info(`Origin base URL: ${base}`)\\n } else {\\n this.getLogger().info(`Gateway base URL: ${base}`)\\n }\\n }\\n // Unpin preference\\n const unpin = changes['$:/ipfs/saver/unpin']\\n if (unpin !== undefined && unpin.modified) {\\n if ($tw.utils.getIpfsUnpin()) {\\n this.getLogger().info('Unpin previous IPFS content...')\\n } else {\\n this.getLogger().info('Do not unpin previous IPFS content...')\\n }\\n }\\n // Verbose preference\\n const verbose = changes['$:/ipfs/saver/verbose']\\n if (verbose !== undefined && verbose.modified) {\\n if ($tw.utils.getIpfsVerbose()) {\\n this.updateLoggers('info')\\n } else {\\n this.updateLoggers('warn')\\n }\\n }\\n }\\n\\n IpfsTiddler.prototype.handleIpfsPin = function (event) {\\n const title = event.tiddlerTitle\\n const tiddler = $tw.wiki.getTiddler(title)\\n if (event.param !== undefined && event.param !== null) {\\n // Tiddler\\n for (var field in tiddler.fields) {\\n if (reservedFields.indexOf(field) !== -1) {\\n continue\\n }\\n var value = tiddler.getFieldString(field)\\n value =\\n value === undefined || value == null || value.trim() === ''\\n ? null\\n : value.trim()\\n if (value !== null) {\\n this.ipfsPin(value, field)\\n }\\n }\\n return true\\n }\\n // Wiki\\n this.ipfsPin($tw.ipfs.getDocumentUrl().toString(), 'Wiki')\\n return true\\n }\\n\\n IpfsTiddler.prototype.ipfsPin = function (value, field) {\\n const self = this\\n $tw.ipfs\\n .resolveUrl(true, true, value)\\n .then(data => {\\n const { cid, resolvedUrl } = data\\n if (resolvedUrl !== null && cid !== null) {\\n self.getLogger().info(`Pinning: \\\"${field}\\\"\\\\n ${resolvedUrl}`)\\n $tw.ipfs\\n .pinToIpfs(cid)\\n .then(data => {\\n if (data) {\\n $tw.ipfs.removeFromPinUnpin(cid, resolvedUrl)\\n $tw.utils.alert(\\n name,\\n `Successfully Pinned : \u003Ca rel=\\\"noopener noreferrer\\\" target=\\\"_blank\\\" href=\\\"${resolvedUrl}\\\">${field}\u003C/a>`\\n )\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n\\n IpfsTiddler.prototype.handleIpfsUnpin = async function (event) {\\n const title = event.tiddlerTitle\\n const tiddler = $tw.wiki.getTiddler(title)\\n const { type, info } = $tw.utils.getContentType(title, tiddler.fields.type)\\n if (event.param !== undefined && event.param !== null) {\\n // Tiddler\\n for (var field in tiddler.fields) {\\n if (reservedFields.indexOf(field) !== -1) {\\n continue\\n }\\n var value = tiddler.getFieldString(field)\\n value =\\n value === undefined || value == null || value.trim() === ''\\n ? null\\n : value.trim()\\n if (value !== null) {\\n if (info.encoding !== 'base64' && type !== 'image/svg+xml') {\\n if (field === '_canonical_uri' || field === '_import_uri') {\\n continue\\n }\\n }\\n this.ipfsUnpin(value, field)\\n }\\n }\\n return true\\n }\\n // Wiki\\n this.ipfsUnpin($tw.ipfs.getDocumentUrl().toString(), 'Wiki')\\n return true\\n }\\n\\n IpfsTiddler.prototype.ipfsUnpin = function (value, field) {\\n value =\\n value === undefined || value == null || value.trim() === ''\\n ? null\\n : value.trim()\\n if (value == null) {\\n return\\n }\\n field =\\n field === undefined || field == null || field.trim() === ''\\n ? null\\n : field.trim()\\n if (field == null) {\\n return\\n }\\n const self = this\\n $tw.ipfs\\n .resolveUrl(true, true, value)\\n .then(data => {\\n const { cid, resolvedUrl } = data\\n if (resolvedUrl !== null && cid !== null) {\\n self.getLogger().info(`Unpinning: \\\"${field}\\\\n ${resolvedUrl}`)\\n if ($tw.utils.getIpfsUnpin()) {\\n $tw.ipfs\\n .unpinFromIpfs(cid)\\n .then(data => {\\n if (data !== undefined && data !== null) {\\n $tw.ipfs.removeFromPinUnpin(cid, resolvedUrl)\\n $tw.utils.alert(\\n name,\\n `Successfully Unpinned : \u003Ca rel=\\\"noopener noreferrer\\\" target=\\\"_blank\\\" href=\\\"${resolvedUrl}\\\">${field}\u003C/a>`\\n )\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n }\\n })\\n .catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n }\\n\\n IpfsTiddler.prototype.updateLoggers = function (level) {\\n window.log.setLevel(level, false)\\n const loggers = window.log.getLoggers()\\n for (var property in loggers) {\\n if (Object.prototype.hasOwnProperty.call(loggers, property)) {\\n const logger = window.log.getLogger(property)\\n logger.setLevel(level, false)\\n }\\n }\\n }\\n\\n IpfsTiddler.prototype.handleDeleteTiddler = async function (tiddler) {\\n try {\\n const { type, info } = $tw.utils.getContentType(\\n tiddler.fields.title,\\n tiddler.fields.type\\n )\\n // Process\\n var field = null\\n if (info.encoding === 'base64' || type === 'image/svg+xml') {\\n field = '_canonical_uri'\\n } else {\\n field = '_export_uri'\\n }\\n // Value\\n var url = null\\n const value = tiddler.getFieldString(field)\\n if (value !== undefined && value !== null && value !== '') {\\n // URL or not\\n try {\\n url = $tw.ipfs.normalizeUrl(value)\\n } catch (error) {\\n // Ignore\\n }\\n // Process\\n if (url !== undefined && url !== null) {\\n const { cid } = $tw.ipfs.decodeCid(url.pathname)\\n // Request to unpin\\n if ($tw.utils.getIpfsUnpin() && cid !== null) {\\n $tw.ipfs.requestToUnpin(cid)\\n }\\n }\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n return tiddler\\n }\\n\\n IpfsTiddler.prototype.handleFileImport = function (tiddler) {\\n // Update tiddler\\n const addition = $tw.wiki.getModificationFields()\\n addition.title = tiddler.fields.title\\n addition.tags = (tiddler.fields.tags || []).slice(0)\\n // Add isAttachment tag\\n if (addition.tags.indexOf('$:/isAttachment') === -1) {\\n $tw.utils.pushTop(addition.tags, '$:/isAttachment')\\n }\\n // Add isEmbedded tag\\n if (addition.tags.indexOf('$:/isEmbedded') === -1) {\\n $tw.utils.pushTop(addition.tags, '$:/isEmbedded')\\n }\\n return new $tw.Tiddler(tiddler, addition)\\n }\\n\\n IpfsTiddler.prototype.handleRefreshTiddler = function (event) {\\n const self = this\\n const title = event.tiddlerTitle\\n const tiddler = $tw.wiki.getTiddler(title)\\n const { type, info } = $tw.utils.getContentType(title, tiddler.fields.type)\\n var canonicalUri = tiddler.getFieldString('_canonical_uri')\\n canonicalUri =\\n canonicalUri === undefined ||\\n canonicalUri == null ||\\n canonicalUri.trim() === ''\\n ? null\\n : canonicalUri.trim()\\n var importUri = tiddler.getFieldString('_import_uri')\\n importUri =\\n importUri === undefined || importUri == null || importUri.trim() === ''\\n ? null\\n : importUri.trim()\\n // Reload Attachment\\n if (\\n (info.encoding === 'base64' || type === 'image/svg+xml') &&\\n canonicalUri !== null &&\\n importUri == null\\n ) {\\n const updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: tiddler,\\n fields: [{ key: 'text', value: '' }]\\n })\\n $tw.wiki.addTiddler(updatedTiddler)\\n return true\\n }\\n // Async Import\\n if (canonicalUri !== null || importUri !== null) {\\n var ipfsImport = new IpfsImport()\\n ipfsImport.import(canonicalUri, importUri, tiddler).catch(error => {\\n self.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n })\\n } else {\\n $tw.wiki.clearCache(title)\\n const changedTiddler = $tw.utils.getChangedTiddler(title)\\n $tw.rootWidget.refresh(changedTiddler)\\n }\\n return true\\n }\\n\\n IpfsTiddler.prototype.handleSaveTiddler = async function (tiddler) {\\n // Previous tiddler\\n const oldTiddler = $tw.wiki.getTiddler(tiddler.fields.title)\\n const { type, info } = $tw.utils.getContentType(\\n tiddler.fields.title,\\n tiddler.fields.type\\n )\\n // Prepare\\n var updatedTiddler = new $tw.Tiddler(tiddler)\\n // Process deleted fields\\n if (oldTiddler !== undefined && oldTiddler !== null) {\\n for (var field in oldTiddler.fields) {\\n // Not a reserved keyword\\n if (reservedFields.indexOf(field) !== -1) {\\n continue\\n }\\n // Updated\\n const discard = tiddler.fields[field]\\n if (\\n discard !== undefined &&\\n discard !== null &&\\n tiddler.getFieldString(field) !== undefined\\n ) {\\n continue\\n }\\n // Process\\n var oldCid = null\\n var oldIpnsKey = null\\n var oldNormalizedUrl = null\\n var oldResolvedUrl = null\\n var oldValue = oldTiddler.getFieldString(field)\\n try {\\n var {\\n cid: oldCid,\\n ipnsKey: oldIpnsKey,\\n normalizedUrl: oldNormalizedUrl,\\n resolvedUrl: oldResolvedUrl\\n } = await $tw.ipfs.resolveUrl(false, true, oldValue)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return tiddler\\n }\\n oldResolvedUrl =\\n oldResolvedUrl === undefined ||\\n oldResolvedUrl == null ||\\n oldResolvedUrl.toString().trim() === ''\\n ? null\\n : oldResolvedUrl.toString().trim()\\n if (oldResolvedUrl !== null && field === '_canonical_uri') {\\n var content = tiddler.getFieldString('text')\\n // Attachment\\n if (info.encoding === 'base64' || type === 'image/svg+xml') {\\n // Embed\\n try {\\n if (info.encoding === 'base64') {\\n content = await $tw.ipfs.loadToBase64(oldResolvedUrl)\\n } else {\\n content = await $tw.ipfs.loadToUtf8(oldResolvedUrl)\\n }\\n updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: updatedTiddler,\\n addTags: ['$:/isAttachment', '$:/isEmbedded'],\\n fields: [{ key: 'text', value: content.data }]\\n })\\n this.getLogger().info(\\n `Embed attachment: ${content.data.length} bytes\\\\n ${oldResolvedUrl}`\\n )\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return tiddler\\n }\\n }\\n }\\n $tw.ipfs.requestToUnpin(oldCid, oldIpnsKey, oldNormalizedUrl)\\n }\\n }\\n var canonicalUri = null\\n var exportUri = null\\n var importUri = null\\n var canonicalCid = null\\n var exportCid = null\\n var importCid = null\\n // Process new and updated fields\\n for (var field in tiddler.fields) {\\n // Not a reserved keyword\\n if (reservedFields.indexOf(field) !== -1) {\\n continue\\n }\\n // Process\\n var cid = null\\n var ipnsKey = null\\n var normalizedUrl = null\\n var resolvedUrl = null\\n var value = tiddler.getFieldString(field)\\n try {\\n var {\\n cid,\\n ipnsKey,\\n normalizedUrl,\\n resolvedUrl\\n } = await $tw.ipfs.resolveUrl(false, true, value)\\n } catch (error) {\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n return tiddler\\n }\\n // Store\\n resolvedUrl =\\n resolvedUrl === undefined ||\\n resolvedUrl == null ||\\n resolvedUrl.toString().trim() === ''\\n ? null\\n : resolvedUrl.toString().trim()\\n if (field === '_canonical_uri') {\\n canonicalUri = resolvedUrl\\n canonicalCid = cid\\n }\\n if (field === '_import_uri') {\\n importUri = resolvedUrl\\n importCid = cid\\n }\\n if (field === '_export_uri') {\\n exportUri = resolvedUrl\\n exportCid = cid\\n }\\n // Previous values if any\\n var oldValue = null\\n if (oldTiddler !== undefined && oldTiddler !== null) {\\n oldValue = oldTiddler.getFieldString(field)\\n }\\n // Process new or updated\\n if (value === oldValue) {\\n continue\\n }\\n var oldCid = null\\n var oldIpnsKey = null\\n var oldNormalizedUrl = null\\n try {\\n var {\\n cid: oldCid,\\n ipnsKey: oldIpnsKey,\\n normalizedUrl: oldNormalizedUrl\\n } = await $tw.ipfs.resolveUrl(false, true, oldValue)\\n } catch (error) {\\n // We cannot resolve the previous value\\n this.getLogger().error(error)\\n $tw.utils.alert(name, error.message)\\n }\\n // Process _canonical_uri\\n if (field === '_canonical_uri') {\\n updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: updatedTiddler,\\n fields: [{ key: 'text', value: '' }]\\n })\\n }\\n $tw.ipfs.requestToPin(cid, ipnsKey, normalizedUrl)\\n $tw.ipfs.requestToUnpin(oldCid, oldIpnsKey, oldNormalizedUrl)\\n }\\n // Tag management\\n var addTags = []\\n var removeTags = []\\n if (canonicalUri == null && exportUri == null && importUri == null) {\\n removeTags.push('$:/isExported', '$:/isImported', '$:/isIpfs')\\n }\\n if (canonicalCid == null && exportCid == null && importCid == null) {\\n if (removeTags.indexOf('$:/isIpfs') === -1) {\\n removeTags.push('$:/isIpfs')\\n }\\n } else {\\n addTags.push('$:/isIpfs')\\n }\\n if (canonicalUri !== null) {\\n // Attachment\\n if (info.encoding === 'base64' || type === 'image/svg+xml') {\\n if (addTags.indexOf('$:/isAttachment') === -1) {\\n addTags.push('$:/isAttachment')\\n }\\n if (removeTags.indexOf('$:/isEmbedded') === -1) {\\n removeTags.push('$:/isEmbedded')\\n }\\n if (importUri !== null) {\\n if (addTags.indexOf('$:/isImported') === -1) {\\n addTags.push('$:/isImported')\\n }\\n } else {\\n if (removeTags.indexOf('$:/isImported') === -1) {\\n removeTags.push('$:/isImported')\\n }\\n }\\n // Others\\n } else {\\n if (removeTags.indexOf('$:/isAttachment') === -1) {\\n removeTags.push('$:/isAttachment')\\n }\\n if (removeTags.indexOf('$:/isEmbedded') === -1) {\\n removeTags.push('$:/isEmbedded')\\n }\\n if (addTags.indexOf('$:/isImported') === -1) {\\n addTags.push('$:/isImported')\\n }\\n }\\n } else {\\n // Attachment\\n if (info.encoding === 'base64' || type === 'image/svg+xml') {\\n if (addTags.indexOf('$:/isAttachment') === -1) {\\n addTags.push('$:/isAttachment')\\n }\\n if (addTags.indexOf('$:/isEmbedded') === -1) {\\n addTags.push('$:/isEmbedded')\\n }\\n // Others\\n } else {\\n if (removeTags.indexOf('$:/isAttachment') === -1) {\\n removeTags.push('$:/isAttachment')\\n }\\n if (removeTags.indexOf('$:/isEmbedded') === -1) {\\n removeTags.push('$:/isEmbedded')\\n }\\n }\\n if (importUri !== null) {\\n if (addTags.indexOf('$:/isImported') === -1) {\\n addTags.push('$:/isImported')\\n }\\n } else {\\n if (removeTags.indexOf('$:/isImported') === -1) {\\n removeTags.push('$:/isImported')\\n }\\n }\\n }\\n if (exportUri !== null) {\\n if (addTags.indexOf('$:/isExported') === -1) {\\n addTags.push('$:/isExported')\\n }\\n } else {\\n if (removeTags.indexOf('$:/isExported') === -1) {\\n removeTags.push('$:/isExported')\\n }\\n }\\n if (addTags.length > 0 || removeTags.length > 0) {\\n updatedTiddler = $tw.utils.updateTiddler({\\n tiddler: updatedTiddler,\\n addTags: addTags,\\n removeTags: removeTags\\n })\\n }\\n $tw.wiki.addTiddler(updatedTiddler)\\n return updatedTiddler\\n }\\n\\n exports.IpfsTiddler = IpfsTiddler\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/plugins/ipfs/ipfs-utils.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-utils.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-utils.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: utils\\n\\nIPFS utils\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /**\\n * $:/core/modules/utils/logger.js\\n *\\n * TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\\n *\\n * Copyright (c) 2004-2007, Jeremy Ruston\\n * Copyright (c) 2007-2018, UnaMesa Association\\n * Copyright (c) 2019-2020, Blue Light\\n * All rights reserved.\\n *\\n * Redistribution and use in source and binary forms, with or without\\n * modification, are permitted provided that the following conditions are met:\\n *\\n * * Redistributions of source code must retain the above copyright notice, this\\n * list of conditions and the following disclaimer.\\n *\\n * * Redistributions in binary form must reproduce the above copyright notice,\\n * this list of conditions and the following disclaimer in the documentation\\n * and/or other materials provided with the distribution.\\n *\\n * * Neither the name of the copyright holder nor the names of its\\n * contributors may be used to endorse or promote products derived from\\n * this software without specific prior written permission.\\n *\\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n */\\n\\n /*\\n * from $:/core/modules/utils/logger.js\\n **/\\n exports.alert = function (callee, text) {\\n if (\\n typeof window === 'undefined' ||\\n typeof window.navigator === 'undefined'\\n ) {\\n return\\n }\\n const ALERT_TAG = '$:/tags/Alert'\\n // Prepare the text of the alert\\n // var text = Array.prototype.join.call(arguments,\\\" \\\");\\n // Check if there is an existing alert with the same text and the same component\\n var existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG)\\n var alertFields\\n var existingCount\\n var self = this\\n $tw.utils.each(existingAlerts, function (title) {\\n var tiddler = $tw.wiki.getTiddler(title)\\n if (\\n tiddler.fields.text === text &&\\n tiddler.fields.component === self.componentName &&\\n tiddler.fields.modified &&\\n (!alertFields || tiddler.fields.modified \u003C alertFields.modified)\\n ) {\\n alertFields = $tw.utils.extend({}, tiddler.fields)\\n }\\n })\\n if (alertFields) {\\n existingCount = alertFields.count || 1\\n } else {\\n alertFields = {\\n title: $tw.wiki.generateNewTitle('$:/temp/alerts/alert', {\\n prefix: ''\\n }),\\n text: text,\\n tags: [ALERT_TAG],\\n component: callee\\n }\\n existingCount = 0\\n }\\n alertFields.modified = new Date()\\n if (++existingCount > 1) {\\n alertFields.count = existingCount\\n } else {\\n alertFields.count = undefined\\n }\\n $tw.wiki.addTiddler(new $tw.Tiddler(alertFields))\\n }\\n\\n exports.getChangedTiddler = function (object) {\\n // Holder\\n const changedTiddler = Object.create(null)\\n // Check\\n if (object === undefined || object == null) {\\n return changedTiddler\\n }\\n if (object instanceof $tw.Tiddler === false && typeof object !== 'string') {\\n return changedTiddler\\n }\\n // Retrieve title\\n var title = null\\n if (typeof object === 'string') {\\n title = object\\n }\\n if (object instanceof $tw.Tiddler) {\\n title = object.getFieldString('title')\\n }\\n // Check\\n if (title === undefined || title == null) {\\n return changedTiddler\\n }\\n // Process title\\n changedTiddler[title] = Object.create(null)\\n // Done\\n return changedTiddler\\n }\\n\\n exports.updateTiddler = function (updates) {\\n // Is there anything to do\\n if (\\n updates === undefined ||\\n updates == null ||\\n updates.tiddler === undefined ||\\n updates.tiddler == null\\n ) {\\n return null\\n }\\n // Prepare updates\\n const fields = $tw.wiki.getModificationFields()\\n // Tags\\n fields.tags = (updates.tiddler.fields.tags || []).slice(0)\\n // Process add tags\\n if (\\n updates.addTags !== undefined &&\\n updates.addTags !== null &&\\n Array.isArray(updates.addTags)\\n ) {\\n for (var i = 0; i \u003C updates.addTags.length; i++) {\\n const tag = updates.addTags[i]\\n if (fields.tags.indexOf(tag) === -1) {\\n $tw.utils.pushTop(fields.tags, tag)\\n }\\n }\\n }\\n // Process remove tags\\n if (\\n updates.removeTags !== undefined &&\\n updates.removeTags !== null &&\\n Array.isArray(updates.removeTags)\\n ) {\\n for (var i = 0; i \u003C updates.removeTags.length; i++) {\\n const tag = updates.removeTags[i]\\n const index = fields.tags.indexOf(tag)\\n if (index !== -1) {\\n fields.tags.splice(index, 1)\\n }\\n }\\n }\\n // Process fields\\n if (\\n updates.fields !== undefined &&\\n updates.fields !== null &&\\n Array.isArray(updates.fields)\\n ) {\\n for (var i = 0; i \u003C updates.fields.length; i++) {\\n const field = updates.fields[i]\\n if (field.key !== undefined && field.key !== null) {\\n fields[field.key] = field.value\\n }\\n }\\n }\\n // Update tiddler\\n return new $tw.Tiddler(updates.tiddler, fields)\\n }\\n\\n exports.getContentType = function (title, type) {\\n type =\\n type === undefined || type == null || type.trim() === ''\\n ? null\\n : type.trim()\\n if (type == null) {\\n type = 'text/vnd.tiddlywiki'\\n }\\n var info = $tw.config.contentTypeInfo[type]\\n if (info === undefined || info == null) {\\n const url = $tw.ipfs.getDocumentUrl()\\n url.hash = title\\n this.getLogger().info(\\n `Unknown Content-Type: \\\"${type}\\\", default: \\\"text/vnd.tiddlywiki\\\":\\\\n ${url}`\\n )\\n type = 'text/vnd.tiddlywiki'\\n info = $tw.config.contentTypeInfo[type]\\n }\\n return {\\n type: type,\\n info: info\\n }\\n }\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"utils\"\n },\n \"$:/plugins/ipfs/ipfs-wrapper.js\": {\n \"title\": \"$:/plugins/ipfs/ipfs-wrapper.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/ipfs/ipfs-wrapper.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nIPFS Wrapper\\n\\n\\\\*/\\n\\n;(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict'\\n\\n /**\\n * https://github.com/purposeindustries/window-or-global\\n * The MIT License (MIT) Copyright (c) Purpose Industries\\n * version: 1.0.1\\n */\\n const root =\\n (typeof self === 'object' && self.self === self && self) ||\\n (typeof global === 'object' && global.global === global && global) ||\\n this\\n\\n const ipfsKeyword = 'ipfs'\\n const ipnsKeyword = 'ipns'\\n\\n const name = 'ipfs-wrapper'\\n\\n var IpfsWrapper = function (ipfsBundle) {\\n this.ipfsBundle = ipfsBundle\\n this.ipfsLibrary = ipfsBundle.ipfsLibrary\\n this.ipfsUrl = ipfsBundle.ipfsUrl\\n }\\n\\n IpfsWrapper.prototype.getLogger = function () {\\n return root.log.getLogger(name)\\n }\\n\\n IpfsWrapper.prototype.getWindowIpfsClient = async function () {\\n // IPFS Companion\\n try {\\n const policy = await this.ipfsLibrary.getWindowIpfs()\\n if (policy !== null && policy.ipfs !== null && policy.provider !== null) {\\n return policy\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to retrieve IPFS Companion...')\\n }\\n\\n IpfsWrapper.prototype.getHttpIpfsClient = async function (url) {\\n // HTTP Client\\n try {\\n const policy = await this.ipfsLibrary.getHttpIpfs(url)\\n if (policy !== null && policy.ipfs !== null && policy.provider !== null) {\\n return policy\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to retrieve an IPFS HTTP provider...')\\n }\\n\\n IpfsWrapper.prototype.getIpfsClient = async function (url) {\\n // IPFS client\\n try {\\n var policy = null\\n const ipfsProvider = $tw.utils.getIpfsProvider()\\n if (ipfsProvider === 'window') {\\n policy = await this.ipfsLibrary.getWindowIpfs()\\n } else if (ipfsProvider === 'http') {\\n policy = await this.ipfsLibrary.getHttpIpfs(url)\\n } else {\\n policy = await this.ipfsLibrary.getDefaultIpfs(url)\\n }\\n if (policy !== null && policy.ipfs !== null && policy.provider !== null) {\\n return policy\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to retrieve an IPFS provider...')\\n }\\n\\n IpfsWrapper.prototype.getIpnsIdentifiers = async function (\\n ipfs,\\n identifier,\\n ipnsName\\n ) {\\n identifier =\\n identifier === undefined || identifier == null || identifier.trim() === ''\\n ? null\\n : identifier.trim()\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (identifier == null && ipnsName == null) {\\n throw new Error('Undefined IPNS identifiers...')\\n }\\n var found = false\\n var ipnsKey = null\\n var keys = null\\n var normalizedUrl = null\\n try {\\n // Only the server who generates the key has the knowledge\\n keys = await this.getIpnsKeys(ipfs)\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n // Do our best\\n if (ipnsName !== null && identifier !== null) {\\n if (keys !== null && keys !== undefined && Array.isArray(keys)) {\\n for (var index = 0; index \u003C keys.length; index++) {\\n if (keys[index].id === identifier && keys[index].name === ipnsName) {\\n ipnsKey = identifier\\n found = true\\n break\\n }\\n }\\n }\\n } else if (ipnsName !== null) {\\n if (keys !== null && keys !== undefined && Array.isArray(keys)) {\\n for (var index = 0; index \u003C keys.length; index++) {\\n if (keys[index].name === ipnsName) {\\n ipnsKey = keys[index].id\\n found = true\\n break\\n }\\n }\\n }\\n } else {\\n if (keys !== null && keys !== undefined && Array.isArray(keys)) {\\n for (var index = 0; index \u003C keys.length; index++) {\\n if (\\n keys[index].id === identifier ||\\n keys[index].name === identifier\\n ) {\\n ipnsKey = keys[index].id\\n ipnsName = keys[index].name\\n found = true\\n break\\n }\\n }\\n }\\n }\\n if (found === false) {\\n // Unable to resolve the keys, check if identifier is a an IPFS cid\\n if (this.ipfsBundle.isCid(identifier) === false) {\\n throw new Error('Unknown IPNS identifier...')\\n }\\n ipnsKey = identifier\\n }\\n // Lets build an url, the resolver will do the final check, we cannot do more here\\n normalizedUrl = this.ipfsUrl.normalizeUrl(`/${ipnsKeyword}/${ipnsKey}`)\\n if (found) {\\n this.getLogger().info(\\n `Successfully Fetched IPNS identifiers: ${ipnsName}\\\\n ${normalizedUrl}`\\n )\\n } else {\\n this.getLogger().info(\\n `Unable to Fetch IPNS identifiers, default to\\\\n ${normalizedUrl}`\\n )\\n }\\n return {\\n ipnsKey: ipnsKey,\\n ipnsName: ipnsName,\\n normalizedUrl: normalizedUrl\\n }\\n }\\n\\n IpfsWrapper.prototype.generateIpnsKey = async function (ipfs, ipnsName) {\\n try {\\n const key = await this.ipfsLibrary.genKey(ipfs, ipnsName)\\n const url = this.ipfsUrl.normalizeUrl(`/${ipnsKeyword}/${key}`)\\n this.getLogger().info(\\n `Successfully generated IPNS key with IPNS name: ${ipnsName}\\\\n ${url}`\\n )\\n return key\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to generate and IPNS key...')\\n }\\n\\n IpfsWrapper.prototype.removeIpnsKey = async function (ipfs, ipnsName) {\\n try {\\n const hash = await this.ipfsLibrary.rmKey(ipfs, ipnsName)\\n this.getLogger().info(`Successfully removed IPNS name: ${ipnsName}`)\\n return hash\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to remove an IPNS Key...')\\n }\\n\\n IpfsWrapper.prototype.renameIpnsName = async function (\\n ipfs,\\n oldIpnsName,\\n newIpnsName\\n ) {\\n try {\\n const { id: key, was, now } = await this.ipfsLibrary.renameKey(\\n ipfs,\\n oldIpnsName,\\n newIpnsName\\n )\\n this.getLogger().info(\\n `Successfully renamed IPNS name: ${was} with ${now}`\\n )\\n return {\\n ipnsKey: key,\\n ipnsName: now\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to rename an IPNS name...')\\n }\\n\\n IpfsWrapper.prototype.getIpnsKeys = async function (ipfs) {\\n try {\\n const keys = await this.ipfsLibrary.getKeys(ipfs)\\n this.getLogger().info('Successfully fetched IPNS keys...')\\n return keys\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to fetch IPNS keys...')\\n }\\n\\n IpfsWrapper.prototype.fetchFromIpfs = async function (ipfs, cid) {\\n cid =\\n cid === undefined || cid == null || cid.toString().trim() === ''\\n ? null\\n : cid.toString().trim()\\n if (cid == null) {\\n throw new Error('Undefined IPNS identifier...')\\n }\\n const pathname = `/${ipfsKeyword}/${cid}`\\n try {\\n const fetched = await this.ipfsLibrary.cat(ipfs, pathname)\\n const url = this.ipfsUrl.normalizeUrl(pathname)\\n this.getLogger().info(`Successfully fetched:\\\\n ${url}`)\\n return fetched\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to fetch from IPFS...')\\n }\\n\\n IpfsWrapper.prototype.addToIpfs = async function (ipfs, content) {\\n try {\\n const { hash, size } = await this.ipfsLibrary.add(ipfs, content)\\n const pathname = '/' + ipfsKeyword + '/' + hash\\n const url = this.ipfsUrl.normalizeUrl(pathname)\\n this.getLogger().info(`Successfully added ${size} bytes:\\\\n ${url}`)\\n return {\\n added: hash,\\n size: size\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to add content to IPFS...')\\n }\\n\\n IpfsWrapper.prototype.resolveIpnsKey = async function (ipfs, ipnsKey) {\\n ipnsKey =\\n ipnsKey === undefined || ipnsKey == null || ipnsKey.trim() === ''\\n ? null\\n : ipnsKey.trim()\\n if (ipnsKey == null) {\\n throw new Error('Undefined IPNS key...')\\n }\\n const pathname = `/${ipnsKeyword}/${ipnsKey}`\\n try {\\n const url = this.ipfsUrl.normalizeUrl(pathname)\\n const resolved = await this.ipfsLibrary.resolve(ipfs, pathname)\\n const { cid } = this.ipfsBundle.decodeCid(resolved)\\n if (cid !== null) {\\n const parsed = this.ipfsUrl.normalizeUrl(resolved)\\n this.getLogger().info(\\n `Successfully resolved IPNS key:\\\\n ${url} \\\\n ${parsed}`\\n )\\n return cid\\n }\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to resolve an IPNS key...')\\n }\\n\\n IpfsWrapper.prototype.publishIpnsName = async function (\\n cid,\\n ipfs,\\n ipnsKey,\\n ipnsName\\n ) {\\n ipnsKey =\\n ipnsKey === undefined || ipnsKey == null || ipnsKey.trim() === ''\\n ? null\\n : ipnsKey.trim()\\n if (ipnsKey == null) {\\n throw new Error('Undefined IPNS key...')\\n }\\n ipnsName =\\n ipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n ? null\\n : ipnsName.trim()\\n if (ipnsName == null) {\\n throw new Error('Undefined IPNS name...')\\n }\\n cid =\\n cid === undefined || cid == null || cid.toString().trim() === ''\\n ? null\\n : cid.toString().trim()\\n if (cid == null) {\\n throw new Error('Undefined IPNS identifier...')\\n }\\n // Path\\n const key = `/${ipnsKeyword}/${ipnsKey}`\\n const pathname = `/${ipfsKeyword}/${cid}`\\n try {\\n // Publish\\n const result = await this.ipfsLibrary.publish(ipfs, ipnsName, pathname)\\n const keyParsed = this.ipfsUrl.normalizeUrl(key)\\n const url = this.ipfsUrl.normalizeUrl(pathname)\\n this.getLogger().info(\\n `Successfully published IPNS name: ${ipnsName}\\\\n ${keyParsed}\\\\n ${url}`\\n )\\n return result\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to publish an IPNS name...')\\n }\\n\\n IpfsWrapper.prototype.pinToIpfs = async function (ipfs, cid) {\\n cid =\\n cid === undefined || cid == null || cid.toString().trim() === ''\\n ? null\\n : cid.toString().trim()\\n if (cid == null) {\\n throw new Error('Undefined IPNS identifier...')\\n }\\n const pathname = `/${ipfsKeyword}/${cid}`\\n try {\\n const pinned = await this.ipfsLibrary.pin(ipfs, pathname)\\n const url = this.ipfsUrl.normalizeUrl(pathname)\\n this.getLogger().info(`Successfully pinned:\\\\n ${url}`)\\n return pinned\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to pin to IPFS...')\\n }\\n\\n IpfsWrapper.prototype.unpinFromIpfs = async function (ipfs, cid) {\\n cid =\\n cid === undefined || cid == null || cid.toString().trim() === ''\\n ? null\\n : cid.toString().trim()\\n if (cid == null) {\\n throw new Error('Undefined IPNS identifier...')\\n }\\n const pathname = `/${ipfsKeyword}/${cid}`\\n try {\\n const unpinned = await this.ipfsLibrary.unpin(ipfs, pathname)\\n const url = this.ipfsUrl.normalizeUrl(pathname)\\n this.getLogger().info(`Successfully unpinned:\\\\n ${url}`)\\n return unpinned\\n } catch (error) {\\n this.getLogger().error(error)\\n }\\n throw new Error('Failed to unpin from IPFS...')\\n }\\n\\n exports.IpfsWrapper = IpfsWrapper\\n})()\\n\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\"\n },\n \"$:/language/Buttons/Ipfs/Export/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Export/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"export to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Export/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Export/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Export this tiddler to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Export/Attachment/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Export/Attachment/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"export attachment to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Export/Attachment/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Export/Attachment/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Export attachment to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Export/Content/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Export/Content/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"export content to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Export/Content/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Export/Content/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Export this tiddler content to IPFS\"\n },\n \"$:/language/Buttons/Ipns/Fetch/Caption\": {\n \"title\": \"$:/language/Buttons/Ipns/Fetch/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"fetch from IPNS\"\n },\n \"$:/language/Buttons/Ipns/Fetch/Hint\": {\n \"title\": \"$:/language/Buttons/Ipns/Fetch/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Fetch IPNS key\"\n },\n \"$:/language/Buttons/Ipns/Generate/Caption\": {\n \"title\": \"$:/language/Buttons/Ipns/Generate/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"generate IPNS\"\n },\n \"$:/language/Buttons/Ipns/Generate/Hint\": {\n \"title\": \"$:/language/Buttons/Ipns/Generate/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Generate IPNS key\"\n },\n \"$:/language/Buttons/Ipfs/Refresh/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Refresh/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"refresh\"\n },\n \"$:/language/Buttons/Ipfs/Refresh/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Refresh/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Perform a full refresh of the tiddler\"\n },\n \"$:/language/Buttons/Ipfs/Pin/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Pin/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"pin to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Pin/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Pin/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Pin this wiki to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Tiddler/Pin/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Tiddler/Pin/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"pin to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Tiddler/Pin/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Tiddler/Pin/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Pin tiddler resources to IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Tiddler/Unpin/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Tiddler/Unpin/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"unpin from IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Tiddler/Unpin/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Tiddler/Unpin/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Unpin tiddler resources from IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Unpin/Caption\": {\n \"title\": \"$:/language/Buttons/Ipfs/Unpin/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"unpin from IPFS\"\n },\n \"$:/language/Buttons/Ipfs/Unpin/Hint\": {\n \"title\": \"$:/language/Buttons/Ipfs/Unpin/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Unpin this wiki from IPFS\"\n },\n \"$:/language/Buttons/Console/Mobile/Caption\": {\n \"title\": \"$:/language/Buttons/Console/Mobile/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"mobile console\"\n },\n \"$:/language/Buttons/Console/Mobile/Hint\": {\n \"title\": \"$:/language/Buttons/Console/Mobile/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Load/Unload Mobile Console\"\n },\n \"$:/language/Buttons/Ens/Manager/Open/Caption\": {\n \"title\": \"$:/language/Buttons/Ens/Manager/Open/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"open ENS Manager\"\n },\n \"$:/language/Buttons/Ens/Manager/Open/Hint\": {\n \"title\": \"$:/language/Buttons/Ens/Manager/Open/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Open ENS Domain Manager\"\n },\n \"$:/language/Buttons/Ens/Publish/Caption\": {\n \"title\": \"$:/language/Buttons/Ens/Publish/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"publish to ENS\"\n },\n \"$:/language/Buttons/Ens/Publish/Hint\": {\n \"title\": \"$:/language/Buttons/Ens/Publish/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Publish this wiki to ENS\"\n },\n \"$:/language/Buttons/Ens/Resolve/And/Open/Caption\": {\n \"title\": \"$:/language/Buttons/Ens/Resolve/And/Open/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"open ENS Domain content\"\n },\n \"$:/language/Buttons/Ens/Resolve/And/Open/Hint\": {\n \"title\": \"$:/language/Buttons/Ens/Resolve/And/Open/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Open resolved ENS Domain content\"\n },\n \"$:/language/Buttons/Ipns/Publish/Caption\": {\n \"title\": \"$:/language/Buttons/Ipns/Publish/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"publish to IPNS\"\n },\n \"$:/language/Buttons/Ipns/Publish/Hint\": {\n \"title\": \"$:/language/Buttons/Ipns/Publish/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Publish this wiki to IPNS\"\n },\n \"$:/language/Buttons/Ipns/Remove/Caption\": {\n \"title\": \"$:/language/Buttons/Ipns/Remove/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"remove\"\n },\n \"$:/language/Buttons/Ipns/Remove/Hint\": {\n \"title\": \"$:/language/Buttons/Ipns/Remove/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Remove IPNS name and IPNS key\"\n },\n \"$:/language/Buttons/Ipns/Rename/Caption\": {\n \"title\": \"$:/language/Buttons/Ipns/Rename/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"rename\"\n },\n \"$:/language/Buttons/Ipns/Rename/Hint\": {\n \"title\": \"$:/language/Buttons/Ipns/Rename/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Rename IPNS name\"\n },\n \"$:/language/Buttons/Ipns/Resolve/And/Open/Caption\": {\n \"title\": \"$:/language/Buttons/Ipns/Resolve/And/Open/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"resolve and open\"\n },\n \"$:/language/Buttons/Ipns/Resolve/And/Open/Hint\": {\n \"title\": \"$:/language/Buttons/Ipns/Resolve/And/Open/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Open resolved IPNS key\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Caption\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPFS Saver\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"These settings are only used when saving to IPFS.\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Verbose\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Verbose\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Saver Verbose\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Url\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Url\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPFS Server URL\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/ApiUrl\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/ApiUrl\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"API\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/GatewayUrl\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/GatewayUrl\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Gateway\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Ens\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Ens\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"ENS\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/EnsDomain\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/EnsDomain\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"ENS domain\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Ipns\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Ipns\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPNS\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/IpnsName\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/IpnsName\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPNS name\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/IpnsKey\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/IpnsKey\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPNS key\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Resolved\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Resolved\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Resolved\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Global\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Global\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Global\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Verbose/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Verbose/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Verbose\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Unpin/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Unpin/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Unpin previous content\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Wait/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Wait/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Wait\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Policy\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Policy\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Relative URL Policy\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Policy/Origin/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Policy/Origin/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Origin\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Policy/Gateway/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Policy/Gateway/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Gateway\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Protocol\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Protocol\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Protocol\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Protocol/Ens/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Protocol/Ens/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"ENS\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Protocol/Ipfs/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Protocol/Ipfs/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPFS\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Protocol/Ipns/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Protocol/Ipns/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPNS\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Export\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Export\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Export\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Export/Static/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Export/Static/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Static\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Export/Json/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Export/Json/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"JSON\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Export/Tid/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Export/Tid/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"TID\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Provider\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Provider\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPFS Provider\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Provider/Default/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Provider/Default/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Default\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Provider/Window/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Provider/Window/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"IPFS Companion\"\n },\n \"$:/language/ControlPanel/Saving/IpfsService/Provider/HTTP/Description\": {\n \"title\": \"$:/language/ControlPanel/Saving/IpfsService/Provider/HTTP/Description\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"HTTP Client\"\n },\n \"$:/language/ControlPanel/Basics/Version/Prompt\": {\n \"title\": \"$:/language/ControlPanel/Basics/Version/Prompt\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"\u003Cb>~TiddlyWiki\u003C/b>:\"\n },\n \"$:/language/ControlPanel/Ipfs/Version/Prompt\": {\n \"title\": \"$:/language/ControlPanel/Ipfs/Version/Prompt\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"\u003Cb>IPFS\u003C/b>:\"\n },\n \"$:/language/ControlPanel/Settings/PreferredSaver/Caption\": {\n \"title\": \"$:/language/ControlPanel/Settings/PreferredSaver/Caption\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Preferred Saver\"\n },\n \"$:/language/ControlPanel/Appearance/Hint\": {\n \"title\": \"$:/language/ControlPanel/Appearance/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Ways to customise the appearance of your \u003Cb>~TiddlyWiki\u003C/b>.\"\n },\n \"$:/language/ControlPanel/Info/Hint\": {\n \"title\": \"$:/language/ControlPanel/Info/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Information about this \u003Cb>~TiddlyWiki\u003C/b>\"\n },\n \"$:/language/ControlPanel/Saving/Hint\": {\n \"title\": \"$:/language/ControlPanel/Saving/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"Settings used for saving the entire \u003Cb>~TiddlyWiki\u003C/b> as a single file via a saver module.\"\n },\n \"$:/language/ControlPanel/Settings/Hint\": {\n \"title\": \"$:/language/ControlPanel/Settings/Hint\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"text\": \"These settings let you customise the behaviour of \u003Cb>~TiddlyWiki\u003C/b>.\"\n },\n \"$:/language/EditTemplate/Body/External/Hint\": {\n \"title\": \"$:/language/EditTemplate/Body/External/Hint\",\n \"modified\": \"20200528094915385\",\n \"text\": \"This tiddler shows content stored outside of the main ~TiddlyWiki file.\u003Cbr/>You can edit the tags and fields but cannot directly edit the content itself\"\n },\n \"$:/language/NetworkError/XMLHttpRequest\": {\n \"title\": \"$:/language/NetworkError/XMLHttpRequest\",\n \"modified\": \"20200528094915385\",\n \"text\": \"Network Error while loading...\"\n },\n \"$:/language/LazyLoadingWarning\": {\n \"title\": \"$:/language/LazyLoadingWarning\",\n \"modified\": \"20200528094915385\",\n \"text\": \"\u003Cp>Trying to load external Tiddler content from:\u003Cp>\u003C/p>''\u003C$ipfslink field=\\\"_canonical_uri\\\" tiddler=\u003C\u003CcurrentTiddler>>/>''\u003C/p>\"\n },\n \"$:/language/EmptyTidddler\": {\n \"title\": \"$:/language/EmptyTidddler\",\n \"modified\": \"20200528094915385\",\n \"text\": \"\u003Cp>An external Tiddler content has been loaded:\u003C/p>\u003Cp>''\u003C$ipfslink field=\\\"_canonical_uri\\\" tiddler=\u003C\u003CcurrentTiddler>>/>''\u003C/p>\u003Cp>The imported Tiddler content is empty, possible reasons:\u003C/p>\u003Cul>\u003Cli>The Tiddler Content Type doesn't match the type of the external content.\u003C/li>\"\n },\n \"$:/plugins/ipfs/changelog\": {\n \"title\": \"$:/plugins/ipfs/changelog\",\n \"modified\": \"20200525094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"!! v0.3.0\\n\\n[[See GitHub for detailed change history of this release|https://github.com/xmaysonnave/tiddlywiki-ipfs/compare/v0.2.9...v0.3.0]]\\n\\n!! v0.2.9\\n\\n[[See GitHub for detailed change history of this release|https://github.com/xmaysonnave/tiddlywiki-ipfs/compare/v0.2.8...v0.2.9]]\\n\\n!! v0.2.8\\n\\n[[See GitHub for detailed change history of this release|https://github.com/xmaysonnave/tiddlywiki-ipfs/compare/v0.2.7...v0.2.8]]\\n\\n...\\n\\n!! 0.2.2\\n\\n* First public release\"\n },\n \"$:/plugins/ipfs/readme\": {\n \"title\": \"$:/plugins/ipfs/readme\",\n \"modified\": \"20200525094915385\",\n \"tags\": \"$:/ipfs/core\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"!! IPFS with ~TiddlyWiki\\n\\nFeatures:\\n\\n* Store `TiddlyWiki's` and attachments on [ext[IPFS|https://ipfs.io/]]\\n* Access `TiddlyWiki's` and attachments from [ext[IPFS|https://ipfs.io/]]\\n* Encrypt and Unencrypt `TiddlyWiki` and attachments\\n* Publish and Manage IPNS Keys and Names\\n* Interact with [ext[Metamask|https://metamask.io]] Ethereum wallets\\n* Publish to [ext[ENS|https://ens.domains]]\\n* Share over [ext[IPFS|https://ipfs.io/]] `TiddlyWiki's` [ext[Tiddlers|https://tiddlywiki.com/#Tiddlers]] and attachments\\n\\nSupported Browsers:\\n\\n* [ext[Firefox|https://www.mozilla.org]]\\n* [ext[Chrome|https://www.google.com/chrome/]]\\n* [ext[Chromium|https://www.chromium.org]]\\n\\nSupported Ethereum browser extension:\\n\\n* [ext[Metamask|https://metamask.io]]\\n\\nSupported Mobile ĐApp browser:\\n\\n* [ext[Metamask|https://metamask.io]]\\n\\nSupported ENS Ethereum Networks\\n\\n* `Mainnet`: Ethereum Main Network\\n* `Ropsten`: Ethereum Test Network (~PoW)\\n* `Rinkeby`: Ethereum Test Network (~PoA)\\n* `Goerli`: Ethereum Test Network (~PoA)\\n\\nResources:\\n\\n* https://github.com/xmaysonnave/tiddlywiki-ipfs/\\n* https://github.com/xmaysonnave/tiddlywiki-ipfs/blob/master/README.md\\n\\n!! With a capable ENS browser:\\n\\n* [ext[IPFS with TiddlyWiki|https://bluelightav.eth]] on \\\"Mainnet: Ethereum Main Network\\\"\\n* [ext[IPFS with TiddlyWiki|https://bluelightav.eth]] on [ext[Rinkeby|https://www.rinkeby.io/]] (~PoA): Ethereum Test Network\\n* [ext[IPFS with TiddlyWiki plugin|https://bluelightav.eth/#%24%3A%2Fplugins%2Fipfs]]\\n* [ext[IPFS with TiddlyWiki Documentation|https://bluelightav.eth/#IPFS%20Documentation]]\\n\\n!! With a non capable ENS browser:\\n\\n* [ext[IPFS with TiddlyWiki|https://bluelightav.eth.link]]\\n* [ext[IPFS with TiddlyWiki plugin|https://bluelightav.eth.link/#%24%3A%2Fplugins%2Fipfs]]\\n* [ext[IPFS with TiddlyWiki Documentation|https://bluelightav.eth.link/#IPFS%20Documentation]]\"\n },\n \"$:/ipfs/saver/api/http/localhost/5001\": {\n \"title\": \"$:/ipfs/saver/api/http/localhost/5001\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/api\",\n \"text\": \"http://127.0.0.1:5001\"\n },\n \"$:/ipfs/saver/api/https/tube.copylaradio.com/5001\": {\n \"title\": \"$:/ipfs/saver/api/https/tube.copylaradio.com/5001\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/api\",\n \"text\": \"https://tube.copylaradio.com:5001\"\n },\n \"$:/ipfs/saver/api/https/ipfs.bluelightav.org\": {\n \"title\": \"$:/ipfs/saver/api/https/ipfs.bluelightav.org\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/api\",\n \"text\": \"https://ipfs.bluelightav.org\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.busy.org\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.busy.org\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.busy.org\"\n },\n \"$:/ipfs/saver/gateway/https/cloudflare-ipfs.com\": {\n \"title\": \"$:/ipfs/saver/gateway/https/cloudflare-ipfs.com\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://cloudflare-ipfs.com\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.eternum.io\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.eternum.io\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.eternum.io\"\n },\n \"$:/ipfs/saver/gateway/https/gateway.bluelightav.org\": {\n \"title\": \"$:/ipfs/saver/gateway/https/gateway.bluelightav.org\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://gateway.bluelightav.org\"\n },\n \"$:/ipfs/saver/gateway/https/gateway.ipfs.io\": {\n \"title\": \"$:/ipfs/saver/gateway/https/gateway.ipfs.io\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://gateway.ipfs.io\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.greyh.at\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.greyh.at\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.greyh.at\"\n },\n \"$:/ipfs/saver/gateway/https/hardbin.com\": {\n \"title\": \"$:/ipfs/saver/gateway/https/hardbin.com\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://hardbin.com\"\n },\n \"$:/ipfs/saver/gateway/http/localhost\": {\n \"title\": \"$:/ipfs/saver/gateway/http/localhost\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"http://127.0.0.1:8080\"\n },\n \"$:/ipfs/saver/gateway/https/tube.copylaradio.com\": {\n \"title\": \"$:/ipfs/saver/gateway/https/tube.copylaradio.com\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://tube.copylaradio.com\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.bluelightav.org\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.bluelightav.org\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.bluelightav.org\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.io\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.io\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.io\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.jes.xxx\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.jes.xxx\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.jes.xxx\"\n },\n \"$:/ipfs/saver/gateway/https/ninetailed.ninja\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ninetailed.ninja\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ninetailed.ninja\"\n },\n \"$:/ipfs/saver/gateway/https/gateway.pinata.cloud\": {\n \"title\": \"$:/ipfs/saver/gateway/https/gateway.pinata.cloud\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://gateway.pinata.cloud\"\n },\n \"$:/ipfs/saver/gateway/https/siderus.io\": {\n \"title\": \"$:/ipfs/saver/gateway/https/siderus.io\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://siderus.io\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.sloppyta.co\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.sloppyta.co\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.sloppyta.co\"\n },\n \"$:/ipfs/saver/gateway/https/gateway.temporal.cloud\": {\n \"title\": \"$:/ipfs/saver/gateway/https/gateway.temporal.cloud\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://gateway.temporal.cloud\"\n },\n \"$:/ipfs/saver/gateway/https/ipfs.wa.hle.rs\": {\n \"title\": \"$:/ipfs/saver/gateway/https/ipfs.wa.hle.rs\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/ipfs/saver/gateway\",\n \"text\": \"https://ipfs.wa.hle.rs\"\n },\n \"$:/core/ui/Buttons/ipfs/console/mobile\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/console/mobile\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/PageControls\",\n \"caption\": \"{{$:/core/images/preview-open}} {{$:/language/Buttons/Console/Mobile/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Console/Mobile/Hint}}\",\n \"text\": \"\u003C$button message=\\\"tm-console-mobile\\\" tooltip={{$:/language/Buttons/Console/Mobile/Hint}} aria-label={{$:/language/Buttons/Console/Mobile/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/preview-open}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Console/Mobile/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipfs/pin\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/pin\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/PageControls\",\n \"caption\": \"{{$:/core/images/chevron-up}} {{$:/language/Buttons/Ipfs/Pin/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Pin/Hint}}\",\n \"text\": \"\u003C$button message=\\\"tm-ipfs-pin\\\" tooltip={{$:/language/Buttons/Ipfs/Pin/Hint}} aria-label={{$:/language/Buttons/Ipfs/Pin/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/chevron-up}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipfs/Pin/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ens/publish\": {\n \"title\": \"$:/core/ui/Buttons/ens/publish\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/PageControls\",\n \"caption\": \"{{$:/core/images/ens}} {{$:/language/Buttons/Ens/Publish/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ens/Publish/Hint}}\",\n \"text\": \"\u003C$button message=\\\"tm-ens-publish\\\" tooltip={{$:/language/Buttons/Ens/Publish/Hint}} aria-label={{$:/language/Buttons/Ens/Publish/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/ens}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ens/Publish/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipns/publish\": {\n \"title\": \"$:/core/ui/Buttons/ipns/publish\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/PageControls\",\n \"caption\": \"{{$:/core/images/excise}} {{$:/language/Buttons/Ipns/Publish/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipns/Publish/Hint}}\",\n \"text\": \"\u003C$button message=\\\"tm-ipns-publish\\\" tooltip={{$:/language/Buttons/Ipns/Publish/Hint}} aria-label={{$:/language/Buttons/Ipns/Publish/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/excise}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipns/Publish/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipfs/unpin\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/unpin\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/PageControls\",\n \"caption\": \"{{$:/core/images/chevron-down}} {{$:/language/Buttons/Ipfs/Unpin/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Unpin/Hint}}\",\n \"text\": \"\u003C$button message=\\\"tm-ipfs-unpin\\\" tooltip={{$:/language/Buttons/Ipfs/Unpin/Hint}} aria-label={{$:/language/Buttons/Ipfs/Unpin/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/chevron-down}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipfs/Unpin/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/ControlPanel/Saving/Ipfs\": {\n \"title\": \"$:/core/ui/ControlPanel/Saving/Ipfs\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/ControlPanel/Saving\",\n \"caption\": \"{{$:/language/ControlPanel/Saving/IpfsService/Caption}}\",\n \"text\": \"\\\\define lingo-base() $:/language/ControlPanel/Saving/IpfsService/\\n\\\\define service-name() Ipfs\\n\\n\u003C\u003Clingo Description>>\\n\\n''\u003C\u003Clingo Global>>''\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003Ctr>\\n\u003Ctd width=\\\"90%\\\">''\u003C$link to=\\\"$:/ipfs/saver/verbose\\\">\u003C\u003Clingo Verbose/Description>>\u003C/$link>''\u003C/td>\\n\u003Ctd width=\\\"10%\\\">\u003C$checkbox tiddler=\\\"$:/ipfs/saver/verbose\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"yes\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003Ctr>\\n\u003Ctd width=\\\"90%\\\">''\u003C$link to=\\\"$:/ipfs/saver/unpin\\\">\u003C\u003Clingo Unpin/Description>>\u003C/$link>''\u003C/td>\\n\u003Ctd width=\\\"10%\\\">\u003C$checkbox tiddler=\\\"$:/ipfs/saver/unpin\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\\n\\n''\u003C$link to=\\\"$:/ipfs/saver/provider\\\">\u003C\u003Clingo Provider>>\u003C/$link>''\\n\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/provider\\\" value=\\\"default\\\">\u003C\u003Clingo Provider/Default/Description>>\u003C/$radio>\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/provider\\\" value=\\\"window\\\">\u003C\u003Clingo Provider/Window/Description>>\u003C/$radio>\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/provider\\\" value=\\\"http\\\">\u003C\u003Clingo Provider/HTTP/Description>>\u003C/$radio>\\n\\n''\u003C$link to=\\\"$:/ipfs/saver/export\\\">\u003C\u003Clingo Export>>\u003C/$link>''\\n\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/export\\\" value=\\\"json\\\">\u003C\u003Clingo Export/Json/Description>>\u003C/$radio>\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/export\\\" value=\\\"static\\\">\u003C\u003Clingo Export/Static/Description>>\u003C/$radio>\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/export\\\" value=\\\"tid\\\">\u003C\u003Clingo Export/Tid/Description>>\u003C/$radio>\\n\\n''\u003C$link to=\\\"$:/ipfs/saver/protocol\\\">\u003C\u003Clingo Protocol>>\u003C/$link>''\\n\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/protocol\\\" value=\\\"ens\\\">\u003C\u003Clingo Protocol/Ens/Description>>\u003C/$radio>\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/protocol\\\" value=\\\"ipfs\\\">\u003C\u003Clingo Protocol/Ipfs/Description>>\u003C/$radio>\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/protocol\\\" value=\\\"ipns\\\">\u003C\u003Clingo Protocol/Ipns/Description>>\u003C/$radio>\\n\\n''\u003C$link to=\\\"$:/ipfs/saver/policy\\\">\u003C\u003Clingo Policy>>\u003C/$link>''\\n\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/policy\\\" value=\\\"origin\\\">\u003C\u003Clingo Policy/Origin/Description>>\u003C/$radio>\\n\u003C$radio tiddler=\\\"$:/ipfs/saver/policy\\\" value=\\\"gateway\\\">\u003C\u003Clingo Policy/Gateway/Description>>\u003C/$radio>\\n\\n''\u003C\u003Clingo Url>>''\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003Ctr>\\n\u003Ctd width=\\\"20%\\\">''\u003C$link to=\\\"$:/ipfs/saver/api\\\">\u003C\u003Clingo ApiUrl>>\u003C/$link>''\u003C/td>\\n\u003Ctd width=\\\"80%\\\">\\n\u003C$select tiddler=\\\"$:/ipfs/saver/api\\\" default=\\\"$:/ipfs/saver/api/https/tube.copylaradio.com/5001\\\" class=\\\"tc-edit-texteditor\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/ipfs/saver/api]!has[draft.of]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude field=\\\"text\\\">\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$transclude>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/td>\\n\u003C/tr>\\n\u003Ctr>\\n\u003Ctd width=\\\"20%\\\">''\u003C$link to=\\\"$:/ipfs/saver/gateway\\\">\u003C\u003Clingo GatewayUrl>>\u003C/$link>''\u003C/td>\\n\u003Ctd width=\\\"80%\\\">\\n\u003C$select tiddler=\\\"$:/ipfs/saver/gateway\\\" default=\\\"$:/ipfs/saver/gateway/https/tube.copylaradio.com\\\" class=\\\"tc-edit-texteditor\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/ipfs/saver/gateway]!has[draft.of]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$transclude field=\\\"text\\\">\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/$transclude>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\\n\\n''\u003C\u003Clingo Ens>>''\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003Ctr>\\n\u003Ctd width=\\\"20%\\\">''\u003C$link to=\\\"$:/ipfs/saver/ens/domain\\\">\u003C\u003Clingo EnsDomain>>\u003C/$link>''\u003C/td>\\n\u003Ctd width=\\\"80%\\\">\u003C$edit-text tiddler=\\\"$:/ipfs/saver/ens/domain\\\" class=\\\"tc-edit-texteditor\\\" default=\\\"\\\" tag=\\\"input\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\\n\\n\u003Ctable style=\\\"width:20%;margin-left:40%;margin-right:40%;text-align:center;\\\">\\n\u003Ctbody>\\n\u003Ctr>\\n\u003Ctd style=\\\"width:10%\\\">\\n\u003C$button message=\\\"tm-ens-manager-open\\\" tooltip={{$:/language/Buttons/Ens/Manager/Open/Hint}} aria-label={{$:/language/Buttons/Ens/Manager/Open/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/ens}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ens/Manager/Open/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/td>\\n\u003Ctd style=\\\"width:10%\\\">\\n\u003C$button message=\\\"tm-ens-resolve-and-open\\\" tooltip={{$:/language/Buttons/Ens/Resolve/And/Open/Hint}} aria-label={{$:/language/Buttons/Ens/Resolve/And/Open/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/globe}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ens/Resolve/And/Open/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\\n\\n''\u003C\u003Clingo Ipns>>''\\n\\n\u003Ctable>\\n\u003Ctbody>\\n\u003Ctr>\\n\u003Ctd width=\\\"20%\\\">''\u003C$link to=\\\"$:/ipfs/saver/ipns/name\\\">\u003C\u003Clingo IpnsName>>\u003C/$link>''\u003C/td>\\n\u003Ctd width=\\\"80%\\\">\u003C$edit-text tiddler=\\\"$:/ipfs/saver/ipns/name\\\" class=\\\"tc-edit-texteditor\\\" default=\\\"\\\" tag=\\\"input\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003Ctr>\\n\u003Ctd width=\\\"20%\\\">''\u003C$link to=\\\"$:/ipfs/saver/ipns/key\\\">\u003C\u003Clingo IpnsKey>>\u003C/$link>''\u003C/td>\\n\u003Ctd width=\\\"80%\\\">\u003C$text text={{$:/ipfs/saver/ipns/key}} class=\\\"tc-edit-texteditor\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\\n\\n\u003Ctable style=\\\"width:50%;margin-left:25%;margin-right:25%;text-align:center;\\\">\\n\u003Ctbody>\\n\u003Ctr>\\n\u003Ctd style=\\\"width:10%\\\">\\n\u003C$button message=\\\"tm-ipns-rename\\\" tooltip={{$:/language/Buttons/Ipns/Rename/Hint}} aria-label={{$:/language/Buttons/Ipns/Rename/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/mono-line}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipns/Rename/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/td>\\n\u003Ctd style=\\\"width:10%\\\">\\n\u003C$button message=\\\"tm-ipns-generate\\\" tooltip={{$:/language/Buttons/Ipns/Generate/Hint}} aria-label={{$:/language/Buttons/Ipns/Generate/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/new-here-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipns/Generate/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/td>\\n\u003Ctd style=\\\"width:10%\\\">\\n\u003C$button message=\\\"tm-ipns-remove\\\" tooltip={{$:/language/Buttons/Ipns/Remove/Hint}} aria-label={{$:/language/Buttons/Ipns/Remove/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/delete-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipns/Remove/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/td>\\n\u003Ctd style=\\\"width:10%\\\">\\n\u003C$button message=\\\"tm-ipns-fetch\\\" tooltip={{$:/language/Buttons/Ipns/Fetch/Hint}} aria-label={{$:/language/Buttons/Ipns/Fetch/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/refresh-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipns/Fetch/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/td>\\n\u003Ctd style=\\\"width:10%\\\">\\n\u003C$button message=\\\"tm-ipns-resolve-and-open\\\" tooltip={{$:/language/Buttons/Ipns/Resolve/And/Open/Hint}} aria-label={{$:/language/Buttons/Ipns/Resolve/And/Open/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/globe}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipns/Resolve/And/Open/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\"\n },\n \"$:/core/ui/Buttons/ipfs/export/attachment\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/export/attachment\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/ViewToolbar\",\n \"caption\": \"{{$:/core/images/ipfs}} {{$:/language/Buttons/Ipfs/Export/Attachment/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Export/Attachment/Hint}}\",\n \"text\": \"\\\\whitespace trim\\n\u003C$button message=\\\"tm-ipfs-export-attachment\\\" param=\u003C\u003CcurrentTiddler>> tooltip={{$:/language/Buttons/Ipfs/Export/Attachment/Hint}} aria-label={{$:/language/Buttons/Ipfs/Export/Attachment/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/ipfs}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\\n\u003C$text text=\\\" \\\"/>\\n\u003C$text text={{$:/language/Buttons/Ipfs/Export/Attachment/Caption}}/>\\n\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipfs/export/content\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/export/content\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/ViewToolbar\",\n \"caption\": \"{{$:/core/images/excise}} {{$:/language/Buttons/Ipfs/Export/Content/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Export/Content/Hint}}\",\n \"text\": \"\\\\whitespace trim\\n\u003C$button message=\\\"tm-ipfs-export-content\\\" param=\u003C\u003CcurrentTiddler>> tooltip={{$:/language/Buttons/Ipfs/Export/Content/Hint}} aria-label={{$:/language/Buttons/Ipfs/Export/Content/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/excise}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\\n\u003C$text text=\\\" \\\"/>\\n\u003C$text text={{$:/language/Buttons/Ipfs/Export/Content/Caption}}/>\\n\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipfs/export\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/export\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/ViewToolbar\",\n \"caption\": \"{{$:/core/images/excise}} {{$:/language/Buttons/Ipfs/Export/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Export/Hint}}\",\n \"text\": \"\\\\whitespace trim\\n\u003C$button message=\\\"tm-ipfs-export\\\" param=\u003C\u003CcurrentTiddler>> tooltip={{$:/language/Buttons/Ipfs/Export/Hint}} aria-label={{$:/language/Buttons/Ipfs/Export/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/excise}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\\n\u003C$text text=\\\" \\\"/>\\n\u003C$text text={{$:/language/Buttons/Ipfs/Export/Caption}}/>\\n\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipfs/refresh\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/refresh\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/ViewToolbar\",\n \"caption\": \"{{$:/core/images/refresh-button}} {{$:/language/Buttons/Ipfs/Refresh/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Refresh/Hint}}\",\n \"text\": \"\u003C$button message=\\\"tm-refresh-tiddler\\\" param=\u003C\u003CcurrentTiddler>> tooltip={{$:/language/Buttons/Ipfs/Refresh/Hint}} aria-label={{$:/language/Buttons/Ipfs/Refresh/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/refresh-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Ipfs/Refresh/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipfs/tiddler/pin\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/tiddler/pin\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/ViewToolbar\",\n \"caption\": \"{{$:/core/images/chevron-up}} {{$:/language/Buttons/Ipfs/Tiddler/Pin/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Tiddler/Pin/Hint}}\",\n \"text\": \"\\\\whitespace trim\\n\u003C$button message=\\\"tm-ipfs-pin\\\" param=\u003C\u003CcurrentTiddler>> tooltip={{$:/language/Buttons/Ipfs/Tiddler/Pin/Hint}} aria-label={{$:/language/Buttons/Ipfs/Tiddler/Pin/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/chevron-up}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\\n\u003C$text text=\\\" \\\"/>\\n\u003C$text text={{$:/language/Buttons/Ipfs/Tiddler/Pin/Caption}}/>\\n\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/core/ui/Buttons/ipfs/tiddler/unpin\": {\n \"title\": \"$:/core/ui/Buttons/ipfs/tiddler/unpin\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/ViewToolbar\",\n \"caption\": \"{{$:/core/images/chevron-down}} {{$:/language/Buttons/Ipfs/Tiddler/Unpin/Caption}}\",\n \"description\": \"{{$:/language/Buttons/Ipfs/Tiddler/Unpin/Hint}}\",\n \"text\": \"\\\\whitespace trim\\n\u003C$button message=\\\"tm-ipfs-unpin\\\" param=\u003C\u003CcurrentTiddler>> tooltip={{$:/language/Buttons/Ipfs/Tiddler/Unpin/Hint}} aria-label={{$:/language/Buttons/Ipfs/Tiddler/Unpin/Caption}} class=\u003C\u003Ctv-config-toolbar-class>>>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/chevron-down}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\\n\u003C$text text=\\\" \\\"/>\\n\u003C$text text={{$:/language/Buttons/Ipfs/Tiddler/Unpin/Caption}}/>\\n\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\"\n },\n \"$:/plugins/ipfs/styles\": {\n \"title\": \"$:/plugins/ipfs/styles\",\n \"modified\": \"20200528094915385\",\n \"tags\": \"$:/ipfs/core $:/tags/Stylesheet\",\n \"type\": \"text/css\",\n \"text\": \".tc-ipfs-action {\\n display: block;\\n margin: auto;\\n width: 18px;\\n height: 18px;\\n}\\n\\n.tc-icon-ipfs-wrapper {\\n display: inline-block;\\n width: 1em;\\n height: 1em;\\n}\\n\\na.tc-ipfs-link-external {\\n\\ttext-decoration: underline;\\n\\tcolor: \u003C\u003Ccolour external-link-foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background>>;\\n}\\n\\na.tc-ipfs-link-external:visited {\\n\\tcolor: \u003C\u003Ccolour external-link-foreground-visited>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background-visited>>;\\n}\\n\\na.tc-ipfs-link-external:hover {\\n\\tcolor: \u003C\u003Ccolour external-link-foreground-hover>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background-hover>>;\\n cursor: pointer;\\n}\"\n }\n }\n}","author":"Xavier Maysonnave","core-version":">=5.1.2","dependents":"","description":"IPFS with TiddlyWiki","license":"GPL-3.0-or-later","list":"readme changelog","plugin-type":"plugin","source":"https://github.com/xmaysonnave/tiddlywiki-ipfs","version":"v0.3.0-200603399"}, +{"text":"{\"tiddlers\":{\"$:/plugins/kookma/commander/buttons/pagecontrol\":{\"title\":\"$:/plugins/kookma/commander/buttons/pagecontrol\",\"caption\":\"{{$:/plugins/kookma/commander/images/commander.svg}} {{$:/language/Buttons/Commander/Caption}}\",\"description\":\"Open tiddler commander\",\"list-after\":\"$:/core/ui/Buttons/advanced-search\",\"tags\":\"$:/tags/PageControls\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\whitespace trim\\n\\n\\\\define commander-button(class)\\n\\\\whitespace trim\\n\u003C$button to=\\\"$:/Commander\\\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/plugins/kookma/commander/images/commander.svg}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/Commander/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\\n\\n\u003C$list filter=\\\"[list[$:/StoryList]] +[field:title[$:/Commander]]\\\" emptyMessage=\u003C\u003Ccommander-button>>>\\n\u003C\u003Ccommander-button \\\"tc-selected\\\">>\\n\u003C/$list>\\n\"},\"$:/plugins/kookma/commander/config/AutoFocus\":{\"title\":\"$:/plugins/kookma/commander/config/AutoFocus\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"yes\"},\"$:/plugins/kookma/commander/config/commonfields\":{\"title\":\"$:/plugins/kookma/commander/config/commonfields\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"created creator modified modifier revision bag\"},\"$:/plugins/kookma/commander/config/minlength\":{\"title\":\"$:/plugins/kookma/commander/config/minlength\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"3\"},\"$:/plugins/kookma/commander/config/relink\":{\"title\":\"$:/plugins/kookma/commander/config/relink\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define relink-plugin-notExisted() Update title in //tags// and //list// fields of other tiddlers\\n\u003C$checkbox tiddler=\\\"$:/config/RelinkOnRename\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\">\\n\u003C$list filter=\\\"[[$:/plugins/flibbles/relink]] +[has[title]]\\\" emptyMessage=\u003C\u003Crelink-plugin-notExisted>> >\\nUse //Relink// to update title across all other tiddlers\\n\u003C/$list>\\n\u003C/$checkbox>\"},\"$:/plugins/kookma/commander/config/systemfields\":{\"title\":\"$:/plugins/kookma/commander/config/systemfields\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"title text tags \\ncreated modified craetor modifier \\ntype bag revision\\nlist caption\"},\"$:/plugins/kookma/commander/field/macros/add\":{\"title\":\"$:/plugins/kookma/commander/field/macros/add\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define add-new-field-bulk(datafieldsTid:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"add-new-field-bulk\\\">>\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"newTitle\\\">\\n\u003C\u003Cadd-bulk-fields>>\\n\u003C$wikify name=newFields text=\u003C\u003CgetFieldsname>> >\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg={{{[\u003CnewFields>addprefix[new fields:]addsuffix[added]]}}} tidItem=\u003C\u003CnewTitle>> />\\n\u003C/$wikify>\\n\u003C/$list>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\u003C!-- from TiddlyWiki 5.2.0, field name with mixed case is allowed -->\\n\\\\define getFieldsname()\\n\u003C$list filter=\\\"[\u003C__datafieldsTid__>indexes[]prefix[fldn]]\\\" variable=item>\\n{{{ [\u003C__datafieldsTid__>getindex\u003Citem>trim[]] }}} \\n\u003C/$list>\\n\\\\end\"},\"$:/plugins/kookma/commander/field/macros/bulkfields\":{\"title\":\"$:/plugins/kookma/commander/field/macros/bulkfields\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define numfilter() [range[1,$(flt)$]]\\n\\\\define id_fldName() fldn$(cnt)$\\n\\\\define id_fldValue() fldv$(cnt)$\\n\\n\u003C!-- from TiddlyWiki 5.2.0, field name with mixed case is allowed -->\\n\\\\define add-bulk-fields()\\n\u003C$set name=\\\"flt\\\" tiddler=\u003C\u003CdatafieldsTid>> field=\\\"counter\\\" emptyValue=\\\"1\\\">\u003C!-- when the datafieldsTid is not exist, there is at least one field row -->\\n\u003C$list filter=\u003C\u003Cnumfilter>> variable=\\\"cnt\\\">\\n\u003C$list filter=\\\"[\u003CdatafieldsTid>getindex\u003Cid_fldName>]\\\" variable=\\\"newField\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CnewTitle>> \\n $field={{{ [\u003CnewField>trim[]] }}}\\n $value={{{ [\u003CdatafieldsTid>getindex\u003Cid_fldValue>] }}} />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define getInputs()\\n\u003C$edit-text tiddler=\u003C\u003CdatafieldsTid>> index=\u003C\u003Cid_fldName>> tag=input default=\\\"\\\" placeholder=\\\"field name\\\" />\\n\u003C$edit-text tiddler=\u003C\u003CdatafieldsTid>> index=\u003C\u003Cid_fldValue>> tag=input default=\\\"\\\" placeholder=\\\"field value\\\"/>\\n\\\\end\\n\\n\\\\define add-reset()\\n\u003C$button>insert\\n\u003C$action-setfield $tiddler=\u003C\u003CdatafieldsTid>> counter={{{[\u003CdatafieldsTid>get[counter]add[1]]~[[2]]}}}/>\\n\u003C/$button>\\n\u003C$button>reset\\n\u003C$action-setfield $tiddler=\u003C\u003CdatafieldsTid>> counter=\\\"1\\\"/>\\n\u003C$action-setfield $tiddler=\u003C\u003CdatafieldsTid>> text=\\\"\\\"/>\\n\u003C/$button>\\n\\\\end\\n\\n\\\\define create-field-inputbox()\\n\u003C$wikify name=flt text={{{ [\u003CdatafieldsTid>get[counter]]~[[1]] }}} >\\n\u003C$list filter=\u003C\u003Cnumfilter>> variable=cnt>\\n\\n\u003C\u003CgetInputs>>\\n\u003C/$list>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define add-more-fields-ui(datafieldsTid:\\\"\\\")\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C\u003Cadd-reset>>\\n\u003C\u003Ccreate-field-inputbox>>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define add-more-fields-selective-ui(datafieldsTid:\\\"\\\", stateTiddler:\\\"$:/state/commander/tiddler-addfields-status\\\")\\n\u003C$checkbox \\n tiddler=\u003C\u003C__stateTiddler__>>\\n field=\\\"text\\\" \\n checked=\\\"addfields\\\" unchecked=\\\"nofields\\\"\\n default=\\\"nofields\\\" > \\n Add fields\\n\u003C/$checkbox>\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003C__stateTiddler__>> text=\\\"addfields\\\" default=\\\"nofields\\\" >\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C\u003Cadd-reset>>\\n\u003Cdiv style=\\\"padding-left:88px;\\\">\\n\u003C\u003Ccreate-field-inputbox>>\\n\u003C/div>\\n\u003C/$vars>\\n\u003C/$reveal>\\n\\\\end\"},\"$:/plugins/kookma/commander/field/macros/remove\":{\"title\":\"$:/plugins/kookma/commander/field/macros/remove\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define remove-old-field-bulk(oldField:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__oldField__>!is[blank]]\\\">\\n\u003C\u003Ccreate-log-tiddler \\\"remove-old-field-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[!is[missing]]+[has:field[$oldField$]]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-field\\\" $param=\u003C\u003C__oldField__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"old field `$oldField$` removed\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define set-field-value-bulk(fieldName:\\\"Empty\\\", fieldValue:\\\"Empty\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__fieldName__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__fieldValue__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"set-field-value-create-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]-[$fieldName$[$fieldValue$]]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has:field[$fieldName$]]\\\" variable=ignore \\nemptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not `$fieldName$` field. Operation ignored//\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\\"\\\"\\\" >\\n\u003C$action-setfield $field=\u003C\u003C__fieldName__>> $value=\u003C\u003C__fieldValue__>> />\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"field `$fieldName$` got a value\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/field/macros/rename\":{\"title\":\"$:/plugins/kookma/commander/field/macros/rename\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define rename-field-bulk(oldField:\\\"\\\", newField:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__oldField__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__newField__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"rename-field-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has:field[$oldField$]]\\\" variable=ignore\\n emptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not field `$oldField$`. Operation ignored.//\\\" tidItem=\u003C\u003CcurrentTiddler>> /> \\\"\\\"\\\">\\n\u003C$set name=oldValue tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003C__oldField__>> >\\t\\n\u003C$action-setfield $tiddler=\u003C\u003CcurrentTiddler>> $field=\u003C\u003C__newField__>> $value=\u003C\u003ColdValue>>/>\\n\u003C/$set>\\n\u003C$action-deletefield $tiddler=\u003C\u003CcurrentTiddler>> $field=\u003C\u003C__oldField__>> />\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"field `$oldField$` renamed to `$newField$`\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/field/macros/set\":{\"title\":\"$:/plugins/kookma/commander/field/macros/set\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define set-field-value-bulk(fieldName:\\\"\\\", fieldValue:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__fieldName__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__fieldValue__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"set-field-value-create-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]-[$fieldName$[$fieldValue$]]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>has:field[$fieldName$]]\\\" variable=ignore \\nemptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not `$fieldName$` field. Operation ignored//\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\\"\\\"\\\" >\\n\u003C$action-setfield $field=\u003C\u003C__fieldName__>> $value=\u003C\u003C__fieldValue__>> />\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"field `$fieldName$` got a value\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/field/ui\":{\"title\":\"$:/plugins/kookma/commander/field/ui\",\"caption\":\"Field\",\"list-after\":\"$:/plugins/kookma/commander/tag/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/FieldOps]!has[draft.of]]\\\"\\ndefault:\\\"$:/plugins/kookma/commander/field/uicomp/add-fields\\\" \\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\"\\n>>\\n\\n\"},\"$:/plugins/kookma/commander/field/uicomp/add-fields\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/add-fields\",\"caption\":\"Add fields\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C!-- create the interface-->\\n\u003C$macrocall $name=\\\"add-more-fields-ui\\\" datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/addfield\\\" />\\n\\n\\n\u003C!-- call action macro -->\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add new fields\\n\u003C$macrocall $name=\\\"add-new-field-bulk\\\" \\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/addfield\\\" />\\n\u003C/$button>\u003Cbr>\\n,,Note: This will overwrite the existing fileds!,,\"},\"$:/plugins/kookma/commander/field/uicomp/remove-fields\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/remove-fields\",\"caption\":\"Remove fields\",\"list-after\":\"$:/plugins/kookma/commander/field/uicomp/add-fields\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Old field\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" tiddler=\\\"$:/temp/commander/field-remove\\\" default=\\\"\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]sort[]] -title -tags\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove old field\\n\u003C$macrocall $name=\\\"remove-old-field-bulk\\\" oldField={{$:/temp/commander/field-remove}} />\\n\u003C/$button>\"},\"$:/plugins/kookma/commander/field/uicomp/rename-fields\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/rename-fields\",\"caption\":\"Rename fields\",\"list-after\":\"$:/plugins/kookma/commander/field/uicomp/remove-fields\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Old field\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" \\n tiddler=\\\"$:/temp/commander/rename-field/old\\\" default=\\\"\\\" >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]sort[]] -[\u003CsystemFieldsTid>get[text]split[ ]]\\\" > \\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">New field\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/rename-field/new\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" new field name\\\"\\n/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Rename field\\n\u003C$macrocall $name=\\\"rename-field-bulk\\\" \\noldField={{$:/temp/commander/rename-field/old}} \\nnewField={{{ [[$:/temp/commander/rename-field/new]get[text]trim[]] }}} />\\n\u003C/$button>\\n\\n\u003C!--\\nFrom TW 5.2.0 field name can have mixed case and space, so all restrictions are released.\\n-->\"},\"$:/plugins/kookma/commander/field/uicomp/set-field-value\":{\"title\":\"$:/plugins/kookma/commander/field/uicomp/set-field-value\",\"caption\":\"Set field value\",\"list-after\":\"$:/plugins/kookma/commander/field/uicomp/rename-fields\",\"tags\":\"$:/tags/Commander/FieldOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Field name\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" \\n tiddler=\\\"$:/temp/commander/field-name\\\" default=\\\"\\\" >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]sort[]] -[\u003CsystemFieldsTid>get[text]split[ ]]\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Field value\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/field-value\\\"\\ntag=\\\"input\\\" default=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\" placeholder=\\\" field value\\\"/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Set field value\\n\u003C$macrocall \\n $name=\\\"set-field-value-bulk\\\" \\n fieldName={{$:/temp/commander/field-name}} \\n fieldValue={{$:/temp/commander/field-value}} \\n/>\\n\u003C/$button>\"},\"$:/plugins/kookma/commander/filters/Drafts\":{\"title\":\"$:/plugins/kookma/commander/filters/Drafts\",\"description\":\"{{$:/language/Filters/Drafts}}\",\"filter\":\"[has[draft.of]sort[title]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/geneal\":{\"title\":\"$:/plugins/kookma/commander/filters/geneal\",\"description\":\"General filter\",\"filter\":\"[all[shadows+tiddlers]search[your keywrods]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/Missing\":{\"title\":\"$:/plugins/kookma/commander/filters/Missing\",\"description\":\"{{$:/language/Filters/Missing}}\",\"filter\":\"[all[missing]sort[title]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/Orphans\":{\"title\":\"$:/plugins/kookma/commander/filters/Orphans\",\"description\":\"{{$:/language/Filters/Orphans}}\",\"filter\":\"[all[orphans]sort[title]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/RecentSystemTiddlers\":{\"title\":\"$:/plugins/kookma/commander/filters/RecentSystemTiddlers\",\"description\":\"{{$:/language/Filters/RecentSystemTiddlers}}\",\"filter\":\"[has[modified]!sort[modified]limit[50]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/RecentTiddlers\":{\"title\":\"$:/plugins/kookma/commander/filters/RecentTiddlers\",\"description\":\"{{$:/language/Filters/RecentTiddlers}}\",\"filter\":\"[!is[system]has[modified]!sort[modified]limit[50]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/SessionTiddlers\":{\"title\":\"$:/plugins/kookma/commander/filters/SessionTiddlers\",\"description\":\"Tiddlers modified since the wiki was loaded\",\"filter\":\"[haschanged[]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/StoryList\":{\"title\":\"$:/plugins/kookma/commander/filters/StoryList\",\"description\":\"{{$:/language/Filters/StoryList}}\",\"filter\":\"[list[$:/StoryList]] -$:/AdvancedSearch\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/filters/temp-and-state\":{\"title\":\"$:/plugins/kookma/commander/filters/temp-and-state\",\"description\":\"Temporary and state tiddlers\",\"filter\":\"[prefix[$:/temp]] [prefix[$:/state]]\",\"tags\":\"$:/tags/Commander/Filter\",\"type\":\"text/vnd.tiddlywiki\"},\"$:/plugins/kookma/commander/help/ui\":{\"title\":\"$:/plugins/kookma/commander/help/ui\",\"caption\":\"Help\",\"icon\":\"$:/core/images/help\",\"list-after\":\"$:/plugins/kookma/commander/setting/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Help]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\\n\\n\"},\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\",\"caption\":\"Quick tutorial\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"# Use ''Combo search'' to list possible tiddlers\\n#* example: `concept` performs a standard search and find all matches in title, text, and tags\\n#* example: `[tag[xx]]` finds all tiddlers tagged with //xx//\\n#* example: `[prefix[tt]` finds all tiddlers have title started with //tt//\\n#* example: `[has[draft.of]sort[title]]` finds all draft tiddlers\\n\\n# Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a batch operation on\\n#* this step lets you to do a batch operation on selected tiddlers NOT all items by ''Combo search''!\\n#* it is possible to select/deselect all tiddlers from ''Combo search'' result at once! Note that, by default all tiddlers are considered for bulk operation until selective operation is activated!\\n# From ''Batch operations tabs'' select the batch operation you wish to perform on selected tiddlers\\n#* example: title, tag, and field operations\\n#* example: Snr operation\\n#* Inspect tab can be used to inspect tiddlers before or after performing operations\\n\\n* Notes:\\n** Multiple batch operations can be done on the same set (unless you change something in the search criteria)\\n** Sometimes it is useful to use an intermediate batch to help, like tag tiddlers with a \\\"working\\\" tag, using multiple searches, then then use the \\\"working\\\" tag to apply a batch operation to\\n\\n\u003Cdiv class=\\\"commander-alert\\\">''Note'': For good operation a tiddler width of 800px is recommended. You can also use //Sidebar layout// as `Fluid story`.\u003C/div>\\n\\n\\nFor detailed docummention go to [[Demo page|https://kookma.github.io/TW-Commander/]]\\n\\n!!! Footenote\\n# [[Use filter expression|https://tiddlywiki.com/prerelease/#Filters:Filters%20%5B%5BFilter%20Expression%5D%5D%20%5B%5BFilter%20Syntax%5D%5D%20%5B%5BFilter%20Operators%5D%5D%20%5B%5BFilter%20Parameter%5D%5D%20%5B%5BFilter%20Run%5D%5D%20%5B%5BFilter%20Step%5D%5D%20%5B%5BFilter%20Whitespace%5D%5D]]\"},\"$:/plugins/kookma/commander/help/uicomp/regular-expression\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/regular-expression\",\"caption\":\"Regular expressions\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/snr\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Regular Expressions Quick Reference\\n\\n|FLAGS |\u003C|\u003C|h\\n| i |ignore case|case insensitive matching|\\n| |whole words|match strings of a-z, 0-9 and _|\\n| g |global|field start=^, field end=$, all matches|\\n| m |multi-line|line start=^, line end=$, first match|\\n| |first match|field start=^, field end=$, first match|\\n|MATCH |\u003C|\u003C|h\\n|''Anchors''|\u003C|\u003C|\\n| ^ |start of scope|see Flags, match is zero length|\\n| $ |end of scope|see Flags, match is zero length|\\n| \\\\b |word boundary|anchor to edge of word, zero length|\\n| \\\\B |not word boundary|anchor inside word, zero length|\\n|''Character Classes''|\u003C|\u003C|\\n| [c] |class of characters|any one matches, e.g. [abc123]|\\n| [^c] |negated class of characters|any one doesn't match, e.g. [^abc123]|\\n|''Shorthand Character Classes'' |\u003C|\u003C|\\n| . |any character except newline|same as [^\\\\n]|\\n| \\\\d |decimal|same as [0-9]|\\n| \\\\D |not decimal|same as [^0-9]|\\n| \\\\s |white-space|same as [\\\\ \\\\t\\\\n]|\\n| \\\\S |not white-space|same as [^\\\\ \\\\t\\\\n]|\\n| \\\\t |tab|same as [\\\\t]|\\n| \\\\n |newline|same as [\\\\n]|\\n| \\\\w |word character|same as [a-zA-Z0-9_]|\\n| \\\\W |not word character|same as [^a-zA-Z0-9_]|\\n|''Capturing Groups''|\u003C|\u003C|\\n| (match) |match placed in variable $x|can be used in Replace|\\n| (\\\\x) |repeats match pattern of $x|can be used in Replace|\\n|''Quantifiers''|\u003C|\u003C|\\n| ? |single match|match 0 or 1 time|\\n| * |greedy match 0+|match 0 or as many times as possible|\\n| *? |lazy match 0+|match 0 or as few times as possible|\\n| + |greedy match 1+|match 1 or as many times as possible|\\n| +? |lazy match 1+|match 1 or as few times as possible|\\n| {x} |match x times|match x times|\\n| {x,y} |match x to y times|match x times to exactly y times|\\n| {x,} |match x or more times|match x times or as many as possible|\\n|''Escapes''|\u003C|\u003C|\\n| \\\\ |escape special characters|add to \\\\ [ ] ( ) { } ^ $ . ? * + for literals|\\n|REPLACE |\u003C|\u003C|h\\n| $& |return the full match|\u003C|\\n| $x |return $x where x is the numeric index of a Capturing Group|\u003C|\\n|NOTE |\u003C|\u003C|h\\n|This Reference supports most ordinary uses of regular expressions.\u003Cbr> For advanced options: [[MDN Reference|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Using_simple_patterns]]; examples: [[regular-expressions.info|https://www.regular-expressions.info/tutorial.html]].|\u003C|\u003C|\\n\\n\"},\"$:/plugins/kookma/commander/help/uicomp/relink\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/relink\",\"caption\":\"Relink on rename\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/regular-expression\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Relink on rename\\nWhen Tiddler Commander is used to rename bulk tiddlers in operation like\\n\\n* Title operation\\n** add/remove prefix\\n** add/remove suffix\\n** remove chars from the begining or end of title\\n* ~SnR\\n** Search and replace in tiddlers title\\n\\nIt is possible to update all links to title. This includes //tags// and //list//. If [[Relink|https://flibbles.github.io/tw5-relink/]] plugin is installed, then not only title will be updated in //tags// and //list// field, but also in all filters, transclusions, text field and evrywhere.\\n\\n\u003Cdiv class=\\\"commander-alert\\\"> ''Note'': Relink does not update all forms of title e.g those created from different segments, but it will update any occurances\u003C/div>\\n\\n\\n!! How to integrate with Relink?\\n\\nSimply install the [[Relink|https://flibbles.github.io/tw5-relink/]] plugin and it will be appeared as an option when Tiddler Commander title operations including ~SnR are performed!\\n\"},\"$:/plugins/kookma/commander/help/uicomp/snr\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/snr\",\"caption\":\"Search-n-Replace\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"!! Search and replace using Snr\\nSnr stands for search and replace, is a powerful tool uses regular expression for searching all fields and lets replace chars, words, phrases with new values.\\n\\n!! How to use\\n* Enter a search filter or keywords in ''Combo search'' box like `[tag[myTag]]` or `concept`\\n* Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a Snr operation on\\n** If selective operation is unchecked, all tiddlers from step one will be included in Snr operation.\\n* From ''Tiddler title'' drop down menu select a tiddler\\n* From ''Field name'' drop down menu select a tiddler field like `text`\\n** all fileds even `title` can be selected\\n* In the ''Search text'' type the search term for example `this`\\n* In the ''Replace with'' type the term you want to replace with like `that`\\n* Check the ''Differences'' and if you are satisfied with the result, press the `Replace?` button\\n* You can press `Replace all?` if you want to search and replace in all selected tiddlers\\n\\n;Remarks\\n: The `Replace all?` lets you to search and replace in all selected tiddlers at once! It is possible to search and replace even in `title` field!\\n\\n\u003C$list filter=\\\"[[snr.png]is[tiddler]]\\\">\u003C\u003Cimage-pretty img:\\\"snr.png\\\" width:\\\"60%\\\" align:\\\"center\\\" caption:\\\"Fig 1. Search and replace using regular expression\\\">>\u003C/$list>\\n\\n!! Special characters\\n\u003C\u003C\u003C\\nAs `SNR` uses ''regexp'' pattern to make search and replace, when special characters are used in the ''Search text'' box, they shall be escaped among them are `*`, `+`, `[]`, `?` ...\\nTo use these characters do like below\\n\\n```\\n\\\\[ \\\\] \\\\( \\\\) \\\\{ \\\\} \\\\. \\\\* \\\\+ \\\\? \\\\^ \\\\$ \\\\\\\\ \\\\|\\n```\\n\u003C\u003C\u003C\\n\\n!! Warning\\n\u003C\u003C\u003C\\n* SNR replace the contents of tiddlers.\u003Cbr> ''//The action can not be undone//''. So always make a backup before performing any replace action\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/commander/help/uicomp/warning\":{\"title\":\"$:/plugins/kookma/commander/help/uicomp/warning\",\"caption\":\"Warning\",\"list-after\":\"$:/plugins/kookma/commander/help/uicomp/relink\",\"tags\":\"$:/tags/Commander/Help\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\";Note i\\n:Tiddler Commander is a very powerful tool, it can change any field in any tiddler.// Make sure what you are doing//!\\n\\n;Note ii\\n:Tiddler Commander uses two steps tiddler selection. It uses a combo search box to screen (using standard or filter search) possible tiddlers and then uses a selective list of tiddlers from first step for batch operation!\\n:# If selective operation is unchecked, then all tiddlers from step one are used for batch operation\\n:# If selective operation is checked, then user has to manually select among tiddlers, and the selected ones are used for batch operation \\n\\n;Note iii\\n://Commander do not perform operation on shadow tiddlers//, unless they are overriden. Because shadow tiddlers aren’t stored as ''real'' tiddlers. They are intentionally excluded from most operations by default so that they don’t clutter filters made by users unless explicitly required. \\n\\n\u003Cdiv class=\\\"commander-alert\\\">''Warning''\\nBefore using Tiddler commander for bulk operation on your own valuable, irreplaceable data, ''backup them''.\\n\u003C/div>\"},\"$:/plugins/kookma/commander/history\":{\"title\":\"$:/plugins/kookma/commander/history\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Full change log https://kookma.github.io/TW-Commander/#ChangeLog\\n\\n* ''2.1.5'' -- 2023.02.14 -- updated to Tiddlywiki 5.2.5\\n* ''2.1.3'' -- 2021.10.24 -- commander icon fixed\\n* ''2.1.2'' -- 2021.01.02 -- Saq Imtiaz release\\n* ''2.1.0'' -- 2020.03.25 -- stable release\\n* ''0.1.0'' -- 2019.02.12 -- mature public release\\n\"},\"$:/plugins/kookma/commander/images/commander.svg\":{\"title\":\"$:/plugins/kookma/commander/images/commander.svg\",\"caption\":\"file-alt (Regular)\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Csvg class=\\\"tc-image-file-alt tc-image-button\\\" width=\\\"22pt\\\" height=\\\"22pt\\\" viewBox=\\\"0 0 384 512\\\">\u003Cpath d=\\\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\\\"/>\u003C/svg>\"},\"$:/plugins/kookma/commander/inspect/comp/edit-fileds\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/edit-fileds\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define lingo-base() $:/language/EditTemplate/\\n\\\\define config-title()\\n$:/config/EditTemplateFields/Visibility/$(currentField)$\\n\\\\end\\n\\n\\\\define config-filter()\\n[[hide]] -[title{$(config-title)$}] \\n\\\\end\\n\\n\\\\define new-field()\\n\u003C$vars name={{$:/temp/newfieldname}}>\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" default=\u003C\u003Cname>>>\\n\u003C$button class=\\\"cmd-btn\\\">\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\"\\n$name=\u003C\u003Cname>>\\n$value={{$:/temp/newfieldvalue}}/>\\n\u003C$action-deletetiddler $tiddler=\\\"$:/temp/newfieldname\\\"/>\\n\u003C$action-deletetiddler $tiddler=\\\"$:/temp/newfieldvalue\\\"/>\\n\u003C\u003Clingo Fields/Add/Button>>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" text=\\\"\\\" default=\u003C\u003Cname>>>\\n\u003C$button class=\\\"cmd-btn\\\">\\n\u003C\u003Clingo Fields/Add/Button>>\\n\u003C/$button>\\n\u003C/$reveal>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define compInspect-edit-fileds(commonFields:\\\"\\\")\\n\\n\u003Cdiv class=\\\"tc-edit-fields\\\">\\n\u003Ctable class=\\\"tc-edit-fields\\\">\\n\u003Ctbody>\\n\u003C$list filter=\\\"[all[current]fields[]] +[sort[title]]\\\" variable=\\\"currentField\\\">\\n\u003C$list filter=\u003C\u003Cconfig-filter>> variable=\\\"temp\\\">\\n\u003Ctr class=\\\"tc-edit-field\\\">\\n\u003Ctd class=\\\"tc-edit-field-name\\\">\\n\u003C$text text=\u003C\u003CcurrentField>>/>:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\\n\u003C$edit-text tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003CcurrentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-remove\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\\n\u003C$action-deletefield $field=\u003C\u003CcurrentField>>/>\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/$list>\\n\\n\\n\u003C$list filter=\\\"created creator modified modifier -[enlist\u003C__commonFields__>]\\\" variable=\\\"currentField\\\">\\n\u003Ctr class=\\\"tc-edit-field\\\">\\n\u003Ctd class=\\\"tc-edit-field-name\\\">\\n\u003C$text text=\u003C\u003CcurrentField>>/>:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\\n\u003C$edit-text tiddler=\u003C\u003CcurrentTiddler>> field=\u003C\u003CcurrentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\\n\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-remove\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\\n\u003C$action-deletefield $field=\u003C\u003CcurrentField>>/>\\n{{$:/core/images/delete-button}}\\n\u003C/$button>\\n\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\\n\\n\\n\\n\u003C/tbody>\\n\u003C/table>\\n\u003C/div>\\n\\n\u003C$fieldmangler>\\n\u003Cdiv class=\\\"tc-edit-field-add\\\">\\n\u003Cem class=\\\"tc-edit\\\">\\n\u003C\u003Clingo Fields/Add/Prompt>>\\n\u003C/em>\\n\u003Cspan class=\\\"tc-edit-field-add-name\\\">\\n\u003C$edit-text tiddler=\\\"$:/temp/newfieldname\\\" tag=\\\"input\\\" default=\\\"\\\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> class=\\\"tc-edit-texteditor tc-popup-handle\\\"/>\\n\u003C/span>\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> class=\\\"tc-btn-invisible tc-btn-dropdown\\\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/popup/field-dropdown\\\">> type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003C$linkcatcher to=\\\"$:/temp/newfieldname\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item\\\">\\n\u003C\u003Clingo Fields/Add/Dropdown/User>>\\n\u003C/div>\\n\u003C$list filter=\\\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\\\" variable=\\\"currentField\\\">\\n\u003C$link to=\u003C\u003CcurrentField>>>\\n\u003C\u003CcurrentField>>\\n\u003C/$link>\\n\u003C/$list>\\n\u003Cdiv class=\\\"tc-dropdown-item\\\">\\n\u003C\u003Clingo Fields/Add/Dropdown/System>>\\n\u003C/div>\\n\u003C$list filter=\\\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\\\" variable=\\\"currentField\\\">\\n\u003C$link to=\u003C\u003CcurrentField>>>\\n\u003C\u003CcurrentField>>\\n\u003C/$link>\\n\u003C/$list>\\n\u003C/$linkcatcher>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003Cspan class=\\\"tc-edit-field-add-value\\\">\\n\u003C$edit-text tiddler=\\\"$:/temp/newfieldvalue\\\" tag=\\\"input\\\" default=\\\"\\\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\\\"tc-edit-texteditor\\\"/>\\n\u003C/span>\\n\u003Cspan class=\\\"tc-edit-field-add-button\\\">\\n\u003C$macrocall $name=\\\"new-field\\\"/>\\n\u003C/span>\\n\u003C/div>\\n\u003C/$fieldmangler>\\n\\\\end\"},\"$:/plugins/kookma/commander/inspect/comp/edit-preview\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/edit-preview\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compInspect-edit-preview(tiddler, commonFields:\\\"\\\")\\n\u003Cdiv class=\\\"tc-edit-fields\\\">\\n\u003Ctable class=\\\"tc-edit-fields\\\">\\n\u003Ctbody>\\n\u003Ctr class=\\\"tc-edit-field\\\">\u003Ctd class=\\\"tc-edit-field-name\\\">title:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\u003C$link to=\u003C\u003C__tiddler__>> >\u003C$text text=\u003C\u003C__tiddler__>> />\u003C/$link>\u003C/td>\\n\u003C/tr>\\n\u003Ctr class=\\\"tc-edit-field\\\">\u003Ctd class=\\\"tc-edit-field-name\\\">tags:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">{{$tiddler$||$:/core/ui/EditTemplate/tags}}\u003C/td>\\n\u003C/tr>\\n\u003Ctr class=\\\"tc-edit-field\\\">\u003Ctd class=\\\"tc-edit-field-name\\\">text:\u003C/td>\\n\u003Ctd class=\\\"tc-edit-field-value\\\">\u003C$macrocall $name=compInspect-get-field tiddler=\u003C\u003C__tiddler__>> field=\\\"text\\\" tag=\\\"textarea\\\" />\u003C/td>\\n\u003C/tr>\\n\u003C/tbody>\\n\u003C/table>\\n\u003C/div>\\n\\n\u003C$tiddler tiddler=\u003C\u003C__tiddler__>> >\\n\u003C$macrocall $name=\\\"compInspect-edit-fileds\\\" commonFields=\u003C\u003C__commonFields__>> />\\n\u003C/$tiddler>\\n\\\\end\\n\\n\\\\define compInspect-get-field(tiddler, field, tag:\\\"input\\\") \\n\u003C$edit-text class=\\\"tc-edit-texteditor\\\" tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> tag=\u003C\u003C__tag__>> default=\\\"\\\" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>\\n\\\\end\"},\"$:/plugins/kookma/commander/inspect/comp/main\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/main\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compInspect(filter, stateTiddler:\\\"thisTiddler\\\")\\n\u003C$set name=\\\"state\\\" \\n value={{{ [[$:/state/compInspect/]addsuffix\u003C__stateTiddler__>] }}} >\\n\u003C$vars\\n slStateTid={{{ [\u003Cstate>addsuffix[/]addsuffix[selectState-tiddler]] }}}\\n rvStateTid={{{ [\u003Cstate>addsuffix[/]addsuffix[revealState-tiddler]] }}}\\n chStateTid={{{ [\u003Cstate>addsuffix[/]addsuffix[checkboxState-tiddler]] }}} >\\n\\nSelect tiddler  \u003C$macrocall $name=compSelect filter=\u003C\u003C__filter__>> stateTiddler=\u003C\u003CslStateTid>> />\\n  \\n\u003C$macrocall $name=\\\"check-common-fields\\\" stateTiddler=\u003C\u003CchStateTid>> />\\n  \\n\u003C$reveal stateTitle=\u003C\u003CrvStateTid>> type=\\\"nomatch\\\" text=\\\"edit\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" setTitle=\u003C\u003CrvStateTid>> setTo=\\\"edit\\\" tooltip=\\\"edit tiddler\\\">{{$:/core/images/edit-button}}\u003C/$button>\\n\u003C$macrocall $name=compInspect-show-preview tiddler={{{ [\u003CslStateTid>get[text]]+[subfilter\u003C__filter__>] }}} commonFields={{{ [\u003CchStateTid>get[text]] }}}/>\\n\u003C/$reveal>\\n\u003C$reveal stateTitle=\u003C\u003CrvStateTid>> type=\\\"match\\\" text=\\\"edit\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" setTitle=\u003C\u003CrvStateTid>> setTo=\\\"\\\" tooltip=\\\"confirm changes\\\">{{$:/core/images/done-button}}\u003C/$button>\\n\u003C$macrocall $name=compInspect-edit-preview tiddler={{{ [\u003CslStateTid>get[text]]+[subfilter\u003C__filter__>] }}} commonFields={{{ [\u003CchStateTid>get[text]] }}}/>\\n\u003C/$reveal>\\n\\n\u003C/$vars>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define check-common-fields(stateTiddler)\\n\u003C$vars commonFields={{{[\u003CcommonFieldsTid>get[text]]}}}>\\n\u003C$checkbox \\n tiddler=\u003C\u003C__stateTiddler__>>\\n field=\\\"text\\\" \\n checked=\u003C\u003CcommonFields>>\\n unchecked=\\\"\\\"\\n default=\\\"\\\"\\n> Exclude common fields?\u003C/$checkbox>\\n\u003C/$vars>\\n\\\\end\"},\"$:/plugins/kookma/commander/inspect/comp/select\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/select\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compSelect(filter:\\\"\\\", stateTiddler:\\\"\\\", default:\\\"\\\", class:\\\"\\\", showButtons:\\\"show\\\")\\n\u003C$select tiddler=\u003C\u003C__stateTiddler__>> default=\u003C\u003C__default__>> class=\u003C\u003C__class__>> >\\n\u003Coption value=\\\"\\\">None\u003C/option>\\n\u003C$list filter=\u003C\u003C__filter__>> variable=item>\\n\u003Coption value=\u003C\u003Citem>>>\u003C$text text=\u003C\u003Citem>> />\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$reveal type=\\\"match\\\" text=\\\"show\\\" default=\u003C\u003C__showButtons__>> >\\n\u003C$vars myfilter=\u003C\u003C__filter__>> mystateTiddler=\u003C\u003C__stateTiddler__>> myitem={{{ [\u003C__stateTiddler__>get[text]] }}} >\\n\u003C$button actions=\u003C\u003Ccs-prev-item>> class=\\\"cmd-btn\\\"> prev \u003C/$button>\\n\u003C$button actions=\u003C\u003Ccs-next-item>> class=\\\"cmd-btn\\\"> next \u003C/$button>\\n\u003C/$vars>\\n\u003C/$reveal>\\n\\\\end\\n\\n\\\\define cs-prev-item()\\n\u003C$list filter=\\\"[subfilter\u003Cmyfilter>] +[before\u003Cmyitem>]\\\" variable=\\\"prev-item\\\" >\\n\u003C$action-setfield $tiddler=\u003C\u003CmystateTiddler>> text=\u003C\u003Cprev-item>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define cs-next-item()\\n\u003C$list filter=\\\"[subfilter\u003Cmyfilter>] +[after\u003Cmyitem>]\\\" variable=\\\"next-item\\\" >\\n\u003C$action-setfield $tiddler=\u003C\u003CmystateTiddler>> text=\u003C\u003Cnext-item>> />\\n\u003C/$list>\\n\\\\end\\n\\n\u003C!-- used by\\n - $:/plugins/kookma/commander/compInspect/main\\n-->\"},\"$:/plugins/kookma/commander/inspect/comp/show-preview\":{\"title\":\"$:/plugins/kookma/commander/inspect/comp/show-preview\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compInspect-show-preview(tiddler, commonFields:\\\"\\\")\\n\u003C$vars mainFields=\\\"title tags text\\\">\\n\u003Ctable class=\\\"cmd-ci-table\\\">\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">title\u003C/td>\\n\u003Ctd class=\\\"rightcol\\\">\u003C$link to=\u003C\u003C__tiddler__>> >\u003C$text text=\u003C\u003C__tiddler__>> />\u003C/$link>\u003C/td>\\n\u003C/tr>\\n\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">tags\u003C/td>\\n\u003Ctd style=\\\"padding:3px;\\\">\u003C$macrocall $name=showTags tiddler=\u003C\u003C__tiddler__>> />\u003C/td>\\n\u003C/tr>\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">text\u003C/td>\\n\u003Ctd>\u003C$transclude tiddler=\u003C\u003C__tiddler__>> field=\\\"text\\\" mode=\\\"block\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C$list filter=\\\"[\u003C__tiddler__>fields[]] -[enlist\u003CmainFields>] -[enlist\u003C__commonFields__>]\\\" variable=\\\"otherFld\\\">\\n\u003Ctr>\u003Ctd class=\\\"leftcol\\\">\u003C\u003CotherFld>>\u003C/td>\\n\u003Ctd class=\\\"rightcol\\\">\u003C$transclude tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003CotherFld>> mode=\\\"inline\\\"/>\u003C/td>\\n\u003C/tr>\\n\u003C/$list>\\n\u003C/table>\\n\u003C/$vars>\\n\\\\end\\n\\n\\\\define showTags(tiddler)\\n\u003C$list filter=\\\"[\u003C__tiddler__>tags[]]\\\" variable=tagItem >\\n\u003C$macrocall $name=tag tag=\u003C\u003CtagItem>> />\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/inspect/ui\":{\"title\":\"$:/plugins/kookma/commander/inspect/ui\",\"caption\":\"Inspect\",\"list-after\":\"$:/plugins/kookma/commander/field/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/InspectOps]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\\\"\\nclass:\\\"tc-vertical cmd-tab-wd\\\">>\\n\"},\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\":{\"title\":\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\",\"caption\":\"Inspect\",\"tags\":\"$:/tags/Commander/InspectOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$macrocall \\n $name=compInspect\\n filter=\u003C\u003Csearchfilter>>\\n stateTiddler=\\\"commander\\\"\\n/>\"},\"$:/plugins/kookma/commander/license\":{\"title\":\"$:/plugins/kookma/commander/license\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Distributed under an MIT license.\\n\\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\\n\\n\u003C\u003C\u003C\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/commander/log/ui\":{\"title\":\"$:/plugins/kookma/commander/log/ui\",\"caption\":\"Log status\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cdiv class=\\\"commander-alert\\\" style=\\\"padding:5px;font-size:0.90em;\\\">\\n\u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" actions=\u003C\u003Cdelete-all-log-tiddlers>>>Clear log\u003C/$button>\\n\u003C$set name=\\\"resultCount\\\" value=\\\"\\\"\\\"\u003C$count filter=\\\"[tag[$:/tags/Commander/LogOps]]\\\" />\\\"\\\"\\\">\\n\u003Cdiv class=\\\"tc-search-results\\\">\\n\u003Cspan class=\\\"kk-commander-log-note\\\">Recent number of operations: \u003C\u003CresultCount>>\u003C/span>\u003Cbr>\\n\u003C$list filter=\\\"[tag[$:/tags/Commander/LogOps]] +[!sort[created]]\\\" variable=\\\"logTid\\\">\\n\u003Cb>\u003C$view tiddler=\u003C\u003ClogTid>> field=\\\"created\\\" format=\\\"date\\\" template=\\\"YYYY-0MM-0DD 0hh:0mm:0ss\\\"/> \\n\u003C$view tiddler=\u003C\u003ClogTid>> field=\\\"caption\\\">\\n \u003C$view tiddler=\u003C\u003ClogTid>> field=\\\"title\\\">\u003C/$view>\\n\u003C/$view>\\n\u003C/b>\\n\u003Col>\u003C$list filter=\\\"[\u003ClogTid>indexes[]]\\\" variable=\\\"item\\\">\\n\u003Cli>\u003C$link to=\u003C\u003Citem>>>\u003C\u003Citem>>\u003C/$link>\\n\u003C$set name=\\\"myItem\\\" tiddler=\u003C\u003ClogTid>> index=\u003C\u003Citem>> >\\n\u003C$list filter=\\\"[\u003CmyItem>!search[existed]]\\\" variable=\\\"ignore\\\" \\n emptyMessage=\\\"\\\"\\\"\u003Cspan style=\\\"color:red;\\\">\u003C\u003CmyItem>>\u003C/span>\\\"\\\"\\\" >\\n\u003Cspan class=\\\"kk-commander-log-item\\\">\u003C\u003CmyItem>>\u003C/span>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/li>\\n\u003C/$list>\u003C/ol>\\n\u003C/$list>\\n\u003C/div>\\n\u003C/$set>\\n\u003C/div>\"},\"$:/plugins/kookma/commander/macros/compConfirmAction\":{\"title\":\"$:/plugins/kookma/commander/macros/compConfirmAction\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define compConfirmAction(\\nbtnLabel:\\\"Delete these tiddlers\\\", \\nconfirmMessage:\\\"Are you sure you wish to delete\\\", \\nstateTiddler:\\\"\\\"\\ncountFilter:\\\"\\\", \\nactionMacro:\\\"\\\")\\n\u003C$set name=resultCount value={{{ [subfilter\u003C__countFilter__>count[]] }}} >\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CresultCount>> >\\n\u003C$button popup=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> class=\\\"cmd-btn\\\">$btnLabel$\u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"\\\"\\\"$stateTiddler$\\\"\\\"\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n$confirmMessage$ \u003C\u003CresultCount>> tiddler(s)?\\n\u003C/div>\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\n\u003C$button class=\\\"cmd-btn\\\"> $btnLabel$\\n\u003C$macrocall $name=\u003C\u003C__actionMacro__>> />\\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/$set>\\n\\\\end\"},\"$:/plugins/kookma/commander/macros/definition\":{\"title\":\"$:/plugins/kookma/commander/macros/definition\",\"description\":\"some macro are not used REMOVE THEM\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define tempPath() $:/temp/commander\\n\\n\\\\define searchboxTid() $(tempPath)$/search-box\\n\\\\define selectiveOpsTid() $(tempPath)$/selective-operation\\n\\n\\n\\\\define workingTag() $:/tags/Commander/Working\\n\\\\define exportTagTid() $:/temp/commander/exportTag\\n\\\\define systemFieldsTid() $:/plugins/kookma/commander/config/systemfields\\n\\\\define commonFieldsTid() $:/plugins/kookma/commander/config/commonfields\"},\"$:/plugins/kookma/commander/macros/logging\":{\"title\":\"$:/plugins/kookma/commander/macros/logging\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define set-title() $:/temp/commander/logs/tid-{{{[tag[$:/tags/Commander/LogOps]count[]add[1]]}}}\\n\\n\\\\define create-log-tiddler(msg)\\n\u003C$wikify name=\\\"myTitle\\\" text=\\\"\\\"\\\"\u003C\u003Cset-title>>\\\"\\\"\\\">\\n\u003C$wikify name=\\\"myCaption\\\" text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"set-caption\\\" msg=\u003C\u003C__msg__>> />\\\"\\\"\\\">\\n\u003C$action-createtiddler $basetitle=\u003C\u003CmyTitle>>\\n$savetitle=\\\"$:/state/commander/log-tiddler\\\"\\ntags=\\\"$:/tags/Commander/LogOps\\\"\\ntype=\\\"application/json\\\"\\ncaption=\u003C\u003C__msg__>>\\n/>\\n\u003C/$wikify>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define log-add-single-operation(msg:\\\"commander operation\\\", tidItem:\\\"no item\\\")\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\u003C\u003C__tidItem__>> $value=\u003C\u003C__msg__>> />\\n\\\\end\\n\\n\\n\\\\define delete-all-log-tiddlers()\\n\u003C$action-deletetiddler $filter=\\\"[tag[$:/tags/Commander/LogOps]]\\\" />\\n\\\\end\"},\"$:/plugins/kookma/commander/macros/remove-workingtag\":{\"title\":\"$:/plugins/kookma/commander/macros/remove-workingtag\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define remove-working-tag(oldTag)\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CworkingTag>limit[1]]\\\" variable=ignore>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-workingTag\\\">>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CworkingTag>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003C__oldTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"working tag `$oldTag$` removed\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\"},\"$:/plugins/kookma/commander/macros/slider\":{\"title\":\"$:/plugins/kookma/commander/macros/slider\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define commander-slider(title, default:\\\"closed\\\")\\n\u003C$set name=\\\"revealState\\\" value=\u003C\u003Cqualify \\\"$:/state/commander/reveal/$title$\\\">>>\\n\u003Ch3>\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003CrevealState>> text=\\\"open\\\" default=\\\"$default$\\\">\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" set=\u003C\u003CrevealState>> setTo=\\\"open\\\">\\n {{$:/core/images/right-arrow}}\\n \u003C/$button>\\n \u003C/$reveal>\\n \u003C$reveal type=\\\"match\\\" state=\u003C\u003CrevealState>> text=\\\"open\\\" default=\\\"$default$\\\">\\n \u003C$button class=\\\"tc-btn-invisible tc-tiddlylink\\\" set=\u003C\u003CrevealState>> setTo=\\\"closed\\\">\\n {{$:/core/images/down-arrow}}\\n \u003C/$button>\\n \u003C/$reveal>\\n \u003C$view tiddler=\\\"$title$\\\" field=\\\"caption\\\">\\n \u003C$view tiddler=\\\"$title$\\\" field=\\\"title\\\">\u003C/$view>\\n \u003C/$view>\\n\u003C/h3>\\n\\n\u003C$reveal type=\\\"match\\\" state=\u003C\u003CrevealState>> text=\\\"open\\\" default=\\\"$default$\\\">\\n\u003C$transclude tiddler=\\\"$title$\\\" mode=\\\"block\\\" />\\n\u003C/$reveal>\\n\u003C/$set>\\n\\\\end\"},\"$:/plugins/kookma/commander/macros/utility\":{\"title\":\"$:/plugins/kookma/commander/macros/utility\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define display(label,text)\\n\u003C$set name=\\\"stateTid\\\" value=\\\"$:/temp/commander/display/popup/$label$\\\" >\\n\u003C$button popup=\u003C\u003CstateTid>> class=\\\"tc-btn-invisible\\\">\u003Cspan style=\\\"text-decoration: underline\\\">$label$\u003C/span>\u003C/$button>\\n\u003C$reveal type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\" state=\u003C\u003CstateTid>> animate=\\\"yes\\\">\\n\u003Cspan style=\\\"color:blue;\\\">\u003C$text text=\u003C\u003C__text__>> />\u003C/span>\u003C/$reveal>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define is-filterSeearch-newer-than-selectedTitles(TidA, TidB)\\n\u003C$set name=\\\"tidAMod\\\" value={{{ [[$TidA$]get[modified]] }}}>\\n\u003C$set name=\\\"tidBMod\\\" value={{{ [[$TidB$]get[modified]] }}}>\\n\u003C$set name=\\\"tidAText\\\" value={{{ [[$TidA$]get[text]] }}}>\\n\u003C$set name=\\\"tidBText\\\" value={{{ [[$TidB$]get[text]] }}}>\\n\u003C$list filter=\\\"[\u003C__TidB__>get[text]minlength[1]]\\\" variable=ignore>\\n\u003C$reveal type=\\\"nomatch\\\" default=\u003C\u003CtidAText>> text=\u003C\u003CtidBText>>>\\n\u003C$list filter=\\\"[\u003CtidAMod>] [\u003CtidBMod>] +[nsort[]last[1]removesuffix\u003CtidBMod>]\\\">\\nA new filter search has been detected, click on the search button to apply it.\\n\u003C/$list>\\n\u003C/$reveal>\\n\u003C/$list>\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$set>\\n\u003C/$set>\\n\\\\end\\n\\n!!Remarks\\n;is-filterSeearch-newer-than-selectedTitles\\n* Checks `TidA` and `TidB` for modified date and text\\n* If They are not empty, then\\n** checks if the text of two are equal, if not\\n** checks to see if `TidB` is newer or not\\n** if newer shows a message, to apply the new search filter\\n* Note\\n** `TidA=\\\"$:/temp/commander\\\"`\\n** `TidB=\\\"$:/temp/commander/search-box\\\"`\\n* is-filterSeearch-newer-than-selectedTitles is called from $:/plugins/kookma/commander/search/ui\\n\\n;display\\n* gets a label and a text\\n* create an inline label\\n* on click label, the text is displayed as temporary popup\\n* losing focus, the text goes hidden\\n* this macro is used in customized compSelective to show the active filter\"},\"$:/plugins/kookma/commander/readme\":{\"title\":\"$:/plugins/kookma/commander/readme\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"; Tiddler Commander\\nTiddler Commander, in short ''Commander'' is a unique tool for batch operations on tiddlers. Commander has the below features\\n\\n* Bulk tiddler creation/deletion\\n* Combo search to filter and select tiddlers\\n* Title operation: add, remove prefixes and suffixes, also remove cahras form begining and end of title (on renaming tiddlers, [[relink|$:/plugins/kookma/commander/help/uicomp/relink]] can be used to update title in other tiddlers)\\n* Tag operation: add, remove, replace\\n* Field operation: add, remove, rename, and set field value\\n* SNR, search and replace in all fields including text, tags, //title//, and common fields\\n* Inspect, to review and inspect tiddlers in one place, scroll among them and edit all fields (including common fields), tags, text (title is an exception!)\\n* Log, create logs of all operations\\n* Search, //save and load// any combination of filter search\\n\\n; Start Commander\\n* Normally Commander adds its icon: \u003Cspan class=\\\"cmd-doc\\\">{{$:/plugins/kookma/commander/images/commander.svg}}\u003C/span> to page controls.\\n* Open the right sidebar and click on the \u003Cspan class=\\\"cmd-doc\\\">{{$:/plugins/kookma/commander/images/commander.svg}}\u003C/span> Commander is started\\n* In standard Tiddlywiki, control buttons are shown on the right sidebar under site title.\\n\\n; Code and demo\\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\\n\\n* Demo: https://kookma.github.io/TW-Commander/\\n* Code: https://github.com/kookma/TW-Commander\\n\\n\u003Cstyle>\\n.cmd-doc svg{\\nwidth: 1.2em;\\nheight: 1.2em;\\nvertical-align: middle;}\\n\u003C/style>\"},\"$:/plugins/kookma/commander/search/filter-button/clear\":{\"title\":\"$:/plugins/kookma/commander/search/filter-button/clear\",\"list-after\":\"$:/plugins/kookma/commander/search/filter-button/search\",\"tags\":\"$:/tags/Commander/Search/FilterButton\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CsearchboxTid>> stateField=\\\"text\\\" text=\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"clear search box and selected tiddlers\\\">\\n\u003C$action-setfield $tiddler=\u003C\u003CsearchboxTid>> $field=\\\"text\\\" $value=\\\"\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/commander\\\" $field=\\\"text\\\" $value=\\\"\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/state/commander/snr/select-tiddler\\\" $field=\\\"text\\\" $value=\\\"\\\"/>\u003C!-- SNR selection -->\\n\u003C$action-setfield $tiddler=\\\"$:/state/compInspect/temp/commander/selectState-tiddler\\\" $field=\\\"text\\\" $value=\\\"\\\"/> \u003C!-- Inspect selection -->\\n{{$:/core/images/close-button}}\\n\u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C!--\\nthere is extra action should be removed\\n-->\"},\"$:/plugins/kookma/commander/search/filter-button/dropdown\":{\"title\":\"$:/plugins/kookma/commander/search/filter-button/dropdown\",\"tags\":\"$:/tags/Commander/Search/FilterButton\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\\\\whitespace trim\\n\\n\u003Cspan class=\\\"tc-popup-keep\\\">\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/commander/filterDropdown\\\">> class=\\\"tc-btn-invisible\\\" tooltip=\\\"select a search filter\\\">\\n{{$:/core/images/down-arrow}}\\n\u003C/$button>\\n\u003C/span>\\n\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/commander/filterDropdown\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003C$set name=\\\"tv-show-missing-links\\\" value=\\\"yes\\\">\\n\u003C$linkcatcher to=\u003C\u003CsearchboxTid>> >\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Filter]!is[draft]]\\\">\\n\u003C$link to={{!!filter}}>\u003C$let tv-wikilinks=\\\"no\\\">\u003C$transclude field=\\\"description\\\"/>\u003C/$let>\u003C/$link>\\n\u003C/$list>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$linkcatcher>\\n\u003C/$set>\\n\u003C/$reveal>\"},\"$:/plugins/kookma/commander/search/filter-button/save\":{\"title\":\"$:/plugins/kookma/commander/search/filter-button/save\",\"list-after\":\"$:/plugins/kookma/commander/search/filter-button/clear\",\"tags\":\"$:/tags/Commander/Search/FilterButton\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CsearchboxTid>> stateField=\\\"text\\\" text=\\\"\\\">\\n\u003C$button class=\\\"tc-btn-invisible\\\" tooltip=\\\"save current search\\\" popup=\u003C\u003Cqualify \\\"$:/state/commander/SaveDropdown\\\">> >\\n{{$:/core/images/file}}\\n\u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/commander/SaveDropdown\\\">> type=\\\"popup\\\" class=\\\"tc-popup-keep\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown-wrapper\\\">\\n\u003Cdiv class=\\\"tc-block-dropdown tc-edit-type-dropdown\\\">\\n\u003Cdiv class=\\\"tc-dropdown-item-plain\\\">\\nSave new search filter\u003Cbr>\u003Cbr>\\n\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/save-new-filter\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\"description for new filter\\\"\\n/> \u003Cbr>\u003Cbr>\\n\\n\u003C$button class=\\\"tc-btn\\\"> Save new filter\\n\u003C$macrocall $name=\\\"create-new-filter\\\" \\n description={{$:/temp/commander/save-new-filter}} \\n\\tbasetitle=\\\"$:/plugins/kookma/commander/filters/yourFilter\\\" \\n\\tfilter={{{[\u003CsearchboxTid>get[text]]}}} \\t/>\\n\u003C$action-deletetiddler $tiddler=\\\"$:/temp/commander/save-new-filter\\\"/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cqualify \\\"$:/state/commander/SaveDropdown\\\">> />\\n\u003C/$button>\\n\u003C/div>\\n\u003C/div>\\n\u003C/div>\\n\u003C/$reveal>\\n\\n\u003C!-- ToDO\\ncorrect classes for textbox\\n-->\"},\"$:/plugins/kookma/commander/search/macros/create-new-filter\":{\"title\":\"$:/plugins/kookma/commander/search/macros/create-new-filter\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define create-new-filter(description:\\\"\\\", basetitle:\\\"\\\", filter:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__description__>!is[blank]]\\\" variable=\\\"ignore\\\">\\n\u003C$action-createtiddler \\n $basetitle=\\\"\\\"\\\"$basetitle$\\\"\\\"\\\"\\n tags=\\\"$:/tags/Commander/Filter\\\"\\n description=\u003C\u003C__description__>>\\n filter=\\\"\\\"\\\"$filter$\\\"\\\"\\\"\\n /> \\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/search/macros/select-deselect\":{\"title\":\"$:/plugins/kookma/commander/search/macros/select-deselect\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define select-all()\\n\u003C$list filter=\\\"[subfilter\u003Cfiltertext>!is[missing]!tag\u003CworkingTag>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$fieldmangler>\\n\\\\end\\n\\n\\\\define deselect-all()\\n\u003C$list filter=\\\"[tag\u003CworkingTag>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$fieldmangler>\\n\\\\end\"},\"$:/plugins/kookma/commander/search/macros/warning\":{\"title\":\"$:/plugins/kookma/commander/search/macros/warning\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define warn-for-selectedTids-from-previous-operation()\\n\u003C$list filter=\\\"[tag\u003CworkingTag>]-[subfilter\u003Cfiltertext>]+[count[]!match[0]] \\\">\\n\u003Cspan style=\\\"color:red;font-size:0.85em\\\">There are remained selected tiddlers from previous search! Remove them by pressing ''deselect all''!\u003C/span>\\n\u003C/$list>\\n\\\\end\"},\"$:/plugins/kookma/commander/search/selection\":{\"title\":\"$:/plugins/kookma/commander/search/selection\",\"caption\":\"Select tiddlers\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import $:/plugins/kookma/commander/macros/definition\\n\u003C$checkbox tiddler=\u003C\u003CselectiveOpsTid>> field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\" uncheckactions=\u003C\u003Cdeselect-all>> > Selective operation?\u003C/$checkbox>\\n\\n\u003C$reveal type=\\\"nomatch\\\" stateTitle=\u003C\u003CselectiveOpsTid>> stateField=\\\"text\\\" text=\\\"yes\\\" tag=\\\"div\\\" class=\\\"kk-commander-tiddler-list kk-commander-columns3\\\">\\n\u003C$list filter=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\\\">\u003C$link/>\u003Cbr>\u003C/$list>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003CselectiveOpsTid>> stateField=\\\"text\\\" text=\\\"yes\\\" tag=\\\"div\\\">\\n\u003C$button actions=\u003C\u003Cselect-all>> > Select all\u003C/$button> \u003C$button actions=\u003C\u003Cdeselect-all>> > Deselect all\u003C/$button>\\n\u003Csmall style=\\\"margin-left:10px;\\\">Number of tiddlers selected: \u003C$count filter=\\\"[tag\u003CworkingTag>]\\\" />\u003C/small>\u003Cbr>\\n\u003C\u003Cwarn-for-selectedTids-from-previous-operation>>\\n\u003C/$reveal>\\n\\n\\n\u003C$reveal type=\\\"match\\\" stateTitle=\u003C\u003CselectiveOpsTid>> stateField=\\\"text\\\" text=\\\"yes\\\" tag=\\\"div\\\" class=\\\"kk-commander-tiddler-list kk-commander-columns3\\\">\\n\u003C$list filter=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!is[missing]]\\\">\\n\u003C$checkbox tag=\u003C\u003CworkingTag>>> \u003C$link/>\u003C/$checkbox>\u003Cbr>\\n\u003C/$list>\\n\u003C/$reveal>\\n\\n\u003C!-- Description\\nThis tiddler implement interface to selectivly add tiddlers for commander operations.\\nEach selected tiddler gets a working tag\\n-->\"},\"$:/plugins/kookma/commander/search/ui\":{\"title\":\"$:/plugins/kookma/commander/search/ui\",\"caption\":\"Commander filter search\",\"code-body\":\"yes\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cdiv class=\\\"tc-search tc-advanced-search\\\" style=\\\"margin-bottom:-12px;\\\">\u003C!-- negative margin for displaying matches -->\\nCombo search  \u003C$edit-text tiddler=\u003C\u003CsearchboxTid>> type=\\\"search\\\" tag=\\\"input\\\" default=\\\"\\\" placeholder=\\\"enter keywords or make a filter search e.g. [tag[myTag]]\\\" focus={{$:/plugins/kookma/commander/config/AutoFocus}}/>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Search/FilterButton]!has[draft.of]]\\\">\u003C$transclude/>\u003C/$list>\\n\u003C/div>\"},\"$:/plugins/kookma/commander/setting/ui\":{\"title\":\"$:/plugins/kookma/commander/setting/ui\",\"caption\":\"Setting\",\"icon\":\"$:/core/images/options-button\",\"list-after\":\"$:/plugins/kookma/commander/inspect/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/Setting]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/setting/uicomp/snr\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\"},\"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers\",\"caption\":\"Temporary tiddlers\",\"list-after\":\"$:/plugins/kookma/commander/setting/uicomp/relink\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define delete-all-temps()\\n\u003C$action-deletetiddler $filter=\\\"[search:title[$:/temp/commander/]]\\\" />\\n\\\\end\\n\\n\u003C$set name=numTids value={{{ [search:title[$:/temp/commander/]count[]] }}}>\\n\u003C$reveal type=\\\"match\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNo temporary tiddlers is existed to delete!\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNumber of temporary tiddlers (including log tiddlers): \u003C\u003CnumTids>>\u003Cbr>\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\u003C$macrocall $name=\\\"compConfirmAction\\\"\\nbtnLabel=\\\"Delete temp tiddlers\\\" \\nconfirmMessage=\\\"Are you sure you wish to delete\\\"\\nstateTiddler=\\\"$:/state/commander/setting/delete-temps\\\"\\ncountFilter=\\\"[search:title[$:/temp/commander/]]\\\"\\nactionMacro=\\\"delete-all-temps\\\"/>\"},\"$:/plugins/kookma/commander/setting/uicomp/minlength\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/minlength\",\"caption\":\"Search minimum length\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Controls the minimum length of a search string before results are displayed.\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Minlength\u003C/label>\u003C$edit-text tiddler=\\\"$:/plugins/kookma/commander/config/minlength\\\" field=text default=3 placeholder=\\\"enter a number\\\" tag=input/>\"},\"$:/plugins/kookma/commander/setting/uicomp/search-filters\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/search-filters\",\"caption\":\"Search filter\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"The below list shows the Commander search filter. To edit click on the link and edit tiddler for filter syntax or description\\n\\n\u003Cdetails>\\n\u003Csummary>Commander saved filter search\u003C/summary>\\n\u003Cdl>\\n\u003C$list filter=\\\"[all[tiddlers+shadows]tag[$:/tags/Commander/Filter]]\\\" >\\n\u003Cdt>\u003C$link/>\u003C/dt>\\n\u003Cdd>\u003Cspan style=\\\"display:inline-block;font-weight:700;width:100px\\\">Description:\u003C/span>\u003C$view field=\\\"description\\\"/>\u003C/dd>\\n\u003Cdd>\u003Cspan style=\\\"display:inline-block;font-weight:700;width:100px\\\">Filter:\u003C/span>\u003C$view field=\\\"filter\\\"/>\u003C/dd>\\n\u003C/$list>\\n\u003C/dl>\\n\u003C/details>\"},\"$:/plugins/kookma/commander/setting/uicomp/snr\":{\"title\":\"$:/plugins/kookma/commander/setting/uicomp/snr\",\"caption\":\"Snr setting\",\"tags\":\"$:/tags/Commander/Setting\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Csnr-difftext-cleanup>>\\n\u003Cdiv style=\\\"padding-left:25px;font-size:0.9em\\\">\\n\\nThe cleanup attribute determines which optional post-processing should be applied to the diffs:\\n\\n* none: no cleanup is performed\\n* semantic (default): rewrites the diffs for human readability\\n* efficient: rewrites the diffs to minimise the number of operations for subsequent processing\\n\u003C/div>\"},\"$:/plugins/kookma/commander/snr/macros/actions\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/actions\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define regexp-flags()\\n{{$:/config/commander/snr/gm}}{{$:/config/commander/snr/case-sensitive}}{{$:/config/commander/snr/unicode}}\\n\\\\end\\n\\n\\\\define snr-ui-show-diffs()\\n\u003Cform class=\\\"cmd-snr-form\\\" style=\\\"width:100%;\\\">\\n \u003Cfieldset>\\n \u003Clegend style=\\\"color:#FF0000;\\\">Differences\u003C/legend>\\nTiddler: \u003C$link to={{$:/state/commander/snr/select-tiddler}}>\u003C$text text={{$:/state/commander/snr/select-tiddler}}/>\u003C/$link>\\n\\n\u003C$wikify name=flags text=\u003C\u003Cregexp-flags>> >\\n\\n\u003C$macrocall $name=\\\"replace-text-diff\\\" \\n tiddler={{$:/state/commander/snr/select-tiddler}} \\n field={{$:/state/commander/snr/select-tiddler/field}} \\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n flags=\u003C\u003Cflags>> \\n wholeWords={{$:/config/commander/snr/whole-words}}\\n/>\\n\\n\u003C/$wikify>\\n\u003C/fieldset>\\n\u003C/form>\\n\\\\end\\n\\n\\\\define snr-check-diffs(tiddler:\\\"\\\", field:\\\"\\\")\\n\\\\whitespace trim\\n\u003C$wikify name=flags text=\u003C\u003Cregexp-flags>> >\\n\u003C$wikify name=\\\"result\\\" text=\\\"\\\"\\\"\\n\u003C$macrocall $name=\\\"replace-text\\\" \\n tiddler=\u003C\u003C__tiddler__>>\\n field=\u003C\u003C__field__>>\\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n flags=\u003C\u003Cflags>> \\n wholeWords={{$:/config/commander/snr/whole-words}}\\n/>\\\"\\\"\\\">\\n\u003C$reveal type=\\\"match\\\" text={{{ [\u003C__tiddler__>get\u003C__field__>] }}} default=\u003C\u003Cresult>> >\\nsame\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"nomatch\\\" text={{{ [\u003C__tiddler__>get\u003C__field__>] }}} default=\u003C\u003Cresult>> >\\ndifferent\\n\u003C/$reveal>\\n\u003C/$wikify>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define search-replace-in-tiddler-field(tiddler:\\\"\\\",field:\\\"\\\",replace:\\\"\\\",replaceWith:\\\"\\\")\\n\u003C$wikify name=ss text=\u003C\u003Csnr-check-diffs \\\"\\\"\\\"$tiddler$\\\"\\\"\\\" \\\"\\\"\\\"$field$\\\"\\\"\\\">> >\\n\u003C$list filter=\\\"[\u003Css>] -same\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__tiddler__>has[title]]\\\" variable=\\\"ignore\\\">\\n\u003C$wikify name=flags text=\u003C\u003Cregexp-flags>> >\\n\u003C$macrocall $name=\\\"replace-text-button\\\" \\n tiddler=\u003C\u003C__tiddler__>> \\n field=\u003C\u003C__field__>>\\n replace=\u003C\u003C__replace__>>\\n replaceWith=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003Cflags>> \\n wholeWords={{$:/config/commander/snr/whole-words}}\\n/>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"`$field$` field has been changed\\\"\\\"\\\" tidItem=\u003C\u003C__tiddler__>> />\\n\u003C$macrocall $name=\\\"clear-select-tiddler-if-field-is-title\\\" tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> />\\n\u003C/$wikify>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define clear-select-tiddler-if-field-is-title(tiddler, field)\\n\u003C$list filter=\\\"[\u003C__field__>] +[search[title]]\\\" variable=\\\"ignore\\\">\\n\u003C$action-setfield $tiddler=\\\"$:/state/commander/snr/select-tiddler\\\" text=\\\"\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/commander/selected-titles\\\" $index=\u003C\u003C__tiddler__>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define search-replace-in-field-bulk()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"SNR operation\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]]\\\" >\\n \u003C$macrocall \\n $name=\\\"search-replace-in-tiddler-field\\\"\\n tiddler=\u003C\u003CcurrentTiddler>> \\n field={{$:/state/commander/snr/select-tiddler/field}} \\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n />\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define search-replace-in-field-single-tiddler()\\n\u003C\u003Ccreate-log-tiddler \\\"SNR operation\\\">>\\n \u003C$macrocall \\n $name=\\\"search-replace-in-tiddler-field\\\"\\n tiddler={{$:/state/commander/snr/select-tiddler}}\\n field={{$:/state/commander/snr/select-tiddler/field}} \\n replace={{$:/state/commander/snr/replace-text}} \\n replaceWith={{$:/state/commander/snr/replace-text-with}} \\n />\\n\\\\end\\n\\n\\\\define snr-actions()\\n\u003C$button actions=\u003C\u003Csearch-replace-in-field-single-tiddler>> tooltip=\\\"search and replace in a single tiddler\\\" class=\\\"cmd-btn\\\">\\nReplace?\\n\u003C/$button> \\n\u003C!-- replace in bulk tiddler with confirmation -->\\n\u003C$macrocall $name=\\\"compConfirmAction\\\"\\ncountFilter=\u003C\u003Csearchfilter>>\\nactionMacro=\\\"search-replace-in-field-bulk\\\"\\nstateTiddler=\\\"$:/state/commander/SelectiveReplaceAllDropdown\\\"\\nconfirmMessage=\\\"Are you sure you wish to replace text in\\\" \\nbtnLabel=\\\"Replace all?\\\"/>\\n\\\\end\"},\"$:/plugins/kookma/commander/snr/macros/inputs\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/inputs\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define snr-ui-inputs()\\n\u003Cform class=\\\"cmd-snr-form\\\">\\n \u003Cfieldset>\\n \u003Clegend>Search and Replace\u003C/legend>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Tiddler title\u003C/label>\\n\u003C$select tiddler=\\\"$:/state/commander/snr/select-tiddler\\\" default=\\\"\\\" class=\\\"cmd-snr-textbox\\\">\\n\u003Coption value=\\\"\\\">None\u003C/option>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" >\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/div>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Field name\u003C/label>\\n\u003C$select tiddler=\\\"$:/state/commander/snr/select-tiddler/field\\\" default=\\\"text\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>fields[]]\\\">\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C/div>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Search text\u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/state/commander/snr/replace-text\\\" \\n tag=\\\"input\\\" \\n default=\\\"\\\" \\n placeholder=\\\" text to replace\\\"\\n class=\\\"cmd-snr-textbox\\\"/>\\n\u003C/div>\\n\\n\u003Cdiv class=\\\"item\\\">\\n\u003Clabel>Replace with \u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/state/commander/snr/replace-text-with\\\" \\n tag=\\\"input\\\" \\n default=\\\"\\\" \\n placeholder=\\\" new text\\\"\\n class=\\\"cmd-snr-textbox\\\"/>\\n\u003C/div>\\n\u003C!-- Use relink to update titles -->\\n\u003C$list filter=\\\"[[$:/state/commander/snr/select-tiddler/field]get[text]match[title]]\\\" variable=ignore>\\n\u003Cdiv class=\\\"item-relink\\\">{{$:/plugins/kookma/commander/config/relink}}\u003C/div>\\n\u003C/$list>\\n\u003C/fieldset>\\n\u003C/form>\\n\\n\\n\\\\end\"},\"$:/plugins/kookma/commander/snr/macros/regexp-flags\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/regexp-flags\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define snr-regexp-flags()\\n\\n\u003Cform class=\\\"cmd-snr-form\\\">\\n\u003Cfieldset>\\n\u003Clegend>Search flags\u003C/legend>\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/config/commander/snr/case-sensitive\\\" \\n field=\\\"text\\\" \\n checked=\\\"i\\\" \\n unchecked=\\\"\\\"\\n/>  ignore case\u003Cbr>\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/config/commander/snr/whole-words\\\" \\n field=\\\"text\\\" \\n checked=\\\"words\\\" \\n unchecked=\\\"characters\\\"\\n/>  whole words\u003Cbr>\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/config/commander/snr/unicode\\\" \\n field=\\\"text\\\" \\n checked=\\\"u\\\" \\n unchecked=\\\"\\\"\\n/>  unicode\u003Cbr>\\n\\n\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/config/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"\\\">  first match \\n\u003C/$radio>\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/config/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"g\\\">  global match\\n\u003C/$radio>\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/config/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"m\\\">  multiline mode\\n\u003C/$radio>\u003Cbr>\\n\\n\u003C$radio\\n tiddler=\\\"$:/config/commander/snr/gm\\\" \\n field=\\\"text\\\" \\n value=\\\"mg\\\">  global multiline mode\\n\u003C/$radio>\\n\\n\u003C/fieldset>\\n\u003C/form>\\n\\\\end\"},\"$:/plugins/kookma/commander/snr/macros/regexpsub.js\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/regexpsub.js\",\"text\":\"/*\\\\\\ncreated: 20190214160253135\\ntype: application/javascript\\ntitle: $:/plugins/kookma/commander/snr/macros/regexpsub.js\\nmodified: 20200307092210323\\nmodule-type: macro\\n\\nMake regular expression substitutions\\nDeveloped by Mark S\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"regexpsub\\\";\\n\\nexports.params = [\\n\\t{name: \\\"searchValue\\\"},\\n\\t{name: \\\"replaceValue\\\"},\\n\\t{name: \\\"sourceText\\\"},\\n\\t{name: \\\"flags\\\"},\\n {name: \\\"wholeWords\\\"}\\n];\\n\\n/*\\nRun the macro\\n*/\\nexports.run = function(searchValue, replaceValue, sourceText, flags = \\\"gi\\\", wholeWords = \\\"characters\\\") {\\n \\n try {\\n \\n\\tvar searchText;\\n if(wholeWords.toLowerCase() === 'words'){\\n searchText = \\\"\\\\\\\\b\\\" + searchValue + \\\"\\\\\\\\b\\\";\\n } else{\\n searchText = searchValue;\\n }\\n\\t\\t\\n searchText = new RegExp(searchText, flags);\\n return sourceText.replace(searchText,replaceValue);\\n\\n } \\n catch(err) { \\n return \\\"ERROR IN REG EXPRESSION. YOU MAY NEED TO ESCAPE VALUES\\\"; \\n }\\n \\n };\\n\\n})();\\n\",\"created\":\"20190214160253135\",\"type\":\"application/javascript\",\"modified\":\"20200307092210323\",\"module-type\":\"macro\"},\"$:/plugins/kookma/commander/snr/macros/replace-text\":{\"title\":\"$:/plugins/kookma/commander/snr/macros/replace-text\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define nothing-to-replace(tiddler, field:\\\"text\\\") \\n\u003C$diff-text source={{{ [\u003C__tiddler__>get\u003C__field__>] }}} dest={{{ [\u003C__tiddler__>get\u003C__field__>] }}} />\\n\\\\end\\n\\n\\\\define replace-text(tiddler:\\\"\\\",field:\\\"text\\\",replace:\\\"\\\",replaceWith:\\\"\\\",flags:\\\"\\\", wholeWords:\\\"\\\")\\n\\\\whitespace trim\\n\u003C$wikify name=\\\"source\\\" text=\\\"\\\"\\\"\u003C$view tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> mode=\\\"block\\\" format=\\\"text\\\"/>\\\"\\\"\\\">\\n\u003C$wikify name=\\\"result\\\" \\n text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"regexpsub\\\" $type=\\\"text/plain\\\" \\n sourceText=\u003C\u003Csource>> \\n searchValue=\u003C\u003C__replace__>> \\n replaceValue=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003C__flags__>> \\n wholeWords=\u003C\u003C__wholeWords__>> />\\\"\\\"\\\" \\n >\\n\u003C$text text=\u003C\u003Cresult>>/>\\n\u003C/$wikify>\\n\u003C/$wikify>\\n\\\\end\\n\\n\\\\define replace-text-diff(tiddler:\\\"\\\", field:\\\"text\\\", replace, replaceWith, flags:\\\"\\\", wholeWords:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__tiddler__>get\u003C__field__>minlength[1]]\\\" variable=null emptyMessage=\\\"No tiddler is selected, or tiddler is empty.\\\">\\n\u003C$list filter=\\\"[\u003C__replace__>minlength[1]]\\\" variable=null emptyMessage=\u003C\u003Cnothing-to-replace \\\"\\\"\\\"$tiddler$\\\"\\\"\\\" \\\"\\\"\\\"$field$\\\"\\\"\\\">> >\\n\\n\u003C$wikify name=\\\"result\\\" \\n text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"replace-text\\\" \\n tiddler=\u003C\u003C__tiddler__>> field=\u003C\u003C__field__>> \\n replace=\u003C\u003C__replace__>> \\n replaceWith=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003C__flags__>>\\n wholeWords=\u003C\u003C__wholeWords__>> />\\\"\\\"\\\"\\n >\\n\u003C$diff-text source={{{ [\u003C__tiddler__>get\u003C__field__>] }}} dest=\u003C\u003Cresult>> cleanup={{$:/state/commander/snr/setting/cleanup}}/>\\n\u003C/$wikify>\\n\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define replace-text-button(tiddler:\\\"\\\", field:\\\"text\\\", replace:\\\"\\\", replaceWith:\\\"\\\", flags:\\\"\\\", wholeWords:\\\"\\\")\\n\\\\whitespace trim\\n\u003C$list filter=\\\"[\u003C__tiddler__>get\u003C__field__>minlength[1]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__replace__>minlength[1]]\\\" variable=null>\\n\u003C$wikify name=\\\"result\\\" \\n text=\\\"\\\"\\\"\u003C$macrocall $name=\\\"replace-text\\\" \\n tiddler=\u003C\u003C__tiddler__>> \\n field=\u003C\u003C__field__>> \\n replace=\u003C\u003C__replace__>> \\n replaceWith=\u003C\u003C__replaceWith__>> \\n flags=\u003C\u003C__flags__>>\\n wholeWords=\u003C\u003C__wholeWords__>> />\\\"\\\"\\\"\\n >\\n\u003C$reveal type=\\\"nomatch\\\" default=\\\"title\\\" text=\u003C\u003C__field__>> >\\n \u003C$action-setfield $tiddler=\u003C\u003C__tiddler__>> $field=\u003C\u003C__field__>> $value=\u003C\u003Cresult>>/>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" default=\\\"title\\\" text=\u003C\u003C__field__>> >\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003C__tiddler__>> to=\u003C\u003Cresult>> />\\n\u003C/$reveal>\\n\u003C/$wikify>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/snr/ui\":{\"title\":\"$:/plugins/kookma/commander/snr/ui\",\"caption\":\"Snr\",\"icon\":\"$:/core/images/gitter\",\"list-after\":\"$:/plugins/kookma/commander/inspect/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Search and replcae in tiddler fields!\\n\\n\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/SnrOps]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/snr/uicomp/replace-text\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\\n\"},\"$:/plugins/kookma/commander/snr/uicomp/replace-text\":{\"title\":\"$:/plugins/kookma/commander/snr/uicomp/replace-text\",\"caption\":\"Search and replace\",\"icon\":\"$:/core/images/gitter\",\"tags\":\"$:/tags/Commander/SnrOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Cdiv class=\\\"cmd-snr-row\\\">\\n\u003Cdiv class=\\\"cmd-snr-double-column\\\">\\n\u003C\u003Csnr-ui-inputs>>\\n\u003C/div>\\n\u003Cdiv class=\\\"cmd-snr-column\\\">\\n\u003C\u003Csnr-regexp-flags>> \\n\u003C/div>\\n\u003C/div>\\n\u003C\u003Csnr-ui-show-diffs>>\\n\u003C\u003Csnr-actions>>\"},\"$:/plugins/kookma/commander/styles/buttons\":{\"title\":\"$:/plugins/kookma/commander/styles/buttons\",\"text\":\"/*\\n.cmd-btn{\\n\\tfont-size:0.85em;\\n\\tfont-size:300;\\n\\tcolor: #666666;\\n\\tbackground-color: #d8d8d8;\\n\\tpadding: 3px 8px 3px 8px;\\n\\tborder: 1px solid #a1a1a1;\\n}\\n*/\\n\\n.cmd-btn-wd{\\n\\twidth:20ch;\\n}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/styles/compInspect/table\":{\"title\":\"$:/plugins/kookma/commander/styles/compInspect/table\",\"text\":\"/*compInspect table*/\\n.cmd-ci-table{\\n\\tborder-collapse: collapse;\\n}\\n\\n.cmd-ci-table .leftcol{\\n\\twidth:20%;\\n\\tvertical-align: top;\\n\\ttext-align: right;\\n\\tbackground-color:#f0f0f0;\\n}\\n.cmd-ci-table .rightcol{\\n\\twidth:650px;\\n}\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/styles/log\":{\"title\":\"$:/plugins/kookma/commander/styles/log\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\".commander-alert {\\n\\tpadding: 0.75rem 1.25rem;\\n\\tmargin-bottom: 1rem;\\n\\t/*border: 1px dotted gray;*/\\n\\tborder-radius: 0.25rem;\\n\\t\\n\\tcolor: \u003C\u003Ccolour message-foreground>>; /*#0c5460;*/\\n\\tbackground-color:\u003C\u003Ccolour message-background>>; /*#d1ecf1;*/\\n\\tborder-color: \u003C\u003Ccolour message-border>>; /*#bee5eb;*/\\n}\\n\\n.kk-commander-log-note{\\n\\tfont-style:italic; font-size:small;\\n}\\n.kk-commander-log-item {\\n\\t/*color:green;*/\\n}\"},\"$:/plugins/kookma/commander/styles/other\":{\"title\":\"$:/plugins/kookma/commander/styles/other\",\"text\":\"\\n/* This is missing and I added it */\\n.cmd-txt-area{\\n\\tmin-width:25ch;\\n}\\n\\n.cmd-txt-area2{\\n\\tmin-width:50ch;\\n}\\n\\n/* Correct this later*/\\n.kk-cmd-label{\\n\\tdisplay:inline-block;\\n\\twidth:85px;\\n}\\n\\n.kk-cmd-label2{\\n\\tdisplay:inline-block;\\n\\twidth:120px;\\n}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/styles/select-width\":{\"title\":\"$:/plugins/kookma/commander/styles/select-width\",\"text\":\".cmd-sl{\\n width:8ch;\\n}\\n\\n.cmd-select-wd{\\n min-width:25ch;\\n}\\n\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/styles/snr/flexbox\":{\"title\":\"$:/plugins/kookma/commander/styles/snr/flexbox\",\"text\":\".cmd-snr-row {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n width: 100%;\\n}\\n.cmd-snr-column {\\n display: flex;\\n flex-direction: column;\\n flex-basis: 100%;\\n flex: 1\\n}\\n\\n.cmd-snr-double-column {\\n display: flex;\\n flex-direction: column;\\n flex-basis: 100%;\\n flex: 2\\n}\\n\\n@media screen and (min-width: 800px) {\\n .cmd-snr-column {\\n flex: 1\\n }\\n\\n .cmd-snr-double-column {\\n flex: 2\\n }\\n}\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/styles/snr/form\":{\"title\":\"$:/plugins/kookma/commander/styles/snr/form\",\"text\":\".cmd-snr-form{\\n width:100%;\\n}\\n\\n.cmd-snr-textbox {\\n width:100%;\\n box-sizing: border-box;\\n max-width:40ch;\\n }\\n\\n.cmd-snr-form select, .cmd-snr-form input{\\n margin: 0.2rem;\\n}\\n.cmd-snr-form legend{\\n background: #f5f5f5;\\n padding: 3px 6px;\\n}\\n\\n.cmd-snr-form { padding:20px; }\\n.cmd-snr-form .item { padding: 2px; margin:2px; }\\n.cmd-snr-form .item label { display:inline-block; width:100px; margin-left:5px; }\\n.cmd-snr-form .item input { display:inline-block; }\\n.cmd-snr-form .item select { display:inline-block; }\\n\\n/* only for relink checkbox on renaming tiddler */\\n.cmd-snr-form .item-relink { padding: 2px; margin:2px; }\\n\\n \",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/styles/tiddler-list\":{\"title\":\"$:/plugins/kookma/commander/styles/tiddler-list\",\"text\":\".kk-commander-tiddler-list {\\n\\tfont-size:small; \\n\\tborder-left:0.5px dotted grey;\\n\\tpadding-left:10px;\\n\\toverflow-y:auto;\\n\\tmax-width:100%;\\n/*\\tmax-height:$(height)$; */\\n}\\n\\n.kk-commander-columns1 { display:block; column-count:1; column-gap:1em; }\\n.kk-commander-columns2 { display:block; column-count:2; column-gap:1em; }\\n.kk-commander-columns3 { display:block; column-count:3; column-gap:1em; }\\n.kk-commander-columns4 { display:block; column-count:4; column-gap:1em; }\\n.kk-commander-columns5 { display:block; column-count:5; column-gap:1em; }\",\"tags\":\"$:/tags/Stylesheet\",\"type\":\"text/css\"},\"$:/plugins/kookma/commander/tag/macros/add-remove-replace\":{\"title\":\"$:/plugins/kookma/commander/tag/macros/add-remove-replace\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define add-new-tag-bulk(newTag:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__newTag__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"add-new-tag-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!tag\u003C__newTag__>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003C__newTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"new tag `$newTag$` added\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-old-tag-bulk(oldTag:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__oldTag__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-old-tag-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>tag\u003C__oldTag__>]\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003C__oldTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"old tag `$oldTag$` removed\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define replace-tag-bulk(oldTag:\\\"\\\", newTag:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\\n\u003C$list filter=\\\"[\u003C__oldTag__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[\u003C__newTag__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"replace-tag-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"[\u003CcurrentTiddler>tag\u003C__oldTag__>]\\\" variable=ignore\\n emptyMessage=\\\"\\\"\\\"\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"//has not tag `$oldTag$`. Operation ignored.//\\\" tidItem=\u003C\u003CcurrentTiddler>> /> \\\"\\\"\\\">\\n\u003C$fieldmangler>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003C__newTag__>> />\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003C__oldTag__>> />\\n\u003C/$fieldmangler>\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"tag `$oldTag$` replaced with `$newTag$`\\\"\\\"\\\" tidItem=\u003C\u003CcurrentTiddler>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/tag/ui\":{\"title\":\"$:/plugins/kookma/commander/tag/ui\",\"caption\":\"Tag\",\"list-after\":\"$:/plugins/kookma/commander/title/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/TagOps]!has[draft.of]]\\\" default:\\\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\\\" \\nclass:\\\"tc-vertical cmd-tab-wd\\\">>\\n\\n\"},\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\":{\"title\":\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\",\"caption\":\"Add remove tags\",\"tags\":\"$:/tags/Commander/TagOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">New tag\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/tag-add-remove/new\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" new tag\\\"/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add new tag\\n\u003C$macrocall $name=\\\"add-new-tag-bulk\\\" newTag={{$:/temp/commander/tag-add-remove/new}} />\\n\u003C/$button>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Old tag\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" tiddler=\\\"$:/temp/commander/tag-add-remove/old\\\" default=\\\"\\\" >\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]tags[]sort[]]-[\u003CworkingTag>]\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove old tag\\n\u003C$macrocall $name=\\\"remove-old-tag-bulk\\\" oldTag={{$:/temp/commander/tag-add-remove/old}} />\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/tag/uicomp/replace-tags\":{\"title\":\"$:/plugins/kookma/commander/tag/uicomp/replace-tags\",\"caption\":\"Replace tags\",\"list-after\":\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\",\"tags\":\"$:/tags/Commander/TagOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Old tag\u003C/label>\u003C$select class=\\\"cmd-select-wd\\\" tiddler=\\\"$:/temp/commander/replace-tags/old\\\" default=\\\"\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]tags[]sort[]]-[\u003CworkingTag>]\\\" >\\n\u003Coption>\u003C$view field=\\\"title\\\"/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">New tag\u003C/label>\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/replace-tags/new\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" new tag\\\"\\n/>\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Replace tag\\n\u003C$macrocall $name=\\\"replace-tag-bulk\\\" \\noldTag={{$:/temp/commander/replace-tags/old}} \\nnewTag={{$:/temp/commander/replace-tags/new}} />\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/template/base\":{\"title\":\"$:/plugins/kookma/commander/template/base\",\"caption\":\"base\",\"tags\":\"$:/tags/Commander/Template\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"This is a simple one!\"},\"$:/plugins/kookma/commander/template/doc\":{\"title\":\"$:/plugins/kookma/commander/template/doc\",\"caption\":\"documentation\",\"tags\":\"$:/tags/Commander/Template\",\"type\":\"text/vnd.tiddlywiki\",\"version\":\"beta\",\"text\":\"!! Introduction\\n\u003C\u003C\u003C\\nshort introduction\\n\u003C\u003C\u003C\\n\\n!! Content and parameters\\n\u003C\u003C\u003C\\nThe content, attributes and parameters\\n\\n|!Parameter |!Description |\\n|par1 |description |\\n|par2 |description |\\n\u003C\u003C\u003C\\n\\n!! Example i\\n\u003C\u003C\u003C\\nexample here\\n\u003C\u003C\u003C\\n\\n!! Example ii\\n\u003C\u003C\u003C\\nanother example here\\n\u003C\u003C\u003C\\n\\n!! References\\n\u003C\u003C\u003C\\n# one\\n# Two\\n\u003C\u003C\u003C\"},\"$:/plugins/kookma/commander/template/simple\":{\"title\":\"$:/plugins/kookma/commander/template/simple\",\"caption\":\"simple\",\"tags\":\"$:/tags/Commander/Template\",\"type\":\"text/vnd.tiddlywiki\",\"version\":\"beta\",\"text\":\"! Heading one\\nThis is sunsection i\\n\\n!! Heading two\\nThis is subsection ii.\\n\\n* one\\n* two\\n* three\\n\\n!!! Heading three\\nThis is subsction iii\\n\\n```\\nA sample code\\n```\\n\\n!! Sample table\\n|Table 1. This is caption|c\\n|Heading one|Heading Two|Heading Three|h\\n|r1|100|200|\\n|r2|02|03|\\n|r3|-1|-2|\\n\"},\"$:/plugins/kookma/commander/tiddler/macros/create\":{\"title\":\"$:/plugins/kookma/commander/tiddler/macros/create\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-create(msg:\\\"Tiddler existed, operation ignored\\\")\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\\\"$(newTitle)$\\\" $value=\\\"$msg$\\\" />\\n\\\\end\\n\\n\\\\define bulk-tiddler-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\\\"1\\\")\\n\u003C$list filter=\\\"[\u003C__baseTitle__>!is[blank]]\\\" variable=ignore>\\n\u003C\u003Ccreate-log-tiddler \\\"bulk-tiddler-creator\\\">>\\n\u003C$list filter=\\\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit\u003C__numberTiddler__>]\\\" variable=\\\"L1\\\">\\n\u003C$list filter=\\\"[\u003C__baseTitle__>addsuffix\u003CL1>]\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\" emptyMessage=\u003C\u003Clog-create>> >\\n\u003C$action-createtiddler $basetitle=\u003C\u003CnewTitle>> tags=\u003C\u003C__baseTags__>> /> \\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>> >\\n\u003C\u003Cadd-bulk-fields>>\\n\u003C/$vars>\\n\u003C\u003Clog-create \\\"Tiddler created\\\">>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define oneTid-with-template()\\n\u003C$tiddler tiddler=\u003C\u003CnewTitle>> >\\n \u003C$action-setfield $tiddler=\u003C\u003CmyTemplate>> title=\u003C\u003CcurrentTiddler>> /> \\n \u003C$fieldmangler>\\n \u003C$list filter=\\\"[enlist\u003CmyTags>]\\\" variable=newTag>\\n \u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CnewTag>> />\\n \u003C/$list>\u003C!--next remove extra tag used by template from new created tiddler-->\\n \u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/Commander/Template\\\" />\\n\u003C/$fieldmangler>\\n\u003C/$tiddler>\\n\\\\end\\n\\n\\n\\\\define bulk-tiddler-with-template-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\\\"1\\\", template:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__baseTitle__>!is[blank]]\\\" variable=ignore>\\n\u003C\u003Ccreate-log-tiddler \\\"bulk-tiddler-creator with template\\\">>\\n\u003C$vars datafieldsTid=\u003C\u003C__datafieldsTid__>>\\n myTags=\u003C\u003C__baseTags__>> \\n myTemplate=\u003C\u003C__template__>> >\\n\u003C$list filter=\\\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit\u003C__numberTiddler__>]\\\" variable=\\\"L1\\\">\\n\u003C$list filter=\\\"[\u003C__baseTitle__>addsuffix\u003CL1>]\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>!has[title]]\\\" variable=\\\"ignore\\\" emptyMessage=\u003C\u003Clog-create>> >\\n \u003C\u003ConeTid-with-template>>\\n \u003C\u003Cadd-bulk-fields>>\\n \u003C\u003Clog-create \\\"Tiddler created\\\">>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$vars>\\n\u003C/$list>\\n\\\\end\\n\\n\"},\"$:/plugins/kookma/commander/tiddler/macros/delete\":{\"title\":\"$:/plugins/kookma/commander/tiddler/macros/delete\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-delete-selectively(item, msg:\\\"Tiddler deleted\\\")\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\u003C\u003C__item__>> $value=\\\"$msg$\\\" />\\n\\\\end\\n\\n\\\\define delete-tiddlers-selective-bulk()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>limit[1]]\\\" variable=\\\"ignore\\\">\u003C!-- at least searchfilter shall return one tiddler-->\\n\u003C\u003Ccreate-log-tiddler \\\"delete-tiddler-selectively\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"Item\\\">\\n\u003C$action-deletetiddler $tiddler=\u003C\u003CItem>> />\\n\u003C$macrocall $name=\\\"log-delete-selectively\\\" item=\u003C\u003CItem>> />\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\"},\"$:/plugins/kookma/commander/tiddler/macros/export\":{\"title\":\"$:/plugins/kookma/commander/tiddler/macros/export\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define add-export-tag()\\n\u003C$list filter=\u003C\u003Csearchfilter>> >\\n\u003C$fieldmangler>\\n\u003C$list filter=\\\"[enlist{$(exportTagTid)$}]~[[exported]]\\\" variable=\\\"exportTag\\\" >\u003C!-- add all export tags-->\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CexportTag>> />\\n\u003C/$list>\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$fieldmangler>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-export-tag()\\n\u003C$list filter=\u003C\u003Csearchfilter>> >\\n\u003C$fieldmangler>\\n\u003C$list filter=\\\"[\u003CselectiveOpsTid>get[text]match[yes]]\\\" variable=ignore>\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CworkingTag>> />\\n\u003C/$list>\\n\u003C$list filter=\\\"[enlist{$(exportTagTid)$}]~[[exported]]\\\" variable=\\\"exportTag\\\" >\u003C!-- remove all export tags-->\\n\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\u003C\u003CexportTag>> />\\n\u003C/$list>\\n\u003C/$fieldmangler>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define log-export-selectively(msg:\\\"Tiddler exported\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"item\\\">\\n\u003C$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\u003C\u003Citem>> $value=\\\"$msg$\\\" />\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define commander-exportButton(exportFilter:\\\"[!is[system]sort[title]]\\\",lingoBase,baseFilename:\\\"tiddlers\\\")\\n\u003Cspan class=\\\"tc-popup-keep\\\">\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/popup/export\\\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=\u003C\u003Ctv-config-toolbar-class>> selectedClass=\\\"tc-selected\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/export-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$lingoBase$Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\u003C/span>\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/popup/export\\\">> type=\\\"popup\\\" position=\\\"below\\\" animate=\\\"yes\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\\\">\\n\u003C$set name=\\\"extension\\\" value={{!!extension}}>\\n\u003C$button class=\\\"tc-btn-invisible\\\">\\n\u003C\u003Ccreate-log-tiddler \\\"exportButton: bulk tiddlers exported\\\">>\\n\u003C$macrocall $name=\\\"log-export-selectively\\\"/>\u003C!--log any tiddler exported-->\\n\u003C\u003Cadd-export-tag>>\u003C!-- by Mohammad-->\\n\u003C$action-sendmessage $message=\\\"tm-download-file\\\" $param=\u003C\u003CcurrentTiddler>> exportFilter=\\\"\\\"\\\"$exportFilter$\\\"\\\"\\\" filename=\u003C\u003CexportButtonFilename \\\"\\\"\\\"$baseFilename$\\\"\\\"\\\">>/>\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cqualify \\\"$:/state/popup/export\\\">>/>\\n\u003C$transclude field=\\\"description\\\"/>\\n\u003C\u003Cremove-export-tag>>\u003C!-- by Mohammad-->\\n\u003C/$button>\\n\u003C/$set>\\n\u003C/$list>\\n\u003C/div>\\n\u003C/$reveal>\\n\\\\end\"},\"$:/plugins/kookma/commander/tiddler/ui\":{\"title\":\"$:/plugins/kookma/commander/tiddler/ui\",\"caption\":\"Tiddler\",\"list-before\":\"$:/plugins/kookma/commander/title/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/TiddlerOps]!has[draft.of]]\\\"\\ndefault:\\\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\"},\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\",\"caption\":\"Create tiddlers\",\"tags\":\"$:/tags/Commander/TiddlerOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003Clabel class=\\\"kk-cmd-label\\\">Base title\u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/temp/commander/tiddler-base-title\\\" \\n tag=\\\"input\\\" default=\\\"\\\"\\n placeholder=\\\" base title\\\" \\n class=\\\"cmd-txt-area\\\"/>\u003Cbr>\\n\\n\u003Clabel class=\\\"kk-cmd-label\\\">Tags\u003C/label>\\n\u003C$edit-text \\n tiddler=\\\"$:/temp/commander/tiddler-base-tags\\\" \\n tag=\\\"input\\\" default=\\\"\\\"\\n placeholder=\\\" tags\\\" \\n class=\\\"cmd-txt-area\\\"\\n/> \\n\\n\u003C!-- add interface for adding fields -->\\n\u003C$macrocall $name=\\\"add-more-fields-selective-ui\\\"\\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/createTiddler\\\"\\n stateTiddler=\\\"$:/state/commander/tiddler-addfields-status\\\" />\\n\\n\\n\u003C$checkbox \\n tiddler=\\\"$:/state/commander/tiddler-template-status\\\" \\n field=\\\"text\\\" \\n checked=\\\"use-template\\\" unchecked=\\\"no-template\\\"\\n default=\\\"no-template\\\"> \\n Use template?\\n\u003C/$checkbox>\\n\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/state/commander/tiddler-template-status\\\" text=\\\"use-template\\\" default=\\\"no-template\\\" >\\nTemplate\\n\u003C$select tiddler=\\\"$:/temp/commander/template-newtiddler\\\" \\n default=\\\"$:/plugins/kookma/commander/template/base\\\">\\n\u003C$list filter='[all[shadows+tiddlers]tag[$:/tags/Commander/Template]]'>\\n\u003Coption value=\u003C\u003CcurrentTiddler>> >\\n\u003C$view field=\\\"caption\\\">\u003C$view field=\\\"title\\\"/>\u003C/$view>\\n\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\u003C$button class=\\\"tc-btn-invisible\\\"> {{$:/core/images/edit-button}}\\n \u003C$action-sendmessage $message=\\\"tm-edit-tiddler\\\" \\n $param={{{ [[$:/temp/commander/template-newtiddler]get[text]]~[[$:/plugins/kookma/commander/template/base]] }}} />\\n\u003C/$button>\\n\\n\u003C/$reveal>\\n\\nNumber of tiddlers  \\n\u003C$select tiddler=\\\"$:/temp/commander/tiddler-base-number\\\" default='1'>\\n\u003C$list filter='[range[1,19, 1]] [range[20,50, 5]] [range[60,100,10]] [range[200,500,100]]'>\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$view field='title'/>\u003C/option>\\n\u003C/$list>\\n\u003C/$select>\\n\\n\u003C!-- call macros for create tiddlers -->\\n\u003C$reveal type=\\\"nomatch\\\" state=\\\"$:/state/commander/tiddler-template-status\\\" text=\\\"use-template\\\" default=\\\"no-template\\\">\\n \u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Create tiddlers\\n \u003C$macrocall $name=\\\"bulk-tiddler-creator\\\"\\n baseTitle={{$:/temp/commander/tiddler-base-title}}\\n baseTags={{$:/temp/commander/tiddler-base-tags}}\\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/createTiddler\\\"\\n numberTiddler={{$:/temp/commander/tiddler-base-number}} />\\n \u003C/$button>\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/state/commander/tiddler-template-status\\\" text=\\\"use-template\\\" default=\\\"no-template\\\">\\n \u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Create tiddlers\\n \u003C$macrocall $name=\\\"bulk-tiddler-with-template-creator\\\"\\n baseTitle={{$:/temp/commander/tiddler-base-title}}\\n baseTags={{$:/temp/commander/tiddler-base-tags}}\\n datafieldsTid=\\\"$:/temp/commander/tiddler/datafields/createTiddler\\\"\\n numberTiddler={{$:/temp/commander/tiddler-base-number}}\\n template={{$:/temp/commander/template-newtiddler}}/>\\n \u003C/$button>\\n\u003C/$reveal>\\n\"},\"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers\",\"caption\":\"Delete tiddlers\",\"list-after\":\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\",\"tags\":\"$:/tags/Commander/TiddlerOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$set name=numTids value={{{[subfilter\u003Csearchfilter>!is[missing]count[]] }}}>\\n\u003C$reveal type=\\\"match\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNo tiddlers is selected for deleteion!\\n\u003C/$reveal>\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\n\\nNumber of tiddlers selected for deletion: \u003C\u003CnumTids>>\u003Cbr>\\nNote that, the delete operation cannot be undone!!\\n\u003Cbr>\\n\\n\u003C$macrocall $name=\\\"compConfirmAction\\\"\\ncountFilter=\\\"[subfilter\u003Csearchfilter>]\\\"\\nactionMacro=\\\"delete-tiddlers-selective-bulk\\\"\\nstateTiddler=\\\"$:/state/commander/SelectiveDeleteDropdown\\\"\\n/>\\n\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\\n\"},\"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers\":{\"title\":\"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers\",\"caption\":\"Export tiddlers\",\"list-after\":\"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers\",\"tags\":\"$:/tags/Commander/TiddlerOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define export-tiddler-ui(baseFilename)\\n\u003C$set name=\\\"exportList\\\" filter=\u003C\u003Csearchfilter>> >\u003C!-- without this $SetWidget the exportButton does not work -->\\n\u003C$vars tv-config-toolbar-text=\\\"yes\\\" tv-config-toolbar-class=\\\"tc-button tt-button\\\">\\n\u003C$macrocall $name=\\\"commander-exportButton\\\" exportFilter=\u003C\u003CexportList>> lingoBase=\\\"$:/language/Buttons/ExportTiddlers/\\\" baseFilename=\\\"\\\"\\\"$baseFilename$\\\"\\\"\\\"/>\\n\u003C/$vars>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define exportFileName-and-Tags-ui() \\n\u003Clabel class=\\\"kk-cmd-label2\\\">Export filename\u003C/label>\u003C$edit-text tiddler=\\\"$:/temp/commander/exportFilename\\\" tag=input default=\\\"tiddlers\\\" placeholder=\\\"tiddlers\\\" class=\\\"cmd-txt-area\\\"/>\\n\u003Cbr>\\n\\n\u003Clabel class=\\\"kk-cmd-label2\\\">Export tags\u003C/label>\u003C$edit-text tiddler=\\\"$:/temp/commander/exportTag\\\" tag=input default=\\\"exported\\\" placeholder=\\\"exported\\\" class=\\\"cmd-txt-area\\\"/>\u003Cbr>\\n\\\\end\\n\\n\u003C$set name=numTids value={{{[subfilter\u003Csearchfilter>!is[missing]count[]] }}}>\\n\u003C$reveal type=\\\"match\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\nNo tiddlers is selected for export!\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"gt\\\" text=\\\"0\\\" default=\u003C\u003CnumTids>> >\\n\\nNumber of tiddlers selected for export: \u003C\u003CnumTids>>\u003Cbr>\\n\\n\u003C\u003CexportFileName-and-Tags-ui>>\\n\u003C$macrocall $name=\\\"export-tiddler-ui\\\" baseFilename={{{[[$:/temp/commander/exportFilename]get[text]]~[[tiddlers]]}}} />\\n\u003C/$reveal>\\n\u003C/$set>\\n\\n\"},\"$:/plugins/kookma/commander/title/macros/prefix\":{\"title\":\"$:/plugins/kookma/commander/title/macros/prefix\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-changePrefix(message, oldTitle, newTitle)\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"$message$. New title [[$newTitle$]]\\\"\\\"\\\" tidItem=\u003C\u003C__oldTitle__>> />\\n\\\\end\\n\\n\\\\define addPrefix-to-tiltle-bulk(prefix:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__prefix__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"addPrefix-to-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>addprefix[$prefix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changePrefix message=\\\"title prefix: `$prefix$` added\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define removePrefix-from-tiltle-bulk(prefix:\\\"\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__prefix__>!is[blank]]\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"removePrefix-from-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>removeprefix[$prefix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changePrefix message=\\\"title prefix: `$prefix$` removed\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list> \\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/macros/remove-cahrs-end\":{\"title\":\"$:/plugins/kookma/commander/title/macros/remove-cahrs-end\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define suffix-actions2()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[prefix\u003Csfx>]\\\" variable=\\\"item\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003Citem>> to=\u003C\u003Csfx>> />\\n \u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"characters removed from end. New title [[$(sfx)$]]\\\"\\\"\\\" tidItem=\u003C\u003Citem>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define makelink2() [[$(newTitle)$]]\\n\\n\\\\define generate-suffixes2(n:\\\"0\\\")\\n\u003C$list filter=\\\"[\u003C__n__>] -0\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\" variable=\\\"item\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003Citem>split[]butlast[$n$]join[]trim[]]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$text text=\u003C\u003Cmakelink2>>/>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-chars-from-end-tiltle-bulk(num:\\\"0\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__num__>] -0\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-chars-from-end-tiltle-bulk\\\">>\\n\u003C$vars n=\u003C\u003C__num__>> >\\n\u003C$wikify text=\\\"\\\"\\\"\u003C\u003Cgenerate-suffixes2 n:\\\"$num$\\\">>\\\"\\\"\\\" name=\\\"outputs\\\">\\n \u003C$list filter=\\\"[subfilter\u003Coutputs>]\\\" variable=\\\"sfx\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[prefix\u003Csfx>limit[2]count[]regexp[2]]\\\" emptyMessage=\u003C\u003Csuffix-actions2>> variable=\\\"cnt\\\">\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$wikify>\\n\u003C/$vars>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/macros/remove-cahrs-start\":{\"title\":\"$:/plugins/kookma/commander/title/macros/remove-cahrs-start\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define suffix-actions()\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[suffix\u003Csfx>]\\\" variable=\\\"item\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003Citem>> to=\u003C\u003Csfx>> />\\n \u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"characters removed from start. New title [[$(sfx)$]]\\\"\\\"\\\" tidItem=\u003C\u003Citem>> />\\n\u003C/$list>\\n\\\\end\\n\\n\\n\\\\define makelink() [[$(newTitle)$]]\\n\\n\\\\define generate-suffixes(n:\\\"0\\\")\\n\u003C$list filter=\\\"[\u003C__n__>] -0\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>has[title]]\\\" variable=\\\"item\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003Citem>split[]rest[$n$]join[]trim[]]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$text text=\u003C\u003Cmakelink>>/>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define remove-chars-from-begining-tiltle-bulk(num:\\\"0\\\")\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C$list filter=\\\"[\u003C__num__>] -0\\\" variable=null>\\n\u003C\u003Ccreate-log-tiddler \\\"remove-chars-from-begining-tiltle-bulk\\\">>\\n\u003C$vars n=\u003C\u003C__num__>> >\\n\u003C$wikify text=\\\"\\\"\\\"\u003C\u003Cgenerate-suffixes n:\\\"$num$\\\">>\\\"\\\"\\\" name=\\\"outputs\\\">\\n \u003C$list filter=\\\"[subfilter\u003Coutputs>]\\\" variable=\\\"sfx\\\">\\n \u003C$list filter=\\\"[subfilter\u003Csearchfilter>]+[suffix\u003Csfx>limit[2]count[]regexp[2]]\\\" \\n emptyMessage=\u003C\u003Csuffix-actions>> variable=\\\"cnt\\\">\\n \u003C/$list>\\n \u003C/$list>\\n\u003C/$wikify>\\n\u003C/$vars>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/macros/suffix\":{\"title\":\"$:/plugins/kookma/commander/title/macros/suffix\",\"tags\":\"$:/tags/Commander/Macro\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define log-changeSuffix(message, oldTitle, newTitle)\\n\u003C$macrocall $name=\\\"log-add-single-operation\\\" msg=\\\"\\\"\\\"$message$. New title [[$newTitle$]]\\\"\\\"\\\" tidItem=\u003C\u003C__oldTitle__>> />\\n\\\\end\\n\\n\\\\define addSuffix-to-tiltle-bulk(suffix:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__suffix__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"addSufffix-to-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>addsuffix[$suffix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changeSuffix message=\\\"title suffix: `$suffix$` added\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define removeSuffix-from-tiltle-bulk(suffix:\\\"\\\")\\n\u003C$list filter=\\\"[\u003C__suffix__>!is[blank]]\\\" variable=null>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>!is[missing]limit[1]]\\\" variable=ignore>\u003C!--check if filter is empty -->\\n\u003C\u003Ccreate-log-tiddler \\\"removeSuffix-from-tiltle-bulk\\\">>\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>]\\\">\\n\u003C$list filter=\\\"\\\"\\\"[\u003CcurrentTiddler>removesuffix[$suffix$]] -[\u003CcurrentTiddler>]\\\"\\\"\\\" variable=\\\"newTitle\\\">\\n\u003C$list filter=\\\"[\u003CnewTitle>] -[has[title]]\\\" variable=\\\"ignore\\\">\\n \u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from=\u003C\u003CcurrentTiddler>> to=\u003C\u003CnewTitle>> />\\n \u003C$macrocall $name=log-changeSuffix message=\\\"title suffix: `$suffix$` removed\\\" oldTitle=\u003C\u003CcurrentTiddler>> newTitle=\u003C\u003CnewTitle>> />\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$list>\\n\\\\end\\n\"},\"$:/plugins/kookma/commander/title/ui\":{\"title\":\"$:/plugins/kookma/commander/title/ui\",\"caption\":\"Title\",\"list-after\":\"$:/plugins/kookma/commander/tiddler/ui\",\"tags\":\"$:/tags/Commander\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C\u003Ctabs \\ntabsList:\\\"[all[shadows+tiddlers]tag[$:/tags/Commander/TitleOps]!has[draft.of]]\\\" \\ndefault:\\\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\\\"\\nclass:\\\"tc-vertical cmd-tab-colorful cmd-tab-wd\\\">>\\n\\n\u003C!-- relink checkbox for renaming title -->\\n{{$:/plugins/kookma/commander/config/relink}}\"},\"$:/plugins/kookma/commander/title/uicomp/add-remove-chars\":{\"title\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-chars\",\"caption\":\"Remove chars\",\"list-after\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix\",\"tags\":\"$:/tags/Commander/TitleOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\define rngcat() [range[0,$(minchars)$]] -0 \\n\\n\u003Clabel style=\\\"width:30ch;\\\">Number of chars\u003C/label>\\n\u003C$select tiddler=\\\"$:/temp/commander/title-remove-chars\\\" default=\\\"0\\\" class=\\\"cmd-sl\\\">\\n\u003C$list filter=\\\"[subfilter\u003Csearchfilter>length[]minall[]subtract[1]] -Infinity\\\" variable=\\\"minchars\\\">\\n\u003C$list filter=\u003C\u003Crngcat>> >\\n\u003Coption value=\u003C\u003CcurrentTiddler>>>\u003C$view field='title'/>\u003C/option>\\n\u003C/$list>\\n\u003C/$list>\\n\u003C/$select>\u003Cbr>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> First n characters\\n\u003C$macrocall \\n $name=\\\"remove-chars-from-begining-tiltle-bulk\\\" \\n num={{$:/temp/commander/title-remove-chars}} />\\n\u003C/$button>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Last n characters\\n\u003C$macrocall \\n $name=\\\"remove-chars-from-end-tiltle-bulk\\\" \\n num={{$:/temp/commander/title-remove-chars}} />\\n\u003C/$button>\\n\\n\\n\"},\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\":{\"title\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\",\"caption\":\"Add remove prefix\",\"tags\":\"$:/tags/Commander/TitleOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/title-prefix\\\"\\ntag=\\\"input\\\"\\ndefault=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\"\\nplaceholder=\\\" prefix\\\"\\n/> \u003Cbr>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add prefix\\n\u003C$macrocall \\n $name=\\\"addPrefix-to-tiltle-bulk\\\" \\n prefix={{$:/temp/commander/title-prefix}} \\n/>\\n\u003C/$button>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove prefix\\n\u003C$macrocall \\n $name=\\\"removePrefix-from-tiltle-bulk\\\" \\n prefix={{$:/temp/commander/title-prefix}} \\n/>\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix\":{\"title\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix\",\"caption\":\"Add remove suffix\",\"list-after\":\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\",\"tags\":\"$:/tags/Commander/TitleOps\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$edit-text\\ntiddler=\\\"$:/temp/commander/title-suffix\\\"\\ntag=\\\"input\\\" default=\\\"\\\"\\nclass=\\\"cmd-txt-area\\\" placeholder=\\\" suffix\\\" />\u003Cbr>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Add suffix\\n\u003C$macrocall \\n $name=\\\"addSuffix-to-tiltle-bulk\\\" \\n suffix={{$:/temp/commander/title-suffix}} />\\n\u003C/$button>\\n\\n\u003C$button class=\\\"cmd-btn cmd-btn-wd\\\"> Remove suffix\\n\u003C$macrocall \\n $name=\\\"removeSuffix-from-tiltle-bulk\\\" \\n suffix={{$:/temp/commander/title-suffix}} \\n/>\\n\u003C/$button>\\n\\n\"},\"$:/plugins/kookma/commander/viewtemplate/import\":{\"title\":\"$:/plugins/kookma/commander/viewtemplate/import\",\"tags\":\"$:/tags/ViewTemplate\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\u003C$list filter=\\\"[all[current]match[$:/Import]status[complete]]\\\" variable=\\\"null\\\">\\n\u003C$button actions=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/temp/commander/search-box\\\" text=\\\"[[$:/Import]links[]]\\\"/>\u003C$action-navigate $to=\\\"$:/Commander\\\"/>\\\"\\\"\\\">\\n{{$:/plugins/kookma/commander/images/commander.svg}} Batch edit\\n\u003C/$button>\\n\u003C/$list>\"},\"$:/Commander\":{\"title\":\"$:/Commander\",\"icon\":\"$:/plugins/kookma/commander/images/commander.svg\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"\\\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\\n{{$:/plugins/kookma/commander/search/ui}}\\n\u003C!-- Create the search filter based on searchbox and selective operation (if active) -->\\n\u003C$vars searchTerms={{{ [\u003CsearchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\\\"^\\\\[\\\">\u003C!-- this part checks the combo search and selective ops-->\\n\u003C$set name=\\\"filtertext\\\" filter=\\\"[\u003CsearchTerms>regexp\u003Cpattern>]\\\" value=\\\"[subfilter\u003CsearchTerms>]\\\" emptyValue=\\\"[!is[system]search\u003CsearchTerms>]\\\">\\n\u003C$set name=\\\"searchfilter\\\" filter=\\\"[\u003CselectiveOpsTid>get[text]match[yes]]\\\" \\n value= \\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!prefix[$:/state/commander]]+[tag\u003CworkingTag>]\\\"\\n emptyValue=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!prefix[$:/state/commander]]\\\" >\\n\u003Csmall style=\\\"margin-left:17ch;\\\">\u003Ci>\u003C$count filter=\\\"[subfilter\u003Cfiltertext>!prefix[$:/temp/commander]!prefix[$:/state/commander]!is[missing]]\\\" /> matches \u003C/i>\u003C/small>\\n\\n\u003C!-- Display search results and let selective operation -->\\n\u003C\u003Ccommander-slider title:\\\"$:/plugins/kookma/commander/search/selection\\\" default:\\\"open\\\">>\\n\\n\u003C!-- Display operation UIs-->\\n\u003C\u003Ctabs \\\"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\\\" default:\\\"$:/plugins/kookma/commander/tiddler/ui\\\">>\\n\\n\u003C/$set>\\n\u003C/$set>\\n\u003C$vars>\\n\\n---\\n\\n\u003C\u003Ccommander-slider title:\\\"$:/plugins/kookma/commander/log/ui\\\">>\\n\"},\"$:/language/Buttons/Commander/Hint\":{\"title\":\"$:/language/Buttons/Commander/Hint\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"Tiddler Commander\"},\"$:/language/Buttons/Commander/Caption\":{\"title\":\"$:/language/Buttons/Commander/Caption\",\"tags\":\"\",\"type\":\"text/vnd.tiddlywiki\",\"text\":\"commander\"}}}","type":"application/json","author":"Mohammad Rahmani","core-version":">=5.2.0","description":"Tiddler Commander","list":"readme license history","name":"Tiddler Commander","plugin-type":"plugin","source":"https://github.com/kookma/TW-Commander","tags":"$:/isAttachment $:/isEmbedded h2g2-001@yopmail.com _PLAYER_","title":"$:/plugins/kookma/commander","version":"2.1.7","modified":"20240328172916202"}, {"title":"$:/plugins/oeyoews/neotw-pwa","description":"让你的TiddlyWiki网页像app一样启动","author":"oeyoews","version":"0.0.2","core-version":">=5.3.0","type":"application/json","plugin-type":"plugin","name":"Neotw Pwa","dependents":"","list":"readme","text":"{\"tiddlers\":{\"$:/plugins/oeyoews/neotw-pwa/readme\":{\"title\":\"$:/plugins/oeyoews/neotw-pwa/readme\",\"description\":\"PWA\",\"name\":\"PWA\",\"text\":\"{{$:/languages/neotw-pwa/readme}}\\n\"},\"$:/favicon.ico\":{\"title\":\"$:/favicon.ico\",\"text\":\"AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAD4AAAC/AAAAvwAAAD4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAACFAAAA5gAAAP8AAAD/AAAA5gAAAIYAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABjAAAA0gAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/gAAANMAAABjAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAABCAAAAtgAAAPkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAAC2AAAAQgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAlAAAAO4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADuAAAAlAAAACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAcQAAANwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA3AAAAHEAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAATgAAAMIAAAD8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA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AP8AAACoAAAAAwAAAAQAAAAUAAAAFgAAADwAAADxAAAA/wAAAP8AAACfAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADtAAAAngAAAP0AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANYAAAAqAAAAgAAAANIAAADYAAAAoQAAAN4AAAD/AAAA/wAAAJ8AAAAAAAAAAAAAAAAAAAAAAAAAnwAAAP8AAADrAAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/AAAANcAAAD1AAAA/wAAAP8AAAD+AAAA+wAAAP8AAAD/AAAAnwAAAAAAAAAAAAAAAAAAAAAAAACYAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACYAAAAAAAAAAAAAAAAAAAAAAAAACsAAACiAAAA8wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADzAAAAogAAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAABOAAAAwgAAAPwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD8AAAAwgAAAE4AAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAcQAAANwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA3AAAAHEAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwAAAJQAAADuAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA7gAAAJQAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAEIAAAC2AAAA+QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAALYAAABCAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABjAAAA0wAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/gAAANIAAABjAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAhQAAAOYAAAD/AAAA/wAAAOYAAACFAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAPgAAAL8AAAC/AAAAPgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//gf///wD///wAP//wAA//4AAH/4AAAf4AAAB8AAAAPAAAADwAAAA8AAEAPAABADwAAAA8AQEAPAGbADwB/8A8A//APAP/+DwB4ng8AAB4PAAAADwAAAA8AAAAPAAAADwAAAA+AAAAf4AAAf/gAAf/8AAP//wAP///AP///4H/8=\",\"type\":\"image/x-icon\"},\"$:/manifest.json\":{\"text\":\"{\\n \\\"short_name\\\": \\\"TiddlyWiki5\\\",\\n \\\"name\\\": \\\"TiddlyWiki5\\\",\\n \\\"icons\\\": [\\n {\\n \\\"src\\\": \\\"/tiddlywiki.png\\\",\\n \\\"sizes\\\": \\\"512x512\\\",\\n \\\"type\\\": \\\"image/png\\\"\\n }\\n ],\\n \\\"id\\\": \\\"/\\\",\\n \\\"start_url\\\": \\\"/\\\",\\n \\\"background_color\\\": \\\"#F5F5EE\\\",\\n \\\"display\\\": \\\"standalone\\\",\\n \\\"scope\\\": \\\"/\\\",\\n \\\"theme_color\\\": \\\"#F5F5EE\\\",\\n \\\"description\\\": \\\"TiddlyWiki5\\\"\\n}\\n\",\"type\":\"application/json\",\"title\":\"$:/manifest.json\"},\"$:/tiddlywiki.png\":{\"title\":\"$:/tiddlywiki.png\",\"text\":\"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\",\"type\":\"image/png\"},\"$:/plugins/oeyoews/neotw-pwa/routes/get-manifest.js\":{\"title\":\"$:/plugins/oeyoews/neotw-pwa/routes/get-manifest.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/oeyoews/neotw-pwa/routes/get-manifest.js\\ntype: application/javascript\\nmodule-type: route\\n\\nGET /manifest.json\\n\\n\\\\*/\\n(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict';\\n\\n exports.method = 'GET';\\n\\n exports.path = /^\\\\/manifest.json$/;\\n\\n exports.handler = function (request, response, state) {\\n const data = state.wiki.getTiddlerText('$:/manifest.json');\\n state.sendResponse(\\n 200,\\n { 'Content-Type': 'application/json' },\\n data,\\n 'utf8',\\n );\\n };\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/plugins/oeyoews/neotw-pwa/routes/get-tiddlywiki-image.js\":{\"title\":\"$:/plugins/oeyoews/neotw-pwa/routes/get-tiddlywiki-image.js\",\"text\":\"/*\\\\\\ntitle: $:/plugins/oeyoews/neotw-pwa/routes/get-tiddlywiki-image.js\\ntype: application/javascript\\nmodule-type: route\\n\\nGET /tiddlywiki.png\\n\\n\\\\*/\\n(function () {\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n 'use strict';\\n\\n exports.method = 'GET';\\n\\n exports.path = /^\\\\/tiddlywiki.png$/;\\n\\n exports.handler = function (request, response, state) {\\n const data = state.wiki.getTiddlerText('$:/tiddlywiki.png');\\n state.sendResponse(200, { 'Content-Type': 'image/png' }, data, 'base64');\\n };\\n})();\\n\",\"type\":\"application/javascript\",\"module-type\":\"route\"},\"$:/plugins/oeyoews/neotw-pwa/icon\":{\"title\":\"$:/plugins/oeyoews/neotw-pwa/icon\",\"text\":\"\u003Csvg fill=\\\"none\\\" height=\\\"32\\\" viewBox=\\\"0 0 32 32\\\" width=\\\"32\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\u003Cpath d=\\\"m15.35 2.1425c.32-.19.71-.19 1.02 0l10.92 6.64c.26.16.42.45.42.75l-11.85 7.9675-11.86-7.86757v-.09993c0-.3.16-.59.42-.74z\\\" fill=\\\"#f3c07b\\\"/>\u003Cpath d=\\\"m15.856 16.2463 11.36-6.89997c.0498-.0297.1067-.04566.1647-.04626.058-.00061.1151.01418.1655.04284.0504.02867.0923.07016.1214.1203.0292.05014.0445.10711.0445.1651v12.33999c.0001.2972-.0762.5894-.2216.8486-.1453.2592-.3549.4765-.6085.6314l-10.6399 6.46c-.0271.0149-.0566.0251-.0871.0301-.0269.008-.0549.0117-.083.011-.1135.0318-.2322.0409-.3493.0267-.1171-.0143-.2301-.0516-.3327-.1097h.006l-2.396-10.8664z\\\" fill=\\\"#ffce7c\\\"/>\u003Cpath d=\\\"m15.86 29.6224v-13.37l-11.35-6.89997c-.23-.14-.51.02-.51.28v12.33997c0 .61.32 1.17.83 1.48l10.57 6.42c.2.13.46-.02.46-.25z\\\" fill=\\\"#e19747\\\"/>\u003Cpath d=\\\"m14.5 26.7824v-1.96c0-.23-.12-.44-.31-.56l-2.8-1.69c-.19-.11-.43.02-.43.24v1.96c0 .23.12.44.31.56l2.8 1.69c.19.11.43-.02.43-.24z\\\" fill=\\\"#d3d3d3\\\"/>\u003Cpath d=\\\"m11.76 16.5525v-2.79-1.7699l-3.27999-.2201v3.16c0 .1.05.2.14.26l2.67999 1.63c.2.11.46-.03.46-.27z\\\" fill=\\\"#8c5543\\\"/>\u003Cpath d=\\\"m20.34 4.5625-11.85999 7.21 3.27999 2 11.86-7.2z\\\" fill=\\\"#a56953\\\"/>\u003C/svg>\",\"type\":\"image/svg+xml\"},\"$:/languages/neotw-pwa/readme\":{\"title\":\"$:/languages/neotw-pwa/readme\",\"text\":\"\u003Cdiv class=\\\"prose max-w-none prose-indigo\\\">\\n\\n* [[Source|https://github.com/oeyoews/neotw/tree/main/plugins/oeyoews/neotw-pwa]]\\n\\n> 让你的TiddlyWiki网页像app一样启动\\n> make your TiddlyWiki web page start like an app\\n\\n> 注意: 额外提供了favicon.ico\\n\\n> 注意: 不要使用0.0.0.0:xxx, 请使用127.0.0.1:xxx\\n\\n> 由于tiddlywiki.png 使用了全透明, 中间的白色部分是透明的, 在iphone上看不到(全部自动补充成了黑色)\\n\\n* ref: https://github.com/oeyoews/tiddlywiki-starter-kit/commit/47b9530a2049a43b26f30094c77d8483282e59d7\\n\\n!! Setup\\n\\n\u003C$reveal type=\\\"nomatch\\\" state=\\\"$:/plugins/oeyoews/neotw-pwa/routes/get-manifest.js!!overwrite\\\" text=\\\"yes\\\">\\n\u003C$button class=\\\"bg-green-400 p-2\\\">\\n\u003C$action-setfield $tiddler=\\\"$:/plugins/oeyoews/neotw-pwa/routes/get-tiddlywiki-image.js\\\" $field=\\\"overwrite\\\" $value=\\\"yes\\\"/>\\n\u003C$action-setfield $tiddler=\\\"$:/plugins/oeyoews/neotw-pwa/routes/get-manifest.js\\\" $field=\\\"overwrite\\\" $value=\\\"yes\\\"/>\\nEnable PWA 📦\\n\u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"match\\\" state=\\\"$:/plugins/oeyoews/neotw-pwa/routes/get-manifest.js!!overwrite\\\" text=\\\"yes\\\">\\n\u003C$button class=\\\"bg-rose-400 p-2\\\">\\n\u003C$action-deletetiddler $filter=\\\"[prefix[$:/plugins/oeyoews/neotw-pwa]field:overwrite[yes]]\\\"/>\\nReset PWA ♻️\\n\u003C/$button>\\n\u003C/$reveal>\\n\\n> 设置后需要重启tw, 不是刷新浏览器\\n> After setting, you need to restart tw, not refresh the browser\\n\\n\u003C!-- * get-menifest.json 变成shadow, 注意使用startupaction 修改变成shadow 是无效的,shadows文件不会保存 -->\\n\\n> 下面是针对构建在线版本支持pwa的参数\\n> The following are parameters for building online version to support pwa\\n\\n```\\n\\\"--savetiddler\\\",\\n \\\"$:/manifest.json\\\",\\n \\\"manifest.json\\\",\\n\\\"--savetiddler\\\",\\n \\\"$:/tiddlywiki.png\\\",\\n \\\"tiddlywiki.png\\\",\\n```\\n\\n\u003C!-- !! Tools -->\\n\u003C!---->\\n\u003C!-- https://maskable.app/editor -->\\n\\n\u003C/div>\"},\"$:/plugins/oeyoews/neotw-pwa/meta\":{\"title\":\"$:/plugins/oeyoews/neotw-pwa/meta\",\"tags\":\"$:/tags/RawMarkupWikified/TopHead\",\"text\":\"`\u003Clink rel=\\\"manifest\\\" href=\\\"manifest.json\\\" />`\"}}}"}, {"author":"efurlanm","core-version":"","created":"NaNNaNNaNNaNNaNNaNNaN","dependents":"","description":"wrapper for the Mermaid diagramming library","list":"readme usage example license","modified":"NaNNaNNaNNaNNaNNaNNaN","name":"Mermaid","plugin-type":"plugin","tags":"","title":"$:/plugins/orange/mermaid-tw5","version":"0.3.7.1","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/orange/mermaid-tw5/example\":{\"title\":\"$:/plugins/orange/mermaid-tw5/example\",\"text\":\"See full examples on the website http://mermaid-js.github.io/mermaid\\n\\nNotation\\n\\n```\\n%%{init: {'theme': 'default'}}%%\\ngraph LR\\n A[a node with text]-->B(a node with rounded corners)\\n A--no links---C((a circle))\\n B-->D{a diamond}\\n C==>|arrow and text|D\\n C-. back to.->A\\n```\\n\\nResults\\n\\n\u003C$mermaid text=\\\"\\n%%{init: {'theme': 'default'}}%%\\n graph LR\\n A[a node with text]-->B(a node with rounded corners)\\n A--no links---C((a circle))\\n B-->D{a diamond}\\n C==>|arrow and text|D\\n C-. back to.->A\\n\\\">\u003C/$mermaid>\\n\\nMore advanced usage is possible if you use the mermaid parser rather than the ``\u003C$mermaid>``. Below are two more examples from the [[mermaid.js website|http://mermaid-js.github.io/mermaid]]\\n\\nBuilt-in themes: 'default', 'base', 'forest', 'dark', 'neutral'\\n\"},\"$:/plugins/orange/mermaid-tw5/license\":{\"title\":\"$:/plugins/orange/mermaid-tw5/license\",\"text\":\"The MIT License (MIT)\\n\\nCopyright (c) 2022 E Furlan\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\nDependencies:\\n\\n- mermaid.js. License can be found at https://github.com/mermaid-js/mermaid/blob/master/LICENSE\\n- mermaid-tw5 by Nathaniel Jones. License can be found at https://github.com/gt6796c/mermaid-tw5/blob/master/license.tid\\n\",\"type\":\"text/plain\"},\"$:/plugins/orange/mermaid-tw5/mermaid.min.js\":{\"title\":\"$:/plugins/orange/mermaid-tw5/mermaid.min.js\",\"text\":\"(function(ln,Wr){typeof exports==\\\"object\\\"&&typeof module\u003C\\\"u\\\"?module.exports=Wr():typeof define==\\\"function\\\"&&define.amd?define(Wr):(ln=typeof globalThis\u003C\\\"u\\\"?globalThis:ln||self,ln.mermaid=Wr())})(this,function(){\\\"use strict\\\";var XY=Object.defineProperty;var KY=(ln,Wr,Bi)=>Wr in ln?XY(ln,Wr,{enumerable:!0,configurable:!0,writable:!0,value:Bi}):ln[Wr]=Bi;var za=(ln,Wr,Bi)=>(KY(ln,typeof Wr!=\\\"symbol\\\"?Wr+\\\"\\\":Wr,Bi),Bi);var ln=typeof globalThis\u003C\\\"u\\\"?globalThis:typeof window\u003C\\\"u\\\"?window:typeof global\u003C\\\"u\\\"?global:typeof self\u003C\\\"u\\\"?self:{};function Wr(t){throw new Error('Could not dynamically require \\\"'+t+'\\\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Bi={exports:{}};(function(t,e){(function(r,n){t.exports=n()})(ln,function(){var r;function n(){return r.apply(null,arguments)}function i(h){return h instanceof Array||Object.prototype.toString.call(h)===\\\"[object Array]\\\"}function s(h){return h!=null&&Object.prototype.toString.call(h)===\\\"[object Object]\\\"}function a(h,y){return Object.prototype.hasOwnProperty.call(h,y)}function o(h){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(h).length===0;for(var y in h)if(a(h,y))return;return 1}function l(h){return h===void 0}function u(h){return typeof h==\\\"number\\\"||Object.prototype.toString.call(h)===\\\"[object Number]\\\"}function d(h){return h instanceof Date||Object.prototype.toString.call(h)===\\\"[object Date]\\\"}function f(h,y){for(var _=[],S=h.length,R=0;R\u003CS;++R)_.push(y(h[R],R));return _}function p(h,y){for(var _ in y)a(y,_)&&(h[_]=y[_]);return a(y,\\\"toString\\\")&&(h.toString=y.toString),a(y,\\\"valueOf\\\")&&(h.valueOf=y.valueOf),h}function g(h,y,_,S){return xr(h,y,_,S,!0).utc()}function b(h){return h._pf==null&&(h._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),h._pf}function k(h){if(h._isValid==null){var y=b(h),_=L.call(y.parsedDateParts,function(S){return S!=null}),_=!isNaN(h._d.getTime())&&y.overflow\u003C0&&!y.empty&&!y.invalidEra&&!y.invalidMonth&&!y.invalidWeekday&&!y.weekdayMismatch&&!y.nullInput&&!y.invalidFormat&&!y.userInvalidated&&(!y.meridiem||y.meridiem&&_);if(h._strict&&(_=_&&y.charsLeftOver===0&&y.unusedTokens.length===0&&y.bigHour===void 0),Object.isFrozen!=null&&Object.isFrozen(h))return _;h._isValid=_}return h._isValid}function T(h){var y=g(NaN);return h!=null?p(b(y),h):b(y).userInvalidated=!0,y}var L=Array.prototype.some||function(h){for(var y=Object(this),_=y.length>>>0,S=0;S\u003C_;S++)if(S in y&&h.call(this,y[S],S,y))return!0;return!1},E=n.momentProperties=[],I=!1;function V(h,y){var _,S,R,it=E.length;if(l(y._isAMomentObject)||(h._isAMomentObject=y._isAMomentObject),l(y._i)||(h._i=y._i),l(y._f)||(h._f=y._f),l(y._l)||(h._l=y._l),l(y._strict)||(h._strict=y._strict),l(y._tzm)||(h._tzm=y._tzm),l(y._isUTC)||(h._isUTC=y._isUTC),l(y._offset)||(h._offset=y._offset),l(y._pf)||(h._pf=b(y)),l(y._locale)||(h._locale=y._locale),0\u003Cit)for(_=0;_\u003Cit;_++)l(R=y[S=E[_]])||(h[S]=R);return h}function H(h){V(this,h),this._d=new Date(h._d!=null?h._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),I===!1&&(I=!0,n.updateOffset(this),I=!1)}function G(h){return h instanceof H||h!=null&&h._isAMomentObject!=null}function Y(h){n.suppressDeprecationWarnings===!1&&typeof console\u003C\\\"u\\\"&&console.warn&&console.warn(\\\"Deprecation warning: \\\"+h)}function W(h,y){var _=!0;return p(function(){if(n.deprecationHandler!=null&&n.deprecationHandler(null,h),_){for(var S,R,it=[],mt=arguments.length,Ct=0;Ct\u003Cmt;Ct++){if(S=\\\"\\\",typeof arguments[Ct]==\\\"object\\\"){for(R in S+=`\\n[`+Ct+\\\"] \\\",arguments[0])a(arguments[0],R)&&(S+=R+\\\": \\\"+arguments[0][R]+\\\", \\\");S=S.slice(0,-2)}else S=arguments[Ct];it.push(S)}Y(h+`\\nArguments: `+Array.prototype.slice.call(it).join(\\\"\\\")+`\\n`+new Error().stack),_=!1}return y.apply(this,arguments)},y)}var N={};function D(h,y){n.deprecationHandler!=null&&n.deprecationHandler(h,y),N[h]||(Y(y),N[h]=!0)}function w(h){return typeof Function\u003C\\\"u\\\"&&h instanceof Function||Object.prototype.toString.call(h)===\\\"[object Function]\\\"}function v(h,y){var _,S=p({},h);for(_ in y)a(y,_)&&(s(h[_])&&s(y[_])?(S[_]={},p(S[_],h[_]),p(S[_],y[_])):y[_]!=null?S[_]=y[_]:delete S[_]);for(_ in h)a(h,_)&&!a(y,_)&&s(h[_])&&(S[_]=p({},S[_]));return S}function M(h){h!=null&&this.set(h)}n.suppressDeprecationWarnings=!1,n.deprecationHandler=null;var m=Object.keys||function(h){var y,_=[];for(y in h)a(h,y)&&_.push(y);return _};function Q(h,y,_){var S=\\\"\\\"+Math.abs(h);return(0\u003C=h?_?\\\"+\\\":\\\"\\\":\\\"-\\\")+Math.pow(10,Math.max(0,y-S.length)).toString().substr(1)+S}var x=/(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ct=/(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Dt={},kt={};function j(h,y,_,S){var R=typeof S==\\\"string\\\"?function(){return this[S]()}:S;h&&(kt[h]=R),y&&(kt[y[0]]=function(){return Q(R.apply(this,arguments),y[1],y[2])}),_&&(kt[_]=function(){return this.localeData().ordinal(R.apply(this,arguments),h)})}function ot(h,y){return h.isValid()?(y=rt(y,h.localeData()),Dt[y]=Dt[y]||function(_){for(var S,R=_.match(x),it=0,mt=R.length;it\u003Cmt;it++)kt[R[it]]?R[it]=kt[R[it]]:R[it]=(S=R[it]).match(/\\\\[[\\\\s\\\\S]/)?S.replace(/^\\\\[|\\\\]$/g,\\\"\\\"):S.replace(/\\\\\\\\/g,\\\"\\\");return function(Ct){for(var Pt=\\\"\\\",It=0;It\u003Cmt;It++)Pt+=w(R[It])?R[It].call(Ct,_):R[It];return Pt}}(y),Dt[y](h)):h.localeData().invalidDate()}function rt(h,y){var _=5;function S(R){return y.longDateFormat(R)||R}for(ct.lastIndex=0;0\u003C=_&&ct.test(h);)h=h.replace(ct,S),ct.lastIndex=0,--_;return h}var nt={};function ut(h,y){var _=h.toLowerCase();nt[_]=nt[_+\\\"s\\\"]=nt[y]=h}function _t(h){return typeof h==\\\"string\\\"?nt[h]||nt[h.toLowerCase()]:void 0}function K(h){var y,_,S={};for(_ in h)a(h,_)&&(y=_t(_))&&(S[y]=h[_]);return S}var Ot={};function P(h,y){Ot[h]=y}function z(h){return h%4==0&&h%100!=0||h%400==0}function X(h){return h\u003C0?Math.ceil(h)||0:Math.floor(h)}function F(y){var y=+y,_=0;return _=y!=0&&isFinite(y)?X(y):_}function O(h,y){return function(_){return _!=null?(J(this,h,_),n.updateOffset(this,y),this):A(this,h)}}function A(h,y){return h.isValid()?h._d[\\\"get\\\"+(h._isUTC?\\\"UTC\\\":\\\"\\\")+y]():NaN}function J(h,y,_){h.isValid()&&!isNaN(_)&&(y===\\\"FullYear\\\"&&z(h.year())&&h.month()===1&&h.date()===29?(_=F(_),h._d[\\\"set\\\"+(h._isUTC?\\\"UTC\\\":\\\"\\\")+y](_,h.month(),dt(_,h.month()))):h._d[\\\"set\\\"+(h._isUTC?\\\"UTC\\\":\\\"\\\")+y](_))}var C=/\\\\d/,ce=/\\\\d\\\\d/,ht=/\\\\d{3}/,Ps=/\\\\d{4}/,Ji=/[+-]?\\\\d{6}/,U=/\\\\d\\\\d?/,Yt=/\\\\d\\\\d\\\\d\\\\d?/,et=/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d?/,Mt=/\\\\d{1,3}/,ts=/\\\\d{1,4}/,Qi=/[+-]?\\\\d{1,6}/,Tt=/\\\\d+/,gt=/[+-]?\\\\d+/,Et=/Z|[+-]\\\\d\\\\d:?\\\\d\\\\d/gi,wt=/Z|[+-]\\\\d\\\\d(?::?\\\\d\\\\d)?/gi,pt=/[0-9]{0,256}['a-z\\\\u00A0-\\\\u05FF\\\\u0700-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFF07\\\\uFF10-\\\\uFFEF]{1,256}|[\\\\u0600-\\\\u06FF\\\\/]{1,256}(\\\\s*?[\\\\u0600-\\\\u06FF]{1,256}){1,2}/i;function st(h,y,_){jt[h]=w(y)?y:function(S,R){return S&&_?_:y}}function le(h,y){return a(jt,h)?jt[h](y._strict,y._locale):new RegExp(Xt(h.replace(\\\"\\\\\\\\\\\",\\\"\\\").replace(/\\\\\\\\(\\\\[)|\\\\\\\\(\\\\])|\\\\[([^\\\\]\\\\[]*)\\\\]|\\\\\\\\(.)/g,function(_,S,R,it,mt){return S||R||it||mt})))}function Xt(h){return h.replace(/[-\\\\/\\\\\\\\^$*+?.()|[\\\\]{}]/g,\\\"\\\\\\\\$&\\\")}var jt={},Kt={};function Gt(h,y){var _,S,R=y;for(typeof h==\\\"string\\\"&&(h=[h]),u(y)&&(R=function(it,mt){mt[y]=F(it)}),S=h.length,_=0;_\u003CS;_++)Kt[h[_]]=R}function Ee(h,y){Gt(h,function(_,S,R,it){R._w=R._w||{},y(_,R._w,R,it)})}var Ht,Vt=0,Ft=1,xt=2,ft=3,Lt=4,bt=5,Ut=6,at=7,ie=8;function dt(h,y){if(isNaN(h)||isNaN(y))return NaN;var _=(y%(_=12)+_)%_;return h+=(y-_)/12,_==1?z(h)?29:28:31-_%7%2}Ht=Array.prototype.indexOf||function(h){for(var y=0;y\u003Cthis.length;++y)if(this[y]===h)return y;return-1},j(\\\"M\\\",[\\\"MM\\\",2],\\\"Mo\\\",function(){return this.month()+1}),j(\\\"MMM\\\",0,0,function(h){return this.localeData().monthsShort(this,h)}),j(\\\"MMMM\\\",0,0,function(h){return this.localeData().months(this,h)}),ut(\\\"month\\\",\\\"M\\\"),P(\\\"month\\\",8),st(\\\"M\\\",U),st(\\\"MM\\\",U,ce),st(\\\"MMM\\\",function(h,y){return y.monthsShortRegex(h)}),st(\\\"MMMM\\\",function(h,y){return y.monthsRegex(h)}),Gt([\\\"M\\\",\\\"MM\\\"],function(h,y){y[Ft]=F(h)-1}),Gt([\\\"MMM\\\",\\\"MMMM\\\"],function(h,y,_,S){S=_._locale.monthsParse(h,S,_._strict),S!=null?y[Ft]=S:b(_).invalidMonth=h});var ee=\\\"January_February_March_April_May_June_July_August_September_October_November_December\\\".split(\\\"_\\\"),fe=\\\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\\\".split(\\\"_\\\"),be=/D[oD]?(\\\\[[^\\\\[\\\\]]*\\\\]|\\\\s)+MMMM?/,_e=pt,ke=pt;function $t(h,y){var _;if(h.isValid()){if(typeof y==\\\"string\\\"){if(/^\\\\d+$/.test(y))y=F(y);else if(!u(y=h.localeData().monthsParse(y)))return}_=Math.min(h.date(),dt(h.year(),y)),h._d[\\\"set\\\"+(h._isUTC?\\\"UTC\\\":\\\"\\\")+\\\"Month\\\"](y,_)}}function se(h){return h!=null?($t(this,h),n.updateOffset(this,!0),this):A(this,\\\"Month\\\")}function ye(){function h(mt,Ct){return Ct.length-mt.length}for(var y,_=[],S=[],R=[],it=0;it\u003C12;it++)y=g([2e3,it]),_.push(this.monthsShort(y,\\\"\\\")),S.push(this.months(y,\\\"\\\")),R.push(this.months(y,\\\"\\\")),R.push(this.monthsShort(y,\\\"\\\"));for(_.sort(h),S.sort(h),R.sort(h),it=0;it\u003C12;it++)_[it]=Xt(_[it]),S[it]=Xt(S[it]);for(it=0;it\u003C24;it++)R[it]=Xt(R[it]);this._monthsRegex=new RegExp(\\\"^(\\\"+R.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\\\"^(\\\"+S.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._monthsShortStrictRegex=new RegExp(\\\"^(\\\"+_.join(\\\"|\\\")+\\\")\\\",\\\"i\\\")}function Jt(h){return z(h)?366:365}j(\\\"Y\\\",0,0,function(){var h=this.year();return h\u003C=9999?Q(h,4):\\\"+\\\"+h}),j(0,[\\\"YY\\\",2],0,function(){return this.year()%100}),j(0,[\\\"YYYY\\\",4],0,\\\"year\\\"),j(0,[\\\"YYYYY\\\",5],0,\\\"year\\\"),j(0,[\\\"YYYYYY\\\",6,!0],0,\\\"year\\\"),ut(\\\"year\\\",\\\"y\\\"),P(\\\"year\\\",1),st(\\\"Y\\\",gt),st(\\\"YY\\\",U,ce),st(\\\"YYYY\\\",ts,Ps),st(\\\"YYYYY\\\",Qi,Ji),st(\\\"YYYYYY\\\",Qi,Ji),Gt([\\\"YYYYY\\\",\\\"YYYYYY\\\"],Vt),Gt(\\\"YYYY\\\",function(h,y){y[Vt]=h.length===2?n.parseTwoDigitYear(h):F(h)}),Gt(\\\"YY\\\",function(h,y){y[Vt]=n.parseTwoDigitYear(h)}),Gt(\\\"Y\\\",function(h,y){y[Vt]=parseInt(h,10)}),n.parseTwoDigitYear=function(h){return F(h)+(68\u003CF(h)?1900:2e3)};var Ku=O(\\\"FullYear\\\",!0);function Nn(h,y,_,S,R,it,mt){var Ct;return h\u003C100&&0\u003C=h?(Ct=new Date(h+400,y,_,S,R,it,mt),isFinite(Ct.getFullYear())&&Ct.setFullYear(h)):Ct=new Date(h,y,_,S,R,it,mt),Ct}function Xr(h){var y;return h\u003C100&&0\u003C=h?((y=Array.prototype.slice.call(arguments))[0]=h+400,y=new Date(Date.UTC.apply(null,y)),isFinite(y.getUTCFullYear())&&y.setUTCFullYear(h)):y=new Date(Date.UTC.apply(null,arguments)),y}function De(h,y,_){return _=7+y-_,_-(7+Xr(h,0,_).getUTCDay()-y)%7-1}function ae(h,mt,Ct,S,R){var it,mt=1+7*(mt-1)+(7+Ct-S)%7+De(h,S,R),Ct=mt\u003C=0?Jt(it=h-1)+mt:mt>Jt(h)?(it=h+1,mt-Jt(h)):(it=h,mt);return{year:it,dayOfYear:Ct}}function Be(h,y,_){var S,R,it=De(h.year(),y,_),it=Math.floor((h.dayOfYear()-it-1)/7)+1;return it\u003C1?S=it+Re(R=h.year()-1,y,_):it>Re(h.year(),y,_)?(S=it-Re(h.year(),y,_),R=h.year()+1):(R=h.year(),S=it),{week:S,year:R}}function Re(h,R,_){var S=De(h,R,_),R=De(h+1,R,_);return(Jt(h)-S+R)/7}j(\\\"w\\\",[\\\"ww\\\",2],\\\"wo\\\",\\\"week\\\"),j(\\\"W\\\",[\\\"WW\\\",2],\\\"Wo\\\",\\\"isoWeek\\\"),ut(\\\"week\\\",\\\"w\\\"),ut(\\\"isoWeek\\\",\\\"W\\\"),P(\\\"week\\\",5),P(\\\"isoWeek\\\",5),st(\\\"w\\\",U),st(\\\"ww\\\",U,ce),st(\\\"W\\\",U),st(\\\"WW\\\",U,ce),Ee([\\\"w\\\",\\\"ww\\\",\\\"W\\\",\\\"WW\\\"],function(h,y,_,S){y[S.substr(0,1)]=F(h)});function Pe(h,y){return h.slice(y,7).concat(h.slice(0,y))}j(\\\"d\\\",0,\\\"do\\\",\\\"day\\\"),j(\\\"dd\\\",0,0,function(h){return this.localeData().weekdaysMin(this,h)}),j(\\\"ddd\\\",0,0,function(h){return this.localeData().weekdaysShort(this,h)}),j(\\\"dddd\\\",0,0,function(h){return this.localeData().weekdays(this,h)}),j(\\\"e\\\",0,0,\\\"weekday\\\"),j(\\\"E\\\",0,0,\\\"isoWeekday\\\"),ut(\\\"day\\\",\\\"d\\\"),ut(\\\"weekday\\\",\\\"e\\\"),ut(\\\"isoWeekday\\\",\\\"E\\\"),P(\\\"day\\\",11),P(\\\"weekday\\\",11),P(\\\"isoWeekday\\\",11),st(\\\"d\\\",U),st(\\\"e\\\",U),st(\\\"E\\\",U),st(\\\"dd\\\",function(h,y){return y.weekdaysMinRegex(h)}),st(\\\"ddd\\\",function(h,y){return y.weekdaysShortRegex(h)}),st(\\\"dddd\\\",function(h,y){return y.weekdaysRegex(h)}),Ee([\\\"dd\\\",\\\"ddd\\\",\\\"dddd\\\"],function(h,y,_,S){S=_._locale.weekdaysParse(h,S,_._strict),S!=null?y.d=S:b(_).invalidWeekday=h}),Ee([\\\"d\\\",\\\"e\\\",\\\"E\\\"],function(h,y,_,S){y[S]=F(h)});var Ye=\\\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\\\".split(\\\"_\\\"),Ie=\\\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\\\".split(\\\"_\\\"),$e=\\\"Su_Mo_Tu_We_Th_Fr_Sa\\\".split(\\\"_\\\"),ar=pt,zt=pt,Z=pt;function At(){function h(It,ue){return ue.length-It.length}for(var y,_,S,R=[],it=[],mt=[],Ct=[],Pt=0;Pt\u003C7;Pt++)S=g([2e3,1]).day(Pt),y=Xt(this.weekdaysMin(S,\\\"\\\")),_=Xt(this.weekdaysShort(S,\\\"\\\")),S=Xt(this.weekdays(S,\\\"\\\")),R.push(y),it.push(_),mt.push(S),Ct.push(y),Ct.push(_),Ct.push(S);R.sort(h),it.sort(h),mt.sort(h),Ct.sort(h),this._weekdaysRegex=new RegExp(\\\"^(\\\"+Ct.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\\\"^(\\\"+mt.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._weekdaysShortStrictRegex=new RegExp(\\\"^(\\\"+it.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._weekdaysMinStrictRegex=new RegExp(\\\"^(\\\"+R.join(\\\"|\\\")+\\\")\\\",\\\"i\\\")}function Nt(){return this.hours()%12||12}function pe(h,y){j(h,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),y)})}function Me(h,y){return y._meridiemParse}j(\\\"H\\\",[\\\"HH\\\",2],0,\\\"hour\\\"),j(\\\"h\\\",[\\\"hh\\\",2],0,Nt),j(\\\"k\\\",[\\\"kk\\\",2],0,function(){return this.hours()||24}),j(\\\"hmm\\\",0,0,function(){return\\\"\\\"+Nt.apply(this)+Q(this.minutes(),2)}),j(\\\"hmmss\\\",0,0,function(){return\\\"\\\"+Nt.apply(this)+Q(this.minutes(),2)+Q(this.seconds(),2)}),j(\\\"Hmm\\\",0,0,function(){return\\\"\\\"+this.hours()+Q(this.minutes(),2)}),j(\\\"Hmmss\\\",0,0,function(){return\\\"\\\"+this.hours()+Q(this.minutes(),2)+Q(this.seconds(),2)}),pe(\\\"a\\\",!0),pe(\\\"A\\\",!1),ut(\\\"hour\\\",\\\"h\\\"),P(\\\"hour\\\",13),st(\\\"a\\\",Me),st(\\\"A\\\",Me),st(\\\"H\\\",U),st(\\\"h\\\",U),st(\\\"k\\\",U),st(\\\"HH\\\",U,ce),st(\\\"hh\\\",U,ce),st(\\\"kk\\\",U,ce),st(\\\"hmm\\\",Yt),st(\\\"hmmss\\\",et),st(\\\"Hmm\\\",Yt),st(\\\"Hmmss\\\",et),Gt([\\\"H\\\",\\\"HH\\\"],ft),Gt([\\\"k\\\",\\\"kk\\\"],function(h,y,_){h=F(h),y[ft]=h===24?0:h}),Gt([\\\"a\\\",\\\"A\\\"],function(h,y,_){_._isPm=_._locale.isPM(h),_._meridiem=h}),Gt([\\\"h\\\",\\\"hh\\\"],function(h,y,_){y[ft]=F(h),b(_).bigHour=!0}),Gt(\\\"hmm\\\",function(h,y,_){var S=h.length-2;y[ft]=F(h.substr(0,S)),y[Lt]=F(h.substr(S)),b(_).bigHour=!0}),Gt(\\\"hmmss\\\",function(h,y,_){var S=h.length-4,R=h.length-2;y[ft]=F(h.substr(0,S)),y[Lt]=F(h.substr(S,2)),y[bt]=F(h.substr(R)),b(_).bigHour=!0}),Gt(\\\"Hmm\\\",function(h,y,_){var S=h.length-2;y[ft]=F(h.substr(0,S)),y[Lt]=F(h.substr(S))}),Gt(\\\"Hmmss\\\",function(h,y,_){var S=h.length-4,R=h.length-2;y[ft]=F(h.substr(0,S)),y[Lt]=F(h.substr(S,2)),y[bt]=F(h.substr(R))}),pt=O(\\\"Hours\\\",!0);var Le,We={calendar:{sameDay:\\\"[Today at] LT\\\",nextDay:\\\"[Tomorrow at] LT\\\",nextWeek:\\\"dddd [at] LT\\\",lastDay:\\\"[Yesterday at] LT\\\",lastWeek:\\\"[Last] dddd [at] LT\\\",sameElse:\\\"L\\\"},longDateFormat:{LTS:\\\"h:mm:ss A\\\",LT:\\\"h:mm A\\\",L:\\\"MM/DD/YYYY\\\",LL:\\\"MMMM D, YYYY\\\",LLL:\\\"MMMM D, YYYY h:mm A\\\",LLLL:\\\"dddd, MMMM D, YYYY h:mm A\\\"},invalidDate:\\\"Invalid date\\\",ordinal:\\\"%d\\\",dayOfMonthOrdinalParse:/\\\\d{1,2}/,relativeTime:{future:\\\"in %s\\\",past:\\\"%s ago\\\",s:\\\"a few seconds\\\",ss:\\\"%d seconds\\\",m:\\\"a minute\\\",mm:\\\"%d minutes\\\",h:\\\"an hour\\\",hh:\\\"%d hours\\\",d:\\\"a day\\\",dd:\\\"%d days\\\",w:\\\"a week\\\",ww:\\\"%d weeks\\\",M:\\\"a month\\\",MM:\\\"%d months\\\",y:\\\"a year\\\",yy:\\\"%d years\\\"},months:ee,monthsShort:fe,week:{dow:0,doy:6},weekdays:Ye,weekdaysMin:$e,weekdaysShort:Ie,meridiemParse:/[ap]\\\\.?m?\\\\.?/i},ve={},Ne={};function Xi(h){return h&&h.toLowerCase().replace(\\\"_\\\",\\\"-\\\")}function Ki(h){for(var y,_,S,R,it=0;it\u003Ch.length;){for(y=(R=Xi(h[it]).split(\\\"-\\\")).length,_=(_=Xi(h[it+1]))?_.split(\\\"-\\\"):null;0\u003Cy;){if(S=zr(R.slice(0,y).join(\\\"-\\\")))return S;if(_&&_.length>=y&&function(mt,Ct){for(var Pt=Math.min(mt.length,Ct.length),It=0;It\u003CPt;It+=1)if(mt[It]!==Ct[It])return It;return Pt}(R,_)>=y-1)break;y--}it++}return Le}function zr(h){var y;if(ve[h]===void 0&&!0&&t&&t.exports&&h.match(\\\"^[^/\\\\\\\\\\\\\\\\]*$\\\")!=null)try{y=Le._abbr,Wr(\\\"./locale/\\\"+h),qt(y)}catch{ve[h]=null}return ve[h]}function qt(h,y){return h&&((y=l(y)?oe(h):te(h,y))?Le=y:typeof console\u003C\\\"u\\\"&&console.warn&&console.warn(\\\"Locale \\\"+h+\\\" not found. Did you forget to load it?\\\")),Le._abbr}function te(h,y){if(y===null)return delete ve[h],null;var _,S=We;if(y.abbr=h,ve[h]!=null)D(\\\"defineLocaleOverride\\\",\\\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\\\"),S=ve[h]._config;else if(y.parentLocale!=null)if(ve[y.parentLocale]!=null)S=ve[y.parentLocale]._config;else{if((_=zr(y.parentLocale))==null)return Ne[y.parentLocale]||(Ne[y.parentLocale]=[]),Ne[y.parentLocale].push({name:h,config:y}),null;S=_._config}return ve[h]=new M(v(S,y)),Ne[h]&&Ne[h].forEach(function(R){te(R.name,R.config)}),qt(h),ve[h]}function oe(h){var y;if(!(h=h&&h._locale&&h._locale._abbr?h._locale._abbr:h))return Le;if(!i(h)){if(y=zr(h))return y;h=[h]}return Ki(h)}function Rt(h){var y=h._a;return y&&b(h).overflow===-2&&(y=y[Ft]\u003C0||11\u003Cy[Ft]?Ft:y[xt]\u003C1||y[xt]>dt(y[Vt],y[Ft])?xt:y[ft]\u003C0||24\u003Cy[ft]||y[ft]===24&&(y[Lt]!==0||y[bt]!==0||y[Ut]!==0)?ft:y[Lt]\u003C0||59\u003Cy[Lt]?Lt:y[bt]\u003C0||59\u003Cy[bt]?bt:y[Ut]\u003C0||999\u003Cy[Ut]?Ut:-1,b(h)._overflowDayOfYear&&(y\u003CVt||xt\u003Cy)&&(y=xt),b(h)._overflowWeeks&&y===-1&&(y=at),b(h)._overflowWeekday&&y===-1&&(y=ie),b(h).overflow=y),h}var Ve=/^\\\\s*((?:[+-]\\\\d{6}|\\\\d{4})-(?:\\\\d\\\\d-\\\\d\\\\d|W\\\\d\\\\d-\\\\d|W\\\\d\\\\d|\\\\d\\\\d\\\\d|\\\\d\\\\d))(?:(T| )(\\\\d\\\\d(?::\\\\d\\\\d(?::\\\\d\\\\d(?:[.,]\\\\d+)?)?)?)([+-]\\\\d\\\\d(?::?\\\\d\\\\d)?|\\\\s*Z)?)?$/,q=/^\\\\s*((?:[+-]\\\\d{6}|\\\\d{4})(?:\\\\d\\\\d\\\\d\\\\d|W\\\\d\\\\d\\\\d|W\\\\d\\\\d|\\\\d\\\\d\\\\d|\\\\d\\\\d|))(?:(T| )(\\\\d\\\\d(?:\\\\d\\\\d(?:\\\\d\\\\d(?:[.,]\\\\d+)?)?)?)([+-]\\\\d\\\\d(?::?\\\\d\\\\d)?|\\\\s*Z)?)?$/,Is=/Z|[+-]\\\\d\\\\d(?::?\\\\d\\\\d)?/,tt=[[\\\"YYYYYY-MM-DD\\\",/[+-]\\\\d{6}-\\\\d\\\\d-\\\\d\\\\d/],[\\\"YYYY-MM-DD\\\",/\\\\d{4}-\\\\d\\\\d-\\\\d\\\\d/],[\\\"GGGG-[W]WW-E\\\",/\\\\d{4}-W\\\\d\\\\d-\\\\d/],[\\\"GGGG-[W]WW\\\",/\\\\d{4}-W\\\\d\\\\d/,!1],[\\\"YYYY-DDD\\\",/\\\\d{4}-\\\\d{3}/],[\\\"YYYY-MM\\\",/\\\\d{4}-\\\\d\\\\d/,!1],[\\\"YYYYYYMMDD\\\",/[+-]\\\\d{10}/],[\\\"YYYYMMDD\\\",/\\\\d{8}/],[\\\"GGGG[W]WWE\\\",/\\\\d{4}W\\\\d{3}/],[\\\"GGGG[W]WW\\\",/\\\\d{4}W\\\\d{2}/,!1],[\\\"YYYYDDD\\\",/\\\\d{7}/],[\\\"YYYYMM\\\",/\\\\d{6}/,!1],[\\\"YYYY\\\",/\\\\d{4}/,!1]],Sr=[[\\\"HH:mm:ss.SSSS\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d\\\\.\\\\d+/],[\\\"HH:mm:ss,SSSS\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d,\\\\d+/],[\\\"HH:mm:ss\\\",/\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d/],[\\\"HH:mm\\\",/\\\\d\\\\d:\\\\d\\\\d/],[\\\"HHmmss.SSSS\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d\\\\.\\\\d+/],[\\\"HHmmss,SSSS\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d,\\\\d+/],[\\\"HHmmss\\\",/\\\\d\\\\d\\\\d\\\\d\\\\d\\\\d/],[\\\"HHmm\\\",/\\\\d\\\\d\\\\d\\\\d/],[\\\"HH\\\",/\\\\d\\\\d/]],Wu=/^\\\\/?Date\\\\((-?\\\\d+)/i,Rd=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\\\s)?(\\\\d{1,2})\\\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\\\s(\\\\d{2,4})\\\\s(\\\\d\\\\d):(\\\\d\\\\d)(?::(\\\\d\\\\d))?\\\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\\\d{4}))$/,Hu={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Gu(h){var y,_,S,R,it,mt,Pt=h._i,Ct=Ve.exec(Pt)||q.exec(Pt),Pt=tt.length,It=Sr.length;if(Ct){for(b(h).iso=!0,y=0,_=Pt;y\u003C_;y++)if(tt[y][1].exec(Ct[1])){R=tt[y][0],S=tt[y][2]!==!1;break}if(R==null)h._isValid=!1;else{if(Ct[3]){for(y=0,_=It;y\u003C_;y++)if(Sr[y][1].exec(Ct[3])){it=(Ct[2]||\\\" \\\")+Sr[y][0];break}if(it==null)return void(h._isValid=!1)}if(S||it==null){if(Ct[4]){if(!Is.exec(Ct[4]))return void(h._isValid=!1);mt=\\\"Z\\\"}h._f=R+(it||\\\"\\\")+(mt||\\\"\\\"),ll(h)}else h._isValid=!1}}else h._isValid=!1}function or(h,y,_,S,R,it){return h=[function(mt){mt=parseInt(mt,10);{if(mt\u003C=49)return 2e3+mt;if(mt\u003C=999)return 1900+mt}return mt}(h),fe.indexOf(y),parseInt(_,10),parseInt(S,10),parseInt(R,10)],it&&h.push(parseInt(it,10)),h}function Zn(h){var y,_,S,R,it=Rd.exec(h._i.replace(/\\\\([^()]*\\\\)|[\\\\n\\\\t]/g,\\\" \\\").replace(/(\\\\s\\\\s+)/g,\\\" \\\").replace(/^\\\\s\\\\s*/,\\\"\\\").replace(/\\\\s\\\\s*$/,\\\"\\\"));it?(y=or(it[4],it[3],it[2],it[5],it[6],it[7]),_=it[1],S=y,R=h,_&&Ie.indexOf(_)!==new Date(S[0],S[1],S[2]).getDay()?(b(R).weekdayMismatch=!0,R._isValid=!1):(h._a=y,h._tzm=(_=it[8],S=it[9],R=it[10],_?Hu[_]:S?0:60*(((_=parseInt(R,10))-(S=_%100))/100)+S),h._d=Xr.apply(null,h._a),h._d.setUTCMinutes(h._d.getUTCMinutes()-h._tzm),b(h).rfc2822=!0)):h._isValid=!1}function Qn(h,y,_){return h!=null?h:y!=null?y:_}function Os(h){var y,_,S,R,it,mt,Ct,Pt,It,ue,re,He=[];if(!h._d){for(S=h,R=new Date(n.now()),_=S._useUTC?[R.getUTCFullYear(),R.getUTCMonth(),R.getUTCDate()]:[R.getFullYear(),R.getMonth(),R.getDate()],h._w&&h._a[xt]==null&&h._a[Ft]==null&&((R=(S=h)._w).GG!=null||R.W!=null||R.E!=null?(Pt=1,It=4,it=Qn(R.GG,S._a[Vt],Be(Se(),1,4).year),mt=Qn(R.W,1),((Ct=Qn(R.E,1))\u003C1||7\u003CCt)&&(ue=!0)):(Pt=S._locale._week.dow,It=S._locale._week.doy,re=Be(Se(),Pt,It),it=Qn(R.gg,S._a[Vt],re.year),mt=Qn(R.w,re.week),R.d!=null?((Ct=R.d)\u003C0||6\u003CCt)&&(ue=!0):R.e!=null?(Ct=R.e+Pt,(R.e\u003C0||6\u003CR.e)&&(ue=!0)):Ct=Pt),mt\u003C1||mt>Re(it,Pt,It)?b(S)._overflowWeeks=!0:ue!=null?b(S)._overflowWeekday=!0:(re=ae(it,mt,Ct,Pt,It),S._a[Vt]=re.year,S._dayOfYear=re.dayOfYear)),h._dayOfYear!=null&&(R=Qn(h._a[Vt],_[Vt]),(h._dayOfYear>Jt(R)||h._dayOfYear===0)&&(b(h)._overflowDayOfYear=!0),ue=Xr(R,0,h._dayOfYear),h._a[Ft]=ue.getUTCMonth(),h._a[xt]=ue.getUTCDate()),y=0;y\u003C3&&h._a[y]==null;++y)h._a[y]=He[y]=_[y];for(;y\u003C7;y++)h._a[y]=He[y]=h._a[y]==null?y===2?1:0:h._a[y];h._a[ft]===24&&h._a[Lt]===0&&h._a[bt]===0&&h._a[Ut]===0&&(h._nextDay=!0,h._a[ft]=0),h._d=(h._useUTC?Xr:Nn).apply(null,He),it=h._useUTC?h._d.getUTCDay():h._d.getDay(),h._tzm!=null&&h._d.setUTCMinutes(h._d.getUTCMinutes()-h._tzm),h._nextDay&&(h._a[ft]=24),h._w&&h._w.d!==void 0&&h._w.d!==it&&(b(h).weekdayMismatch=!0)}}function ll(h){if(h._f===n.ISO_8601)Gu(h);else if(h._f===n.RFC_2822)Zn(h);else{h._a=[],b(h).empty=!0;for(var y,_,S,R,it,mt=\\\"\\\"+h._i,Ct=mt.length,Pt=0,It=rt(h._f,h._locale).match(x)||[],ue=It.length,re=0;re\u003Cue;re++)_=It[re],(y=(mt.match(le(_,h))||[])[0])&&(0\u003C(S=mt.substr(0,mt.indexOf(y))).length&&b(h).unusedInput.push(S),mt=mt.slice(mt.indexOf(y)+y.length),Pt+=y.length),kt[_]?(y?b(h).empty=!1:b(h).unusedTokens.push(_),S=_,it=h,(R=y)!=null&&a(Kt,S)&&Kt[S](R,it._a,it,S)):h._strict&&!y&&b(h).unusedTokens.push(_);b(h).charsLeftOver=Ct-Pt,0\u003Cmt.length&&b(h).unusedInput.push(mt),h._a[ft]\u003C=12&&b(h).bigHour===!0&&0\u003Ch._a[ft]&&(b(h).bigHour=void 0),b(h).parsedDateParts=h._a.slice(0),b(h).meridiem=h._meridiem,h._a[ft]=function(He,lr,On){return On==null?lr:He.meridiemHour!=null?He.meridiemHour(lr,On):He.isPM!=null?((He=He.isPM(On))&&lr\u003C12&&(lr+=12),lr=He||lr!==12?lr:0):lr}(h._locale,h._a[ft],h._meridiem),(Ct=b(h).era)!==null&&(h._a[Vt]=h._locale.erasConvertYear(Ct,h._a[Vt])),Os(h),Rt(h)}}function qu(h){var y,_,S,R=h._i,it=h._f;return h._locale=h._locale||oe(h._l),R===null||it===void 0&&R===\\\"\\\"?T({nullInput:!0}):(typeof R==\\\"string\\\"&&(h._i=R=h._locale.preparse(R)),G(R)?new H(Rt(R)):(d(R)?h._d=R:i(it)?function(mt){var Ct,Pt,It,ue,re,He,lr=!1,On=mt._f.length;if(On===0)return b(mt).invalidFormat=!0,mt._d=new Date(NaN);for(ue=0;ue\u003COn;ue++)re=0,He=!1,Ct=V({},mt),mt._useUTC!=null&&(Ct._useUTC=mt._useUTC),Ct._f=mt._f[ue],ll(Ct),k(Ct)&&(He=!0),re=(re+=b(Ct).charsLeftOver)+10*b(Ct).unusedTokens.length,b(Ct).score=re,lr?re\u003CIt&&(It=re,Pt=Ct):(It==null||re\u003CIt||He)&&(It=re,Pt=Ct,He&&(lr=!0));p(mt,Pt||Ct)}(h):it?ll(h):l(it=(R=h)._i)?R._d=new Date(n.now()):d(it)?R._d=new Date(it.valueOf()):typeof it==\\\"string\\\"?(_=R,(y=Wu.exec(_._i))!==null?_._d=new Date(+y[1]):(Gu(_),_._isValid===!1&&(delete _._isValid,Zn(_),_._isValid===!1&&(delete _._isValid,_._strict?_._isValid=!1:n.createFromInputFallback(_))))):i(it)?(R._a=f(it.slice(0),function(mt){return parseInt(mt,10)}),Os(R)):s(it)?(y=R)._d||(S=(_=K(y._i)).day===void 0?_.date:_.day,y._a=f([_.year,_.month,S,_.hour,_.minute,_.second,_.millisecond],function(mt){return mt&&parseInt(mt,10)}),Os(y)):u(it)?R._d=new Date(it):n.createFromInputFallback(R),k(h)||(h._d=null),h))}function xr(h,y,_,S,R){var it={};return y!==!0&&y!==!1||(S=y,y=void 0),_!==!0&&_!==!1||(S=_,_=void 0),(s(h)&&o(h)||i(h)&&h.length===0)&&(h=void 0),it._isAMomentObject=!0,it._useUTC=it._isUTC=R,it._l=_,it._i=h,it._f=y,it._strict=S,(R=new H(Rt(qu(R=it))))._nextDay&&(R.add(1,\\\"d\\\"),R._nextDay=void 0),R}function Se(h,y,_,S){return xr(h,y,_,S,!1)}n.createFromInputFallback=W(\\\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\\\",function(h){h._d=new Date(h._i+(h._useUTC?\\\" UTC\\\":\\\"\\\"))}),n.ISO_8601=function(){},n.RFC_2822=function(){},Yt=W(\\\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\\\",function(){var h=Se.apply(null,arguments);return this.isValid()&&h.isValid()?h\u003Cthis?this:h:T()}),et=W(\\\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\\\",function(){var h=Se.apply(null,arguments);return this.isValid()&&h.isValid()?this\u003Ch?this:h:T()});function Or(h,y){var _,S;if(!(y=y.length===1&&i(y[0])?y[0]:y).length)return Se();for(_=y[0],S=1;S\u003Cy.length;++S)y[S].isValid()&&!y[S][h](_)||(_=y[S]);return _}var Ai=[\\\"year\\\",\\\"quarter\\\",\\\"month\\\",\\\"week\\\",\\\"day\\\",\\\"hour\\\",\\\"minute\\\",\\\"second\\\",\\\"millisecond\\\"];function Bn(y){var y=K(y),_=y.year||0,S=y.quarter||0,R=y.month||0,it=y.week||y.isoWeek||0,mt=y.day||0,Ct=y.hour||0,Pt=y.minute||0,It=y.second||0,ue=y.millisecond||0;this._isValid=function(re){var He,lr,On=!1,Wd=Ai.length;for(He in re)if(a(re,He)&&(Ht.call(Ai,He)===-1||re[He]!=null&&isNaN(re[He])))return!1;for(lr=0;lr\u003CWd;++lr)if(re[Ai[lr]]){if(On)return!1;parseFloat(re[Ai[lr]])!==F(re[Ai[lr]])&&(On=!0)}return!0}(y),this._milliseconds=+ue+1e3*It+6e4*Pt+1e3*Ct*60*60,this._days=+mt+7*it,this._months=+R+3*S+12*_,this._data={},this._locale=oe(),this._bubble()}function Li(h){return h instanceof Bn}function Kr(h){return h\u003C0?-1*Math.round(-1*h):Math.round(h)}function cl(h,y){j(h,0,0,function(){var _=this.utcOffset(),S=\\\"+\\\";return _\u003C0&&(_=-_,S=\\\"-\\\"),S+Q(~~(_/60),2)+y+Q(~~_%60,2)})}cl(\\\"Z\\\",\\\":\\\"),cl(\\\"ZZ\\\",\\\"\\\"),st(\\\"Z\\\",wt),st(\\\"ZZ\\\",wt),Gt([\\\"Z\\\",\\\"ZZ\\\"],function(h,y,_){_._useUTC=!0,_._tzm=Rs(wt,h)});var Pa=/([\\\\+\\\\-]|\\\\d\\\\d)/gi;function Rs(h,_){var _=(_||\\\"\\\").match(h);return _===null?null:(_=60*(h=((_[_.length-1]||[])+\\\"\\\").match(Pa)||[\\\"-\\\",0,0])[1]+F(h[2]))===0?0:h[0]===\\\"+\\\"?_:-_}function Zr(h,y){var _;return y._isUTC?(y=y.clone(),_=(G(h)||d(h)?h:Se(h)).valueOf()-y.valueOf(),y._d.setTime(y._d.valueOf()+_),n.updateOffset(y,!1),y):Se(h).local()}function Fd(h){return-Math.round(h._d.getTimezoneOffset())}function cb(){return!!this.isValid()&&this._isUTC&&this._offset===0}n.updateOffset=function(){};var UY=/^(-|\\\\+)?(?:(\\\\d*)[. ])?(\\\\d+):(\\\\d+)(?::(\\\\d+)(\\\\.\\\\d*)?)?$/,zY=/^(-|\\\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function In(h,y){var _,S=h,R=null;return Li(h)?S={ms:h._milliseconds,d:h._days,M:h._months}:u(h)||!isNaN(+h)?(S={},y?S[y]=+h:S.milliseconds=+h):(R=UY.exec(h))?(_=R[1]===\\\"-\\\"?-1:1,S={y:0,d:F(R[xt])*_,h:F(R[ft])*_,m:F(R[Lt])*_,s:F(R[bt])*_,ms:F(Kr(1e3*R[Ut]))*_}):(R=zY.exec(h))?(_=R[1]===\\\"-\\\"?-1:1,S={y:Fs(R[2],_),M:Fs(R[3],_),w:Fs(R[4],_),d:Fs(R[5],_),h:Fs(R[6],_),m:Fs(R[7],_),s:Fs(R[8],_)}):S==null?S={}:typeof S==\\\"object\\\"&&(\\\"from\\\"in S||\\\"to\\\"in S)&&(y=function(it,mt){var Ct;return!it.isValid()||!mt.isValid()?{milliseconds:0,months:0}:(mt=Zr(mt,it),it.isBefore(mt)?Ct=ub(it,mt):((Ct=ub(mt,it)).milliseconds=-Ct.milliseconds,Ct.months=-Ct.months),Ct)}(Se(S.from),Se(S.to)),(S={}).ms=y.milliseconds,S.M=y.months),R=new Bn(S),Li(h)&&a(h,\\\"_locale\\\")&&(R._locale=h._locale),Li(h)&&a(h,\\\"_isValid\\\")&&(R._isValid=h._isValid),R}function Fs(h,y){return h=h&&parseFloat(h.replace(\\\",\\\",\\\".\\\")),(isNaN(h)?0:h)*y}function ub(h,y){var _={};return _.months=y.month()-h.month()+12*(y.year()-h.year()),h.clone().add(_.months,\\\"M\\\").isAfter(y)&&--_.months,_.milliseconds=+y-+h.clone().add(_.months,\\\"M\\\"),_}function hb(h,y){return function(_,S){var R;return S===null||isNaN(+S)||(D(y,\\\"moment().\\\"+y+\\\"(period, number) is deprecated. Please use moment().\\\"+y+\\\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\\\"),R=_,_=S,S=R),db(this,In(_,S),h),this}}function db(h,mt,_,S){var R=mt._milliseconds,it=Kr(mt._days),mt=Kr(mt._months);h.isValid()&&(S=S==null||S,mt&&$t(h,A(h,\\\"Month\\\")+mt*_),it&&J(h,\\\"Date\\\",A(h,\\\"Date\\\")+it*_),R&&h._d.setTime(h._d.valueOf()+R*_),S&&n.updateOffset(h,it||mt))}In.fn=Bn.prototype,In.invalid=function(){return In(NaN)},ee=hb(1,\\\"add\\\"),Ye=hb(-1,\\\"subtract\\\");function fb(h){return typeof h==\\\"string\\\"||h instanceof String}function WY(h){return G(h)||d(h)||fb(h)||u(h)||function(y){var _=i(y),S=!1;return _&&(S=y.filter(function(R){return!u(R)&&fb(y)}).length===0),_&&S}(h)||function(y){var _,S,R=s(y)&&!o(y),it=!1,mt=[\\\"years\\\",\\\"year\\\",\\\"y\\\",\\\"months\\\",\\\"month\\\",\\\"M\\\",\\\"days\\\",\\\"day\\\",\\\"d\\\",\\\"dates\\\",\\\"date\\\",\\\"D\\\",\\\"hours\\\",\\\"hour\\\",\\\"h\\\",\\\"minutes\\\",\\\"minute\\\",\\\"m\\\",\\\"seconds\\\",\\\"second\\\",\\\"s\\\",\\\"milliseconds\\\",\\\"millisecond\\\",\\\"ms\\\"],Ct=mt.length;for(_=0;_\u003CCt;_+=1)S=mt[_],it=it||a(y,S);return R&&it}(h)||h==null}function ju(h,R){if(h.date()\u003CR.date())return-ju(R,h);var _=12*(R.year()-h.year())+(R.month()-h.month()),S=h.clone().add(_,\\\"months\\\"),R=R-S\u003C0?(R-S)/(S-h.clone().add(_-1,\\\"months\\\")):(R-S)/(h.clone().add(1+_,\\\"months\\\")-S);return-(_+R)||0}function pb(h){return h===void 0?this._locale._abbr:((h=oe(h))!=null&&(this._locale=h),this)}n.defaultFormat=\\\"YYYY-MM-DDTHH:mm:ssZ\\\",n.defaultFormatUtc=\\\"YYYY-MM-DDTHH:mm:ss[Z]\\\",$e=W(\\\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\\\",function(h){return h===void 0?this.localeData():this.locale(h)});function gb(){return this._locale}var yb=126227808e5;function Ya(h,y){return(h%y+y)%y}function mb(h,y,_){return h\u003C100&&0\u003C=h?new Date(h+400,y,_)-yb:new Date(h,y,_).valueOf()}function bb(h,y,_){return h\u003C100&&0\u003C=h?Date.UTC(h+400,y,_)-yb:Date.UTC(h,y,_)}function Pd(h,y){return y.erasAbbrRegex(h)}function Yd(){for(var h=[],y=[],_=[],S=[],R=this.eras(),it=0,mt=R.length;it\u003Cmt;++it)y.push(Xt(R[it].name)),h.push(Xt(R[it].abbr)),_.push(Xt(R[it].narrow)),S.push(Xt(R[it].name)),S.push(Xt(R[it].abbr)),S.push(Xt(R[it].narrow));this._erasRegex=new RegExp(\\\"^(\\\"+S.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._erasNameRegex=new RegExp(\\\"^(\\\"+y.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._erasAbbrRegex=new RegExp(\\\"^(\\\"+h.join(\\\"|\\\")+\\\")\\\",\\\"i\\\"),this._erasNarrowRegex=new RegExp(\\\"^(\\\"+_.join(\\\"|\\\")+\\\")\\\",\\\"i\\\")}function $u(h,y){j(0,[h,h.length],0,y)}function _b(h,y,_,S,R){var it;return h==null?Be(this,S,R).year:(it=Re(h,S,R),function(mt,Ct,Pt,It,ue){return mt=ae(mt,Ct,Pt,It,ue),Ct=Xr(mt.year,0,mt.dayOfYear),this.year(Ct.getUTCFullYear()),this.month(Ct.getUTCMonth()),this.date(Ct.getUTCDate()),this}.call(this,h,y=it\u003Cy?it:y,_,S,R))}j(\\\"N\\\",0,0,\\\"eraAbbr\\\"),j(\\\"NN\\\",0,0,\\\"eraAbbr\\\"),j(\\\"NNN\\\",0,0,\\\"eraAbbr\\\"),j(\\\"NNNN\\\",0,0,\\\"eraName\\\"),j(\\\"NNNNN\\\",0,0,\\\"eraNarrow\\\"),j(\\\"y\\\",[\\\"y\\\",1],\\\"yo\\\",\\\"eraYear\\\"),j(\\\"y\\\",[\\\"yy\\\",2],0,\\\"eraYear\\\"),j(\\\"y\\\",[\\\"yyy\\\",3],0,\\\"eraYear\\\"),j(\\\"y\\\",[\\\"yyyy\\\",4],0,\\\"eraYear\\\"),st(\\\"N\\\",Pd),st(\\\"NN\\\",Pd),st(\\\"NNN\\\",Pd),st(\\\"NNNN\\\",function(h,y){return y.erasNameRegex(h)}),st(\\\"NNNNN\\\",function(h,y){return y.erasNarrowRegex(h)}),Gt([\\\"N\\\",\\\"NN\\\",\\\"NNN\\\",\\\"NNNN\\\",\\\"NNNNN\\\"],function(h,y,_,S){S=_._locale.erasParse(h,S,_._strict),S?b(_).era=S:b(_).invalidEra=h}),st(\\\"y\\\",Tt),st(\\\"yy\\\",Tt),st(\\\"yyy\\\",Tt),st(\\\"yyyy\\\",Tt),st(\\\"yo\\\",function(h,y){return y._eraYearOrdinalRegex||Tt}),Gt([\\\"y\\\",\\\"yy\\\",\\\"yyy\\\",\\\"yyyy\\\"],Vt),Gt([\\\"yo\\\"],function(h,y,_,S){var R;_._locale._eraYearOrdinalRegex&&(R=h.match(_._locale._eraYearOrdinalRegex)),_._locale.eraYearOrdinalParse?y[Vt]=_._locale.eraYearOrdinalParse(h,R):y[Vt]=parseInt(h,10)}),j(0,[\\\"gg\\\",2],0,function(){return this.weekYear()%100}),j(0,[\\\"GG\\\",2],0,function(){return this.isoWeekYear()%100}),$u(\\\"gggg\\\",\\\"weekYear\\\"),$u(\\\"ggggg\\\",\\\"weekYear\\\"),$u(\\\"GGGG\\\",\\\"isoWeekYear\\\"),$u(\\\"GGGGG\\\",\\\"isoWeekYear\\\"),ut(\\\"weekYear\\\",\\\"gg\\\"),ut(\\\"isoWeekYear\\\",\\\"GG\\\"),P(\\\"weekYear\\\",1),P(\\\"isoWeekYear\\\",1),st(\\\"G\\\",gt),st(\\\"g\\\",gt),st(\\\"GG\\\",U,ce),st(\\\"gg\\\",U,ce),st(\\\"GGGG\\\",ts,Ps),st(\\\"gggg\\\",ts,Ps),st(\\\"GGGGG\\\",Qi,Ji),st(\\\"ggggg\\\",Qi,Ji),Ee([\\\"gggg\\\",\\\"ggggg\\\",\\\"GGGG\\\",\\\"GGGGG\\\"],function(h,y,_,S){y[S.substr(0,2)]=F(h)}),Ee([\\\"gg\\\",\\\"GG\\\"],function(h,y,_,S){y[S]=n.parseTwoDigitYear(h)}),j(\\\"Q\\\",0,\\\"Qo\\\",\\\"quarter\\\"),ut(\\\"quarter\\\",\\\"Q\\\"),P(\\\"quarter\\\",7),st(\\\"Q\\\",C),Gt(\\\"Q\\\",function(h,y){y[Ft]=3*(F(h)-1)}),j(\\\"D\\\",[\\\"DD\\\",2],\\\"Do\\\",\\\"date\\\"),ut(\\\"date\\\",\\\"D\\\"),P(\\\"date\\\",9),st(\\\"D\\\",U),st(\\\"DD\\\",U,ce),st(\\\"Do\\\",function(h,y){return h?y._dayOfMonthOrdinalParse||y._ordinalParse:y._dayOfMonthOrdinalParseLenient}),Gt([\\\"D\\\",\\\"DD\\\"],xt),Gt(\\\"Do\\\",function(h,y){y[xt]=F(h.match(U)[0])}),ts=O(\\\"Date\\\",!0),j(\\\"DDD\\\",[\\\"DDDD\\\",3],\\\"DDDo\\\",\\\"dayOfYear\\\"),ut(\\\"dayOfYear\\\",\\\"DDD\\\"),P(\\\"dayOfYear\\\",4),st(\\\"DDD\\\",Mt),st(\\\"DDDD\\\",ht),Gt([\\\"DDD\\\",\\\"DDDD\\\"],function(h,y,_){_._dayOfYear=F(h)}),j(\\\"m\\\",[\\\"mm\\\",2],0,\\\"minute\\\"),ut(\\\"minute\\\",\\\"m\\\"),P(\\\"minute\\\",14),st(\\\"m\\\",U),st(\\\"mm\\\",U,ce),Gt([\\\"m\\\",\\\"mm\\\"],Lt);var Zi,Ps=O(\\\"Minutes\\\",!1),Qi=(j(\\\"s\\\",[\\\"ss\\\",2],0,\\\"second\\\"),ut(\\\"second\\\",\\\"s\\\"),P(\\\"second\\\",15),st(\\\"s\\\",U),st(\\\"ss\\\",U,ce),Gt([\\\"s\\\",\\\"ss\\\"],bt),O(\\\"Seconds\\\",!1));for(j(\\\"S\\\",0,0,function(){return~~(this.millisecond()/100)}),j(0,[\\\"SS\\\",2],0,function(){return~~(this.millisecond()/10)}),j(0,[\\\"SSS\\\",3],0,\\\"millisecond\\\"),j(0,[\\\"SSSS\\\",4],0,function(){return 10*this.millisecond()}),j(0,[\\\"SSSSS\\\",5],0,function(){return 100*this.millisecond()}),j(0,[\\\"SSSSSS\\\",6],0,function(){return 1e3*this.millisecond()}),j(0,[\\\"SSSSSSS\\\",7],0,function(){return 1e4*this.millisecond()}),j(0,[\\\"SSSSSSSS\\\",8],0,function(){return 1e5*this.millisecond()}),j(0,[\\\"SSSSSSSSS\\\",9],0,function(){return 1e6*this.millisecond()}),ut(\\\"millisecond\\\",\\\"ms\\\"),P(\\\"millisecond\\\",16),st(\\\"S\\\",Mt,C),st(\\\"SS\\\",Mt,ce),st(\\\"SSS\\\",Mt,ht),Zi=\\\"SSSS\\\";Zi.length\u003C=9;Zi+=\\\"S\\\")st(Zi,Tt);function HY(h,y){y[Ut]=F(1e3*(\\\"0.\\\"+h))}for(Zi=\\\"S\\\";Zi.length\u003C=9;Zi+=\\\"S\\\")Gt(Zi,HY);Ji=O(\\\"Milliseconds\\\",!1),j(\\\"z\\\",0,0,\\\"zoneAbbr\\\"),j(\\\"zz\\\",0,0,\\\"zoneName\\\"),C=H.prototype;function xb(h){return h}C.add=ee,C.calendar=function(_,R){arguments.length===1&&(arguments[0]?WY(arguments[0])?(_=arguments[0],R=void 0):function(it){for(var mt=s(it)&&!o(it),Ct=!1,Pt=[\\\"sameDay\\\",\\\"nextDay\\\",\\\"lastDay\\\",\\\"nextWeek\\\",\\\"lastWeek\\\",\\\"sameElse\\\"],It=0;It\u003CPt.length;It+=1)Ct=Ct||a(it,Pt[It]);return mt&&Ct}(arguments[0])&&(R=arguments[0],_=void 0):R=_=void 0);var _=_||Se(),S=Zr(_,this).startOf(\\\"day\\\"),S=n.calendarFormat(this,S)||\\\"sameElse\\\",R=R&&(w(R[S])?R[S].call(this,_):R[S]);return this.format(R||this.localeData().calendar(S,this,Se(_)))},C.clone=function(){return new H(this)},C.diff=function(h,y,_){var S,R,it;if(!this.isValid())return NaN;if(!(S=Zr(h,this)).isValid())return NaN;switch(R=6e4*(S.utcOffset()-this.utcOffset()),y=_t(y)){case\\\"year\\\":it=ju(this,S)/12;break;case\\\"month\\\":it=ju(this,S);break;case\\\"quarter\\\":it=ju(this,S)/3;break;case\\\"second\\\":it=(this-S)/1e3;break;case\\\"minute\\\":it=(this-S)/6e4;break;case\\\"hour\\\":it=(this-S)/36e5;break;case\\\"day\\\":it=(this-S-R)/864e5;break;case\\\"week\\\":it=(this-S-R)/6048e5;break;default:it=this-S}return _?it:X(it)},C.endOf=function(h){var y,_;if((h=_t(h))===void 0||h===\\\"millisecond\\\"||!this.isValid())return this;switch(_=this._isUTC?bb:mb,h){case\\\"year\\\":y=_(this.year()+1,0,1)-1;break;case\\\"quarter\\\":y=_(this.year(),this.month()-this.month()%3+3,1)-1;break;case\\\"month\\\":y=_(this.year(),this.month()+1,1)-1;break;case\\\"week\\\":y=_(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case\\\"isoWeek\\\":y=_(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case\\\"day\\\":case\\\"date\\\":y=_(this.year(),this.month(),this.date()+1)-1;break;case\\\"hour\\\":y=this._d.valueOf(),y+=36e5-Ya(y+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case\\\"minute\\\":y=this._d.valueOf(),y+=6e4-Ya(y,6e4)-1;break;case\\\"second\\\":y=this._d.valueOf(),y+=1e3-Ya(y,1e3)-1;break}return this._d.setTime(y),n.updateOffset(this,!0),this},C.format=function(h){return h=h||(this.isUtc()?n.defaultFormatUtc:n.defaultFormat),h=ot(this,h),this.localeData().postformat(h)},C.from=function(h,y){return this.isValid()&&(G(h)&&h.isValid()||Se(h).isValid())?In({to:this,from:h}).locale(this.locale()).humanize(!y):this.localeData().invalidDate()},C.fromNow=function(h){return this.from(Se(),h)},C.to=function(h,y){return this.isValid()&&(G(h)&&h.isValid()||Se(h).isValid())?In({from:this,to:h}).locale(this.locale()).humanize(!y):this.localeData().invalidDate()},C.toNow=function(h){return this.to(Se(),h)},C.get=function(h){return w(this[h=_t(h)])?this[h]():this},C.invalidAt=function(){return b(this).overflow},C.isAfter=function(h,y){return h=G(h)?h:Se(h),!(!this.isValid()||!h.isValid())&&((y=_t(y)||\\\"millisecond\\\")===\\\"millisecond\\\"?this.valueOf()>h.valueOf():h.valueOf()\u003Cthis.clone().startOf(y).valueOf())},C.isBefore=function(h,y){return h=G(h)?h:Se(h),!(!this.isValid()||!h.isValid())&&((y=_t(y)||\\\"millisecond\\\")===\\\"millisecond\\\"?this.valueOf()\u003Ch.valueOf():this.clone().endOf(y).valueOf()\u003Ch.valueOf())},C.isBetween=function(h,y,_,S){return h=G(h)?h:Se(h),y=G(y)?y:Se(y),!!(this.isValid()&&h.isValid()&&y.isValid())&&((S=S||\\\"()\\\")[0]===\\\"(\\\"?this.isAfter(h,_):!this.isBefore(h,_))&&(S[1]===\\\")\\\"?this.isBefore(y,_):!this.isAfter(y,_))},C.isSame=function(_,y){var _=G(_)?_:Se(_);return!(!this.isValid()||!_.isValid())&&((y=_t(y)||\\\"millisecond\\\")===\\\"millisecond\\\"?this.valueOf()===_.valueOf():(_=_.valueOf(),this.clone().startOf(y).valueOf()\u003C=_&&_\u003C=this.clone().endOf(y).valueOf()))},C.isSameOrAfter=function(h,y){return this.isSame(h,y)||this.isAfter(h,y)},C.isSameOrBefore=function(h,y){return this.isSame(h,y)||this.isBefore(h,y)},C.isValid=function(){return k(this)},C.lang=$e,C.locale=pb,C.localeData=gb,C.max=et,C.min=Yt,C.parsingFlags=function(){return p({},b(this))},C.set=function(h,y){if(typeof h==\\\"object\\\")for(var _=function(it){var mt,Ct=[];for(mt in it)a(it,mt)&&Ct.push({unit:mt,priority:Ot[mt]});return Ct.sort(function(Pt,It){return Pt.priority-It.priority}),Ct}(h=K(h)),S=_.length,R=0;R\u003CS;R++)this[_[R].unit](h[_[R].unit]);else if(w(this[h=_t(h)]))return this[h](y);return this},C.startOf=function(h){var y,_;if((h=_t(h))===void 0||h===\\\"millisecond\\\"||!this.isValid())return this;switch(_=this._isUTC?bb:mb,h){case\\\"year\\\":y=_(this.year(),0,1);break;case\\\"quarter\\\":y=_(this.year(),this.month()-this.month()%3,1);break;case\\\"month\\\":y=_(this.year(),this.month(),1);break;case\\\"week\\\":y=_(this.year(),this.month(),this.date()-this.weekday());break;case\\\"isoWeek\\\":y=_(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case\\\"day\\\":case\\\"date\\\":y=_(this.year(),this.month(),this.date());break;case\\\"hour\\\":y=this._d.valueOf(),y-=Ya(y+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case\\\"minute\\\":y=this._d.valueOf(),y-=Ya(y,6e4);break;case\\\"second\\\":y=this._d.valueOf(),y-=Ya(y,1e3);break}return this._d.setTime(y),n.updateOffset(this,!0),this},C.subtract=Ye,C.toArray=function(){var h=this;return[h.year(),h.month(),h.date(),h.hour(),h.minute(),h.second(),h.millisecond()]},C.toObject=function(){var h=this;return{years:h.year(),months:h.month(),date:h.date(),hours:h.hours(),minutes:h.minutes(),seconds:h.seconds(),milliseconds:h.milliseconds()}},C.toDate=function(){return new Date(this.valueOf())},C.toISOString=function(h){if(!this.isValid())return null;var y=(h=h!==!0)?this.clone().utc():this;return y.year()\u003C0||9999\u003Cy.year()?ot(y,h?\\\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\\\":\\\"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ\\\"):w(Date.prototype.toISOString)?h?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace(\\\"Z\\\",ot(y,\\\"Z\\\")):ot(y,h?\\\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\\\":\\\"YYYY-MM-DD[T]HH:mm:ss.SSSZ\\\")},C.inspect=function(){if(!this.isValid())return\\\"moment.invalid(/* \\\"+this._i+\\\" */)\\\";var h,y=\\\"moment\\\",_=\\\"\\\";return this.isLocal()||(y=this.utcOffset()===0?\\\"moment.utc\\\":\\\"moment.parseZone\\\",_=\\\"Z\\\"),y=\\\"[\\\"+y+'(\\\"]',h=0\u003C=this.year()&&this.year()\u003C=9999?\\\"YYYY\\\":\\\"YYYYYY\\\",this.format(y+h+\\\"-MM-DD[T]HH:mm:ss.SSS\\\"+(_+'[\\\")]'))},typeof Symbol\u003C\\\"u\\\"&&Symbol.for!=null&&(C[Symbol.for(\\\"nodejs.util.inspect.custom\\\")]=function(){return\\\"Moment\u003C\\\"+this.format()+\\\">\\\"}),C.toJSON=function(){return this.isValid()?this.toISOString():null},C.toString=function(){return this.clone().locale(\\\"en\\\").format(\\\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\\\")},C.unix=function(){return Math.floor(this.valueOf()/1e3)},C.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},C.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},C.eraName=function(){for(var h,y=this.localeData().eras(),_=0,S=y.length;_\u003CS;++_)if(h=this.clone().startOf(\\\"day\\\").valueOf(),y[_].since\u003C=h&&h\u003C=y[_].until||y[_].until\u003C=h&&h\u003C=y[_].since)return y[_].name;return\\\"\\\"},C.eraNarrow=function(){for(var h,y=this.localeData().eras(),_=0,S=y.length;_\u003CS;++_)if(h=this.clone().startOf(\\\"day\\\").valueOf(),y[_].since\u003C=h&&h\u003C=y[_].until||y[_].until\u003C=h&&h\u003C=y[_].since)return y[_].narrow;return\\\"\\\"},C.eraAbbr=function(){for(var h,y=this.localeData().eras(),_=0,S=y.length;_\u003CS;++_)if(h=this.clone().startOf(\\\"day\\\").valueOf(),y[_].since\u003C=h&&h\u003C=y[_].until||y[_].until\u003C=h&&h\u003C=y[_].since)return y[_].abbr;return\\\"\\\"},C.eraYear=function(){for(var h,y,_=this.localeData().eras(),S=0,R=_.length;S\u003CR;++S)if(h=_[S].since\u003C=_[S].until?1:-1,y=this.clone().startOf(\\\"day\\\").valueOf(),_[S].since\u003C=y&&y\u003C=_[S].until||_[S].until\u003C=y&&y\u003C=_[S].since)return(this.year()-n(_[S].since).year())*h+_[S].offset;return this.year()},C.year=Ku,C.isLeapYear=function(){return z(this.year())},C.weekYear=function(h){return _b.call(this,h,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},C.isoWeekYear=function(h){return _b.call(this,h,this.isoWeek(),this.isoWeekday(),1,4)},C.quarter=C.quarters=function(h){return h==null?Math.ceil((this.month()+1)/3):this.month(3*(h-1)+this.month()%3)},C.month=se,C.daysInMonth=function(){return dt(this.year(),this.month())},C.week=C.weeks=function(h){var y=this.localeData().week(this);return h==null?y:this.add(7*(h-y),\\\"d\\\")},C.isoWeek=C.isoWeeks=function(h){var y=Be(this,1,4).week;return h==null?y:this.add(7*(h-y),\\\"d\\\")},C.weeksInYear=function(){var h=this.localeData()._week;return Re(this.year(),h.dow,h.doy)},C.weeksInWeekYear=function(){var h=this.localeData()._week;return Re(this.weekYear(),h.dow,h.doy)},C.isoWeeksInYear=function(){return Re(this.year(),1,4)},C.isoWeeksInISOWeekYear=function(){return Re(this.isoWeekYear(),1,4)},C.date=ts,C.day=C.days=function(h){if(!this.isValid())return h!=null?this:NaN;var y,_,S=this._isUTC?this._d.getUTCDay():this._d.getDay();return h!=null?(y=h,_=this.localeData(),h=typeof y!=\\\"string\\\"?y:isNaN(y)?typeof(y=_.weekdaysParse(y))==\\\"number\\\"?y:null:parseInt(y,10),this.add(h-S,\\\"d\\\")):S},C.weekday=function(h){if(!this.isValid())return h!=null?this:NaN;var y=(this.day()+7-this.localeData()._week.dow)%7;return h==null?y:this.add(h-y,\\\"d\\\")},C.isoWeekday=function(h){return this.isValid()?h!=null?(y=h,_=this.localeData(),_=typeof y==\\\"string\\\"?_.weekdaysParse(y)%7||7:isNaN(y)?null:y,this.day(this.day()%7?_:_-7)):this.day()||7:h!=null?this:NaN;var y,_},C.dayOfYear=function(h){var y=Math.round((this.clone().startOf(\\\"day\\\")-this.clone().startOf(\\\"year\\\"))/864e5)+1;return h==null?y:this.add(h-y,\\\"d\\\")},C.hour=C.hours=pt,C.minute=C.minutes=Ps,C.second=C.seconds=Qi,C.millisecond=C.milliseconds=Ji,C.utcOffset=function(h,y,_){var S,R=this._offset||0;if(!this.isValid())return h!=null?this:NaN;if(h==null)return this._isUTC?R:Fd(this);if(typeof h==\\\"string\\\"){if((h=Rs(wt,h))===null)return this}else Math.abs(h)\u003C16&&!_&&(h*=60);return!this._isUTC&&y&&(S=Fd(this)),this._offset=h,this._isUTC=!0,S!=null&&this.add(S,\\\"m\\\"),R!==h&&(!y||this._changeInProgress?db(this,In(h-R,\\\"m\\\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this},C.utc=function(h){return this.utcOffset(0,h)},C.local=function(h){return this._isUTC&&(this.utcOffset(0,h),this._isUTC=!1,h&&this.subtract(Fd(this),\\\"m\\\")),this},C.parseZone=function(){var h;return this._tzm!=null?this.utcOffset(this._tzm,!1,!0):typeof this._i==\\\"string\\\"&&((h=Rs(Et,this._i))!=null?this.utcOffset(h):this.utcOffset(0,!0)),this},C.hasAlignedHourOffset=function(h){return!!this.isValid()&&(h=h?Se(h).utcOffset():0,(this.utcOffset()-h)%60==0)},C.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},C.isLocal=function(){return!!this.isValid()&&!this._isUTC},C.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},C.isUtc=cb,C.isUTC=cb,C.zoneAbbr=function(){return this._isUTC?\\\"UTC\\\":\\\"\\\"},C.zoneName=function(){return this._isUTC?\\\"Coordinated Universal Time\\\":\\\"\\\"},C.dates=W(\\\"dates accessor is deprecated. Use date instead.\\\",ts),C.months=W(\\\"months accessor is deprecated. Use month instead\\\",se),C.years=W(\\\"years accessor is deprecated. Use year instead\\\",Ku),C.zone=W(\\\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\\\",function(h,y){return h!=null?(this.utcOffset(h=typeof h!=\\\"string\\\"?-h:h,y),this):-this.utcOffset()}),C.isDSTShifted=W(\\\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\\\",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var h,y={};return V(y,this),(y=qu(y))._a?(h=(y._isUTC?g:Se)(y._a),this._isDSTShifted=this.isValid()&&0\u003Cfunction(_,S,R){for(var it=Math.min(_.length,S.length),mt=Math.abs(_.length-S.length),Ct=0,Pt=0;Pt\u003Cit;Pt++)(R&&_[Pt]!==S[Pt]||!R&&F(_[Pt])!==F(S[Pt]))&&Ct++;return Ct+mt}(y._a,h.toArray())):this._isDSTShifted=!1,this._isDSTShifted}),ce=M.prototype;function Xu(h,y,_,it){var R=oe(),it=g().set(it,y);return R[_](it,h)}function vb(h,y,_){if(u(h)&&(y=h,h=void 0),h=h||\\\"\\\",y!=null)return Xu(h,y,_,\\\"month\\\");for(var S=[],R=0;R\u003C12;R++)S[R]=Xu(h,R,_,\\\"month\\\");return S}function Vd(h,y,_,S){y=(typeof h==\\\"boolean\\\"?u(y)&&(_=y,y=void 0):(y=h,h=!1,u(_=y)&&(_=y,y=void 0)),y||\\\"\\\");var R,it=oe(),mt=h?it._week.dow:0,Ct=[];if(_!=null)return Xu(y,(_+mt)%7,S,\\\"day\\\");for(R=0;R\u003C7;R++)Ct[R]=Xu(y,(R+mt)%7,S,\\\"day\\\");return Ct}ce.calendar=function(h,y,_){return w(h=this._calendar[h]||this._calendar.sameElse)?h.call(y,_):h},ce.longDateFormat=function(h){var y=this._longDateFormat[h],_=this._longDateFormat[h.toUpperCase()];return y||!_?y:(this._longDateFormat[h]=_.match(x).map(function(S){return S===\\\"MMMM\\\"||S===\\\"MM\\\"||S===\\\"DD\\\"||S===\\\"dddd\\\"?S.slice(1):S}).join(\\\"\\\"),this._longDateFormat[h])},ce.invalidDate=function(){return this._invalidDate},ce.ordinal=function(h){return this._ordinal.replace(\\\"%d\\\",h)},ce.preparse=xb,ce.postformat=xb,ce.relativeTime=function(h,y,_,S){var R=this._relativeTime[_];return w(R)?R(h,y,_,S):R.replace(/%d/i,h)},ce.pastFuture=function(h,y){return w(h=this._relativeTime[0\u003Ch?\\\"future\\\":\\\"past\\\"])?h(y):h.replace(/%s/i,y)},ce.set=function(h){var y,_;for(_ in h)a(h,_)&&(w(y=h[_])?this[_]=y:this[\\\"_\\\"+_]=y);this._config=h,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\\\"|\\\"+/\\\\d{1,2}/.source)},ce.eras=function(h,y){for(var _,S=this._eras||oe(\\\"en\\\")._eras,R=0,it=S.length;R\u003Cit;++R){switch(typeof S[R].since){case\\\"string\\\":_=n(S[R].since).startOf(\\\"day\\\"),S[R].since=_.valueOf();break}switch(typeof S[R].until){case\\\"undefined\\\":S[R].until=1/0;break;case\\\"string\\\":_=n(S[R].until).startOf(\\\"day\\\").valueOf(),S[R].until=_.valueOf();break}}return S},ce.erasParse=function(h,y,_){var S,R,it,mt,Ct,Pt=this.eras();for(h=h.toUpperCase(),S=0,R=Pt.length;S\u003CR;++S)if(it=Pt[S].name.toUpperCase(),mt=Pt[S].abbr.toUpperCase(),Ct=Pt[S].narrow.toUpperCase(),_)switch(y){case\\\"N\\\":case\\\"NN\\\":case\\\"NNN\\\":if(mt===h)return Pt[S];break;case\\\"NNNN\\\":if(it===h)return Pt[S];break;case\\\"NNNNN\\\":if(Ct===h)return Pt[S];break}else if(0\u003C=[it,mt,Ct].indexOf(h))return Pt[S]},ce.erasConvertYear=function(h,y){var _=h.since\u003C=h.until?1:-1;return y===void 0?n(h.since).year():n(h.since).year()+(y-h.offset)*_},ce.erasAbbrRegex=function(h){return a(this,\\\"_erasAbbrRegex\\\")||Yd.call(this),h?this._erasAbbrRegex:this._erasRegex},ce.erasNameRegex=function(h){return a(this,\\\"_erasNameRegex\\\")||Yd.call(this),h?this._erasNameRegex:this._erasRegex},ce.erasNarrowRegex=function(h){return a(this,\\\"_erasNarrowRegex\\\")||Yd.call(this),h?this._erasNarrowRegex:this._erasRegex},ce.months=function(h,y){return h?(i(this._months)?this._months:this._months[(this._months.isFormat||be).test(y)?\\\"format\\\":\\\"standalone\\\"])[h.month()]:i(this._months)?this._months:this._months.standalone},ce.monthsShort=function(h,y){return h?(i(this._monthsShort)?this._monthsShort:this._monthsShort[be.test(y)?\\\"format\\\":\\\"standalone\\\"])[h.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},ce.monthsParse=function(h,y,_){var S,R;if(this._monthsParseExact)return function(re,mt,Ct){var Pt,It,ue,re=re.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],Pt=0;Pt\u003C12;++Pt)ue=g([2e3,Pt]),this._shortMonthsParse[Pt]=this.monthsShort(ue,\\\"\\\").toLocaleLowerCase(),this._longMonthsParse[Pt]=this.months(ue,\\\"\\\").toLocaleLowerCase();return Ct?mt===\\\"MMM\\\"?(It=Ht.call(this._shortMonthsParse,re))!==-1?It:null:(It=Ht.call(this._longMonthsParse,re))!==-1?It:null:mt===\\\"MMM\\\"?(It=Ht.call(this._shortMonthsParse,re))!==-1||(It=Ht.call(this._longMonthsParse,re))!==-1?It:null:(It=Ht.call(this._longMonthsParse,re))!==-1||(It=Ht.call(this._shortMonthsParse,re))!==-1?It:null}.call(this,h,y,_);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),S=0;S\u003C12;S++)if(R=g([2e3,S]),_&&!this._longMonthsParse[S]&&(this._longMonthsParse[S]=new RegExp(\\\"^\\\"+this.months(R,\\\"\\\").replace(\\\".\\\",\\\"\\\")+\\\"$\\\",\\\"i\\\"),this._shortMonthsParse[S]=new RegExp(\\\"^\\\"+this.monthsShort(R,\\\"\\\").replace(\\\".\\\",\\\"\\\")+\\\"$\\\",\\\"i\\\")),_||this._monthsParse[S]||(R=\\\"^\\\"+this.months(R,\\\"\\\")+\\\"|^\\\"+this.monthsShort(R,\\\"\\\"),this._monthsParse[S]=new RegExp(R.replace(\\\".\\\",\\\"\\\"),\\\"i\\\")),_&&y===\\\"MMMM\\\"&&this._longMonthsParse[S].test(h)||_&&y===\\\"MMM\\\"&&this._shortMonthsParse[S].test(h)||!_&&this._monthsParse[S].test(h))return S},ce.monthsRegex=function(h){return this._monthsParseExact?(a(this,\\\"_monthsRegex\\\")||ye.call(this),h?this._monthsStrictRegex:this._monthsRegex):(a(this,\\\"_monthsRegex\\\")||(this._monthsRegex=ke),this._monthsStrictRegex&&h?this._monthsStrictRegex:this._monthsRegex)},ce.monthsShortRegex=function(h){return this._monthsParseExact?(a(this,\\\"_monthsRegex\\\")||ye.call(this),h?this._monthsShortStrictRegex:this._monthsShortRegex):(a(this,\\\"_monthsShortRegex\\\")||(this._monthsShortRegex=_e),this._monthsShortStrictRegex&&h?this._monthsShortStrictRegex:this._monthsShortRegex)},ce.week=function(h){return Be(h,this._week.dow,this._week.doy).week},ce.firstDayOfYear=function(){return this._week.doy},ce.firstDayOfWeek=function(){return this._week.dow},ce.weekdays=function(h,y){return y=i(this._weekdays)?this._weekdays:this._weekdays[h&&h!==!0&&this._weekdays.isFormat.test(y)?\\\"format\\\":\\\"standalone\\\"],h===!0?Pe(y,this._week.dow):h?y[h.day()]:y},ce.weekdaysMin=function(h){return h===!0?Pe(this._weekdaysMin,this._week.dow):h?this._weekdaysMin[h.day()]:this._weekdaysMin},ce.weekdaysShort=function(h){return h===!0?Pe(this._weekdaysShort,this._week.dow):h?this._weekdaysShort[h.day()]:this._weekdaysShort},ce.weekdaysParse=function(h,y,_){var S,R;if(this._weekdaysParseExact)return function(re,mt,Ct){var Pt,It,ue,re=re.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],Pt=0;Pt\u003C7;++Pt)ue=g([2e3,1]).day(Pt),this._minWeekdaysParse[Pt]=this.weekdaysMin(ue,\\\"\\\").toLocaleLowerCase(),this._shortWeekdaysParse[Pt]=this.weekdaysShort(ue,\\\"\\\").toLocaleLowerCase(),this._weekdaysParse[Pt]=this.weekdays(ue,\\\"\\\").toLocaleLowerCase();return Ct?mt===\\\"dddd\\\"?(It=Ht.call(this._weekdaysParse,re))!==-1?It:null:mt===\\\"ddd\\\"?(It=Ht.call(this._shortWeekdaysParse,re))!==-1?It:null:(It=Ht.call(this._minWeekdaysParse,re))!==-1?It:null:mt===\\\"dddd\\\"?(It=Ht.call(this._weekdaysParse,re))!==-1||(It=Ht.call(this._shortWeekdaysParse,re))!==-1||(It=Ht.call(this._minWeekdaysParse,re))!==-1?It:null:mt===\\\"ddd\\\"?(It=Ht.call(this._shortWeekdaysParse,re))!==-1||(It=Ht.call(this._weekdaysParse,re))!==-1||(It=Ht.call(this._minWeekdaysParse,re))!==-1?It:null:(It=Ht.call(this._minWeekdaysParse,re))!==-1||(It=Ht.call(this._weekdaysParse,re))!==-1||(It=Ht.call(this._shortWeekdaysParse,re))!==-1?It:null}.call(this,h,y,_);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),S=0;S\u003C7;S++)if(R=g([2e3,1]).day(S),_&&!this._fullWeekdaysParse[S]&&(this._fullWeekdaysParse[S]=new RegExp(\\\"^\\\"+this.weekdays(R,\\\"\\\").replace(\\\".\\\",\\\"\\\\\\\\.?\\\")+\\\"$\\\",\\\"i\\\"),this._shortWeekdaysParse[S]=new RegExp(\\\"^\\\"+this.weekdaysShort(R,\\\"\\\").replace(\\\".\\\",\\\"\\\\\\\\.?\\\")+\\\"$\\\",\\\"i\\\"),this._minWeekdaysParse[S]=new RegExp(\\\"^\\\"+this.weekdaysMin(R,\\\"\\\").replace(\\\".\\\",\\\"\\\\\\\\.?\\\")+\\\"$\\\",\\\"i\\\")),this._weekdaysParse[S]||(R=\\\"^\\\"+this.weekdays(R,\\\"\\\")+\\\"|^\\\"+this.weekdaysShort(R,\\\"\\\")+\\\"|^\\\"+this.weekdaysMin(R,\\\"\\\"),this._weekdaysParse[S]=new RegExp(R.replace(\\\".\\\",\\\"\\\"),\\\"i\\\")),_&&y===\\\"dddd\\\"&&this._fullWeekdaysParse[S].test(h)||_&&y===\\\"ddd\\\"&&this._shortWeekdaysParse[S].test(h)||_&&y===\\\"dd\\\"&&this._minWeekdaysParse[S].test(h)||!_&&this._weekdaysParse[S].test(h))return S},ce.weekdaysRegex=function(h){return this._weekdaysParseExact?(a(this,\\\"_weekdaysRegex\\\")||At.call(this),h?this._weekdaysStrictRegex:this._weekdaysRegex):(a(this,\\\"_weekdaysRegex\\\")||(this._weekdaysRegex=ar),this._weekdaysStrictRegex&&h?this._weekdaysStrictRegex:this._weekdaysRegex)},ce.weekdaysShortRegex=function(h){return this._weekdaysParseExact?(a(this,\\\"_weekdaysRegex\\\")||At.call(this),h?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(a(this,\\\"_weekdaysShortRegex\\\")||(this._weekdaysShortRegex=zt),this._weekdaysShortStrictRegex&&h?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},ce.weekdaysMinRegex=function(h){return this._weekdaysParseExact?(a(this,\\\"_weekdaysRegex\\\")||At.call(this),h?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(a(this,\\\"_weekdaysMinRegex\\\")||(this._weekdaysMinRegex=Z),this._weekdaysMinStrictRegex&&h?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},ce.isPM=function(h){return(h+\\\"\\\").toLowerCase().charAt(0)===\\\"p\\\"},ce.meridiem=function(h,y,_){return 11\u003Ch?_?\\\"pm\\\":\\\"PM\\\":_?\\\"am\\\":\\\"AM\\\"},qt(\\\"en\\\",{eras:[{since:\\\"0001-01-01\\\",until:1/0,offset:1,name:\\\"Anno Domini\\\",narrow:\\\"AD\\\",abbr:\\\"AD\\\"},{since:\\\"0000-12-31\\\",until:-1/0,offset:1,name:\\\"Before Christ\\\",narrow:\\\"BC\\\",abbr:\\\"BC\\\"}],dayOfMonthOrdinalParse:/\\\\d{1,2}(th|st|nd|rd)/,ordinal:function(h){var y=h%10;return h+(F(h%100/10)===1?\\\"th\\\":y==1?\\\"st\\\":y==2?\\\"nd\\\":y==3?\\\"rd\\\":\\\"th\\\")}}),n.lang=W(\\\"moment.lang is deprecated. Use moment.locale instead.\\\",qt),n.langData=W(\\\"moment.langData is deprecated. Use moment.localeData instead.\\\",oe);var Di=Math.abs;function kb(h,y,_,S){return y=In(y,_),h._milliseconds+=S*y._milliseconds,h._days+=S*y._days,h._months+=S*y._months,h._bubble()}function wb(h){return h\u003C0?Math.floor(h):Math.ceil(h)}function Tb(h){return 4800*h/146097}function Ud(h){return 146097*h/4800}function Mi(h){return function(){return this.as(h)}}Mt=Mi(\\\"ms\\\"),ht=Mi(\\\"s\\\"),ee=Mi(\\\"m\\\"),et=Mi(\\\"h\\\"),Yt=Mi(\\\"d\\\"),Ye=Mi(\\\"w\\\"),pt=Mi(\\\"M\\\"),Ps=Mi(\\\"Q\\\"),Qi=Mi(\\\"y\\\");function Ys(h){return function(){return this.isValid()?this._data[h]:NaN}}var Ji=Ys(\\\"milliseconds\\\"),ts=Ys(\\\"seconds\\\"),Ku=Ys(\\\"minutes\\\"),ce=Ys(\\\"hours\\\"),GY=Ys(\\\"days\\\"),qY=Ys(\\\"months\\\"),jY=Ys(\\\"years\\\"),Ni=Math.round,Va={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function $Y(h,y,_,S){var It=In(h).abs(),ue=Ni(It.as(\\\"s\\\")),R=Ni(It.as(\\\"m\\\")),it=Ni(It.as(\\\"h\\\")),mt=Ni(It.as(\\\"d\\\")),Ct=Ni(It.as(\\\"M\\\")),Pt=Ni(It.as(\\\"w\\\")),It=Ni(It.as(\\\"y\\\")),ue=(ue\u003C=_.ss?[\\\"s\\\",ue]:ue\u003C_.s&&[\\\"ss\\\",ue])||R\u003C=1&&[\\\"m\\\"]||R\u003C_.m&&[\\\"mm\\\",R]||it\u003C=1&&[\\\"h\\\"]||it\u003C_.h&&[\\\"hh\\\",it]||mt\u003C=1&&[\\\"d\\\"]||mt\u003C_.d&&[\\\"dd\\\",mt];return(ue=(ue=_.w!=null?ue||Pt\u003C=1&&[\\\"w\\\"]||Pt\u003C_.w&&[\\\"ww\\\",Pt]:ue)||Ct\u003C=1&&[\\\"M\\\"]||Ct\u003C_.M&&[\\\"MM\\\",Ct]||It\u003C=1&&[\\\"y\\\"]||[\\\"yy\\\",It])[2]=y,ue[3]=0\u003C+h,ue[4]=S,function(re,He,lr,On,Wd){return Wd.relativeTime(He||1,!!lr,re,On)}.apply(null,ue)}var zd=Math.abs;function Ua(h){return(0\u003Ch)-(h\u003C0)||+h}function Zu(){if(!this.isValid())return this.localeData().invalidDate();var h,y,_,S,R,it,mt,Ct=zd(this._milliseconds)/1e3,Pt=zd(this._days),It=zd(this._months),ue=this.asSeconds();return ue?(h=X(Ct/60),y=X(h/60),Ct%=60,h%=60,_=X(It/12),It%=12,S=Ct?Ct.toFixed(3).replace(/\\\\.?0+$/,\\\"\\\"):\\\"\\\",R=Ua(this._months)!==Ua(ue)?\\\"-\\\":\\\"\\\",it=Ua(this._days)!==Ua(ue)?\\\"-\\\":\\\"\\\",mt=Ua(this._milliseconds)!==Ua(ue)?\\\"-\\\":\\\"\\\",(ue\u003C0?\\\"-\\\":\\\"\\\")+\\\"P\\\"+(_?R+_+\\\"Y\\\":\\\"\\\")+(It?R+It+\\\"M\\\":\\\"\\\")+(Pt?it+Pt+\\\"D\\\":\\\"\\\")+(y||h||Ct?\\\"T\\\":\\\"\\\")+(y?mt+y+\\\"H\\\":\\\"\\\")+(h?mt+h+\\\"M\\\":\\\"\\\")+(Ct?mt+S+\\\"S\\\":\\\"\\\")):\\\"P0D\\\"}var Ce=Bn.prototype;return Ce.isValid=function(){return this._isValid},Ce.abs=function(){var h=this._data;return this._milliseconds=Di(this._milliseconds),this._days=Di(this._days),this._months=Di(this._months),h.milliseconds=Di(h.milliseconds),h.seconds=Di(h.seconds),h.minutes=Di(h.minutes),h.hours=Di(h.hours),h.months=Di(h.months),h.years=Di(h.years),this},Ce.add=function(h,y){return kb(this,h,y,1)},Ce.subtract=function(h,y){return kb(this,h,y,-1)},Ce.as=function(h){if(!this.isValid())return NaN;var y,_,S=this._milliseconds;if((h=_t(h))===\\\"month\\\"||h===\\\"quarter\\\"||h===\\\"year\\\")switch(y=this._days+S/864e5,_=this._months+Tb(y),h){case\\\"month\\\":return _;case\\\"quarter\\\":return _/3;case\\\"year\\\":return _/12}else switch(y=this._days+Math.round(Ud(this._months)),h){case\\\"week\\\":return y/7+S/6048e5;case\\\"day\\\":return y+S/864e5;case\\\"hour\\\":return 24*y+S/36e5;case\\\"minute\\\":return 1440*y+S/6e4;case\\\"second\\\":return 86400*y+S/1e3;case\\\"millisecond\\\":return Math.floor(864e5*y)+S;default:throw new Error(\\\"Unknown unit \\\"+h)}},Ce.asMilliseconds=Mt,Ce.asSeconds=ht,Ce.asMinutes=ee,Ce.asHours=et,Ce.asDays=Yt,Ce.asWeeks=Ye,Ce.asMonths=pt,Ce.asQuarters=Ps,Ce.asYears=Qi,Ce.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*F(this._months/12):NaN},Ce._bubble=function(){var h=this._milliseconds,y=this._days,_=this._months,S=this._data;return 0\u003C=h&&0\u003C=y&&0\u003C=_||h\u003C=0&&y\u003C=0&&_\u003C=0||(h+=864e5*wb(Ud(_)+y),_=y=0),S.milliseconds=h%1e3,h=X(h/1e3),S.seconds=h%60,h=X(h/60),S.minutes=h%60,h=X(h/60),S.hours=h%24,y+=X(h/24),_+=h=X(Tb(y)),y-=wb(Ud(h)),h=X(_/12),_%=12,S.days=y,S.months=_,S.years=h,this},Ce.clone=function(){return In(this)},Ce.get=function(h){return h=_t(h),this.isValid()?this[h+\\\"s\\\"]():NaN},Ce.milliseconds=Ji,Ce.seconds=ts,Ce.minutes=Ku,Ce.hours=ce,Ce.days=GY,Ce.weeks=function(){return X(this.days()/7)},Ce.months=qY,Ce.years=jY,Ce.humanize=function(h,y){if(!this.isValid())return this.localeData().invalidDate();var _=!1,S=Va;return typeof h==\\\"object\\\"&&(y=h,h=!1),typeof h==\\\"boolean\\\"&&(_=h),typeof y==\\\"object\\\"&&(S=Object.assign({},Va,y),y.s!=null&&y.ss==null&&(S.ss=y.s-1)),h=this.localeData(),y=$Y(this,!_,S,h),_&&(y=h.pastFuture(+this,y)),h.postformat(y)},Ce.toISOString=Zu,Ce.toString=Zu,Ce.toJSON=Zu,Ce.locale=pb,Ce.localeData=gb,Ce.toIsoString=W(\\\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\\\",Zu),Ce.lang=$e,j(\\\"X\\\",0,0,\\\"unix\\\"),j(\\\"x\\\",0,0,\\\"valueOf\\\"),st(\\\"x\\\",gt),st(\\\"X\\\",/[+-]?\\\\d+(\\\\.\\\\d{1,3})?/),Gt(\\\"X\\\",function(h,y,_){_._d=new Date(1e3*parseFloat(h))}),Gt(\\\"x\\\",function(h,y,_){_._d=new Date(F(h))}),n.version=\\\"2.29.4\\\",r=Se,n.fn=C,n.min=function(){return Or(\\\"isBefore\\\",[].slice.call(arguments,0))},n.max=function(){return Or(\\\"isAfter\\\",[].slice.call(arguments,0))},n.now=function(){return Date.now?Date.now():+new Date},n.utc=g,n.unix=function(h){return Se(1e3*h)},n.months=function(h,y){return vb(h,y,\\\"months\\\")},n.isDate=d,n.locale=qt,n.invalid=T,n.duration=In,n.isMoment=G,n.weekdays=function(h,y,_){return Vd(h,y,_,\\\"weekdays\\\")},n.parseZone=function(){return Se.apply(null,arguments).parseZone()},n.localeData=oe,n.isDuration=Li,n.monthsShort=function(h,y){return vb(h,y,\\\"monthsShort\\\")},n.weekdaysMin=function(h,y,_){return Vd(h,y,_,\\\"weekdaysMin\\\")},n.defineLocale=te,n.updateLocale=function(h,y){var _,S;return y!=null?(S=We,ve[h]!=null&&ve[h].parentLocale!=null?ve[h].set(v(ve[h]._config,y)):(y=v(S=(_=zr(h))!=null?_._config:S,y),_==null&&(y.abbr=h),(S=new M(y)).parentLocale=ve[h],ve[h]=S),qt(h)):ve[h]!=null&&(ve[h].parentLocale!=null?(ve[h]=ve[h].parentLocale,h===qt()&&qt(h)):ve[h]!=null&&delete ve[h]),ve[h]},n.locales=function(){return m(ve)},n.weekdaysShort=function(h,y,_){return Vd(h,y,_,\\\"weekdaysShort\\\")},n.normalizeUnits=_t,n.relativeTimeRounding=function(h){return h===void 0?Ni:typeof h==\\\"function\\\"&&(Ni=h,!0)},n.relativeTimeThreshold=function(h,y){return Va[h]!==void 0&&(y===void 0?Va[h]:(Va[h]=y,h===\\\"s\\\"&&(Va.ss=y-1),!0))},n.calendarFormat=function(h,y){return(h=h.diff(y,\\\"days\\\",!0))\u003C-6?\\\"sameElse\\\":h\u003C-1?\\\"lastWeek\\\":h\u003C0?\\\"lastDay\\\":h\u003C1?\\\"sameDay\\\":h\u003C2?\\\"nextDay\\\":h\u003C7?\\\"nextWeek\\\":\\\"sameElse\\\"},n.prototype=C,n.HTML5_FMT={DATETIME_LOCAL:\\\"YYYY-MM-DDTHH:mm\\\",DATETIME_LOCAL_SECONDS:\\\"YYYY-MM-DDTHH:mm:ss\\\",DATETIME_LOCAL_MS:\\\"YYYY-MM-DDTHH:mm:ss.SSS\\\",DATE:\\\"YYYY-MM-DD\\\",TIME:\\\"HH:mm\\\",TIME_SECONDS:\\\"HH:mm:ss\\\",TIME_MS:\\\"HH:mm:ss.SSS\\\",WEEK:\\\"GGGG-[W]WW\\\",MONTH:\\\"YYYY-MM\\\"},n})})(Bi);const cn=Bi.exports,Jn={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},B={trace:(...t)=>{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},Qu=function(t=\\\"fatal\\\"){let e=Jn.fatal;typeof t==\\\"string\\\"?(t=t.toLowerCase(),t in Jn&&(e=Jn[t])):typeof t==\\\"number\\\"&&(e=t),B.trace=()=>{},B.debug=()=>{},B.info=()=>{},B.warn=()=>{},B.error=()=>{},B.fatal=()=>{},e\u003C=Jn.fatal&&(B.fatal=console.error?console.error.bind(console,Qr(\\\"FATAL\\\"),\\\"color: orange\\\"):console.log.bind(console,\\\"\\\\x1B[35m\\\",Qr(\\\"FATAL\\\"))),e\u003C=Jn.error&&(B.error=console.error?console.error.bind(console,Qr(\\\"ERROR\\\"),\\\"color: orange\\\"):console.log.bind(console,\\\"\\\\x1B[31m\\\",Qr(\\\"ERROR\\\"))),e\u003C=Jn.warn&&(B.warn=console.warn?console.warn.bind(console,Qr(\\\"WARN\\\"),\\\"color: orange\\\"):console.log.bind(console,\\\"\\\\x1B[33m\\\",Qr(\\\"WARN\\\"))),e\u003C=Jn.info&&(B.info=console.info?console.info.bind(console,Qr(\\\"INFO\\\"),\\\"color: lightblue\\\"):console.log.bind(console,\\\"\\\\x1B[34m\\\",Qr(\\\"INFO\\\"))),e\u003C=Jn.debug&&(B.debug=console.debug?console.debug.bind(console,Qr(\\\"DEBUG\\\"),\\\"color: lightgreen\\\"):console.log.bind(console,\\\"\\\\x1B[32m\\\",Qr(\\\"DEBUG\\\"))),e\u003C=Jn.trace&&(B.trace=console.debug?console.debug.bind(console,Qr(\\\"TRACE\\\"),\\\"color: lightgreen\\\"):console.log.bind(console,\\\"\\\\x1B[32m\\\",Qr(\\\"TRACE\\\")))},Qr=t=>`%c${cn().format(\\\"ss.SSS\\\")} : ${t} : `;var Ju={};Object.defineProperty(Ju,\\\"__esModule\\\",{value:!0});var ti=Ju.sanitizeUrl=void 0,Eb=/^([^\\\\w]*)(javascript|data|vbscript)/im,Cb=/&#(\\\\w+)(^\\\\w|;)?/g,Sb=/[\\\\u0000-\\\\u001F\\\\u007F-\\\\u009F\\\\u2000-\\\\u200D\\\\uFEFF]/gim,Ab=/^([^:]+):/gm,Lb=[\\\".\\\",\\\"/\\\"];function Db(t){return Lb.indexOf(t[0])>-1}function Mb(t){return t.replace(Cb,function(e,r){return String.fromCharCode(r)})}function Nb(t){var e=Mb(t||\\\"\\\").replace(Sb,\\\"\\\").trim();if(!e)return\\\"about:blank\\\";if(Db(e))return e;var r=e.match(Ab);if(!r)return e;var n=r[0];return Eb.test(n)?\\\"about:blank\\\":e}ti=Ju.sanitizeUrl=Nb;function ul(t,e){return t==null||e==null?NaN:t\u003Ce?-1:t>e?1:t>=e?0:NaN}function Bb(t,e){return t==null||e==null?NaN:e\u003Ct?-1:e>t?1:e>=t?0:NaN}function th(t){let e,r,n;t.length!==2?(e=ul,r=(o,l)=>ul(t(o),l),n=(o,l)=>t(o)-l):(e=t===ul||t===Bb?t:Ib,r=t,n=t);function i(o,l,u=0,d=o.length){if(u\u003Cd){if(e(l,l)!==0)return d;do{const f=u+d>>>1;r(o[f],l)\u003C0?u=f+1:d=f}while(u\u003Cd)}return u}function s(o,l,u=0,d=o.length){if(u\u003Cd){if(e(l,l)!==0)return d;do{const f=u+d>>>1;r(o[f],l)\u003C=0?u=f+1:d=f}while(u\u003Cd)}return u}function a(o,l,u=0,d=o.length){const f=i(o,l,u,d-1);return f>u&&n(o[f-1],l)>-n(o[f],l)?f-1:f}return{left:i,center:a,right:s}}function Ib(){return 0}function Ob(t){return t===null?NaN:+t}const Rb=th(ul).right;th(Ob).center;const Fb=Rb;class Hd extends Map{constructor(e,r=Vb){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(const[n,i]of e)this.set(n,i)}get(e){return super.get(Gd(this,e))}has(e){return super.has(Gd(this,e))}set(e,r){return super.set(Pb(this,e),r)}delete(e){return super.delete(Yb(this,e))}}function Gd({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):r}function Pb({_intern:t,_key:e},r){const n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function Yb({_intern:t,_key:e},r){const n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function Vb(t){return t!==null&&typeof t==\\\"object\\\"?t.valueOf():t}var eh=Math.sqrt(50),rh=Math.sqrt(10),nh=Math.sqrt(2);function Ub(t,e,r){var n,i=-1,s,a,o;if(e=+e,t=+t,r=+r,t===e&&r>0)return[t];if((n=e\u003Ct)&&(s=t,t=e,e=s),(o=qd(t,e,r))===0||!isFinite(o))return[];if(o>0){let l=Math.round(t/o),u=Math.round(e/o);for(l*o\u003Ct&&++l,u*o>e&&--u,a=new Array(s=u-l+1);++i\u003Cs;)a[i]=(l+i)*o}else{o=-o;let l=Math.round(t*o),u=Math.round(e*o);for(l/o\u003Ct&&++l,u/o>e&&--u,a=new Array(s=u-l+1);++i\u003Cs;)a[i]=(l+i)/o}return n&&a.reverse(),a}function qd(t,e,r){var n=(e-t)/Math.max(0,r),i=Math.floor(Math.log(n)/Math.LN10),s=n/Math.pow(10,i);return i>=0?(s>=eh?10:s>=rh?5:s>=nh?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(s>=eh?10:s>=rh?5:s>=nh?2:1)}function ih(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),s=n/i;return s>=eh?i*=10:s>=rh?i*=5:s>=nh&&(i*=2),e\u003Ct?-i:i}function zb(t,e){let r;if(e===void 0)for(const n of t)n!=null&&(r\u003Cn||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r\u003Ci||r===void 0&&i>=i)&&(r=i)}return r}function Wb(t,e){let r;if(e===void 0)for(const n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}function Hb(t){return t}var hl=1,sh=2,ah=3,dl=4,jd=1e-6;function Gb(t){return\\\"translate(\\\"+t+\\\",0)\\\"}function qb(t){return\\\"translate(0,\\\"+t+\\\")\\\"}function jb(t){return e=>+t(e)}function $b(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function Xb(){return!this.__axis}function $d(t,e){var r=[],n=null,i=null,s=6,a=6,o=3,l=typeof window\u003C\\\"u\\\"&&window.devicePixelRatio>1?0:.5,u=t===hl||t===dl?-1:1,d=t===dl||t===sh?\\\"x\\\":\\\"y\\\",f=t===hl||t===ah?Gb:qb;function p(g){var b=n==null?e.ticks?e.ticks.apply(e,r):e.domain():n,k=i==null?e.tickFormat?e.tickFormat.apply(e,r):Hb:i,T=Math.max(s,0)+o,L=e.range(),E=+L[0]+l,I=+L[L.length-1]+l,V=(e.bandwidth?$b:jb)(e.copy(),l),H=g.selection?g.selection():g,G=H.selectAll(\\\".domain\\\").data([null]),Y=H.selectAll(\\\".tick\\\").data(b,e).order(),W=Y.exit(),N=Y.enter().append(\\\"g\\\").attr(\\\"class\\\",\\\"tick\\\"),D=Y.select(\\\"line\\\"),w=Y.select(\\\"text\\\");G=G.merge(G.enter().insert(\\\"path\\\",\\\".tick\\\").attr(\\\"class\\\",\\\"domain\\\").attr(\\\"stroke\\\",\\\"currentColor\\\")),Y=Y.merge(N),D=D.merge(N.append(\\\"line\\\").attr(\\\"stroke\\\",\\\"currentColor\\\").attr(d+\\\"2\\\",u*s)),w=w.merge(N.append(\\\"text\\\").attr(\\\"fill\\\",\\\"currentColor\\\").attr(d,u*T).attr(\\\"dy\\\",t===hl?\\\"0em\\\":t===ah?\\\"0.71em\\\":\\\"0.32em\\\")),g!==H&&(G=G.transition(g),Y=Y.transition(g),D=D.transition(g),w=w.transition(g),W=W.transition(g).attr(\\\"opacity\\\",jd).attr(\\\"transform\\\",function(v){return isFinite(v=V(v))?f(v+l):this.getAttribute(\\\"transform\\\")}),N.attr(\\\"opacity\\\",jd).attr(\\\"transform\\\",function(v){var M=this.parentNode.__axis;return f((M&&isFinite(M=M(v))?M:V(v))+l)})),W.remove(),G.attr(\\\"d\\\",t===dl||t===sh?a?\\\"M\\\"+u*a+\\\",\\\"+E+\\\"H\\\"+l+\\\"V\\\"+I+\\\"H\\\"+u*a:\\\"M\\\"+l+\\\",\\\"+E+\\\"V\\\"+I:a?\\\"M\\\"+E+\\\",\\\"+u*a+\\\"V\\\"+l+\\\"H\\\"+I+\\\"V\\\"+u*a:\\\"M\\\"+E+\\\",\\\"+l+\\\"H\\\"+I),Y.attr(\\\"opacity\\\",1).attr(\\\"transform\\\",function(v){return f(V(v)+l)}),D.attr(d+\\\"2\\\",u*s),w.attr(d,u*T).text(k),H.filter(Xb).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"font-size\\\",10).attr(\\\"font-family\\\",\\\"sans-serif\\\").attr(\\\"text-anchor\\\",t===sh?\\\"start\\\":t===dl?\\\"end\\\":\\\"middle\\\"),H.each(function(){this.__axis=V})}return p.scale=function(g){return arguments.length?(e=g,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(g){return arguments.length?(r=g==null?[]:Array.from(g),p):r.slice()},p.tickValues=function(g){return arguments.length?(n=g==null?null:Array.from(g),p):n&&n.slice()},p.tickFormat=function(g){return arguments.length?(i=g,p):i},p.tickSize=function(g){return arguments.length?(s=a=+g,p):s},p.tickSizeInner=function(g){return arguments.length?(s=+g,p):s},p.tickSizeOuter=function(g){return arguments.length?(a=+g,p):a},p.tickPadding=function(g){return arguments.length?(o=+g,p):o},p.offset=function(g){return arguments.length?(l=+g,p):l},p}function Kb(t){return $d(hl,t)}function Zb(t){return $d(ah,t)}var Qb={value:()=>{}};function Xd(){for(var t=0,e=arguments.length,r={},n;t\u003Ce;++t){if(!(n=arguments[t]+\\\"\\\")||n in r||/[\\\\s.]/.test(n))throw new Error(\\\"illegal type: \\\"+n);r[n]=[]}return new fl(r)}function fl(t){this._=t}function Jb(t,e){return t.trim().split(/^|\\\\s+/).map(function(r){var n=\\\"\\\",i=r.indexOf(\\\".\\\");if(i>=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error(\\\"unknown type: \\\"+r);return{type:r,name:n}})}fl.prototype=Xd.prototype={constructor:fl,on:function(t,e){var r=this._,n=Jb(t+\\\"\\\",r),i,s=-1,a=n.length;if(arguments.length\u003C2){for(;++s\u003Ca;)if((i=(t=n[s]).type)&&(i=t5(r[i],t.name)))return i;return}if(e!=null&&typeof e!=\\\"function\\\")throw new Error(\\\"invalid callback: \\\"+e);for(;++s\u003Ca;)if(i=(t=n[s]).type)r[i]=Kd(r[i],t.name,e);else if(e==null)for(i in r)r[i]=Kd(r[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new fl(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var r=new Array(i),n=0,i,s;n\u003Ci;++n)r[n]=arguments[n+2];if(!this._.hasOwnProperty(t))throw new Error(\\\"unknown type: \\\"+t);for(s=this._[t],n=0,i=s.length;n\u003Ci;++n)s[n].value.apply(e,r)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error(\\\"unknown type: \\\"+t);for(var n=this._[t],i=0,s=n.length;i\u003Cs;++i)n[i].value.apply(e,r)}};function t5(t,e){for(var r=0,n=t.length,i;r\u003Cn;++r)if((i=t[r]).name===e)return i.value}function Kd(t,e,r){for(var n=0,i=t.length;n\u003Ci;++n)if(t[n].name===e){t[n]=Qb,t=t.slice(0,n).concat(t.slice(n+1));break}return r!=null&&t.push({name:e,value:r}),t}var oh=\\\"http://www.w3.org/1999/xhtml\\\";const Zd={svg:\\\"http://www.w3.org/2000/svg\\\",xhtml:oh,xlink:\\\"http://www.w3.org/1999/xlink\\\",xml:\\\"http://www.w3.org/XML/1998/namespace\\\",xmlns:\\\"http://www.w3.org/2000/xmlns/\\\"};function pl(t){var e=t+=\\\"\\\",r=e.indexOf(\\\":\\\");return r>=0&&(e=t.slice(0,r))!==\\\"xmlns\\\"&&(t=t.slice(r+1)),Zd.hasOwnProperty(e)?{space:Zd[e],local:t}:t}function e5(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===oh&&e.documentElement.namespaceURI===oh?e.createElement(t):e.createElementNS(r,t)}}function r5(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Qd(t){var e=pl(t);return(e.local?r5:e5)(e)}function n5(){}function lh(t){return t==null?n5:function(){return this.querySelector(t)}}function i5(t){typeof t!=\\\"function\\\"&&(t=lh(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i\u003Cr;++i)for(var s=e[i],a=s.length,o=n[i]=new Array(a),l,u,d=0;d\u003Ca;++d)(l=s[d])&&(u=t.call(l,l.__data__,d,s))&&(\\\"__data__\\\"in l&&(u.__data__=l.__data__),o[d]=u);return new Ar(n,this._parents)}function Jd(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function s5(){return[]}function tf(t){return t==null?s5:function(){return this.querySelectorAll(t)}}function a5(t){return function(){return Jd(t.apply(this,arguments))}}function o5(t){typeof t==\\\"function\\\"?t=a5(t):t=tf(t);for(var e=this._groups,r=e.length,n=[],i=[],s=0;s\u003Cr;++s)for(var a=e[s],o=a.length,l,u=0;u\u003Co;++u)(l=a[u])&&(n.push(t.call(l,l.__data__,u,a)),i.push(l));return new Ar(n,i)}function ef(t){return function(){return this.matches(t)}}function rf(t){return function(e){return e.matches(t)}}var l5=Array.prototype.find;function c5(t){return function(){return l5.call(this.children,t)}}function u5(){return this.firstElementChild}function h5(t){return this.select(t==null?u5:c5(typeof t==\\\"function\\\"?t:rf(t)))}var d5=Array.prototype.filter;function f5(){return Array.from(this.children)}function p5(t){return function(){return d5.call(this.children,t)}}function g5(t){return this.selectAll(t==null?f5:p5(typeof t==\\\"function\\\"?t:rf(t)))}function y5(t){typeof t!=\\\"function\\\"&&(t=ef(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i\u003Cr;++i)for(var s=e[i],a=s.length,o=n[i]=[],l,u=0;u\u003Ca;++u)(l=s[u])&&t.call(l,l.__data__,u,s)&&o.push(l);return new Ar(n,this._parents)}function nf(t){return new Array(t.length)}function m5(){return new Ar(this._enter||this._groups.map(nf),this._parents)}function gl(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}gl.prototype={constructor:gl,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function b5(t){return function(){return t}}function _5(t,e,r,n,i,s){for(var a=0,o,l=e.length,u=s.length;a\u003Cu;++a)(o=e[a])?(o.__data__=s[a],n[a]=o):r[a]=new gl(t,s[a]);for(;a\u003Cl;++a)(o=e[a])&&(i[a]=o)}function x5(t,e,r,n,i,s,a){var o,l,u=new Map,d=e.length,f=s.length,p=new Array(d),g;for(o=0;o\u003Cd;++o)(l=e[o])&&(p[o]=g=a.call(l,l.__data__,o,e)+\\\"\\\",u.has(g)?i[o]=l:u.set(g,l));for(o=0;o\u003Cf;++o)g=a.call(t,s[o],o,s)+\\\"\\\",(l=u.get(g))?(n[o]=l,l.__data__=s[o],u.delete(g)):r[o]=new gl(t,s[o]);for(o=0;o\u003Cd;++o)(l=e[o])&&u.get(p[o])===l&&(i[o]=l)}function v5(t){return t.__data__}function k5(t,e){if(!arguments.length)return Array.from(this,v5);var r=e?x5:_5,n=this._parents,i=this._groups;typeof t!=\\\"function\\\"&&(t=b5(t));for(var s=i.length,a=new Array(s),o=new Array(s),l=new Array(s),u=0;u\u003Cs;++u){var d=n[u],f=i[u],p=f.length,g=w5(t.call(d,d&&d.__data__,u,n)),b=g.length,k=o[u]=new Array(b),T=a[u]=new Array(b),L=l[u]=new Array(p);r(d,f,k,T,L,g,e);for(var E=0,I=0,V,H;E\u003Cb;++E)if(V=k[E]){for(E>=I&&(I=E+1);!(H=T[I])&&++I\u003Cb;);V._next=H||null}}return a=new Ar(a,n),a._enter=o,a._exit=l,a}function w5(t){return typeof t==\\\"object\\\"&&\\\"length\\\"in t?t:Array.from(t)}function T5(){return new Ar(this._exit||this._groups.map(nf),this._parents)}function E5(t,e,r){var n=this.enter(),i=this,s=this.exit();return typeof t==\\\"function\\\"?(n=t(n),n&&(n=n.selection())):n=n.append(t+\\\"\\\"),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?s.remove():r(s),n&&i?n.merge(i).order():i}function C5(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,s=n.length,a=Math.min(i,s),o=new Array(i),l=0;l\u003Ca;++l)for(var u=r[l],d=n[l],f=u.length,p=o[l]=new Array(f),g,b=0;b\u003Cf;++b)(g=u[b]||d[b])&&(p[b]=g);for(;l\u003Ci;++l)o[l]=r[l];return new Ar(o,this._parents)}function S5(){for(var t=this._groups,e=-1,r=t.length;++e\u003Cr;)for(var n=t[e],i=n.length-1,s=n[i],a;--i>=0;)(a=n[i])&&(s&&a.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(a,s),s=a);return this}function A5(t){t||(t=L5);function e(f,p){return f&&p?t(f.__data__,p.__data__):!f-!p}for(var r=this._groups,n=r.length,i=new Array(n),s=0;s\u003Cn;++s){for(var a=r[s],o=a.length,l=i[s]=new Array(o),u,d=0;d\u003Co;++d)(u=a[d])&&(l[d]=u);l.sort(e)}return new Ar(i,this._parents).order()}function L5(t,e){return t\u003Ce?-1:t>e?1:t>=e?0:NaN}function D5(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function M5(){return Array.from(this)}function N5(){for(var t=this._groups,e=0,r=t.length;e\u003Cr;++e)for(var n=t[e],i=0,s=n.length;i\u003Cs;++i){var a=n[i];if(a)return a}return null}function B5(){let t=0;for(const e of this)++t;return t}function I5(){return!this.node()}function O5(t){for(var e=this._groups,r=0,n=e.length;r\u003Cn;++r)for(var i=e[r],s=0,a=i.length,o;s\u003Ca;++s)(o=i[s])&&t.call(o,o.__data__,s,i);return this}function R5(t){return function(){this.removeAttribute(t)}}function F5(t){return function(){this.removeAttributeNS(t.space,t.local)}}function P5(t,e){return function(){this.setAttribute(t,e)}}function Y5(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function V5(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function U5(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function z5(t,e){var r=pl(t);if(arguments.length\u003C2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?F5:R5:typeof e==\\\"function\\\"?r.local?U5:V5:r.local?Y5:P5)(r,e))}function sf(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function W5(t){return function(){this.style.removeProperty(t)}}function H5(t,e,r){return function(){this.style.setProperty(t,e,r)}}function G5(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function q5(t,e,r){return arguments.length>1?this.each((e==null?W5:typeof e==\\\"function\\\"?G5:H5)(t,e,r==null?\\\"\\\":r)):Vs(this.node(),t)}function Vs(t,e){return t.style.getPropertyValue(e)||sf(t).getComputedStyle(t,null).getPropertyValue(e)}function j5(t){return function(){delete this[t]}}function $5(t,e){return function(){this[t]=e}}function X5(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function K5(t,e){return arguments.length>1?this.each((e==null?j5:typeof e==\\\"function\\\"?X5:$5)(t,e)):this.node()[t]}function af(t){return t.trim().split(/^|\\\\s+/)}function ch(t){return t.classList||new of(t)}function of(t){this._node=t,this._names=af(t.getAttribute(\\\"class\\\")||\\\"\\\")}of.prototype={add:function(t){var e=this._names.indexOf(t);e\u003C0&&(this._names.push(t),this._node.setAttribute(\\\"class\\\",this._names.join(\\\" \\\")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute(\\\"class\\\",this._names.join(\\\" \\\")))},contains:function(t){return this._names.indexOf(t)>=0}};function lf(t,e){for(var r=ch(t),n=-1,i=e.length;++n\u003Ci;)r.add(e[n])}function cf(t,e){for(var r=ch(t),n=-1,i=e.length;++n\u003Ci;)r.remove(e[n])}function Z5(t){return function(){lf(this,t)}}function Q5(t){return function(){cf(this,t)}}function J5(t,e){return function(){(e.apply(this,arguments)?lf:cf)(this,t)}}function t_(t,e){var r=af(t+\\\"\\\");if(arguments.length\u003C2){for(var n=ch(this.node()),i=-1,s=r.length;++i\u003Cs;)if(!n.contains(r[i]))return!1;return!0}return this.each((typeof e==\\\"function\\\"?J5:e?Z5:Q5)(r,e))}function e_(){this.textContent=\\\"\\\"}function r_(t){return function(){this.textContent=t}}function n_(t){return function(){var e=t.apply(this,arguments);this.textContent=e==null?\\\"\\\":e}}function i_(t){return arguments.length?this.each(t==null?e_:(typeof t==\\\"function\\\"?n_:r_)(t)):this.node().textContent}function s_(){this.innerHTML=\\\"\\\"}function a_(t){return function(){this.innerHTML=t}}function o_(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e==null?\\\"\\\":e}}function l_(t){return arguments.length?this.each(t==null?s_:(typeof t==\\\"function\\\"?o_:a_)(t)):this.node().innerHTML}function c_(){this.nextSibling&&this.parentNode.appendChild(this)}function u_(){return this.each(c_)}function h_(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function d_(){return this.each(h_)}function f_(t){var e=typeof t==\\\"function\\\"?t:Qd(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function p_(){return null}function g_(t,e){var r=typeof t==\\\"function\\\"?t:Qd(t),n=e==null?p_:typeof e==\\\"function\\\"?e:lh(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}function y_(){var t=this.parentNode;t&&t.removeChild(this)}function m_(){return this.each(y_)}function b_(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function __(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function x_(t){return this.select(t?__:b_)}function v_(t){return arguments.length?this.property(\\\"__data__\\\",t):this.node().__data__}function k_(t){return function(e){t.call(this,e,this.__data__)}}function w_(t){return t.trim().split(/^|\\\\s+/).map(function(e){var r=\\\"\\\",n=e.indexOf(\\\".\\\");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function T_(t){return function(){var e=this.__on;if(!!e){for(var r=0,n=-1,i=e.length,s;r\u003Ci;++r)s=e[r],(!t.type||s.type===t.type)&&s.name===t.name?this.removeEventListener(s.type,s.listener,s.options):e[++n]=s;++n?e.length=n:delete this.__on}}}function E_(t,e,r){return function(){var n=this.__on,i,s=k_(e);if(n){for(var a=0,o=n.length;a\u003Co;++a)if((i=n[a]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=s,i.options=r),i.value=e;return}}this.addEventListener(t.type,s,r),i={type:t.type,name:t.name,value:e,listener:s,options:r},n?n.push(i):this.__on=[i]}}function C_(t,e,r){var n=w_(t+\\\"\\\"),i,s=n.length,a;if(arguments.length\u003C2){var o=this.node().__on;if(o){for(var l=0,u=o.length,d;l\u003Cu;++l)for(i=0,d=o[l];i\u003Cs;++i)if((a=n[i]).type===d.type&&a.name===d.name)return d.value}return}for(o=e?E_:T_,i=0;i\u003Cs;++i)this.each(o(n[i],e,r));return this}function uf(t,e,r){var n=sf(t),i=n.CustomEvent;typeof i==\\\"function\\\"?i=new i(e,r):(i=n.document.createEvent(\\\"Event\\\"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function S_(t,e){return function(){return uf(this,t,e)}}function A_(t,e){return function(){return uf(this,t,e.apply(this,arguments))}}function L_(t,e){return this.each((typeof e==\\\"function\\\"?A_:S_)(t,e))}function*D_(){for(var t=this._groups,e=0,r=t.length;e\u003Cr;++e)for(var n=t[e],i=0,s=n.length,a;i\u003Cs;++i)(a=n[i])&&(yield a)}var uh=[null];function Ar(t,e){this._groups=t,this._parents=e}function Wa(){return new Ar([[document.documentElement]],uh)}function M_(){return this}Ar.prototype=Wa.prototype={constructor:Ar,select:i5,selectAll:o5,selectChild:h5,selectChildren:g5,filter:y5,data:k5,enter:m5,exit:T5,join:E5,merge:C5,selection:M_,order:S5,sort:A5,call:D5,nodes:M5,node:N5,size:B5,empty:I5,each:O5,attr:z5,style:q5,property:K5,classed:t_,text:i_,html:l_,raise:u_,lower:d_,append:f_,insert:g_,remove:m_,clone:x_,datum:v_,on:C_,dispatch:L_,[Symbol.iterator]:D_};function St(t){return typeof t==\\\"string\\\"?new Ar([[document.querySelector(t)]],[document.documentElement]):new Ar([[t]],uh)}function hh(t){return typeof t==\\\"string\\\"?new Ar([document.querySelectorAll(t)],[document.documentElement]):new Ar([Jd(t)],uh)}function Ha(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function yl(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}function es(){}var Ga=.7,ml=1/Ga,Us=\\\"\\\\\\\\s*([+-]?\\\\\\\\d+)\\\\\\\\s*\\\",qa=\\\"\\\\\\\\s*([+-]?(?:\\\\\\\\d*\\\\\\\\.)?\\\\\\\\d+(?:[eE][+-]?\\\\\\\\d+)?)\\\\\\\\s*\\\",Rn=\\\"\\\\\\\\s*([+-]?(?:\\\\\\\\d*\\\\\\\\.)?\\\\\\\\d+(?:[eE][+-]?\\\\\\\\d+)?)%\\\\\\\\s*\\\",N_=/^#([0-9a-f]{3,8})$/,B_=new RegExp(`^rgb\\\\\\\\(${Us},${Us},${Us}\\\\\\\\)$`),I_=new RegExp(`^rgb\\\\\\\\(${Rn},${Rn},${Rn}\\\\\\\\)$`),O_=new RegExp(`^rgba\\\\\\\\(${Us},${Us},${Us},${qa}\\\\\\\\)$`),R_=new RegExp(`^rgba\\\\\\\\(${Rn},${Rn},${Rn},${qa}\\\\\\\\)$`),F_=new RegExp(`^hsl\\\\\\\\(${qa},${Rn},${Rn}\\\\\\\\)$`),P_=new RegExp(`^hsla\\\\\\\\(${qa},${Rn},${Rn},${qa}\\\\\\\\)$`),hf={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Ha(es,rs,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:df,formatHex:df,formatHex8:Y_,formatHsl:V_,formatRgb:ff,toString:ff});function df(){return this.rgb().formatHex()}function Y_(){return this.rgb().formatHex8()}function V_(){return _f(this).formatHsl()}function ff(){return this.rgb().formatRgb()}function rs(t){var e,r;return t=(t+\\\"\\\").trim().toLowerCase(),(e=N_.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?pf(e):r===3?new vr(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)\u003C\u003C4|e&15,1):r===8?bl(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?bl(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)\u003C\u003C4|e&15)/255):null):(e=B_.exec(t))?new vr(e[1],e[2],e[3],1):(e=I_.exec(t))?new vr(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=O_.exec(t))?bl(e[1],e[2],e[3],e[4]):(e=R_.exec(t))?bl(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=F_.exec(t))?bf(e[1],e[2]/100,e[3]/100,1):(e=P_.exec(t))?bf(e[1],e[2]/100,e[3]/100,e[4]):hf.hasOwnProperty(t)?pf(hf[t]):t===\\\"transparent\\\"?new vr(NaN,NaN,NaN,0):null}function pf(t){return new vr(t>>16&255,t>>8&255,t&255,1)}function bl(t,e,r,n){return n\u003C=0&&(t=e=r=NaN),new vr(t,e,r,n)}function gf(t){return t instanceof es||(t=rs(t)),t?(t=t.rgb(),new vr(t.r,t.g,t.b,t.opacity)):new vr}function dh(t,e,r,n){return arguments.length===1?gf(t):new vr(t,e,r,n==null?1:n)}function vr(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}Ha(vr,dh,yl(es,{brighter(t){return t=t==null?ml:Math.pow(ml,t),new vr(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Ga:Math.pow(Ga,t),new vr(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new vr(ns(this.r),ns(this.g),ns(this.b),_l(this.opacity))},displayable(){return-.5\u003C=this.r&&this.r\u003C255.5&&-.5\u003C=this.g&&this.g\u003C255.5&&-.5\u003C=this.b&&this.b\u003C255.5&&0\u003C=this.opacity&&this.opacity\u003C=1},hex:yf,formatHex:yf,formatHex8:U_,formatRgb:mf,toString:mf}));function yf(){return`#${is(this.r)}${is(this.g)}${is(this.b)}`}function U_(){return`#${is(this.r)}${is(this.g)}${is(this.b)}${is((isNaN(this.opacity)?1:this.opacity)*255)}`}function mf(){const t=_l(this.opacity);return`${t===1?\\\"rgb(\\\":\\\"rgba(\\\"}${ns(this.r)}, ${ns(this.g)}, ${ns(this.b)}${t===1?\\\")\\\":`, ${t})`}`}function _l(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function ns(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function is(t){return t=ns(t),(t\u003C16?\\\"0\\\":\\\"\\\")+t.toString(16)}function bf(t,e,r,n){return n\u003C=0?t=e=r=NaN:r\u003C=0||r>=1?t=e=NaN:e\u003C=0&&(t=NaN),new un(t,e,r,n)}function _f(t){if(t instanceof un)return new un(t.h,t.s,t.l,t.opacity);if(t instanceof es||(t=rs(t)),!t)return new un;if(t instanceof un)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),s=Math.max(e,r,n),a=NaN,o=s-i,l=(s+i)/2;return o?(e===s?a=(r-n)/o+(r\u003Cn)*6:r===s?a=(n-e)/o+2:a=(e-r)/o+4,o/=l\u003C.5?s+i:2-s-i,a*=60):o=l>0&&l\u003C1?0:a,new un(a,o,l,t.opacity)}function z_(t,e,r,n){return arguments.length===1?_f(t):new un(t,e,r,n==null?1:n)}function un(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}Ha(un,z_,yl(es,{brighter(t){return t=t==null?ml:Math.pow(ml,t),new un(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ga:Math.pow(Ga,t),new un(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h\u003C0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r\u003C.5?r:1-r)*e,i=2*r-n;return new vr(fh(t>=240?t-240:t+120,i,n),fh(t,i,n),fh(t\u003C120?t+240:t-120,i,n),this.opacity)},clamp(){return new un(xf(this.h),xl(this.s),xl(this.l),_l(this.opacity))},displayable(){return(0\u003C=this.s&&this.s\u003C=1||isNaN(this.s))&&0\u003C=this.l&&this.l\u003C=1&&0\u003C=this.opacity&&this.opacity\u003C=1},formatHsl(){const t=_l(this.opacity);return`${t===1?\\\"hsl(\\\":\\\"hsla(\\\"}${xf(this.h)}, ${xl(this.s)*100}%, ${xl(this.l)*100}%${t===1?\\\")\\\":`, ${t})`}`}}));function xf(t){return t=(t||0)%360,t\u003C0?t+360:t}function xl(t){return Math.max(0,Math.min(1,t||0))}function fh(t,e,r){return(t\u003C60?e+(r-e)*t/60:t\u003C180?r:t\u003C240?e+(r-e)*(240-t)/60:e)*255}const W_=Math.PI/180,H_=180/Math.PI,vl=18,vf=.96422,kf=1,wf=.82521,Tf=4/29,zs=6/29,Ef=3*zs*zs,G_=zs*zs*zs;function Cf(t){if(t instanceof Fn)return new Fn(t.l,t.a,t.b,t.opacity);if(t instanceof ei)return Sf(t);t instanceof vr||(t=gf(t));var e=mh(t.r),r=mh(t.g),n=mh(t.b),i=ph((.2225045*e+.7168786*r+.0606169*n)/kf),s,a;return e===r&&r===n?s=a=i:(s=ph((.4360747*e+.3850649*r+.1430804*n)/vf),a=ph((.0139322*e+.0971045*r+.7141733*n)/wf)),new Fn(116*i-16,500*(s-i),200*(i-a),t.opacity)}function q_(t,e,r,n){return arguments.length===1?Cf(t):new Fn(t,e,r,n==null?1:n)}function Fn(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}Ha(Fn,q_,yl(es,{brighter(t){return new Fn(this.l+vl*(t==null?1:t),this.a,this.b,this.opacity)},darker(t){return new Fn(this.l-vl*(t==null?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=vf*gh(e),t=kf*gh(t),r=wf*gh(r),new vr(yh(3.1338561*e-1.6168667*t-.4906146*r),yh(-.9787684*e+1.9161415*t+.033454*r),yh(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));function ph(t){return t>G_?Math.pow(t,1/3):t/Ef+Tf}function gh(t){return t>zs?t*t*t:Ef*(t-Tf)}function yh(t){return 255*(t\u003C=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function mh(t){return(t/=255)\u003C=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function j_(t){if(t instanceof ei)return new ei(t.h,t.c,t.l,t.opacity);if(t instanceof Fn||(t=Cf(t)),t.a===0&&t.b===0)return new ei(NaN,0\u003Ct.l&&t.l\u003C100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*H_;return new ei(e\u003C0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function bh(t,e,r,n){return arguments.length===1?j_(t):new ei(t,e,r,n==null?1:n)}function ei(t,e,r,n){this.h=+t,this.c=+e,this.l=+r,this.opacity=+n}function Sf(t){if(isNaN(t.h))return new Fn(t.l,0,0,t.opacity);var e=t.h*W_;return new Fn(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Ha(ei,bh,yl(es,{brighter(t){return new ei(this.h,this.c,this.l+vl*(t==null?1:t),this.opacity)},darker(t){return new ei(this.h,this.c,this.l-vl*(t==null?1:t),this.opacity)},rgb(){return Sf(this).rgb()}}));const kl=t=>()=>t;function Af(t,e){return function(r){return t+r*e}}function $_(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function X_(t,e){var r=e-t;return r?Af(t,r>180||r\u003C-180?r-360*Math.round(r/360):r):kl(isNaN(t)?e:t)}function K_(t){return(t=+t)==1?ja:function(e,r){return r-e?$_(e,r,t):kl(isNaN(e)?r:e)}}function ja(t,e){var r=e-t;return r?Af(t,r):kl(isNaN(t)?e:t)}const wl=function t(e){var r=K_(e);function n(i,s){var a=r((i=dh(i)).r,(s=dh(s)).r),o=r(i.g,s.g),l=r(i.b,s.b),u=ja(i.opacity,s.opacity);return function(d){return i.r=a(d),i.g=o(d),i.b=l(d),i.opacity=u(d),i+\\\"\\\"}}return n.gamma=t,n}(1);function Z_(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(s){for(i=0;i\u003Cr;++i)n[i]=t[i]*(1-s)+e[i]*s;return n}}function Q_(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function J_(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),s=new Array(r),a;for(a=0;a\u003Cn;++a)i[a]=vh(t[a],e[a]);for(;a\u003Cr;++a)s[a]=e[a];return function(o){for(a=0;a\u003Cn;++a)s[a]=i[a](o);return s}}function tx(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}function hn(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}function ex(t,e){var r={},n={},i;(t===null||typeof t!=\\\"object\\\")&&(t={}),(e===null||typeof e!=\\\"object\\\")&&(e={});for(i in e)i in t?r[i]=vh(t[i],e[i]):n[i]=e[i];return function(s){for(i in r)n[i]=r[i](s);return n}}var _h=/[-+]?(?:\\\\d+\\\\.?\\\\d*|\\\\.?\\\\d+)(?:[eE][-+]?\\\\d+)?/g,xh=new RegExp(_h.source,\\\"g\\\");function rx(t){return function(){return t}}function nx(t){return function(e){return t(e)+\\\"\\\"}}function Lf(t,e){var r=_h.lastIndex=xh.lastIndex=0,n,i,s,a=-1,o=[],l=[];for(t=t+\\\"\\\",e=e+\\\"\\\";(n=_h.exec(t))&&(i=xh.exec(e));)(s=i.index)>r&&(s=e.slice(r,s),o[a]?o[a]+=s:o[++a]=s),(n=n[0])===(i=i[0])?o[a]?o[a]+=i:o[++a]=i:(o[++a]=null,l.push({i:a,x:hn(n,i)})),r=xh.lastIndex;return r\u003Ce.length&&(s=e.slice(r),o[a]?o[a]+=s:o[++a]=s),o.length\u003C2?l[0]?nx(l[0].x):rx(e):(e=l.length,function(u){for(var d=0,f;d\u003Ce;++d)o[(f=l[d]).i]=f.x(u);return o.join(\\\"\\\")})}function vh(t,e){var r=typeof e,n;return e==null||r===\\\"boolean\\\"?kl(e):(r===\\\"number\\\"?hn:r===\\\"string\\\"?(n=rs(e))?(e=n,wl):Lf:e instanceof rs?wl:e instanceof Date?tx:Q_(e)?Z_:Array.isArray(e)?J_:typeof e.valueOf!=\\\"function\\\"&&typeof e.toString!=\\\"function\\\"||isNaN(e)?ex:hn)(t,e)}function ix(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var Df=180/Math.PI,kh={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Mf(t,e,r,n,i,s){var a,o,l;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(l=t*r+e*n)&&(r-=t*l,n-=e*l),(o=Math.sqrt(r*r+n*n))&&(r/=o,n/=o,l/=o),t*n\u003Ce*r&&(t=-t,e=-e,l=-l,a=-a),{translateX:i,translateY:s,rotate:Math.atan2(e,t)*Df,skewX:Math.atan(l)*Df,scaleX:a,scaleY:o}}var Tl;function sx(t){const e=new(typeof DOMMatrix==\\\"function\\\"?DOMMatrix:WebKitCSSMatrix)(t+\\\"\\\");return e.isIdentity?kh:Mf(e.a,e.b,e.c,e.d,e.e,e.f)}function ax(t){return t==null||(Tl||(Tl=document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"g\\\")),Tl.setAttribute(\\\"transform\\\",t),!(t=Tl.transform.baseVal.consolidate()))?kh:(t=t.matrix,Mf(t.a,t.b,t.c,t.d,t.e,t.f))}function Nf(t,e,r,n){function i(u){return u.length?u.pop()+\\\" \\\":\\\"\\\"}function s(u,d,f,p,g,b){if(u!==f||d!==p){var k=g.push(\\\"translate(\\\",null,e,null,r);b.push({i:k-4,x:hn(u,f)},{i:k-2,x:hn(d,p)})}else(f||p)&&g.push(\\\"translate(\\\"+f+e+p+r)}function a(u,d,f,p){u!==d?(u-d>180?d+=360:d-u>180&&(u+=360),p.push({i:f.push(i(f)+\\\"rotate(\\\",null,n)-2,x:hn(u,d)})):d&&f.push(i(f)+\\\"rotate(\\\"+d+n)}function o(u,d,f,p){u!==d?p.push({i:f.push(i(f)+\\\"skewX(\\\",null,n)-2,x:hn(u,d)}):d&&f.push(i(f)+\\\"skewX(\\\"+d+n)}function l(u,d,f,p,g,b){if(u!==f||d!==p){var k=g.push(i(g)+\\\"scale(\\\",null,\\\",\\\",null,\\\")\\\");b.push({i:k-4,x:hn(u,f)},{i:k-2,x:hn(d,p)})}else(f!==1||p!==1)&&g.push(i(g)+\\\"scale(\\\"+f+\\\",\\\"+p+\\\")\\\")}return function(u,d){var f=[],p=[];return u=t(u),d=t(d),s(u.translateX,u.translateY,d.translateX,d.translateY,f,p),a(u.rotate,d.rotate,f,p),o(u.skewX,d.skewX,f,p),l(u.scaleX,u.scaleY,d.scaleX,d.scaleY,f,p),u=d=null,function(g){for(var b=-1,k=p.length,T;++b\u003Ck;)f[(T=p[b]).i]=T.x(g);return f.join(\\\"\\\")}}}var ox=Nf(sx,\\\"px, \\\",\\\"px)\\\",\\\"deg)\\\"),lx=Nf(ax,\\\", \\\",\\\")\\\",\\\")\\\");function cx(t){return function(e,r){var n=t((e=bh(e)).h,(r=bh(r)).h),i=ja(e.c,r.c),s=ja(e.l,r.l),a=ja(e.opacity,r.opacity);return function(o){return e.h=n(o),e.c=i(o),e.l=s(o),e.opacity=a(o),e+\\\"\\\"}}}const ux=cx(X_);var Ws=0,$a=0,Xa=0,Bf=1e3,El,Ka,Cl=0,ss=0,Sl=0,Za=typeof performance==\\\"object\\\"&&performance.now?performance:Date,If=typeof window==\\\"object\\\"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function wh(){return ss||(If(hx),ss=Za.now()+Sl)}function hx(){ss=0}function Al(){this._call=this._time=this._next=null}Al.prototype=Of.prototype={constructor:Al,restart:function(t,e,r){if(typeof t!=\\\"function\\\")throw new TypeError(\\\"callback is not a function\\\");r=(r==null?wh():+r)+(e==null?0:+e),!this._next&&Ka!==this&&(Ka?Ka._next=this:El=this,Ka=this),this._call=t,this._time=r,Th()},stop:function(){this._call&&(this._call=null,this._time=1/0,Th())}};function Of(t,e,r){var n=new Al;return n.restart(t,e,r),n}function dx(){wh(),++Ws;for(var t=El,e;t;)(e=ss-t._time)>=0&&t._call.call(void 0,e),t=t._next;--Ws}function Rf(){ss=(Cl=Za.now())+Sl,Ws=$a=0;try{dx()}finally{Ws=0,px(),ss=0}}function fx(){var t=Za.now(),e=t-Cl;e>Bf&&(Sl-=e,Cl=t)}function px(){for(var t,e=El,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:El=r);Ka=t,Th(n)}function Th(t){if(!Ws){$a&&($a=clearTimeout($a));var e=t-ss;e>24?(t\u003C1/0&&($a=setTimeout(Rf,t-Za.now()-Sl)),Xa&&(Xa=clearInterval(Xa))):(Xa||(Cl=Za.now(),Xa=setInterval(fx,Bf)),Ws=1,If(Rf))}}function Ff(t,e,r){var n=new Al;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var gx=Xd(\\\"start\\\",\\\"end\\\",\\\"cancel\\\",\\\"interrupt\\\"),yx=[],Pf=0,Yf=1,Eh=2,Ll=3,Vf=4,Ch=5,Dl=6;function Ml(t,e,r,n,i,s){var a=t.__transition;if(!a)t.__transition={};else if(r in a)return;mx(t,r,{name:e,index:n,group:i,on:gx,tween:yx,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Pf})}function Sh(t,e){var r=dn(t,e);if(r.state>Pf)throw new Error(\\\"too late; already scheduled\\\");return r}function Pn(t,e){var r=dn(t,e);if(r.state>Ll)throw new Error(\\\"too late; already running\\\");return r}function dn(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error(\\\"transition not found\\\");return r}function mx(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=Of(s,0,r.time);function s(u){r.state=Yf,r.timer.restart(a,r.delay,r.time),r.delay\u003C=u&&a(u-r.delay)}function a(u){var d,f,p,g;if(r.state!==Yf)return l();for(d in n)if(g=n[d],g.name===r.name){if(g.state===Ll)return Ff(a);g.state===Vf?(g.state=Dl,g.timer.stop(),g.on.call(\\\"interrupt\\\",t,t.__data__,g.index,g.group),delete n[d]):+d\u003Ce&&(g.state=Dl,g.timer.stop(),g.on.call(\\\"cancel\\\",t,t.__data__,g.index,g.group),delete n[d])}if(Ff(function(){r.state===Ll&&(r.state=Vf,r.timer.restart(o,r.delay,r.time),o(u))}),r.state=Eh,r.on.call(\\\"start\\\",t,t.__data__,r.index,r.group),r.state===Eh){for(r.state=Ll,i=new Array(p=r.tween.length),d=0,f=-1;d\u003Cp;++d)(g=r.tween[d].value.call(t,t.__data__,r.index,r.group))&&(i[++f]=g);i.length=f+1}}function o(u){for(var d=u\u003Cr.duration?r.ease.call(null,u/r.duration):(r.timer.restart(l),r.state=Ch,1),f=-1,p=i.length;++f\u003Cp;)i[f].call(t,d);r.state===Ch&&(r.on.call(\\\"end\\\",t,t.__data__,r.index,r.group),l())}function l(){r.state=Dl,r.timer.stop(),delete n[e];for(var u in n)return;delete t.__transition}}function bx(t,e){var r=t.__transition,n,i,s=!0,a;if(!!r){e=e==null?null:e+\\\"\\\";for(a in r){if((n=r[a]).name!==e){s=!1;continue}i=n.state>Eh&&n.state\u003CCh,n.state=Dl,n.timer.stop(),n.on.call(i?\\\"interrupt\\\":\\\"cancel\\\",t,t.__data__,n.index,n.group),delete r[a]}s&&delete t.__transition}}function _x(t){return this.each(function(){bx(this,t)})}function xx(t,e){var r,n;return function(){var i=Pn(this,t),s=i.tween;if(s!==r){n=r=s;for(var a=0,o=n.length;a\u003Co;++a)if(n[a].name===e){n=n.slice(),n.splice(a,1);break}}i.tween=n}}function vx(t,e,r){var n,i;if(typeof r!=\\\"function\\\")throw new Error;return function(){var s=Pn(this,t),a=s.tween;if(a!==n){i=(n=a).slice();for(var o={name:e,value:r},l=0,u=i.length;l\u003Cu;++l)if(i[l].name===e){i[l]=o;break}l===u&&i.push(o)}s.tween=i}}function kx(t,e){var r=this._id;if(t+=\\\"\\\",arguments.length\u003C2){for(var n=dn(this.node(),r).tween,i=0,s=n.length,a;i\u003Cs;++i)if((a=n[i]).name===t)return a.value;return null}return this.each((e==null?xx:vx)(r,t,e))}function Ah(t,e,r){var n=t._id;return t.each(function(){var i=Pn(this,n);(i.value||(i.value={}))[e]=r.apply(this,arguments)}),function(i){return dn(i,n).value[e]}}function Uf(t,e){var r;return(typeof e==\\\"number\\\"?hn:e instanceof rs?wl:(r=rs(e))?(e=r,wl):Lf)(t,e)}function wx(t){return function(){this.removeAttribute(t)}}function Tx(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ex(t,e,r){var n,i=r+\\\"\\\",s;return function(){var a=this.getAttribute(t);return a===i?null:a===n?s:s=e(n=a,r)}}function Cx(t,e,r){var n,i=r+\\\"\\\",s;return function(){var a=this.getAttributeNS(t.space,t.local);return a===i?null:a===n?s:s=e(n=a,r)}}function Sx(t,e,r){var n,i,s;return function(){var a,o=r(this),l;return o==null?void this.removeAttribute(t):(a=this.getAttribute(t),l=o+\\\"\\\",a===l?null:a===n&&l===i?s:(i=l,s=e(n=a,o)))}}function Ax(t,e,r){var n,i,s;return function(){var a,o=r(this),l;return o==null?void this.removeAttributeNS(t.space,t.local):(a=this.getAttributeNS(t.space,t.local),l=o+\\\"\\\",a===l?null:a===n&&l===i?s:(i=l,s=e(n=a,o)))}}function Lx(t,e){var r=pl(t),n=r===\\\"transform\\\"?lx:Uf;return this.attrTween(t,typeof e==\\\"function\\\"?(r.local?Ax:Sx)(r,n,Ah(this,\\\"attr.\\\"+t,e)):e==null?(r.local?Tx:wx)(r):(r.local?Cx:Ex)(r,n,e))}function Dx(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function Mx(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function Nx(t,e){var r,n;function i(){var s=e.apply(this,arguments);return s!==n&&(r=(n=s)&&Mx(t,s)),r}return i._value=e,i}function Bx(t,e){var r,n;function i(){var s=e.apply(this,arguments);return s!==n&&(r=(n=s)&&Dx(t,s)),r}return i._value=e,i}function Ix(t,e){var r=\\\"attr.\\\"+t;if(arguments.length\u003C2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!=\\\"function\\\")throw new Error;var n=pl(t);return this.tween(r,(n.local?Nx:Bx)(n,e))}function Ox(t,e){return function(){Sh(this,t).delay=+e.apply(this,arguments)}}function Rx(t,e){return e=+e,function(){Sh(this,t).delay=e}}function Fx(t){var e=this._id;return arguments.length?this.each((typeof t==\\\"function\\\"?Ox:Rx)(e,t)):dn(this.node(),e).delay}function Px(t,e){return function(){Pn(this,t).duration=+e.apply(this,arguments)}}function Yx(t,e){return e=+e,function(){Pn(this,t).duration=e}}function Vx(t){var e=this._id;return arguments.length?this.each((typeof t==\\\"function\\\"?Px:Yx)(e,t)):dn(this.node(),e).duration}function Ux(t,e){if(typeof e!=\\\"function\\\")throw new Error;return function(){Pn(this,t).ease=e}}function zx(t){var e=this._id;return arguments.length?this.each(Ux(e,t)):dn(this.node(),e).ease}function Wx(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!=\\\"function\\\")throw new Error;Pn(this,t).ease=r}}function Hx(t){if(typeof t!=\\\"function\\\")throw new Error;return this.each(Wx(this._id,t))}function Gx(t){typeof t!=\\\"function\\\"&&(t=ef(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i\u003Cr;++i)for(var s=e[i],a=s.length,o=n[i]=[],l,u=0;u\u003Ca;++u)(l=s[u])&&t.call(l,l.__data__,u,s)&&o.push(l);return new ri(n,this._parents,this._name,this._id)}function qx(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,s=Math.min(n,i),a=new Array(n),o=0;o\u003Cs;++o)for(var l=e[o],u=r[o],d=l.length,f=a[o]=new Array(d),p,g=0;g\u003Cd;++g)(p=l[g]||u[g])&&(f[g]=p);for(;o\u003Cn;++o)a[o]=e[o];return new ri(a,this._parents,this._name,this._id)}function jx(t){return(t+\\\"\\\").trim().split(/^|\\\\s+/).every(function(e){var r=e.indexOf(\\\".\\\");return r>=0&&(e=e.slice(0,r)),!e||e===\\\"start\\\"})}function $x(t,e,r){var n,i,s=jx(e)?Sh:Pn;return function(){var a=s(this,t),o=a.on;o!==n&&(i=(n=o).copy()).on(e,r),a.on=i}}function Xx(t,e){var r=this._id;return arguments.length\u003C2?dn(this.node(),r).on.on(t):this.each($x(r,t,e))}function Kx(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function Zx(){return this.on(\\\"end.remove\\\",Kx(this._id))}function Qx(t){var e=this._name,r=this._id;typeof t!=\\\"function\\\"&&(t=lh(t));for(var n=this._groups,i=n.length,s=new Array(i),a=0;a\u003Ci;++a)for(var o=n[a],l=o.length,u=s[a]=new Array(l),d,f,p=0;p\u003Cl;++p)(d=o[p])&&(f=t.call(d,d.__data__,p,o))&&(\\\"__data__\\\"in d&&(f.__data__=d.__data__),u[p]=f,Ml(u[p],e,r,p,u,dn(d,r)));return new ri(s,this._parents,e,r)}function Jx(t){var e=this._name,r=this._id;typeof t!=\\\"function\\\"&&(t=tf(t));for(var n=this._groups,i=n.length,s=[],a=[],o=0;o\u003Ci;++o)for(var l=n[o],u=l.length,d,f=0;f\u003Cu;++f)if(d=l[f]){for(var p=t.call(d,d.__data__,f,l),g,b=dn(d,r),k=0,T=p.length;k\u003CT;++k)(g=p[k])&&Ml(g,e,r,k,p,b);s.push(p),a.push(d)}return new ri(s,a,e,r)}var t6=Wa.prototype.constructor;function e6(){return new t6(this._groups,this._parents)}function r6(t,e){var r,n,i;return function(){var s=Vs(this,t),a=(this.style.removeProperty(t),Vs(this,t));return s===a?null:s===r&&a===n?i:i=e(r=s,n=a)}}function zf(t){return function(){this.style.removeProperty(t)}}function n6(t,e,r){var n,i=r+\\\"\\\",s;return function(){var a=Vs(this,t);return a===i?null:a===n?s:s=e(n=a,r)}}function i6(t,e,r){var n,i,s;return function(){var a=Vs(this,t),o=r(this),l=o+\\\"\\\";return o==null&&(l=o=(this.style.removeProperty(t),Vs(this,t))),a===l?null:a===n&&l===i?s:(i=l,s=e(n=a,o))}}function s6(t,e){var r,n,i,s=\\\"style.\\\"+e,a=\\\"end.\\\"+s,o;return function(){var l=Pn(this,t),u=l.on,d=l.value[s]==null?o||(o=zf(e)):void 0;(u!==r||i!==d)&&(n=(r=u).copy()).on(a,i=d),l.on=n}}function a6(t,e,r){var n=(t+=\\\"\\\")==\\\"transform\\\"?ox:Uf;return e==null?this.styleTween(t,r6(t,n)).on(\\\"end.style.\\\"+t,zf(t)):typeof e==\\\"function\\\"?this.styleTween(t,i6(t,n,Ah(this,\\\"style.\\\"+t,e))).each(s6(this._id,t)):this.styleTween(t,n6(t,n,e),r).on(\\\"end.style.\\\"+t,null)}function o6(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function l6(t,e,r){var n,i;function s(){var a=e.apply(this,arguments);return a!==i&&(n=(i=a)&&o6(t,a,r)),n}return s._value=e,s}function c6(t,e,r){var n=\\\"style.\\\"+(t+=\\\"\\\");if(arguments.length\u003C2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!=\\\"function\\\")throw new Error;return this.tween(n,l6(t,e,r==null?\\\"\\\":r))}function u6(t){return function(){this.textContent=t}}function h6(t){return function(){var e=t(this);this.textContent=e==null?\\\"\\\":e}}function d6(t){return this.tween(\\\"text\\\",typeof t==\\\"function\\\"?h6(Ah(this,\\\"text\\\",t)):u6(t==null?\\\"\\\":t+\\\"\\\"))}function f6(t){return function(e){this.textContent=t.call(this,e)}}function p6(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&f6(i)),e}return n._value=t,n}function g6(t){var e=\\\"text\\\";if(arguments.length\u003C1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!=\\\"function\\\")throw new Error;return this.tween(e,p6(t))}function y6(){for(var t=this._name,e=this._id,r=Wf(),n=this._groups,i=n.length,s=0;s\u003Ci;++s)for(var a=n[s],o=a.length,l,u=0;u\u003Co;++u)if(l=a[u]){var d=dn(l,e);Ml(l,t,r,u,a,{time:d.time+d.delay+d.duration,delay:0,duration:d.duration,ease:d.ease})}return new ri(n,this._parents,t,r)}function m6(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(s,a){var o={value:a},l={value:function(){--i===0&&s()}};r.each(function(){var u=Pn(this,n),d=u.on;d!==t&&(e=(t=d).copy(),e._.cancel.push(o),e._.interrupt.push(o),e._.end.push(l)),u.on=e}),i===0&&s()})}var b6=0;function ri(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function Wf(){return++b6}var ni=Wa.prototype;ri.prototype={constructor:ri,select:Qx,selectAll:Jx,selectChild:ni.selectChild,selectChildren:ni.selectChildren,filter:Gx,merge:qx,selection:e6,transition:y6,call:ni.call,nodes:ni.nodes,node:ni.node,size:ni.size,empty:ni.empty,each:ni.each,on:Xx,attr:Lx,attrTween:Ix,style:a6,styleTween:c6,text:d6,textTween:g6,remove:Zx,tween:kx,delay:Fx,duration:Vx,ease:zx,easeVarying:Hx,end:m6,[Symbol.iterator]:ni[Symbol.iterator]};function _6(t){return((t*=2)\u003C=1?t*t*t:(t-=2)*t*t+2)/2}var x6={time:null,delay:0,duration:250,ease:_6};function v6(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function k6(t){var e,r;t instanceof ri?(e=t._id,t=t._name):(e=Wf(),(r=x6).time=wh(),t=t==null?null:t+\\\"\\\");for(var n=this._groups,i=n.length,s=0;s\u003Ci;++s)for(var a=n[s],o=a.length,l,u=0;u\u003Co;++u)(l=a[u])&&Ml(l,t,e,u,a,r||v6(l,e));return new ri(n,this._parents,t,e)}Wa.prototype.interrupt=_x,Wa.prototype.transition=k6;const Lh=Math.PI,Dh=2*Lh,as=1e-6,w6=Dh-as;function Mh(){this._x0=this._y0=this._x1=this._y1=null,this._=\\\"\\\"}function Nh(){return new Mh}Mh.prototype=Nh.prototype={constructor:Mh,moveTo:function(t,e){this._+=\\\"M\\\"+(this._x0=this._x1=+t)+\\\",\\\"+(this._y0=this._y1=+e)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+=\\\"Z\\\")},lineTo:function(t,e){this._+=\\\"L\\\"+(this._x1=+t)+\\\",\\\"+(this._y1=+e)},quadraticCurveTo:function(t,e,r,n){this._+=\\\"Q\\\"+ +t+\\\",\\\"+ +e+\\\",\\\"+(this._x1=+r)+\\\",\\\"+(this._y1=+n)},bezierCurveTo:function(t,e,r,n,i,s){this._+=\\\"C\\\"+ +t+\\\",\\\"+ +e+\\\",\\\"+ +r+\\\",\\\"+ +n+\\\",\\\"+(this._x1=+i)+\\\",\\\"+(this._y1=+s)},arcTo:function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var s=this._x1,a=this._y1,o=r-t,l=n-e,u=s-t,d=a-e,f=u*u+d*d;if(i\u003C0)throw new Error(\\\"negative radius: \\\"+i);if(this._x1===null)this._+=\\\"M\\\"+(this._x1=t)+\\\",\\\"+(this._y1=e);else if(f>as)if(!(Math.abs(d*o-l*u)>as)||!i)this._+=\\\"L\\\"+(this._x1=t)+\\\",\\\"+(this._y1=e);else{var p=r-s,g=n-a,b=o*o+l*l,k=p*p+g*g,T=Math.sqrt(b),L=Math.sqrt(f),E=i*Math.tan((Lh-Math.acos((b+f-k)/(2*T*L)))/2),I=E/L,V=E/T;Math.abs(I-1)>as&&(this._+=\\\"L\\\"+(t+I*u)+\\\",\\\"+(e+I*d)),this._+=\\\"A\\\"+i+\\\",\\\"+i+\\\",0,0,\\\"+ +(d*p>u*g)+\\\",\\\"+(this._x1=t+V*o)+\\\",\\\"+(this._y1=e+V*l)}},arc:function(t,e,r,n,i,s){t=+t,e=+e,r=+r,s=!!s;var a=r*Math.cos(n),o=r*Math.sin(n),l=t+a,u=e+o,d=1^s,f=s?n-i:i-n;if(r\u003C0)throw new Error(\\\"negative radius: \\\"+r);this._x1===null?this._+=\\\"M\\\"+l+\\\",\\\"+u:(Math.abs(this._x1-l)>as||Math.abs(this._y1-u)>as)&&(this._+=\\\"L\\\"+l+\\\",\\\"+u),r&&(f\u003C0&&(f=f%Dh+Dh),f>w6?this._+=\\\"A\\\"+r+\\\",\\\"+r+\\\",0,1,\\\"+d+\\\",\\\"+(t-a)+\\\",\\\"+(e-o)+\\\"A\\\"+r+\\\",\\\"+r+\\\",0,1,\\\"+d+\\\",\\\"+(this._x1=l)+\\\",\\\"+(this._y1=u):f>as&&(this._+=\\\"A\\\"+r+\\\",\\\"+r+\\\",0,\\\"+ +(f>=Lh)+\\\",\\\"+d+\\\",\\\"+(this._x1=t+r*Math.cos(i))+\\\",\\\"+(this._y1=e+r*Math.sin(i))))},rect:function(t,e,r,n){this._+=\\\"M\\\"+(this._x0=this._x1=+t)+\\\",\\\"+(this._y0=this._y1=+e)+\\\"h\\\"+ +r+\\\"v\\\"+ +n+\\\"h\\\"+-r+\\\"Z\\\"},toString:function(){return this._}};function T6(t){if(!t.ok)throw new Error(t.status+\\\" \\\"+t.statusText);return t.text()}function E6(t,e){return fetch(t,e).then(T6)}function C6(t){return(e,r)=>E6(e,r).then(n=>new DOMParser().parseFromString(n,t))}var S6=C6(\\\"image/svg+xml\\\");function A6(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString(\\\"en\\\").replace(/,/g,\\\"\\\"):t.toString(10)}function Nl(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf(\\\"e\\\"))\u003C0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function Hs(t){return t=Nl(Math.abs(t)),t?t[1]:NaN}function L6(t,e){return function(r,n){for(var i=r.length,s=[],a=0,o=t[0],l=0;i>0&&o>0&&(l+o+1>n&&(o=Math.max(1,n-l)),s.push(r.substring(i-=o,i+o)),!((l+=o+1)>n));)o=t[a=(a+1)%t.length];return s.reverse().join(e)}}function D6(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var M6=/^(?:(.)?([\u003C>=^]))?([+\\\\-( ])?([$#])?(0)?(\\\\d+)?(,)?(\\\\.\\\\d+)?(~)?([a-z%])?$/i;function Bl(t){if(!(e=M6.exec(t)))throw new Error(\\\"invalid format: \\\"+t);var e;return new Bh({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Bl.prototype=Bh.prototype;function Bh(t){this.fill=t.fill===void 0?\\\" \\\":t.fill+\\\"\\\",this.align=t.align===void 0?\\\">\\\":t.align+\\\"\\\",this.sign=t.sign===void 0?\\\"-\\\":t.sign+\\\"\\\",this.symbol=t.symbol===void 0?\\\"\\\":t.symbol+\\\"\\\",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?\\\"\\\":t.type+\\\"\\\"}Bh.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\\\"0\\\":\\\"\\\")+(this.width===void 0?\\\"\\\":Math.max(1,this.width|0))+(this.comma?\\\",\\\":\\\"\\\")+(this.precision===void 0?\\\"\\\":\\\".\\\"+Math.max(0,this.precision|0))+(this.trim?\\\"~\\\":\\\"\\\")+this.type};function N6(t){t:for(var e=t.length,r=1,n=-1,i;r\u003Ce;++r)switch(t[r]){case\\\".\\\":n=i=r;break;case\\\"0\\\":n===0&&(n=r),i=r;break;default:if(!+t[r])break t;n>0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var Hf;function B6(t,e){var r=Nl(t,e);if(!r)return t+\\\"\\\";var n=r[0],i=r[1],s=i-(Hf=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=n.length;return s===a?n:s>a?n+new Array(s-a+1).join(\\\"0\\\"):s>0?n.slice(0,s)+\\\".\\\"+n.slice(s):\\\"0.\\\"+new Array(1-s).join(\\\"0\\\")+Nl(t,Math.max(0,e+s-1))[0]}function Gf(t,e){var r=Nl(t,e);if(!r)return t+\\\"\\\";var n=r[0],i=r[1];return i\u003C0?\\\"0.\\\"+new Array(-i).join(\\\"0\\\")+n:n.length>i+1?n.slice(0,i+1)+\\\".\\\"+n.slice(i+1):n+new Array(i-n.length+2).join(\\\"0\\\")}const qf={\\\"%\\\":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+\\\"\\\",d:A6,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Gf(t*100,e),r:Gf,s:B6,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function jf(t){return t}var $f=Array.prototype.map,Xf=[\\\"y\\\",\\\"z\\\",\\\"a\\\",\\\"f\\\",\\\"p\\\",\\\"n\\\",\\\"\\\\xB5\\\",\\\"m\\\",\\\"\\\",\\\"k\\\",\\\"M\\\",\\\"G\\\",\\\"T\\\",\\\"P\\\",\\\"E\\\",\\\"Z\\\",\\\"Y\\\"];function I6(t){var e=t.grouping===void 0||t.thousands===void 0?jf:L6($f.call(t.grouping,Number),t.thousands+\\\"\\\"),r=t.currency===void 0?\\\"\\\":t.currency[0]+\\\"\\\",n=t.currency===void 0?\\\"\\\":t.currency[1]+\\\"\\\",i=t.decimal===void 0?\\\".\\\":t.decimal+\\\"\\\",s=t.numerals===void 0?jf:D6($f.call(t.numerals,String)),a=t.percent===void 0?\\\"%\\\":t.percent+\\\"\\\",o=t.minus===void 0?\\\"\\\\u2212\\\":t.minus+\\\"\\\",l=t.nan===void 0?\\\"NaN\\\":t.nan+\\\"\\\";function u(f){f=Bl(f);var p=f.fill,g=f.align,b=f.sign,k=f.symbol,T=f.zero,L=f.width,E=f.comma,I=f.precision,V=f.trim,H=f.type;H===\\\"n\\\"?(E=!0,H=\\\"g\\\"):qf[H]||(I===void 0&&(I=12),V=!0,H=\\\"g\\\"),(T||p===\\\"0\\\"&&g===\\\"=\\\")&&(T=!0,p=\\\"0\\\",g=\\\"=\\\");var G=k===\\\"$\\\"?r:k===\\\"#\\\"&&/[boxX]/.test(H)?\\\"0\\\"+H.toLowerCase():\\\"\\\",Y=k===\\\"$\\\"?n:/[%p]/.test(H)?a:\\\"\\\",W=qf[H],N=/[defgprs%]/.test(H);I=I===void 0?6:/[gprs]/.test(H)?Math.max(1,Math.min(21,I)):Math.max(0,Math.min(20,I));function D(w){var v=G,M=Y,m,Q,x;if(H===\\\"c\\\")M=W(w)+M,w=\\\"\\\";else{w=+w;var ct=w\u003C0||1/w\u003C0;if(w=isNaN(w)?l:W(Math.abs(w),I),V&&(w=N6(w)),ct&&+w==0&&b!==\\\"+\\\"&&(ct=!1),v=(ct?b===\\\"(\\\"?b:o:b===\\\"-\\\"||b===\\\"(\\\"?\\\"\\\":b)+v,M=(H===\\\"s\\\"?Xf[8+Hf/3]:\\\"\\\")+M+(ct&&b===\\\"(\\\"?\\\")\\\":\\\"\\\"),N){for(m=-1,Q=w.length;++m\u003CQ;)if(x=w.charCodeAt(m),48>x||x>57){M=(x===46?i+w.slice(m+1):w.slice(m))+M,w=w.slice(0,m);break}}}E&&!T&&(w=e(w,1/0));var Dt=v.length+w.length+M.length,kt=Dt\u003CL?new Array(L-Dt+1).join(p):\\\"\\\";switch(E&&T&&(w=e(kt+w,kt.length?L-M.length:1/0),kt=\\\"\\\"),g){case\\\"\u003C\\\":w=v+w+M+kt;break;case\\\"=\\\":w=v+kt+w+M;break;case\\\"^\\\":w=kt.slice(0,Dt=kt.length>>1)+v+w+M+kt.slice(Dt);break;default:w=kt+v+w+M;break}return s(w)}return D.toString=function(){return f+\\\"\\\"},D}function d(f,p){var g=u((f=Bl(f),f.type=\\\"f\\\",f)),b=Math.max(-8,Math.min(8,Math.floor(Hs(p)/3)))*3,k=Math.pow(10,-b),T=Xf[8+b/3];return function(L){return g(k*L)+T}}return{format:u,formatPrefix:d}}var Il,Kf,Zf;O6({thousands:\\\",\\\",grouping:[3],currency:[\\\"$\\\",\\\"\\\"]});function O6(t){return Il=I6(t),Kf=Il.format,Zf=Il.formatPrefix,Il}function R6(t){return Math.max(0,-Hs(Math.abs(t)))}function F6(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Hs(e)/3)))*3-Hs(Math.abs(t)))}function P6(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Hs(e)-Hs(t))+1}function Ih(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}const Qf=Symbol(\\\"implicit\\\");function Jf(){var t=new Hd,e=[],r=[],n=Qf;function i(s){let a=t.get(s);if(a===void 0){if(n!==Qf)return n;t.set(s,a=e.push(s)-1)}return r[a%r.length]}return i.domain=function(s){if(!arguments.length)return e.slice();e=[],t=new Hd;for(const a of s)t.has(a)||t.set(a,e.push(a)-1);return i},i.range=function(s){return arguments.length?(r=Array.from(s),i):r.slice()},i.unknown=function(s){return arguments.length?(n=s,i):n},i.copy=function(){return Jf(e,r).unknown(n)},Ih.apply(i,arguments),i}function Y6(t){return function(){return t}}function V6(t){return+t}var t2=[0,1];function Gs(t){return t}function Oh(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:Y6(isNaN(e)?NaN:.5)}function U6(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function z6(t,e,r){var n=t[0],i=t[1],s=e[0],a=e[1];return i\u003Cn?(n=Oh(i,n),s=r(a,s)):(n=Oh(n,i),s=r(s,a)),function(o){return s(n(o))}}function W6(t,e,r){var n=Math.min(t.length,e.length)-1,i=new Array(n),s=new Array(n),a=-1;for(t[n]\u003Ct[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a\u003Cn;)i[a]=Oh(t[a],t[a+1]),s[a]=r(e[a],e[a+1]);return function(o){var l=Fb(t,o,1,n)-1;return s[l](i[l](o))}}function e2(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function H6(){var t=t2,e=t2,r=vh,n,i,s,a=Gs,o,l,u;function d(){var p=Math.min(t.length,e.length);return a!==Gs&&(a=U6(t[0],t[p-1])),o=p>2?W6:z6,l=u=null,f}function f(p){return p==null||isNaN(p=+p)?s:(l||(l=o(t.map(n),e,r)))(n(a(p)))}return f.invert=function(p){return a(i((u||(u=o(e,t.map(n),hn)))(p)))},f.domain=function(p){return arguments.length?(t=Array.from(p,V6),d()):t.slice()},f.range=function(p){return arguments.length?(e=Array.from(p),d()):e.slice()},f.rangeRound=function(p){return e=Array.from(p),r=ix,d()},f.clamp=function(p){return arguments.length?(a=p?!0:Gs,d()):a!==Gs},f.interpolate=function(p){return arguments.length?(r=p,d()):r},f.unknown=function(p){return arguments.length?(s=p,f):s},function(p,g){return n=p,i=g,d()}}function r2(){return H6()(Gs,Gs)}function G6(t,e,r,n){var i=ih(t,e,r),s;switch(n=Bl(n==null?\\\",f\\\":n),n.type){case\\\"s\\\":{var a=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(s=F6(i,a))&&(n.precision=s),Zf(n,a)}case\\\"\\\":case\\\"e\\\":case\\\"g\\\":case\\\"p\\\":case\\\"r\\\":{n.precision==null&&!isNaN(s=P6(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=s-(n.type===\\\"e\\\"));break}case\\\"f\\\":case\\\"%\\\":{n.precision==null&&!isNaN(s=R6(i))&&(n.precision=s-(n.type===\\\"%\\\")*2);break}}return Kf(n)}function q6(t){var e=t.domain;return t.ticks=function(r){var n=e();return Ub(n[0],n[n.length-1],r==null?10:r)},t.tickFormat=function(r,n){var i=e();return G6(i[0],i[i.length-1],r==null?10:r,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,s=n.length-1,a=n[i],o=n[s],l,u,d=10;for(o\u003Ca&&(u=a,a=o,o=u,u=i,i=s,s=u);d-- >0;){if(u=qd(a,o,r),u===l)return n[i]=a,n[s]=o,e(n);if(u>0)a=Math.floor(a/u)*u,o=Math.ceil(o/u)*u;else if(u\u003C0)a=Math.ceil(a*u)/u,o=Math.floor(o*u)/u;else break;l=u}return t},t}function n2(){var t=r2();return t.copy=function(){return e2(t,n2())},Ih.apply(t,arguments),q6(t)}function j6(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],s=t[n],a;return s\u003Ci&&(a=r,r=n,n=a,a=i,i=s,s=a),t[r]=e.floor(i),t[n]=e.ceil(s),t}var Rh=new Date,Fh=new Date;function dr(t,e,r,n){function i(s){return t(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=function(s){return t(s=new Date(+s)),s},i.ceil=function(s){return t(s=new Date(s-1)),e(s,1),t(s),s},i.round=function(s){var a=i(s),o=i.ceil(s);return s-a\u003Co-s?a:o},i.offset=function(s,a){return e(s=new Date(+s),a==null?1:Math.floor(a)),s},i.range=function(s,a,o){var l=[],u;if(s=i.ceil(s),o=o==null?1:Math.floor(o),!(s\u003Ca)||!(o>0))return l;do l.push(u=new Date(+s)),e(s,o),t(s);while(u\u003Cs&&s\u003Ca);return l},i.filter=function(s){return dr(function(a){if(a>=a)for(;t(a),!s(a);)a.setTime(a-1)},function(a,o){if(a>=a)if(o\u003C0)for(;++o\u003C=0;)for(;e(a,-1),!s(a););else for(;--o>=0;)for(;e(a,1),!s(a););})},r&&(i.count=function(s,a){return Rh.setTime(+s),Fh.setTime(+a),t(Rh),t(Fh),Math.floor(r(Rh,Fh))},i.every=function(s){return s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(n?function(a){return n(a)%s===0}:function(a){return i.count(0,a)%s===0}):i}),i}var Ol=dr(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});Ol.every=function(t){return t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?dr(function(e){e.setTime(Math.floor(e/t)*t)},function(e,r){e.setTime(+e+r*t)},function(e,r){return(r-e)/t}):Ol};const $6=Ol;Ol.range;const ii=1e3,Jr=ii*60,si=Jr*60,os=si*24,Ph=os*7,i2=os*30,Yh=os*365;var s2=dr(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+e*ii)},function(t,e){return(e-t)/ii},function(t){return t.getUTCSeconds()});const Qa=s2;s2.range;var a2=dr(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*ii)},function(t,e){t.setTime(+t+e*Jr)},function(t,e){return(e-t)/Jr},function(t){return t.getMinutes()});const Rl=a2;a2.range;var o2=dr(function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*ii-t.getMinutes()*Jr)},function(t,e){t.setTime(+t+e*si)},function(t,e){return(e-t)/si},function(t){return t.getHours()});const Fl=o2;o2.range;var l2=dr(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Jr)/os,t=>t.getDate()-1);const qs=l2;l2.range;function ls(t){return dr(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(e,r){e.setDate(e.getDate()+r*7)},function(e,r){return(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*Jr)/Ph})}var js=ls(0),Pl=ls(1),X6=ls(2),K6=ls(3),$s=ls(4),Z6=ls(5),Q6=ls(6);js.range,Pl.range,X6.range,K6.range,$s.range,Z6.range,Q6.range;var c2=dr(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12},function(t){return t.getMonth()});const Yl=c2;c2.range;var Vh=dr(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Vh.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:dr(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,r){e.setFullYear(e.getFullYear()+r*t)})};const cs=Vh;Vh.range;var u2=dr(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*Jr)},function(t,e){return(e-t)/Jr},function(t){return t.getUTCMinutes()});const J6=u2;u2.range;var h2=dr(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*si)},function(t,e){return(e-t)/si},function(t){return t.getUTCHours()});const tv=h2;h2.range;var d2=dr(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/os},function(t){return t.getUTCDate()-1});const Uh=d2;d2.range;function us(t){return dr(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(e,r){e.setUTCDate(e.getUTCDate()+r*7)},function(e,r){return(r-e)/Ph})}var zh=us(0),Vl=us(1),ev=us(2),rv=us(3),Xs=us(4),nv=us(5),iv=us(6);zh.range,Vl.range,ev.range,rv.range,Xs.range,nv.range,iv.range;var f2=dr(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12},function(t){return t.getUTCMonth()});const sv=f2;f2.range;var Wh=dr(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});Wh.every=function(t){return!isFinite(t=Math.floor(t))||!(t>0)?null:dr(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})};const Ks=Wh;Wh.range;function p2(t,e,r,n,i,s){const a=[[Qa,1,ii],[Qa,5,5*ii],[Qa,15,15*ii],[Qa,30,30*ii],[s,1,Jr],[s,5,5*Jr],[s,15,15*Jr],[s,30,30*Jr],[i,1,si],[i,3,3*si],[i,6,6*si],[i,12,12*si],[n,1,os],[n,2,2*os],[r,1,Ph],[e,1,i2],[e,3,3*i2],[t,1,Yh]];function o(u,d,f){const p=d\u003Cu;p&&([u,d]=[d,u]);const g=f&&typeof f.range==\\\"function\\\"?f:l(u,d,f),b=g?g.range(u,+d+1):[];return p?b.reverse():b}function l(u,d,f){const p=Math.abs(d-u)/f,g=th(([,,T])=>T).right(a,p);if(g===a.length)return t.every(ih(u/Yh,d/Yh,f));if(g===0)return $6.every(Math.max(ih(u,d,f),1));const[b,k]=a[p/a[g-1][2]\u003Ca[g][2]/p?g-1:g];return b.every(k)}return[o,l]}p2(Ks,sv,zh,Uh,tv,J6);const[av,ov]=p2(cs,Yl,js,qs,Fl,Rl);function Hh(t){if(0\u003C=t.y&&t.y\u003C100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Gh(t){if(0\u003C=t.y&&t.y\u003C100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ja(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function lv(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,s=t.days,a=t.shortDays,o=t.months,l=t.shortMonths,u=to(i),d=eo(i),f=to(s),p=eo(s),g=to(a),b=eo(a),k=to(o),T=eo(o),L=to(l),E=eo(l),I={a:ct,A:Dt,b:kt,B:j,c:null,d:x2,e:x2,f:Mv,g:Uv,G:Wv,H:Av,I:Lv,j:Dv,L:v2,m:Nv,M:Bv,p:ot,q:rt,Q:S2,s:A2,S:Iv,u:Ov,U:Rv,V:Fv,w:Pv,W:Yv,x:null,X:null,y:Vv,Y:zv,Z:Hv,\\\"%\\\":C2},V={a:nt,A:ut,b:_t,B:K,c:null,d:w2,e:w2,f:$v,g:ik,G:ak,H:Gv,I:qv,j:jv,L:T2,m:Xv,M:Kv,p:Ot,q:P,Q:S2,s:A2,S:Zv,u:Qv,U:Jv,V:tk,w:ek,W:rk,x:null,X:null,y:nk,Y:sk,Z:ok,\\\"%\\\":C2},H={a:D,A:w,b:v,B:M,c:m,d:b2,e:b2,f:Tv,g:m2,G:y2,H:_2,I:_2,j:xv,L:wv,m:_v,M:vv,p:N,q:bv,Q:Cv,s:Sv,S:kv,u:fv,U:pv,V:gv,w:dv,W:yv,x:Q,X:x,y:m2,Y:y2,Z:mv,\\\"%\\\":Ev};I.x=G(r,I),I.X=G(n,I),I.c=G(e,I),V.x=G(r,V),V.X=G(n,V),V.c=G(e,V);function G(z,X){return function(F){var O=[],A=-1,J=0,C=z.length,ht,U,Yt;for(F instanceof Date||(F=new Date(+F));++A\u003CC;)z.charCodeAt(A)===37&&(O.push(z.slice(J,A)),(U=g2[ht=z.charAt(++A)])!=null?ht=z.charAt(++A):U=ht===\\\"e\\\"?\\\" \\\":\\\"0\\\",(Yt=X[ht])&&(ht=Yt(F,U)),O.push(ht),J=A+1);return O.push(z.slice(J,A)),O.join(\\\"\\\")}}function Y(z,X){return function(F){var O=Ja(1900,void 0,1),A=W(O,z,F+=\\\"\\\",0),J,C;if(A!=F.length)return null;if(\\\"Q\\\"in O)return new Date(O.Q);if(\\\"s\\\"in O)return new Date(O.s*1e3+(\\\"L\\\"in O?O.L:0));if(X&&!(\\\"Z\\\"in O)&&(O.Z=0),\\\"p\\\"in O&&(O.H=O.H%12+O.p*12),O.m===void 0&&(O.m=\\\"q\\\"in O?O.q:0),\\\"V\\\"in O){if(O.V\u003C1||O.V>53)return null;\\\"w\\\"in O||(O.w=1),\\\"Z\\\"in O?(J=Gh(Ja(O.y,0,1)),C=J.getUTCDay(),J=C>4||C===0?Vl.ceil(J):Vl(J),J=Uh.offset(J,(O.V-1)*7),O.y=J.getUTCFullYear(),O.m=J.getUTCMonth(),O.d=J.getUTCDate()+(O.w+6)%7):(J=Hh(Ja(O.y,0,1)),C=J.getDay(),J=C>4||C===0?Pl.ceil(J):Pl(J),J=qs.offset(J,(O.V-1)*7),O.y=J.getFullYear(),O.m=J.getMonth(),O.d=J.getDate()+(O.w+6)%7)}else(\\\"W\\\"in O||\\\"U\\\"in O)&&(\\\"w\\\"in O||(O.w=\\\"u\\\"in O?O.u%7:\\\"W\\\"in O?1:0),C=\\\"Z\\\"in O?Gh(Ja(O.y,0,1)).getUTCDay():Hh(Ja(O.y,0,1)).getDay(),O.m=0,O.d=\\\"W\\\"in O?(O.w+6)%7+O.W*7-(C+5)%7:O.w+O.U*7-(C+6)%7);return\\\"Z\\\"in O?(O.H+=O.Z/100|0,O.M+=O.Z%100,Gh(O)):Hh(O)}}function W(z,X,F,O){for(var A=0,J=X.length,C=F.length,ht,U;A\u003CJ;){if(O>=C)return-1;if(ht=X.charCodeAt(A++),ht===37){if(ht=X.charAt(A++),U=H[ht in g2?X.charAt(A++):ht],!U||(O=U(z,F,O))\u003C0)return-1}else if(ht!=F.charCodeAt(O++))return-1}return O}function N(z,X,F){var O=u.exec(X.slice(F));return O?(z.p=d.get(O[0].toLowerCase()),F+O[0].length):-1}function D(z,X,F){var O=g.exec(X.slice(F));return O?(z.w=b.get(O[0].toLowerCase()),F+O[0].length):-1}function w(z,X,F){var O=f.exec(X.slice(F));return O?(z.w=p.get(O[0].toLowerCase()),F+O[0].length):-1}function v(z,X,F){var O=L.exec(X.slice(F));return O?(z.m=E.get(O[0].toLowerCase()),F+O[0].length):-1}function M(z,X,F){var O=k.exec(X.slice(F));return O?(z.m=T.get(O[0].toLowerCase()),F+O[0].length):-1}function m(z,X,F){return W(z,e,X,F)}function Q(z,X,F){return W(z,r,X,F)}function x(z,X,F){return W(z,n,X,F)}function ct(z){return a[z.getDay()]}function Dt(z){return s[z.getDay()]}function kt(z){return l[z.getMonth()]}function j(z){return o[z.getMonth()]}function ot(z){return i[+(z.getHours()>=12)]}function rt(z){return 1+~~(z.getMonth()/3)}function nt(z){return a[z.getUTCDay()]}function ut(z){return s[z.getUTCDay()]}function _t(z){return l[z.getUTCMonth()]}function K(z){return o[z.getUTCMonth()]}function Ot(z){return i[+(z.getUTCHours()>=12)]}function P(z){return 1+~~(z.getUTCMonth()/3)}return{format:function(z){var X=G(z+=\\\"\\\",I);return X.toString=function(){return z},X},parse:function(z){var X=Y(z+=\\\"\\\",!1);return X.toString=function(){return z},X},utcFormat:function(z){var X=G(z+=\\\"\\\",V);return X.toString=function(){return z},X},utcParse:function(z){var X=Y(z+=\\\"\\\",!0);return X.toString=function(){return z},X}}}var g2={\\\"-\\\":\\\"\\\",_:\\\" \\\",0:\\\"0\\\"},fr=/^\\\\s*\\\\d+/,cv=/^%/,uv=/[\\\\\\\\^$*+?|[\\\\]().{}]/g;function Ae(t,e,r){var n=t\u003C0?\\\"-\\\":\\\"\\\",i=(n?-t:t)+\\\"\\\",s=i.length;return n+(s\u003Cr?new Array(r-s+1).join(e)+i:i)}function hv(t){return t.replace(uv,\\\"\\\\\\\\$&\\\")}function to(t){return new RegExp(\\\"^(?:\\\"+t.map(hv).join(\\\"|\\\")+\\\")\\\",\\\"i\\\")}function eo(t){return new Map(t.map((e,r)=>[e.toLowerCase(),r]))}function dv(t,e,r){var n=fr.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function fv(t,e,r){var n=fr.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function pv(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function gv(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function yv(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function y2(t,e,r){var n=fr.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function m2(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function mv(t,e,r){var n=/^(Z)|([+-]\\\\d\\\\d)(?::?(\\\\d\\\\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||\\\"00\\\")),r+n[0].length):-1}function bv(t,e,r){var n=fr.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function _v(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function b2(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function xv(t,e,r){var n=fr.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function _2(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function vv(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function kv(t,e,r){var n=fr.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function wv(t,e,r){var n=fr.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function Tv(t,e,r){var n=fr.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Ev(t,e,r){var n=cv.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function Cv(t,e,r){var n=fr.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function Sv(t,e,r){var n=fr.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function x2(t,e){return Ae(t.getDate(),e,2)}function Av(t,e){return Ae(t.getHours(),e,2)}function Lv(t,e){return Ae(t.getHours()%12||12,e,2)}function Dv(t,e){return Ae(1+qs.count(cs(t),t),e,3)}function v2(t,e){return Ae(t.getMilliseconds(),e,3)}function Mv(t,e){return v2(t,e)+\\\"000\\\"}function Nv(t,e){return Ae(t.getMonth()+1,e,2)}function Bv(t,e){return Ae(t.getMinutes(),e,2)}function Iv(t,e){return Ae(t.getSeconds(),e,2)}function Ov(t){var e=t.getDay();return e===0?7:e}function Rv(t,e){return Ae(js.count(cs(t)-1,t),e,2)}function k2(t){var e=t.getDay();return e>=4||e===0?$s(t):$s.ceil(t)}function Fv(t,e){return t=k2(t),Ae($s.count(cs(t),t)+(cs(t).getDay()===4),e,2)}function Pv(t){return t.getDay()}function Yv(t,e){return Ae(Pl.count(cs(t)-1,t),e,2)}function Vv(t,e){return Ae(t.getFullYear()%100,e,2)}function Uv(t,e){return t=k2(t),Ae(t.getFullYear()%100,e,2)}function zv(t,e){return Ae(t.getFullYear()%1e4,e,4)}function Wv(t,e){var r=t.getDay();return t=r>=4||r===0?$s(t):$s.ceil(t),Ae(t.getFullYear()%1e4,e,4)}function Hv(t){var e=t.getTimezoneOffset();return(e>0?\\\"-\\\":(e*=-1,\\\"+\\\"))+Ae(e/60|0,\\\"0\\\",2)+Ae(e%60,\\\"0\\\",2)}function w2(t,e){return Ae(t.getUTCDate(),e,2)}function Gv(t,e){return Ae(t.getUTCHours(),e,2)}function qv(t,e){return Ae(t.getUTCHours()%12||12,e,2)}function jv(t,e){return Ae(1+Uh.count(Ks(t),t),e,3)}function T2(t,e){return Ae(t.getUTCMilliseconds(),e,3)}function $v(t,e){return T2(t,e)+\\\"000\\\"}function Xv(t,e){return Ae(t.getUTCMonth()+1,e,2)}function Kv(t,e){return Ae(t.getUTCMinutes(),e,2)}function Zv(t,e){return Ae(t.getUTCSeconds(),e,2)}function Qv(t){var e=t.getUTCDay();return e===0?7:e}function Jv(t,e){return Ae(zh.count(Ks(t)-1,t),e,2)}function E2(t){var e=t.getUTCDay();return e>=4||e===0?Xs(t):Xs.ceil(t)}function tk(t,e){return t=E2(t),Ae(Xs.count(Ks(t),t)+(Ks(t).getUTCDay()===4),e,2)}function ek(t){return t.getUTCDay()}function rk(t,e){return Ae(Vl.count(Ks(t)-1,t),e,2)}function nk(t,e){return Ae(t.getUTCFullYear()%100,e,2)}function ik(t,e){return t=E2(t),Ae(t.getUTCFullYear()%100,e,2)}function sk(t,e){return Ae(t.getUTCFullYear()%1e4,e,4)}function ak(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Xs(t):Xs.ceil(t),Ae(t.getUTCFullYear()%1e4,e,4)}function ok(){return\\\"+0000\\\"}function C2(){return\\\"%\\\"}function S2(t){return+t}function A2(t){return Math.floor(+t/1e3)}var Zs,Ul;lk({dateTime:\\\"%x, %X\\\",date:\\\"%-m/%-d/%Y\\\",time:\\\"%-I:%M:%S %p\\\",periods:[\\\"AM\\\",\\\"PM\\\"],days:[\\\"Sunday\\\",\\\"Monday\\\",\\\"Tuesday\\\",\\\"Wednesday\\\",\\\"Thursday\\\",\\\"Friday\\\",\\\"Saturday\\\"],shortDays:[\\\"Sun\\\",\\\"Mon\\\",\\\"Tue\\\",\\\"Wed\\\",\\\"Thu\\\",\\\"Fri\\\",\\\"Sat\\\"],months:[\\\"January\\\",\\\"February\\\",\\\"March\\\",\\\"April\\\",\\\"May\\\",\\\"June\\\",\\\"July\\\",\\\"August\\\",\\\"September\\\",\\\"October\\\",\\\"November\\\",\\\"December\\\"],shortMonths:[\\\"Jan\\\",\\\"Feb\\\",\\\"Mar\\\",\\\"Apr\\\",\\\"May\\\",\\\"Jun\\\",\\\"Jul\\\",\\\"Aug\\\",\\\"Sep\\\",\\\"Oct\\\",\\\"Nov\\\",\\\"Dec\\\"]});function lk(t){return Zs=lv(t),Ul=Zs.format,Zs.parse,Zs.utcFormat,Zs.utcParse,Zs}function ck(t){return new Date(t)}function uk(t){return t instanceof Date?+t:+new Date(+t)}function L2(t,e,r,n,i,s,a,o,l,u){var d=r2(),f=d.invert,p=d.domain,g=u(\\\".%L\\\"),b=u(\\\":%S\\\"),k=u(\\\"%I:%M\\\"),T=u(\\\"%I %p\\\"),L=u(\\\"%a %d\\\"),E=u(\\\"%b %d\\\"),I=u(\\\"%B\\\"),V=u(\\\"%Y\\\");function H(G){return(l(G)\u003CG?g:o(G)\u003CG?b:a(G)\u003CG?k:s(G)\u003CG?T:n(G)\u003CG?i(G)\u003CG?L:E:r(G)\u003CG?I:V)(G)}return d.invert=function(G){return new Date(f(G))},d.domain=function(G){return arguments.length?p(Array.from(G,uk)):p().map(ck)},d.ticks=function(G){var Y=p();return t(Y[0],Y[Y.length-1],G==null?10:G)},d.tickFormat=function(G,Y){return Y==null?H:u(Y)},d.nice=function(G){var Y=p();return(!G||typeof G.range!=\\\"function\\\")&&(G=e(Y[0],Y[Y.length-1],G==null?10:G)),G?p(j6(Y,G)):d},d.copy=function(){return e2(d,L2(t,e,r,n,i,s,a,o,l,u))},d}function hk(){return Ih.apply(L2(av,ov,cs,Yl,js,qs,Fl,Rl,Qa,Ul).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Xe(t){return function(){return t}}const D2=Math.abs,kr=Math.atan2,hs=Math.cos,dk=Math.max,qh=Math.min,Yn=Math.sin,Qs=Math.sqrt,Rr=1e-12,ro=Math.PI,zl=ro/2,Wl=2*ro;function fk(t){return t>1?0:t\u003C-1?ro:Math.acos(t)}function M2(t){return t>=1?zl:t\u003C=-1?-zl:Math.asin(t)}function pk(t){return t.innerRadius}function gk(t){return t.outerRadius}function yk(t){return t.startAngle}function mk(t){return t.endAngle}function bk(t){return t&&t.padAngle}function _k(t,e,r,n,i,s,a,o){var l=r-t,u=n-e,d=a-i,f=o-s,p=f*l-d*u;if(!(p*p\u003CRr))return p=(d*(e-s)-f*(t-i))/p,[t+p*l,e+p*u]}function Hl(t,e,r,n,i,s,a){var o=t-r,l=e-n,u=(a?s:-s)/Qs(o*o+l*l),d=u*l,f=-u*o,p=t+d,g=e+f,b=r+d,k=n+f,T=(p+b)/2,L=(g+k)/2,E=b-p,I=k-g,V=E*E+I*I,H=i-s,G=p*k-b*g,Y=(I\u003C0?-1:1)*Qs(dk(0,H*H*V-G*G)),W=(G*I-E*Y)/V,N=(-G*E-I*Y)/V,D=(G*I+E*Y)/V,w=(-G*E+I*Y)/V,v=W-T,M=N-L,m=D-T,Q=w-L;return v*v+M*M>m*m+Q*Q&&(W=D,N=w),{cx:W,cy:N,x01:-d,y01:-f,x11:W*(i/H-1),y11:N*(i/H-1)}}function jh(){var t=pk,e=gk,r=Xe(0),n=null,i=yk,s=mk,a=bk,o=null;function l(){var u,d,f=+t.apply(this,arguments),p=+e.apply(this,arguments),g=i.apply(this,arguments)-zl,b=s.apply(this,arguments)-zl,k=D2(b-g),T=b>g;if(o||(o=u=Nh()),p\u003Cf&&(d=p,p=f,f=d),!(p>Rr))o.moveTo(0,0);else if(k>Wl-Rr)o.moveTo(p*hs(g),p*Yn(g)),o.arc(0,0,p,g,b,!T),f>Rr&&(o.moveTo(f*hs(b),f*Yn(b)),o.arc(0,0,f,b,g,T));else{var L=g,E=b,I=g,V=b,H=k,G=k,Y=a.apply(this,arguments)/2,W=Y>Rr&&(n?+n.apply(this,arguments):Qs(f*f+p*p)),N=qh(D2(p-f)/2,+r.apply(this,arguments)),D=N,w=N,v,M;if(W>Rr){var m=M2(W/f*Yn(Y)),Q=M2(W/p*Yn(Y));(H-=m*2)>Rr?(m*=T?1:-1,I+=m,V-=m):(H=0,I=V=(g+b)/2),(G-=Q*2)>Rr?(Q*=T?1:-1,L+=Q,E-=Q):(G=0,L=E=(g+b)/2)}var x=p*hs(L),ct=p*Yn(L),Dt=f*hs(V),kt=f*Yn(V);if(N>Rr){var j=p*hs(E),ot=p*Yn(E),rt=f*hs(I),nt=f*Yn(I),ut;if(k\u003Cro&&(ut=_k(x,ct,rt,nt,j,ot,Dt,kt))){var _t=x-ut[0],K=ct-ut[1],Ot=j-ut[0],P=ot-ut[1],z=1/Yn(fk((_t*Ot+K*P)/(Qs(_t*_t+K*K)*Qs(Ot*Ot+P*P)))/2),X=Qs(ut[0]*ut[0]+ut[1]*ut[1]);D=qh(N,(f-X)/(z-1)),w=qh(N,(p-X)/(z+1))}}G>Rr?w>Rr?(v=Hl(rt,nt,x,ct,p,w,T),M=Hl(j,ot,Dt,kt,p,w,T),o.moveTo(v.cx+v.x01,v.cy+v.y01),w\u003CN?o.arc(v.cx,v.cy,w,kr(v.y01,v.x01),kr(M.y01,M.x01),!T):(o.arc(v.cx,v.cy,w,kr(v.y01,v.x01),kr(v.y11,v.x11),!T),o.arc(0,0,p,kr(v.cy+v.y11,v.cx+v.x11),kr(M.cy+M.y11,M.cx+M.x11),!T),o.arc(M.cx,M.cy,w,kr(M.y11,M.x11),kr(M.y01,M.x01),!T))):(o.moveTo(x,ct),o.arc(0,0,p,L,E,!T)):o.moveTo(x,ct),!(f>Rr)||!(H>Rr)?o.lineTo(Dt,kt):D>Rr?(v=Hl(Dt,kt,j,ot,f,-D,T),M=Hl(x,ct,rt,nt,f,-D,T),o.lineTo(v.cx+v.x01,v.cy+v.y01),D\u003CN?o.arc(v.cx,v.cy,D,kr(v.y01,v.x01),kr(M.y01,M.x01),!T):(o.arc(v.cx,v.cy,D,kr(v.y01,v.x01),kr(v.y11,v.x11),!T),o.arc(0,0,f,kr(v.cy+v.y11,v.cx+v.x11),kr(M.cy+M.y11,M.cx+M.x11),T),o.arc(M.cx,M.cy,D,kr(M.y11,M.x11),kr(M.y01,M.x01),!T))):o.arc(0,0,f,V,I,T)}if(o.closePath(),u)return o=null,u+\\\"\\\"||null}return l.centroid=function(){var u=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,d=(+i.apply(this,arguments)+ +s.apply(this,arguments))/2-ro/2;return[hs(d)*u,Yn(d)*u]},l.innerRadius=function(u){return arguments.length?(t=typeof u==\\\"function\\\"?u:Xe(+u),l):t},l.outerRadius=function(u){return arguments.length?(e=typeof u==\\\"function\\\"?u:Xe(+u),l):e},l.cornerRadius=function(u){return arguments.length?(r=typeof u==\\\"function\\\"?u:Xe(+u),l):r},l.padRadius=function(u){return arguments.length?(n=u==null?null:typeof u==\\\"function\\\"?u:Xe(+u),l):n},l.startAngle=function(u){return arguments.length?(i=typeof u==\\\"function\\\"?u:Xe(+u),l):i},l.endAngle=function(u){return arguments.length?(s=typeof u==\\\"function\\\"?u:Xe(+u),l):s},l.padAngle=function(u){return arguments.length?(a=typeof u==\\\"function\\\"?u:Xe(+u),l):a},l.context=function(u){return arguments.length?(o=u==null?null:u,l):o},l}function N2(t){return typeof t==\\\"object\\\"&&\\\"length\\\"in t?t:Array.from(t)}function B2(t){this._context=t}B2.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Hr(t){return new B2(t)}function xk(t){return t[0]}function vk(t){return t[1]}function Js(t,e){var r=Xe(!0),n=null,i=Hr,s=null;t=typeof t==\\\"function\\\"?t:t===void 0?xk:Xe(t),e=typeof e==\\\"function\\\"?e:e===void 0?vk:Xe(e);function a(o){var l,u=(o=N2(o)).length,d,f=!1,p;for(n==null&&(s=i(p=Nh())),l=0;l\u003C=u;++l)!(l\u003Cu&&r(d=o[l],l,o))===f&&((f=!f)?s.lineStart():s.lineEnd()),f&&s.point(+t(d,l,o),+e(d,l,o));if(p)return s=null,p+\\\"\\\"||null}return a.x=function(o){return arguments.length?(t=typeof o==\\\"function\\\"?o:Xe(+o),a):t},a.y=function(o){return arguments.length?(e=typeof o==\\\"function\\\"?o:Xe(+o),a):e},a.defined=function(o){return arguments.length?(r=typeof o==\\\"function\\\"?o:Xe(!!o),a):r},a.curve=function(o){return arguments.length?(i=o,n!=null&&(s=i(n)),a):i},a.context=function(o){return arguments.length?(o==null?n=s=null:s=i(n=o),a):n},a}function kk(t,e){return e\u003Ct?-1:e>t?1:e>=t?0:NaN}function wk(t){return t}function Tk(){var t=wk,e=kk,r=null,n=Xe(0),i=Xe(Wl),s=Xe(0);function a(o){var l,u=(o=N2(o)).length,d,f,p=0,g=new Array(u),b=new Array(u),k=+n.apply(this,arguments),T=Math.min(Wl,Math.max(-Wl,i.apply(this,arguments)-k)),L,E=Math.min(Math.abs(T)/u,s.apply(this,arguments)),I=E*(T\u003C0?-1:1),V;for(l=0;l\u003Cu;++l)(V=b[g[l]=l]=+t(o[l],l,o))>0&&(p+=V);for(e!=null?g.sort(function(H,G){return e(b[H],b[G])}):r!=null&&g.sort(function(H,G){return r(o[H],o[G])}),l=0,f=p?(T-u*I)/p:0;l\u003Cu;++l,k=L)d=g[l],V=b[d],L=k+(V>0?V*f:0)+I,b[d]={data:o[d],index:l,value:V,startAngle:k,endAngle:L,padAngle:E};return b}return a.value=function(o){return arguments.length?(t=typeof o==\\\"function\\\"?o:Xe(+o),a):t},a.sortValues=function(o){return arguments.length?(e=o,r=null,a):e},a.sort=function(o){return arguments.length?(r=o,e=null,a):r},a.startAngle=function(o){return arguments.length?(n=typeof o==\\\"function\\\"?o:Xe(+o),a):n},a.endAngle=function(o){return arguments.length?(i=typeof o==\\\"function\\\"?o:Xe(+o),a):i},a.padAngle=function(o){return arguments.length?(s=typeof o==\\\"function\\\"?o:Xe(+o),a):s},a}function Gl(){}function ql(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function I2(t){this._context=t}I2.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ql(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ql(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function ta(t){return new I2(t)}function O2(t){this._context=t}O2.prototype={areaStart:Gl,areaEnd:Gl,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ql(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Ek(t){return new O2(t)}function R2(t){this._context=t}R2.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:ql(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Ck(t){return new R2(t)}function F2(t){this._context=t}F2.prototype={areaStart:Gl,areaEnd:Gl,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function Sk(t){return new F2(t)}function P2(t){return t\u003C0?-1:1}function Y2(t,e,r){var n=t._x1-t._x0,i=e-t._x1,s=(t._y1-t._y0)/(n||i\u003C0&&-0),a=(r-t._y1)/(i||n\u003C0&&-0),o=(s*i+a*n)/(n+i);return(P2(s)+P2(a))*Math.min(Math.abs(s),Math.abs(a),.5*Math.abs(o))||0}function V2(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function $h(t,e,r){var n=t._x0,i=t._y0,s=t._x1,a=t._y1,o=(s-n)/3;t._context.bezierCurveTo(n+o,i+o*e,s-o,a-o*r,s,a)}function jl(t){this._context=t}jl.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:$h(this,this._t0,V2(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,$h(this,V2(this,r=Y2(this,t,e)),r);break;default:$h(this,this._t0,r=Y2(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}};function U2(t){this._context=new z2(t)}(U2.prototype=Object.create(jl.prototype)).point=function(t,e){jl.prototype.point.call(this,e,t)};function z2(t){this._context=t}z2.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,n,i,s){this._context.bezierCurveTo(e,t,n,r,s,i)}};function Ak(t){return new jl(t)}function Lk(t){return new U2(t)}function W2(t){this._context=t}W2.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=H2(t),i=H2(e),s=0,a=1;a\u003Cr;++s,++a)this._context.bezierCurveTo(n[0][s],i[0][s],n[1][s],i[1][s],t[a],e[a]);(this._line||this._line!==0&&r===1)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}};function H2(t){var e,r=t.length-1,n,i=new Array(r),s=new Array(r),a=new Array(r);for(i[0]=0,s[0]=2,a[0]=t[0]+2*t[1],e=1;e\u003Cr-1;++e)i[e]=1,s[e]=4,a[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,s[r-1]=7,a[r-1]=8*t[r-1]+t[r],e=1;e\u003Cr;++e)n=i[e]/s[e-1],s[e]-=n,a[e]-=n*a[e-1];for(i[r-1]=a[r-1]/s[r-1],e=r-2;e>=0;--e)i[e]=(a[e]-i[e+1])/s[e];for(s[r-1]=(t[r]+i[r-1])/2,e=0;e\u003Cr-1;++e)s[e]=2*t[e+1]-i[e+1];return[i,s]}function Dk(t){return new W2(t)}function $l(t,e){this._context=t,this._t=e}$l.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0\u003Cthis._t&&this._t\u003C1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t\u003C=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e}};function Mk(t){return new $l(t,.5)}function Nk(t){return new $l(t,0)}function Bk(t){return new $l(t,1)}function ea(t,e,r){this.k=t,this.x=e,this.y=r}ea.prototype={constructor:ea,scale:function(t){return t===1?this:new ea(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new ea(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return\\\"translate(\\\"+this.x+\\\",\\\"+this.y+\\\") scale(\\\"+this.k+\\\")\\\"}},new ea(1,0,0),ea.prototype;/*! @license DOMPurify 2.4.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.1/LICENSE */function Ii(t){return Ii=typeof Symbol==\\\"function\\\"&&typeof Symbol.iterator==\\\"symbol\\\"?function(e){return typeof e}:function(e){return e&&typeof Symbol==\\\"function\\\"&&e.constructor===Symbol&&e!==Symbol.prototype?\\\"symbol\\\":typeof e},Ii(t)}function Xh(t,e){return Xh=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Xh(t,e)}function Ik(){if(typeof Reflect>\\\"u\\\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\\\"function\\\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Xl(t,e,r){return Ik()?Xl=Reflect.construct:Xl=function(i,s,a){var o=[null];o.push.apply(o,s);var l=Function.bind.apply(i,o),u=new l;return a&&Xh(u,a.prototype),u},Xl.apply(null,arguments)}function fn(t){return Ok(t)||Rk(t)||Fk(t)||Pk()}function Ok(t){if(Array.isArray(t))return Kh(t)}function Rk(t){if(typeof Symbol\u003C\\\"u\\\"&&t[Symbol.iterator]!=null||t[\\\"@@iterator\\\"]!=null)return Array.from(t)}function Fk(t,e){if(!!t){if(typeof t==\\\"string\\\")return Kh(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r===\\\"Object\\\"&&t.constructor&&(r=t.constructor.name),r===\\\"Map\\\"||r===\\\"Set\\\")return Array.from(t);if(r===\\\"Arguments\\\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Kh(t,e)}}function Kh(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r\u003Ce;r++)n[r]=t[r];return n}function Pk(){throw new TypeError(`Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Yk=Object.hasOwnProperty,G2=Object.setPrototypeOf,Vk=Object.isFrozen,Uk=Object.getPrototypeOf,zk=Object.getOwnPropertyDescriptor,Lr=Object.freeze,pn=Object.seal,Wk=Object.create,q2=typeof Reflect\u003C\\\"u\\\"&&Reflect,Kl=q2.apply,Zh=q2.construct;Kl||(Kl=function(e,r,n){return e.apply(r,n)}),Lr||(Lr=function(e){return e}),pn||(pn=function(e){return e}),Zh||(Zh=function(e,r){return Xl(e,fn(r))});var Hk=tn(Array.prototype.forEach),j2=tn(Array.prototype.pop),no=tn(Array.prototype.push),Zl=tn(String.prototype.toLowerCase),Qh=tn(String.prototype.toString),Gk=tn(String.prototype.match),gn=tn(String.prototype.replace),qk=tn(String.prototype.indexOf),jk=tn(String.prototype.trim),Dr=tn(RegExp.prototype.test),Jh=$k(TypeError);function tn(t){return function(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i\u003Cr;i++)n[i-1]=arguments[i];return Kl(t,e,n)}}function $k(t){return function(){for(var e=arguments.length,r=new Array(e),n=0;n\u003Ce;n++)r[n]=arguments[n];return Zh(t,r)}}function we(t,e,r){r=r||Zl,G2&&G2(t,null);for(var n=e.length;n--;){var i=e[n];if(typeof i==\\\"string\\\"){var s=r(i);s!==i&&(Vk(e)||(e[n]=s),i=s)}t[i]=!0}return t}function ds(t){var e=Wk(null),r;for(r in t)Kl(Yk,t,[r])&&(e[r]=t[r]);return e}function Ql(t,e){for(;t!==null;){var r=zk(t,e);if(r){if(r.get)return tn(r.get);if(typeof r.value==\\\"function\\\")return tn(r.value)}t=Uk(t)}function n(i){return console.warn(\\\"fallback value for\\\",i),null}return n}var $2=Lr([\\\"a\\\",\\\"abbr\\\",\\\"acronym\\\",\\\"address\\\",\\\"area\\\",\\\"article\\\",\\\"aside\\\",\\\"audio\\\",\\\"b\\\",\\\"bdi\\\",\\\"bdo\\\",\\\"big\\\",\\\"blink\\\",\\\"blockquote\\\",\\\"body\\\",\\\"br\\\",\\\"button\\\",\\\"canvas\\\",\\\"caption\\\",\\\"center\\\",\\\"cite\\\",\\\"code\\\",\\\"col\\\",\\\"colgroup\\\",\\\"content\\\",\\\"data\\\",\\\"datalist\\\",\\\"dd\\\",\\\"decorator\\\",\\\"del\\\",\\\"details\\\",\\\"dfn\\\",\\\"dialog\\\",\\\"dir\\\",\\\"div\\\",\\\"dl\\\",\\\"dt\\\",\\\"element\\\",\\\"em\\\",\\\"fieldset\\\",\\\"figcaption\\\",\\\"figure\\\",\\\"font\\\",\\\"footer\\\",\\\"form\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"head\\\",\\\"header\\\",\\\"hgroup\\\",\\\"hr\\\",\\\"html\\\",\\\"i\\\",\\\"img\\\",\\\"input\\\",\\\"ins\\\",\\\"kbd\\\",\\\"label\\\",\\\"legend\\\",\\\"li\\\",\\\"main\\\",\\\"map\\\",\\\"mark\\\",\\\"marquee\\\",\\\"menu\\\",\\\"menuitem\\\",\\\"meter\\\",\\\"nav\\\",\\\"nobr\\\",\\\"ol\\\",\\\"optgroup\\\",\\\"option\\\",\\\"output\\\",\\\"p\\\",\\\"picture\\\",\\\"pre\\\",\\\"progress\\\",\\\"q\\\",\\\"rp\\\",\\\"rt\\\",\\\"ruby\\\",\\\"s\\\",\\\"samp\\\",\\\"section\\\",\\\"select\\\",\\\"shadow\\\",\\\"small\\\",\\\"source\\\",\\\"spacer\\\",\\\"span\\\",\\\"strike\\\",\\\"strong\\\",\\\"style\\\",\\\"sub\\\",\\\"summary\\\",\\\"sup\\\",\\\"table\\\",\\\"tbody\\\",\\\"td\\\",\\\"template\\\",\\\"textarea\\\",\\\"tfoot\\\",\\\"th\\\",\\\"thead\\\",\\\"time\\\",\\\"tr\\\",\\\"track\\\",\\\"tt\\\",\\\"u\\\",\\\"ul\\\",\\\"var\\\",\\\"video\\\",\\\"wbr\\\"]),t1=Lr([\\\"svg\\\",\\\"a\\\",\\\"altglyph\\\",\\\"altglyphdef\\\",\\\"altglyphitem\\\",\\\"animatecolor\\\",\\\"animatemotion\\\",\\\"animatetransform\\\",\\\"circle\\\",\\\"clippath\\\",\\\"defs\\\",\\\"desc\\\",\\\"ellipse\\\",\\\"filter\\\",\\\"font\\\",\\\"g\\\",\\\"glyph\\\",\\\"glyphref\\\",\\\"hkern\\\",\\\"image\\\",\\\"line\\\",\\\"lineargradient\\\",\\\"marker\\\",\\\"mask\\\",\\\"metadata\\\",\\\"mpath\\\",\\\"path\\\",\\\"pattern\\\",\\\"polygon\\\",\\\"polyline\\\",\\\"radialgradient\\\",\\\"rect\\\",\\\"stop\\\",\\\"style\\\",\\\"switch\\\",\\\"symbol\\\",\\\"text\\\",\\\"textpath\\\",\\\"title\\\",\\\"tref\\\",\\\"tspan\\\",\\\"view\\\",\\\"vkern\\\"]),e1=Lr([\\\"feBlend\\\",\\\"feColorMatrix\\\",\\\"feComponentTransfer\\\",\\\"feComposite\\\",\\\"feConvolveMatrix\\\",\\\"feDiffuseLighting\\\",\\\"feDisplacementMap\\\",\\\"feDistantLight\\\",\\\"feFlood\\\",\\\"feFuncA\\\",\\\"feFuncB\\\",\\\"feFuncG\\\",\\\"feFuncR\\\",\\\"feGaussianBlur\\\",\\\"feImage\\\",\\\"feMerge\\\",\\\"feMergeNode\\\",\\\"feMorphology\\\",\\\"feOffset\\\",\\\"fePointLight\\\",\\\"feSpecularLighting\\\",\\\"feSpotLight\\\",\\\"feTile\\\",\\\"feTurbulence\\\"]),Xk=Lr([\\\"animate\\\",\\\"color-profile\\\",\\\"cursor\\\",\\\"discard\\\",\\\"fedropshadow\\\",\\\"font-face\\\",\\\"font-face-format\\\",\\\"font-face-name\\\",\\\"font-face-src\\\",\\\"font-face-uri\\\",\\\"foreignobject\\\",\\\"hatch\\\",\\\"hatchpath\\\",\\\"mesh\\\",\\\"meshgradient\\\",\\\"meshpatch\\\",\\\"meshrow\\\",\\\"missing-glyph\\\",\\\"script\\\",\\\"set\\\",\\\"solidcolor\\\",\\\"unknown\\\",\\\"use\\\"]),r1=Lr([\\\"math\\\",\\\"menclose\\\",\\\"merror\\\",\\\"mfenced\\\",\\\"mfrac\\\",\\\"mglyph\\\",\\\"mi\\\",\\\"mlabeledtr\\\",\\\"mmultiscripts\\\",\\\"mn\\\",\\\"mo\\\",\\\"mover\\\",\\\"mpadded\\\",\\\"mphantom\\\",\\\"mroot\\\",\\\"mrow\\\",\\\"ms\\\",\\\"mspace\\\",\\\"msqrt\\\",\\\"mstyle\\\",\\\"msub\\\",\\\"msup\\\",\\\"msubsup\\\",\\\"mtable\\\",\\\"mtd\\\",\\\"mtext\\\",\\\"mtr\\\",\\\"munder\\\",\\\"munderover\\\"]),Kk=Lr([\\\"maction\\\",\\\"maligngroup\\\",\\\"malignmark\\\",\\\"mlongdiv\\\",\\\"mscarries\\\",\\\"mscarry\\\",\\\"msgroup\\\",\\\"mstack\\\",\\\"msline\\\",\\\"msrow\\\",\\\"semantics\\\",\\\"annotation\\\",\\\"annotation-xml\\\",\\\"mprescripts\\\",\\\"none\\\"]),X2=Lr([\\\"#text\\\"]),K2=Lr([\\\"accept\\\",\\\"action\\\",\\\"align\\\",\\\"alt\\\",\\\"autocapitalize\\\",\\\"autocomplete\\\",\\\"autopictureinpicture\\\",\\\"autoplay\\\",\\\"background\\\",\\\"bgcolor\\\",\\\"border\\\",\\\"capture\\\",\\\"cellpadding\\\",\\\"cellspacing\\\",\\\"checked\\\",\\\"cite\\\",\\\"class\\\",\\\"clear\\\",\\\"color\\\",\\\"cols\\\",\\\"colspan\\\",\\\"controls\\\",\\\"controlslist\\\",\\\"coords\\\",\\\"crossorigin\\\",\\\"datetime\\\",\\\"decoding\\\",\\\"default\\\",\\\"dir\\\",\\\"disabled\\\",\\\"disablepictureinpicture\\\",\\\"disableremoteplayback\\\",\\\"download\\\",\\\"draggable\\\",\\\"enctype\\\",\\\"enterkeyhint\\\",\\\"face\\\",\\\"for\\\",\\\"headers\\\",\\\"height\\\",\\\"hidden\\\",\\\"high\\\",\\\"href\\\",\\\"hreflang\\\",\\\"id\\\",\\\"inputmode\\\",\\\"integrity\\\",\\\"ismap\\\",\\\"kind\\\",\\\"label\\\",\\\"lang\\\",\\\"list\\\",\\\"loading\\\",\\\"loop\\\",\\\"low\\\",\\\"max\\\",\\\"maxlength\\\",\\\"media\\\",\\\"method\\\",\\\"min\\\",\\\"minlength\\\",\\\"multiple\\\",\\\"muted\\\",\\\"name\\\",\\\"nonce\\\",\\\"noshade\\\",\\\"novalidate\\\",\\\"nowrap\\\",\\\"open\\\",\\\"optimum\\\",\\\"pattern\\\",\\\"placeholder\\\",\\\"playsinline\\\",\\\"poster\\\",\\\"preload\\\",\\\"pubdate\\\",\\\"radiogroup\\\",\\\"readonly\\\",\\\"rel\\\",\\\"required\\\",\\\"rev\\\",\\\"reversed\\\",\\\"role\\\",\\\"rows\\\",\\\"rowspan\\\",\\\"spellcheck\\\",\\\"scope\\\",\\\"selected\\\",\\\"shape\\\",\\\"size\\\",\\\"sizes\\\",\\\"span\\\",\\\"srclang\\\",\\\"start\\\",\\\"src\\\",\\\"srcset\\\",\\\"step\\\",\\\"style\\\",\\\"summary\\\",\\\"tabindex\\\",\\\"title\\\",\\\"translate\\\",\\\"type\\\",\\\"usemap\\\",\\\"valign\\\",\\\"value\\\",\\\"width\\\",\\\"xmlns\\\",\\\"slot\\\"]),n1=Lr([\\\"accent-height\\\",\\\"accumulate\\\",\\\"additive\\\",\\\"alignment-baseline\\\",\\\"ascent\\\",\\\"attributename\\\",\\\"attributetype\\\",\\\"azimuth\\\",\\\"basefrequency\\\",\\\"baseline-shift\\\",\\\"begin\\\",\\\"bias\\\",\\\"by\\\",\\\"class\\\",\\\"clip\\\",\\\"clippathunits\\\",\\\"clip-path\\\",\\\"clip-rule\\\",\\\"color\\\",\\\"color-interpolation\\\",\\\"color-interpolation-filters\\\",\\\"color-profile\\\",\\\"color-rendering\\\",\\\"cx\\\",\\\"cy\\\",\\\"d\\\",\\\"dx\\\",\\\"dy\\\",\\\"diffuseconstant\\\",\\\"direction\\\",\\\"display\\\",\\\"divisor\\\",\\\"dur\\\",\\\"edgemode\\\",\\\"elevation\\\",\\\"end\\\",\\\"fill\\\",\\\"fill-opacity\\\",\\\"fill-rule\\\",\\\"filter\\\",\\\"filterunits\\\",\\\"flood-color\\\",\\\"flood-opacity\\\",\\\"font-family\\\",\\\"font-size\\\",\\\"font-size-adjust\\\",\\\"font-stretch\\\",\\\"font-style\\\",\\\"font-variant\\\",\\\"font-weight\\\",\\\"fx\\\",\\\"fy\\\",\\\"g1\\\",\\\"g2\\\",\\\"glyph-name\\\",\\\"glyphref\\\",\\\"gradientunits\\\",\\\"gradienttransform\\\",\\\"height\\\",\\\"href\\\",\\\"id\\\",\\\"image-rendering\\\",\\\"in\\\",\\\"in2\\\",\\\"k\\\",\\\"k1\\\",\\\"k2\\\",\\\"k3\\\",\\\"k4\\\",\\\"kerning\\\",\\\"keypoints\\\",\\\"keysplines\\\",\\\"keytimes\\\",\\\"lang\\\",\\\"lengthadjust\\\",\\\"letter-spacing\\\",\\\"kernelmatrix\\\",\\\"kernelunitlength\\\",\\\"lighting-color\\\",\\\"local\\\",\\\"marker-end\\\",\\\"marker-mid\\\",\\\"marker-start\\\",\\\"markerheight\\\",\\\"markerunits\\\",\\\"markerwidth\\\",\\\"maskcontentunits\\\",\\\"maskunits\\\",\\\"max\\\",\\\"mask\\\",\\\"media\\\",\\\"method\\\",\\\"mode\\\",\\\"min\\\",\\\"name\\\",\\\"numoctaves\\\",\\\"offset\\\",\\\"operator\\\",\\\"opacity\\\",\\\"order\\\",\\\"orient\\\",\\\"orientation\\\",\\\"origin\\\",\\\"overflow\\\",\\\"paint-order\\\",\\\"path\\\",\\\"pathlength\\\",\\\"patterncontentunits\\\",\\\"patterntransform\\\",\\\"patternunits\\\",\\\"points\\\",\\\"preservealpha\\\",\\\"preserveaspectratio\\\",\\\"primitiveunits\\\",\\\"r\\\",\\\"rx\\\",\\\"ry\\\",\\\"radius\\\",\\\"refx\\\",\\\"refy\\\",\\\"repeatcount\\\",\\\"repeatdur\\\",\\\"restart\\\",\\\"result\\\",\\\"rotate\\\",\\\"scale\\\",\\\"seed\\\",\\\"shape-rendering\\\",\\\"specularconstant\\\",\\\"specularexponent\\\",\\\"spreadmethod\\\",\\\"startoffset\\\",\\\"stddeviation\\\",\\\"stitchtiles\\\",\\\"stop-color\\\",\\\"stop-opacity\\\",\\\"stroke-dasharray\\\",\\\"stroke-dashoffset\\\",\\\"stroke-linecap\\\",\\\"stroke-linejoin\\\",\\\"stroke-miterlimit\\\",\\\"stroke-opacity\\\",\\\"stroke\\\",\\\"stroke-width\\\",\\\"style\\\",\\\"surfacescale\\\",\\\"systemlanguage\\\",\\\"tabindex\\\",\\\"targetx\\\",\\\"targety\\\",\\\"transform\\\",\\\"transform-origin\\\",\\\"text-anchor\\\",\\\"text-decoration\\\",\\\"text-rendering\\\",\\\"textlength\\\",\\\"type\\\",\\\"u1\\\",\\\"u2\\\",\\\"unicode\\\",\\\"values\\\",\\\"viewbox\\\",\\\"visibility\\\",\\\"version\\\",\\\"vert-adv-y\\\",\\\"vert-origin-x\\\",\\\"vert-origin-y\\\",\\\"width\\\",\\\"word-spacing\\\",\\\"wrap\\\",\\\"writing-mode\\\",\\\"xchannelselector\\\",\\\"ychannelselector\\\",\\\"x\\\",\\\"x1\\\",\\\"x2\\\",\\\"xmlns\\\",\\\"y\\\",\\\"y1\\\",\\\"y2\\\",\\\"z\\\",\\\"zoomandpan\\\"]),Z2=Lr([\\\"accent\\\",\\\"accentunder\\\",\\\"align\\\",\\\"bevelled\\\",\\\"close\\\",\\\"columnsalign\\\",\\\"columnlines\\\",\\\"columnspan\\\",\\\"denomalign\\\",\\\"depth\\\",\\\"dir\\\",\\\"display\\\",\\\"displaystyle\\\",\\\"encoding\\\",\\\"fence\\\",\\\"frame\\\",\\\"height\\\",\\\"href\\\",\\\"id\\\",\\\"largeop\\\",\\\"length\\\",\\\"linethickness\\\",\\\"lspace\\\",\\\"lquote\\\",\\\"mathbackground\\\",\\\"mathcolor\\\",\\\"mathsize\\\",\\\"mathvariant\\\",\\\"maxsize\\\",\\\"minsize\\\",\\\"movablelimits\\\",\\\"notation\\\",\\\"numalign\\\",\\\"open\\\",\\\"rowalign\\\",\\\"rowlines\\\",\\\"rowspacing\\\",\\\"rowspan\\\",\\\"rspace\\\",\\\"rquote\\\",\\\"scriptlevel\\\",\\\"scriptminsize\\\",\\\"scriptsizemultiplier\\\",\\\"selection\\\",\\\"separator\\\",\\\"separators\\\",\\\"stretchy\\\",\\\"subscriptshift\\\",\\\"supscriptshift\\\",\\\"symmetric\\\",\\\"voffset\\\",\\\"width\\\",\\\"xmlns\\\"]),Jl=Lr([\\\"xlink:href\\\",\\\"xml:id\\\",\\\"xlink:title\\\",\\\"xml:space\\\",\\\"xmlns:xlink\\\"]),Zk=pn(/\\\\{\\\\{[\\\\w\\\\W]*|[\\\\w\\\\W]*\\\\}\\\\}/gm),Qk=pn(/\u003C%[\\\\w\\\\W]*|[\\\\w\\\\W]*%>/gm),Jk=pn(/\\\\${[\\\\w\\\\W]*}/gm),t8=pn(/^data-[\\\\-\\\\w.\\\\u00B7-\\\\uFFFF]/),e8=pn(/^aria-[\\\\-\\\\w]+$/),r8=pn(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\\\-]+(?:[^a-z+.\\\\-:]|$))/i),n8=pn(/^(?:\\\\w+script|data):/i),i8=pn(/[\\\\u0000-\\\\u0020\\\\u00A0\\\\u1680\\\\u180E\\\\u2000-\\\\u2029\\\\u205F\\\\u3000]/g),s8=pn(/^html$/i),a8=function(){return typeof window>\\\"u\\\"?null:window},o8=function(e,r){if(Ii(e)!==\\\"object\\\"||typeof e.createPolicy!=\\\"function\\\")return null;var n=null,i=\\\"data-tt-policy-suffix\\\";r.currentScript&&r.currentScript.hasAttribute(i)&&(n=r.currentScript.getAttribute(i));var s=\\\"dompurify\\\"+(n?\\\"#\\\"+n:\\\"\\\");try{return e.createPolicy(s,{createHTML:function(o){return o},createScriptURL:function(o){return o}})}catch{return console.warn(\\\"TrustedTypes policy \\\"+s+\\\" could not be created.\\\"),null}};function Q2(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:a8(),e=function(Z){return Q2(Z)};if(e.version=\\\"2.4.1\\\",e.removed=[],!t||!t.document||t.document.nodeType!==9)return e.isSupported=!1,e;var r=t.document,n=t.document,i=t.DocumentFragment,s=t.HTMLTemplateElement,a=t.Node,o=t.Element,l=t.NodeFilter,u=t.NamedNodeMap,d=u===void 0?t.NamedNodeMap||t.MozNamedAttrMap:u,f=t.HTMLFormElement,p=t.DOMParser,g=t.trustedTypes,b=o.prototype,k=Ql(b,\\\"cloneNode\\\"),T=Ql(b,\\\"nextSibling\\\"),L=Ql(b,\\\"childNodes\\\"),E=Ql(b,\\\"parentNode\\\");if(typeof s==\\\"function\\\"){var I=n.createElement(\\\"template\\\");I.content&&I.content.ownerDocument&&(n=I.content.ownerDocument)}var V=o8(g,r),H=V?V.createHTML(\\\"\\\"):\\\"\\\",G=n,Y=G.implementation,W=G.createNodeIterator,N=G.createDocumentFragment,D=G.getElementsByTagName,w=r.importNode,v={};try{v=ds(n).documentMode?n.documentMode:{}}catch{}var M={};e.isSupported=typeof E==\\\"function\\\"&&Y&&typeof Y.createHTMLDocument\u003C\\\"u\\\"&&v!==9;var m=Zk,Q=Qk,x=Jk,ct=t8,Dt=e8,kt=n8,j=i8,ot=r8,rt=null,nt=we({},[].concat(fn($2),fn(t1),fn(e1),fn(r1),fn(X2))),ut=null,_t=we({},[].concat(fn(K2),fn(n1),fn(Z2),fn(Jl))),K=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ot=null,P=null,z=!0,X=!0,F=!1,O=!1,A=!1,J=!1,C=!1,ht=!1,U=!1,Yt=!1,et=!0,Mt=!1,Tt=\\\"user-content-\\\",gt=!0,Et=!1,wt={},pt=null,st=we({},[\\\"annotation-xml\\\",\\\"audio\\\",\\\"colgroup\\\",\\\"desc\\\",\\\"foreignobject\\\",\\\"head\\\",\\\"iframe\\\",\\\"math\\\",\\\"mi\\\",\\\"mn\\\",\\\"mo\\\",\\\"ms\\\",\\\"mtext\\\",\\\"noembed\\\",\\\"noframes\\\",\\\"noscript\\\",\\\"plaintext\\\",\\\"script\\\",\\\"style\\\",\\\"svg\\\",\\\"template\\\",\\\"thead\\\",\\\"title\\\",\\\"video\\\",\\\"xmp\\\"]),le=null,Xt=we({},[\\\"audio\\\",\\\"video\\\",\\\"img\\\",\\\"source\\\",\\\"image\\\",\\\"track\\\"]),jt=null,Kt=we({},[\\\"alt\\\",\\\"class\\\",\\\"for\\\",\\\"id\\\",\\\"label\\\",\\\"name\\\",\\\"pattern\\\",\\\"placeholder\\\",\\\"role\\\",\\\"summary\\\",\\\"title\\\",\\\"value\\\",\\\"style\\\",\\\"xmlns\\\"]),Gt=\\\"http://www.w3.org/1998/Math/MathML\\\",Ee=\\\"http://www.w3.org/2000/svg\\\",Ht=\\\"http://www.w3.org/1999/xhtml\\\",Vt=Ht,Ft=!1,xt=null,ft=we({},[Gt,Ee,Ht],Qh),Lt,bt=[\\\"application/xhtml+xml\\\",\\\"text/html\\\"],Ut=\\\"text/html\\\",at,ie=null,dt=n.createElement(\\\"form\\\"),ee=function(Z){return Z instanceof RegExp||Z instanceof Function},fe=function(Z){ie&&ie===Z||((!Z||Ii(Z)!==\\\"object\\\")&&(Z={}),Z=ds(Z),Lt=bt.indexOf(Z.PARSER_MEDIA_TYPE)===-1?Lt=Ut:Lt=Z.PARSER_MEDIA_TYPE,at=Lt===\\\"application/xhtml+xml\\\"?Qh:Zl,rt=\\\"ALLOWED_TAGS\\\"in Z?we({},Z.ALLOWED_TAGS,at):nt,ut=\\\"ALLOWED_ATTR\\\"in Z?we({},Z.ALLOWED_ATTR,at):_t,xt=\\\"ALLOWED_NAMESPACES\\\"in Z?we({},Z.ALLOWED_NAMESPACES,Qh):ft,jt=\\\"ADD_URI_SAFE_ATTR\\\"in Z?we(ds(Kt),Z.ADD_URI_SAFE_ATTR,at):Kt,le=\\\"ADD_DATA_URI_TAGS\\\"in Z?we(ds(Xt),Z.ADD_DATA_URI_TAGS,at):Xt,pt=\\\"FORBID_CONTENTS\\\"in Z?we({},Z.FORBID_CONTENTS,at):st,Ot=\\\"FORBID_TAGS\\\"in Z?we({},Z.FORBID_TAGS,at):{},P=\\\"FORBID_ATTR\\\"in Z?we({},Z.FORBID_ATTR,at):{},wt=\\\"USE_PROFILES\\\"in Z?Z.USE_PROFILES:!1,z=Z.ALLOW_ARIA_ATTR!==!1,X=Z.ALLOW_DATA_ATTR!==!1,F=Z.ALLOW_UNKNOWN_PROTOCOLS||!1,O=Z.SAFE_FOR_TEMPLATES||!1,A=Z.WHOLE_DOCUMENT||!1,ht=Z.RETURN_DOM||!1,U=Z.RETURN_DOM_FRAGMENT||!1,Yt=Z.RETURN_TRUSTED_TYPE||!1,C=Z.FORCE_BODY||!1,et=Z.SANITIZE_DOM!==!1,Mt=Z.SANITIZE_NAMED_PROPS||!1,gt=Z.KEEP_CONTENT!==!1,Et=Z.IN_PLACE||!1,ot=Z.ALLOWED_URI_REGEXP||ot,Vt=Z.NAMESPACE||Ht,Z.CUSTOM_ELEMENT_HANDLING&&ee(Z.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(K.tagNameCheck=Z.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Z.CUSTOM_ELEMENT_HANDLING&&ee(Z.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(K.attributeNameCheck=Z.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Z.CUSTOM_ELEMENT_HANDLING&&typeof Z.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==\\\"boolean\\\"&&(K.allowCustomizedBuiltInElements=Z.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),O&&(X=!1),U&&(ht=!0),wt&&(rt=we({},fn(X2)),ut=[],wt.html===!0&&(we(rt,$2),we(ut,K2)),wt.svg===!0&&(we(rt,t1),we(ut,n1),we(ut,Jl)),wt.svgFilters===!0&&(we(rt,e1),we(ut,n1),we(ut,Jl)),wt.mathMl===!0&&(we(rt,r1),we(ut,Z2),we(ut,Jl))),Z.ADD_TAGS&&(rt===nt&&(rt=ds(rt)),we(rt,Z.ADD_TAGS,at)),Z.ADD_ATTR&&(ut===_t&&(ut=ds(ut)),we(ut,Z.ADD_ATTR,at)),Z.ADD_URI_SAFE_ATTR&&we(jt,Z.ADD_URI_SAFE_ATTR,at),Z.FORBID_CONTENTS&&(pt===st&&(pt=ds(pt)),we(pt,Z.FORBID_CONTENTS,at)),gt&&(rt[\\\"#text\\\"]=!0),A&&we(rt,[\\\"html\\\",\\\"head\\\",\\\"body\\\"]),rt.table&&(we(rt,[\\\"tbody\\\"]),delete Ot.tbody),Lr&&Lr(Z),ie=Z)},be=we({},[\\\"mi\\\",\\\"mo\\\",\\\"mn\\\",\\\"ms\\\",\\\"mtext\\\"]),_e=we({},[\\\"foreignobject\\\",\\\"desc\\\",\\\"title\\\",\\\"annotation-xml\\\"]),ke=we({},[\\\"title\\\",\\\"style\\\",\\\"font\\\",\\\"a\\\",\\\"script\\\"]),$t=we({},t1);we($t,e1),we($t,Xk);var se=we({},r1);we(se,Kk);var ye=function(Z){var At=E(Z);(!At||!At.tagName)&&(At={namespaceURI:Vt,tagName:\\\"template\\\"});var Nt=Zl(Z.tagName),pe=Zl(At.tagName);return xt[Z.namespaceURI]?Z.namespaceURI===Ee?At.namespaceURI===Ht?Nt===\\\"svg\\\":At.namespaceURI===Gt?Nt===\\\"svg\\\"&&(pe===\\\"annotation-xml\\\"||be[pe]):Boolean($t[Nt]):Z.namespaceURI===Gt?At.namespaceURI===Ht?Nt===\\\"math\\\":At.namespaceURI===Ee?Nt===\\\"math\\\"&&_e[pe]:Boolean(se[Nt]):Z.namespaceURI===Ht?At.namespaceURI===Ee&&!_e[pe]||At.namespaceURI===Gt&&!be[pe]?!1:!se[Nt]&&(ke[Nt]||!$t[Nt]):!!(Lt===\\\"application/xhtml+xml\\\"&&xt[Z.namespaceURI]):!1},Jt=function(Z){no(e.removed,{element:Z});try{Z.parentNode.removeChild(Z)}catch{try{Z.outerHTML=H}catch{Z.remove()}}},Nn=function(Z,At){try{no(e.removed,{attribute:At.getAttributeNode(Z),from:At})}catch{no(e.removed,{attribute:null,from:At})}if(At.removeAttribute(Z),Z===\\\"is\\\"&&!ut[Z])if(ht||U)try{Jt(At)}catch{}else try{At.setAttribute(Z,\\\"\\\")}catch{}},Xr=function(Z){var At,Nt;if(C)Z=\\\"\u003Cremove>\u003C/remove>\\\"+Z;else{var pe=Gk(Z,/^[\\\\r\\\\n\\\\t ]+/);Nt=pe&&pe[0]}Lt===\\\"application/xhtml+xml\\\"&&Vt===Ht&&(Z='\u003Chtml xmlns=\\\"http://www.w3.org/1999/xhtml\\\">\u003Chead>\u003C/head>\u003Cbody>'+Z+\\\"\u003C/body>\u003C/html>\\\");var Me=V?V.createHTML(Z):Z;if(Vt===Ht)try{At=new p().parseFromString(Me,Lt)}catch{}if(!At||!At.documentElement){At=Y.createDocument(Vt,\\\"template\\\",null);try{At.documentElement.innerHTML=Ft?\\\"\\\":Me}catch{}}var Le=At.body||At.documentElement;return Z&&Nt&&Le.insertBefore(n.createTextNode(Nt),Le.childNodes[0]||null),Vt===Ht?D.call(At,A?\\\"html\\\":\\\"body\\\")[0]:A?At.documentElement:Le},De=function(Z){return W.call(Z.ownerDocument||Z,Z,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},ae=function(Z){return Z instanceof f&&(typeof Z.nodeName!=\\\"string\\\"||typeof Z.textContent!=\\\"string\\\"||typeof Z.removeChild!=\\\"function\\\"||!(Z.attributes instanceof d)||typeof Z.removeAttribute!=\\\"function\\\"||typeof Z.setAttribute!=\\\"function\\\"||typeof Z.namespaceURI!=\\\"string\\\"||typeof Z.insertBefore!=\\\"function\\\"||typeof Z.hasChildNodes!=\\\"function\\\")},Be=function(Z){return Ii(a)===\\\"object\\\"?Z instanceof a:Z&&Ii(Z)===\\\"object\\\"&&typeof Z.nodeType==\\\"number\\\"&&typeof Z.nodeName==\\\"string\\\"},Re=function(Z,At,Nt){!M[Z]||Hk(M[Z],function(pe){pe.call(e,At,Nt,ie)})},Pe=function(Z){var At;if(Re(\\\"beforeSanitizeElements\\\",Z,null),ae(Z)||Dr(/[\\\\u0080-\\\\uFFFF]/,Z.nodeName))return Jt(Z),!0;var Nt=at(Z.nodeName);if(Re(\\\"uponSanitizeElement\\\",Z,{tagName:Nt,allowedTags:rt}),Z.hasChildNodes()&&!Be(Z.firstElementChild)&&(!Be(Z.content)||!Be(Z.content.firstElementChild))&&Dr(/\u003C[/\\\\w]/g,Z.innerHTML)&&Dr(/\u003C[/\\\\w]/g,Z.textContent)||Nt===\\\"select\\\"&&Dr(/\u003Ctemplate/i,Z.innerHTML))return Jt(Z),!0;if(!rt[Nt]||Ot[Nt]){if(!Ot[Nt]&&Ie(Nt)&&(K.tagNameCheck instanceof RegExp&&Dr(K.tagNameCheck,Nt)||K.tagNameCheck instanceof Function&&K.tagNameCheck(Nt)))return!1;if(gt&&!pt[Nt]){var pe=E(Z)||Z.parentNode,Me=L(Z)||Z.childNodes;if(Me&&pe)for(var Le=Me.length,We=Le-1;We>=0;--We)pe.insertBefore(k(Me[We],!0),T(Z))}return Jt(Z),!0}return Z instanceof o&&!ye(Z)||(Nt===\\\"noscript\\\"||Nt===\\\"noembed\\\")&&Dr(/\u003C\\\\/no(script|embed)/i,Z.innerHTML)?(Jt(Z),!0):(O&&Z.nodeType===3&&(At=Z.textContent,At=gn(At,m,\\\" \\\"),At=gn(At,Q,\\\" \\\"),At=gn(At,x,\\\" \\\"),Z.textContent!==At&&(no(e.removed,{element:Z.cloneNode()}),Z.textContent=At)),Re(\\\"afterSanitizeElements\\\",Z,null),!1)},Ye=function(Z,At,Nt){if(et&&(At===\\\"id\\\"||At===\\\"name\\\")&&(Nt in n||Nt in dt))return!1;if(!(X&&!P[At]&&Dr(ct,At))){if(!(z&&Dr(Dt,At))){if(!ut[At]||P[At]){if(!(Ie(Z)&&(K.tagNameCheck instanceof RegExp&&Dr(K.tagNameCheck,Z)||K.tagNameCheck instanceof Function&&K.tagNameCheck(Z))&&(K.attributeNameCheck instanceof RegExp&&Dr(K.attributeNameCheck,At)||K.attributeNameCheck instanceof Function&&K.attributeNameCheck(At))||At===\\\"is\\\"&&K.allowCustomizedBuiltInElements&&(K.tagNameCheck instanceof RegExp&&Dr(K.tagNameCheck,Nt)||K.tagNameCheck instanceof Function&&K.tagNameCheck(Nt))))return!1}else if(!jt[At]){if(!Dr(ot,gn(Nt,j,\\\"\\\"))){if(!((At===\\\"src\\\"||At===\\\"xlink:href\\\"||At===\\\"href\\\")&&Z!==\\\"script\\\"&&qk(Nt,\\\"data:\\\")===0&&le[Z])){if(!(F&&!Dr(kt,gn(Nt,j,\\\"\\\")))){if(Nt)return!1}}}}}}return!0},Ie=function(Z){return Z.indexOf(\\\"-\\\")>0},$e=function(Z){var At,Nt,pe,Me;Re(\\\"beforeSanitizeAttributes\\\",Z,null);var Le=Z.attributes;if(!!Le){var We={attrName:\\\"\\\",attrValue:\\\"\\\",keepAttr:!0,allowedAttributes:ut};for(Me=Le.length;Me--;){At=Le[Me];var ve=At,Ne=ve.name,Xi=ve.namespaceURI;if(Nt=Ne===\\\"value\\\"?At.value:jk(At.value),pe=at(Ne),We.attrName=pe,We.attrValue=Nt,We.keepAttr=!0,We.forceKeepAttr=void 0,Re(\\\"uponSanitizeAttribute\\\",Z,We),Nt=We.attrValue,!We.forceKeepAttr&&(Nn(Ne,Z),!!We.keepAttr)){if(Dr(/\\\\/>/i,Nt)){Nn(Ne,Z);continue}O&&(Nt=gn(Nt,m,\\\" \\\"),Nt=gn(Nt,Q,\\\" \\\"),Nt=gn(Nt,x,\\\" \\\"));var Ki=at(Z.nodeName);if(!!Ye(Ki,pe,Nt)){if(Mt&&(pe===\\\"id\\\"||pe===\\\"name\\\")&&(Nn(Ne,Z),Nt=Tt+Nt),V&&Ii(g)===\\\"object\\\"&&typeof g.getAttributeType==\\\"function\\\"&&!Xi)switch(g.getAttributeType(Ki,pe)){case\\\"TrustedHTML\\\":Nt=V.createHTML(Nt);break;case\\\"TrustedScriptURL\\\":Nt=V.createScriptURL(Nt);break}try{Xi?Z.setAttributeNS(Xi,Ne,Nt):Z.setAttribute(Ne,Nt),j2(e.removed)}catch{}}}}Re(\\\"afterSanitizeAttributes\\\",Z,null)}},ar=function zt(Z){var At,Nt=De(Z);for(Re(\\\"beforeSanitizeShadowDOM\\\",Z,null);At=Nt.nextNode();)Re(\\\"uponSanitizeShadowNode\\\",At,null),!Pe(At)&&(At.content instanceof i&&zt(At.content),$e(At));Re(\\\"afterSanitizeShadowDOM\\\",Z,null)};return e.sanitize=function(zt){var Z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},At,Nt,pe,Me,Le;if(Ft=!zt,Ft&&(zt=\\\"\u003C!-->\\\"),typeof zt!=\\\"string\\\"&&!Be(zt)){if(typeof zt.toString!=\\\"function\\\")throw Jh(\\\"toString is not a function\\\");if(zt=zt.toString(),typeof zt!=\\\"string\\\")throw Jh(\\\"dirty is not a string, aborting\\\")}if(!e.isSupported){if(Ii(t.toStaticHTML)===\\\"object\\\"||typeof t.toStaticHTML==\\\"function\\\"){if(typeof zt==\\\"string\\\")return t.toStaticHTML(zt);if(Be(zt))return t.toStaticHTML(zt.outerHTML)}return zt}if(J||fe(Z),e.removed=[],typeof zt==\\\"string\\\"&&(Et=!1),Et){if(zt.nodeName){var We=at(zt.nodeName);if(!rt[We]||Ot[We])throw Jh(\\\"root node is forbidden and cannot be sanitized in-place\\\")}}else if(zt instanceof a)At=Xr(\\\"\u003C!---->\\\"),Nt=At.ownerDocument.importNode(zt,!0),Nt.nodeType===1&&Nt.nodeName===\\\"BODY\\\"||Nt.nodeName===\\\"HTML\\\"?At=Nt:At.appendChild(Nt);else{if(!ht&&!O&&!A&&zt.indexOf(\\\"\u003C\\\")===-1)return V&&Yt?V.createHTML(zt):zt;if(At=Xr(zt),!At)return ht?null:Yt?H:\\\"\\\"}At&&C&&Jt(At.firstChild);for(var ve=De(Et?zt:At);pe=ve.nextNode();)pe.nodeType===3&&pe===Me||Pe(pe)||(pe.content instanceof i&&ar(pe.content),$e(pe),Me=pe);if(Me=null,Et)return zt;if(ht){if(U)for(Le=N.call(At.ownerDocument);At.firstChild;)Le.appendChild(At.firstChild);else Le=At;return ut.shadowroot&&(Le=w.call(r,Le,!0)),Le}var Ne=A?At.outerHTML:At.innerHTML;return A&&rt[\\\"!doctype\\\"]&&At.ownerDocument&&At.ownerDocument.doctype&&At.ownerDocument.doctype.name&&Dr(s8,At.ownerDocument.doctype.name)&&(Ne=\\\"\u003C!DOCTYPE \\\"+At.ownerDocument.doctype.name+`>\\n`+Ne),O&&(Ne=gn(Ne,m,\\\" \\\"),Ne=gn(Ne,Q,\\\" \\\"),Ne=gn(Ne,x,\\\" \\\")),V&&Yt?V.createHTML(Ne):Ne},e.setConfig=function(zt){fe(zt),J=!0},e.clearConfig=function(){ie=null,J=!1},e.isValidAttribute=function(zt,Z,At){ie||fe({});var Nt=at(zt),pe=at(Z);return Ye(Nt,pe,At)},e.addHook=function(zt,Z){typeof Z==\\\"function\\\"&&(M[zt]=M[zt]||[],no(M[zt],Z))},e.removeHook=function(zt){if(M[zt])return j2(M[zt])},e.removeHooks=function(zt){M[zt]&&(M[zt]=[])},e.removeAllHooks=function(){M={}},e}var io=Q2();const l8=t=>t?ep(t).replace(/\\\\\\\\n/g,\\\"#br#\\\").split(\\\"#br#\\\"):[\\\"\\\"],J2=t=>io.sanitize(t),tp=(t,e)=>{var r;if(((r=e.flowchart)==null?void 0:r.htmlLabels)!==!1){const n=e.securityLevel;n===\\\"antiscript\\\"||n===\\\"strict\\\"?t=J2(t):n!==\\\"loose\\\"&&(t=ep(t),t=t.replace(/\u003C/g,\\\"<\\\").replace(/>/g,\\\">\\\"),t=t.replace(/=/g,\\\"=\\\"),t=d8(t))}return t},yn=(t,e)=>t&&(e.dompurifyConfig?t=io.sanitize(tp(t,e),e.dompurifyConfig).toString():t=io.sanitize(tp(t,e),{FORBID_TAGS:[\\\"style\\\"]}).toString(),t),c8=(t,e)=>typeof t==\\\"string\\\"?yn(t,e):t.flat().map(r=>yn(r,e)),tc=/\u003Cbr\\\\s*\\\\/?>/gi,u8=t=>tc.test(t),h8=t=>t.split(tc),d8=t=>t.replace(/#br#/g,\\\"\u003Cbr/>\\\"),ep=t=>t.replace(tc,\\\"#br#\\\"),f8=t=>{let e=\\\"\\\";return t&&(e=window.location.protocol+\\\"//\\\"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\\\\(/g,\\\"\\\\\\\\(\\\"),e=e.replaceAll(/\\\\)/g,\\\"\\\\\\\\)\\\")),e},pr=t=>!(t===!1||[\\\"false\\\",\\\"null\\\",\\\"0\\\"].includes(String(t).trim().toLowerCase())),Oi=function(t){let e=t;return t.includes(\\\"~\\\")?(e=e.replace(/~([^~].*)/,\\\"\u003C$1\\\"),e=e.replace(/~([^~]*)$/,\\\">$1\\\"),Oi(e)):e},he={getRows:l8,sanitizeText:yn,sanitizeTextOrArray:c8,hasBreaks:u8,splitBreaks:h8,lineBreakRegex:tc,removeScript:J2,getUrl:f8,evaluate:pr},ec={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t\u003C0?0:t,g:t=>t>=255?255:t\u003C0?0:t,b:t=>t>=255?255:t\u003C0?0:t,h:t=>t%360,s:t=>t>=100?100:t\u003C0?0:t,l:t=>t>=100?100:t\u003C0?0:t,a:t=>t>=1?1:t\u003C0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,r)=>(r\u003C0&&(r+=1),r>1&&(r-=1),r\u003C1/6?t+(e-t)*6*r:r\u003C1/2?e:r\u003C2/3?t+(e-t)*(2/3-r)*6:t),hsl2rgb:({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;const i=r\u003C.5?r*(1+e):r+e-r*e,s=2*r-i;switch(n){case\\\"r\\\":return ec.hue2rgb(s,i,t+1/3)*255;case\\\"g\\\":return ec.hue2rgb(s,i,t)*255;case\\\"b\\\":return ec.hue2rgb(s,i,t-1/3)*255}},rgb2hsl:({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;const i=Math.max(t,e,r),s=Math.min(t,e,r),a=(i+s)/2;if(n===\\\"l\\\")return a*100;if(i===s)return 0;const o=i-s,l=a>.5?o/(2-i-s):o/(i+s);if(n===\\\"s\\\")return l*100;switch(i){case t:return((e-r)/o+(e\u003Cr?6:0))*60;case e:return((r-t)/o+2)*60;case r:return((t-e)/o+4)*60;default:return-1}}},xe={channel:ec,lang:{clamp:(t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),round:t=>Math.round(t*1e10)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}},Ri={};for(let t=0;t\u003C=255;t++)Ri[t]=xe.unit.dec2hex(t);const wr={ALL:0,RGB:1,HSL:2};class p8{constructor(){this.type=wr.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error(\\\"Cannot change both RGB and HSL channels at the same time\\\");this.type=e}reset(){this.type=wr.ALL}is(e){return this.type===e}}const g8=p8;class y8{constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new g8}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=wr.ALL,this}_ensureHSL(){const e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=xe.channel.rgb2hsl(e,\\\"h\\\")),n===void 0&&(e.s=xe.channel.rgb2hsl(e,\\\"s\\\")),i===void 0&&(e.l=xe.channel.rgb2hsl(e,\\\"l\\\"))}_ensureRGB(){const e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=xe.channel.hsl2rgb(e,\\\"r\\\")),n===void 0&&(e.g=xe.channel.hsl2rgb(e,\\\"g\\\")),i===void 0&&(e.b=xe.channel.hsl2rgb(e,\\\"b\\\"))}get r(){const e=this.data,r=e.r;return!this.type.is(wr.HSL)&&r!==void 0?r:(this._ensureHSL(),xe.channel.hsl2rgb(e,\\\"r\\\"))}get g(){const e=this.data,r=e.g;return!this.type.is(wr.HSL)&&r!==void 0?r:(this._ensureHSL(),xe.channel.hsl2rgb(e,\\\"g\\\"))}get b(){const e=this.data,r=e.b;return!this.type.is(wr.HSL)&&r!==void 0?r:(this._ensureHSL(),xe.channel.hsl2rgb(e,\\\"b\\\"))}get h(){const e=this.data,r=e.h;return!this.type.is(wr.RGB)&&r!==void 0?r:(this._ensureRGB(),xe.channel.rgb2hsl(e,\\\"h\\\"))}get s(){const e=this.data,r=e.s;return!this.type.is(wr.RGB)&&r!==void 0?r:(this._ensureRGB(),xe.channel.rgb2hsl(e,\\\"s\\\"))}get l(){const e=this.data,r=e.l;return!this.type.is(wr.RGB)&&r!==void 0?r:(this._ensureRGB(),xe.channel.rgb2hsl(e,\\\"l\\\"))}get a(){return this.data.a}set r(e){this.type.set(wr.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(wr.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(wr.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(wr.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(wr.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(wr.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}}const m8=y8,rc=new m8({r:0,g:0,b:0,a:0},\\\"transparent\\\"),rp={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(t.charCodeAt(0)!==35)return;const e=t.match(rp.re);if(!e)return;const r=e[1],n=parseInt(r,16),i=r.length,s=i%4===0,a=i>4,o=a?1:17,l=a?8:4,u=s?0:-1,d=a?255:15;return rc.set({r:(n>>l*(u+3)&d)*o,g:(n>>l*(u+2)&d)*o,b:(n>>l*(u+1)&d)*o,a:s?(n&d)*o/255:1},t)},stringify:t=>{const{r:e,g:r,b:n,a:i}=t;return i\u003C1?`#${Ri[Math.round(e)]}${Ri[Math.round(r)]}${Ri[Math.round(n)]}${Ri[Math.round(i*255)]}`:`#${Ri[Math.round(e)]}${Ri[Math.round(r)]}${Ri[Math.round(n)]}`}},so=rp,nc={re:/^hsla?\\\\(\\\\s*?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e-?\\\\d+)?(?:deg|grad|rad|turn)?)\\\\s*?(?:,|\\\\s)\\\\s*?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e-?\\\\d+)?%)\\\\s*?(?:,|\\\\s)\\\\s*?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e-?\\\\d+)?%)(?:\\\\s*?(?:,|\\\\/)\\\\s*?\\\\+?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e-?\\\\d+)?(%)?))?\\\\s*?\\\\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(nc.hueRe);if(e){const[,r,n]=e;switch(n){case\\\"grad\\\":return xe.channel.clamp.h(parseFloat(r)*.9);case\\\"rad\\\":return xe.channel.clamp.h(parseFloat(r)*180/Math.PI);case\\\"turn\\\":return xe.channel.clamp.h(parseFloat(r)*360)}}return xe.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(e!==104&&e!==72)return;const r=t.match(nc.re);if(!r)return;const[,n,i,s,a,o]=r;return rc.set({h:nc._hue2deg(n),s:xe.channel.clamp.s(parseFloat(i)),l:xe.channel.clamp.l(parseFloat(s)),a:a?xe.channel.clamp.a(o?parseFloat(a)/100:parseFloat(a)):1},t)},stringify:t=>{const{h:e,s:r,l:n,a:i}=t;return i\u003C1?`hsla(${xe.lang.round(e)}, ${xe.lang.round(r)}%, ${xe.lang.round(n)}%, ${i})`:`hsl(${xe.lang.round(e)}, ${xe.lang.round(r)}%, ${xe.lang.round(n)}%)`}},ic=nc,sc={colors:{aliceblue:\\\"#f0f8ff\\\",antiquewhite:\\\"#faebd7\\\",aqua:\\\"#00ffff\\\",aquamarine:\\\"#7fffd4\\\",azure:\\\"#f0ffff\\\",beige:\\\"#f5f5dc\\\",bisque:\\\"#ffe4c4\\\",black:\\\"#000000\\\",blanchedalmond:\\\"#ffebcd\\\",blue:\\\"#0000ff\\\",blueviolet:\\\"#8a2be2\\\",brown:\\\"#a52a2a\\\",burlywood:\\\"#deb887\\\",cadetblue:\\\"#5f9ea0\\\",chartreuse:\\\"#7fff00\\\",chocolate:\\\"#d2691e\\\",coral:\\\"#ff7f50\\\",cornflowerblue:\\\"#6495ed\\\",cornsilk:\\\"#fff8dc\\\",crimson:\\\"#dc143c\\\",cyanaqua:\\\"#00ffff\\\",darkblue:\\\"#00008b\\\",darkcyan:\\\"#008b8b\\\",darkgoldenrod:\\\"#b8860b\\\",darkgray:\\\"#a9a9a9\\\",darkgreen:\\\"#006400\\\",darkgrey:\\\"#a9a9a9\\\",darkkhaki:\\\"#bdb76b\\\",darkmagenta:\\\"#8b008b\\\",darkolivegreen:\\\"#556b2f\\\",darkorange:\\\"#ff8c00\\\",darkorchid:\\\"#9932cc\\\",darkred:\\\"#8b0000\\\",darksalmon:\\\"#e9967a\\\",darkseagreen:\\\"#8fbc8f\\\",darkslateblue:\\\"#483d8b\\\",darkslategray:\\\"#2f4f4f\\\",darkslategrey:\\\"#2f4f4f\\\",darkturquoise:\\\"#00ced1\\\",darkviolet:\\\"#9400d3\\\",deeppink:\\\"#ff1493\\\",deepskyblue:\\\"#00bfff\\\",dimgray:\\\"#696969\\\",dimgrey:\\\"#696969\\\",dodgerblue:\\\"#1e90ff\\\",firebrick:\\\"#b22222\\\",floralwhite:\\\"#fffaf0\\\",forestgreen:\\\"#228b22\\\",fuchsia:\\\"#ff00ff\\\",gainsboro:\\\"#dcdcdc\\\",ghostwhite:\\\"#f8f8ff\\\",gold:\\\"#ffd700\\\",goldenrod:\\\"#daa520\\\",gray:\\\"#808080\\\",green:\\\"#008000\\\",greenyellow:\\\"#adff2f\\\",grey:\\\"#808080\\\",honeydew:\\\"#f0fff0\\\",hotpink:\\\"#ff69b4\\\",indianred:\\\"#cd5c5c\\\",indigo:\\\"#4b0082\\\",ivory:\\\"#fffff0\\\",khaki:\\\"#f0e68c\\\",lavender:\\\"#e6e6fa\\\",lavenderblush:\\\"#fff0f5\\\",lawngreen:\\\"#7cfc00\\\",lemonchiffon:\\\"#fffacd\\\",lightblue:\\\"#add8e6\\\",lightcoral:\\\"#f08080\\\",lightcyan:\\\"#e0ffff\\\",lightgoldenrodyellow:\\\"#fafad2\\\",lightgray:\\\"#d3d3d3\\\",lightgreen:\\\"#90ee90\\\",lightgrey:\\\"#d3d3d3\\\",lightpink:\\\"#ffb6c1\\\",lightsalmon:\\\"#ffa07a\\\",lightseagreen:\\\"#20b2aa\\\",lightskyblue:\\\"#87cefa\\\",lightslategray:\\\"#778899\\\",lightslategrey:\\\"#778899\\\",lightsteelblue:\\\"#b0c4de\\\",lightyellow:\\\"#ffffe0\\\",lime:\\\"#00ff00\\\",limegreen:\\\"#32cd32\\\",linen:\\\"#faf0e6\\\",magenta:\\\"#ff00ff\\\",maroon:\\\"#800000\\\",mediumaquamarine:\\\"#66cdaa\\\",mediumblue:\\\"#0000cd\\\",mediumorchid:\\\"#ba55d3\\\",mediumpurple:\\\"#9370db\\\",mediumseagreen:\\\"#3cb371\\\",mediumslateblue:\\\"#7b68ee\\\",mediumspringgreen:\\\"#00fa9a\\\",mediumturquoise:\\\"#48d1cc\\\",mediumvioletred:\\\"#c71585\\\",midnightblue:\\\"#191970\\\",mintcream:\\\"#f5fffa\\\",mistyrose:\\\"#ffe4e1\\\",moccasin:\\\"#ffe4b5\\\",navajowhite:\\\"#ffdead\\\",navy:\\\"#000080\\\",oldlace:\\\"#fdf5e6\\\",olive:\\\"#808000\\\",olivedrab:\\\"#6b8e23\\\",orange:\\\"#ffa500\\\",orangered:\\\"#ff4500\\\",orchid:\\\"#da70d6\\\",palegoldenrod:\\\"#eee8aa\\\",palegreen:\\\"#98fb98\\\",paleturquoise:\\\"#afeeee\\\",palevioletred:\\\"#db7093\\\",papayawhip:\\\"#ffefd5\\\",peachpuff:\\\"#ffdab9\\\",peru:\\\"#cd853f\\\",pink:\\\"#ffc0cb\\\",plum:\\\"#dda0dd\\\",powderblue:\\\"#b0e0e6\\\",purple:\\\"#800080\\\",rebeccapurple:\\\"#663399\\\",red:\\\"#ff0000\\\",rosybrown:\\\"#bc8f8f\\\",royalblue:\\\"#4169e1\\\",saddlebrown:\\\"#8b4513\\\",salmon:\\\"#fa8072\\\",sandybrown:\\\"#f4a460\\\",seagreen:\\\"#2e8b57\\\",seashell:\\\"#fff5ee\\\",sienna:\\\"#a0522d\\\",silver:\\\"#c0c0c0\\\",skyblue:\\\"#87ceeb\\\",slateblue:\\\"#6a5acd\\\",slategray:\\\"#708090\\\",slategrey:\\\"#708090\\\",snow:\\\"#fffafa\\\",springgreen:\\\"#00ff7f\\\",tan:\\\"#d2b48c\\\",teal:\\\"#008080\\\",thistle:\\\"#d8bfd8\\\",transparent:\\\"#00000000\\\",turquoise:\\\"#40e0d0\\\",violet:\\\"#ee82ee\\\",wheat:\\\"#f5deb3\\\",white:\\\"#ffffff\\\",whitesmoke:\\\"#f5f5f5\\\",yellow:\\\"#ffff00\\\",yellowgreen:\\\"#9acd32\\\"},parse:t=>{t=t.toLowerCase();const e=sc.colors[t];if(!!e)return so.parse(e)},stringify:t=>{const e=so.stringify(t);for(const r in sc.colors)if(sc.colors[r]===e)return r}},np=sc,ip={re:/^rgba?\\\\(\\\\s*?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e\\\\d+)?(%?))\\\\s*?(?:,|\\\\s)\\\\s*?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e\\\\d+)?(%?))\\\\s*?(?:,|\\\\s)\\\\s*?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e\\\\d+)?(%?))(?:\\\\s*?(?:,|\\\\/)\\\\s*?\\\\+?(-?(?:\\\\d+(?:\\\\.\\\\d+)?|(?:\\\\.\\\\d+))(?:e\\\\d+)?(%?)))?\\\\s*?\\\\)$/i,parse:t=>{const e=t.charCodeAt(0);if(e!==114&&e!==82)return;const r=t.match(ip.re);if(!r)return;const[,n,i,s,a,o,l,u,d]=r;return rc.set({r:xe.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:xe.channel.clamp.g(a?parseFloat(s)*2.55:parseFloat(s)),b:xe.channel.clamp.b(l?parseFloat(o)*2.55:parseFloat(o)),a:u?xe.channel.clamp.a(d?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{r:e,g:r,b:n,a:i}=t;return i\u003C1?`rgba(${xe.lang.round(e)}, ${xe.lang.round(r)}, ${xe.lang.round(n)}, ${xe.lang.round(i)})`:`rgb(${xe.lang.round(e)}, ${xe.lang.round(r)}, ${xe.lang.round(n)})`}},ac=ip,ai={format:{keyword:np,hex:so,rgb:ac,rgba:ac,hsl:ic,hsla:ic},parse:t=>{if(typeof t!=\\\"string\\\")return t;const e=so.parse(t)||ac.parse(t)||ic.parse(t)||np.parse(t);if(e)return e;throw new Error(`Unsupported color format: \\\"${t}\\\"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(wr.HSL)||t.data.r===void 0?ic.stringify(t):t.a\u003C1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?ac.stringify(t):so.stringify(t)},sp=(t,e)=>{const r=ai.parse(t);for(const n in e)r[n]=xe.channel.clamp[n](e[n]);return ai.stringify(r)},ao=(t,e,r=0,n=1)=>{if(typeof t!=\\\"number\\\")return sp(t,{a:e});const i=rc.set({r:xe.channel.clamp.r(t),g:xe.channel.clamp.g(e),b:xe.channel.clamp.b(r),a:xe.channel.clamp.a(n)});return ai.stringify(i)},ap=(t,e,r)=>{const n=ai.parse(t),i=n[e],s=xe.channel.clamp[e](i+r);return i!==s&&(n[e]=s),ai.stringify(n)},ne=(t,e)=>ap(t,\\\"l\\\",e),de=(t,e)=>ap(t,\\\"l\\\",-e),yt=(t,e)=>{const r=ai.parse(t),n={};for(const i in e)!e[i]||(n[i]=r[i]+e[i]);return sp(t,n)},b8=(t,e,r=50)=>{const{r:n,g:i,b:s,a}=ai.parse(t),{r:o,g:l,b:u,a:d}=ai.parse(e),f=r/100,p=f*2-1,g=a-d,k=((p*g===-1?p:(p+g)/(1+p*g))+1)/2,T=1-k,L=n*k+o*T,E=i*k+l*T,I=s*k+u*T,V=a*f+d*(1-f);return ao(L,E,I,V)},Wt=(t,e=100)=>{const r=ai.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,b8(r,t,e)},Mr=(t,e)=>e?yt(t,{s:-40,l:10}):yt(t,{s:-40,l:-10}),oc=\\\"#ffffff\\\",lc=\\\"#f2f2f2\\\";class _8{constructor(){this.background=\\\"#f4f4f4\\\",this.darkMode=!1,this.primaryColor=\\\"#fff4dd\\\",this.noteBkgColor=\\\"#fff5ad\\\",this.noteTextColor=\\\"#333\\\",this.THEME_COLOR_LIMIT=12,this.fontFamily='\\\"trebuchet ms\\\", verdana, arial, sans-serif',this.fontSize=\\\"16px\\\"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?\\\"#eee\\\":\\\"#333\\\"),this.secondaryColor=this.secondaryColor||yt(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||yt(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Mr(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Mr(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Mr(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Mr(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||\\\"#fff5ad\\\",this.noteTextColor=this.noteTextColor||\\\"#333\\\",this.secondaryTextColor=this.secondaryTextColor||Wt(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Wt(this.tertiaryColor),this.lineColor=this.lineColor||Wt(this.background),this.textColor=this.textColor||this.primaryTextColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?de(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||\\\"grey\\\",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||de(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Wt(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||\\\"white\\\",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||\\\"#eeeeee\\\",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||ne(this.primaryColor,23),this.gridColor=this.gridColor||\\\"lightgrey\\\",this.doneTaskBkgColor=this.doneTaskBkgColor||\\\"lightgrey\\\",this.doneTaskBorderColor=this.doneTaskBorderColor||\\\"grey\\\",this.critBorderColor=this.critBorderColor||\\\"#ff8888\\\",this.critBkgColor=this.critBkgColor||\\\"red\\\",this.todayLineColor=this.todayLineColor||\\\"red\\\",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||\\\"#003163\\\",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||yt(this.primaryColor,{h:30}),this.cScale4=this.cScale4||yt(this.primaryColor,{h:60}),this.cScale5=this.cScale5||yt(this.primaryColor,{h:90}),this.cScale6=this.cScale6||yt(this.primaryColor,{h:120}),this.cScale7=this.cScale7||yt(this.primaryColor,{h:150}),this.cScale8=this.cScale8||yt(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||yt(this.primaryColor,{h:270}),this.cScale10=this.cScale10||yt(this.primaryColor,{h:300}),this.cScale11=this.cScale11||yt(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScale\\\"+e]=de(this[\\\"cScale\\\"+e],75);else for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScale\\\"+e]=de(this[\\\"cScale\\\"+e],25);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleInv\\\"+e]=this[\\\"cScaleInv\\\"+e]||Wt(this[\\\"cScale\\\"+e]);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this.darkMode?this[\\\"cScalePeer\\\"+e]=this[\\\"cScalePeer\\\"+e]||ne(this[\\\"cScale\\\"+e],10):this[\\\"cScalePeer\\\"+e]=this[\\\"cScalePeer\\\"+e]||de(this[\\\"cScale\\\"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleLabel\\\"+e]=this[\\\"cScaleLabel\\\"+e]||this.scaleLabelColor;this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||yt(this.primaryColor,{h:64}),this.fillType3=this.fillType3||yt(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||yt(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||yt(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||yt(this.primaryColor,{h:128}),this.fillType7=this.fillType7||yt(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||yt(this.primaryColor,{l:-10}),this.pie5=this.pie5||yt(this.secondaryColor,{l:-10}),this.pie6=this.pie6||yt(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||yt(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||yt(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||yt(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||yt(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||yt(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||yt(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||\\\"25px\\\",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||\\\"17px\\\",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||\\\"17px\\\",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||\\\"black\\\",this.pieStrokeWidth=this.pieStrokeWidth||\\\"2px\\\",this.pieOpacity=this.pieOpacity||\\\"0.7\\\",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?de(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||yt(this.primaryColor,{h:-30}),this.git4=this.git4||yt(this.primaryColor,{h:-60}),this.git5=this.git5||yt(this.primaryColor,{h:-90}),this.git6=this.git6||yt(this.primaryColor,{h:60}),this.git7=this.git7||yt(this.primaryColor,{h:120}),this.darkMode?(this.git0=ne(this.git0,25),this.git1=ne(this.git1,25),this.git2=ne(this.git2,25),this.git3=ne(this.git3,25),this.git4=ne(this.git4,25),this.git5=ne(this.git5,25),this.git6=ne(this.git6,25),this.git7=ne(this.git7,25)):(this.git0=de(this.git0,25),this.git1=de(this.git1,25),this.git2=de(this.git2,25),this.git3=de(this.git3,25),this.git4=de(this.git4,25),this.git5=de(this.git5,25),this.git6=de(this.git6,25),this.git7=de(this.git7,25)),this.gitInv0=this.gitInv0||Wt(this.git0),this.gitInv1=this.gitInv1||Wt(this.git1),this.gitInv2=this.gitInv2||Wt(this.git2),this.gitInv3=this.gitInv3||Wt(this.git3),this.gitInv4=this.gitInv4||Wt(this.git4),this.gitInv5=this.gitInv5||Wt(this.git5),this.gitInv6=this.gitInv6||Wt(this.git6),this.gitInv7=this.gitInv7||Wt(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?\\\"black\\\":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||\\\"10px\\\",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||\\\"10px\\\",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||oc,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||lc}calculate(e){if(typeof e!=\\\"object\\\"){this.updateColors();return}const r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}}const x8=t=>{const e=new _8;return e.calculate(t),e};class v8{constructor(){this.background=\\\"#333\\\",this.primaryColor=\\\"#1f2020\\\",this.secondaryColor=ne(this.primaryColor,16),this.tertiaryColor=yt(this.primaryColor,{h:-160}),this.primaryBorderColor=Wt(this.background),this.secondaryBorderColor=Mr(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Mr(this.tertiaryColor,this.darkMode),this.primaryTextColor=Wt(this.primaryColor),this.secondaryTextColor=Wt(this.secondaryColor),this.tertiaryTextColor=Wt(this.tertiaryColor),this.lineColor=Wt(this.background),this.textColor=Wt(this.background),this.mainBkg=\\\"#1f2020\\\",this.secondBkg=\\\"calculated\\\",this.mainContrastColor=\\\"lightgrey\\\",this.darkTextColor=ne(Wt(\\\"#323D47\\\"),10),this.lineColor=\\\"calculated\\\",this.border1=\\\"#81B1DB\\\",this.border2=ao(255,255,255,.25),this.arrowheadColor=\\\"calculated\\\",this.fontFamily='\\\"trebuchet ms\\\", verdana, arial, sans-serif',this.fontSize=\\\"16px\\\",this.labelBackground=\\\"#181818\\\",this.textColor=\\\"#ccc\\\",this.THEME_COLOR_LIMIT=12,this.nodeBkg=\\\"calculated\\\",this.nodeBorder=\\\"calculated\\\",this.clusterBkg=\\\"calculated\\\",this.clusterBorder=\\\"calculated\\\",this.defaultLinkColor=\\\"calculated\\\",this.titleColor=\\\"#F9FFFE\\\",this.edgeLabelBackground=\\\"calculated\\\",this.actorBorder=\\\"calculated\\\",this.actorBkg=\\\"calculated\\\",this.actorTextColor=\\\"calculated\\\",this.actorLineColor=\\\"calculated\\\",this.signalColor=\\\"calculated\\\",this.signalTextColor=\\\"calculated\\\",this.labelBoxBkgColor=\\\"calculated\\\",this.labelBoxBorderColor=\\\"calculated\\\",this.labelTextColor=\\\"calculated\\\",this.loopTextColor=\\\"calculated\\\",this.noteBorderColor=\\\"calculated\\\",this.noteBkgColor=\\\"#fff5ad\\\",this.noteTextColor=\\\"calculated\\\",this.activationBorderColor=\\\"calculated\\\",this.activationBkgColor=\\\"calculated\\\",this.sequenceNumberColor=\\\"black\\\",this.sectionBkgColor=de(\\\"#EAE8D9\\\",30),this.altSectionBkgColor=\\\"calculated\\\",this.sectionBkgColor2=\\\"#EAE8D9\\\",this.taskBorderColor=ao(255,255,255,70),this.taskBkgColor=\\\"calculated\\\",this.taskTextColor=\\\"calculated\\\",this.taskTextLightColor=\\\"calculated\\\",this.taskTextOutsideColor=\\\"calculated\\\",this.taskTextClickableColor=\\\"#003163\\\",this.activeTaskBorderColor=ao(255,255,255,50),this.activeTaskBkgColor=\\\"#81B1DB\\\",this.gridColor=\\\"calculated\\\",this.doneTaskBkgColor=\\\"calculated\\\",this.doneTaskBorderColor=\\\"grey\\\",this.critBorderColor=\\\"#E83737\\\",this.critBkgColor=\\\"#E83737\\\",this.taskTextDarkColor=\\\"calculated\\\",this.todayLineColor=\\\"#DB5757\\\",this.personBorder=\\\"calculated\\\",this.personBkg=\\\"calculated\\\",this.labelColor=\\\"calculated\\\",this.errorBkgColor=\\\"#a44141\\\",this.errorTextColor=\\\"#ddd\\\"}updateColors(){this.secondBkg=ne(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=ne(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=ne(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||\\\"#555\\\",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=\\\"#f4f4f4\\\",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=yt(this.primaryColor,{h:64}),this.fillType3=yt(this.secondaryColor,{h:64}),this.fillType4=yt(this.primaryColor,{h:-64}),this.fillType5=yt(this.secondaryColor,{h:-64}),this.fillType6=yt(this.primaryColor,{h:128}),this.fillType7=yt(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||\\\"#0b0000\\\",this.cScale2=this.cScale2||\\\"#4d1037\\\",this.cScale3=this.cScale3||\\\"#3f5258\\\",this.cScale4=this.cScale4||\\\"#4f2f1b\\\",this.cScale5=this.cScale5||\\\"#6e0a0a\\\",this.cScale6=this.cScale6||\\\"#3b0048\\\",this.cScale7=this.cScale7||\\\"#995a01\\\",this.cScale8=this.cScale8||\\\"#154706\\\",this.cScale9=this.cScale9||\\\"#161722\\\",this.cScale10=this.cScale10||\\\"#00296f\\\",this.cScale11=this.cScale11||\\\"#01629c\\\",this.cScale12=this.cScale12||\\\"#010029\\\",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||yt(this.primaryColor,{h:30}),this.cScale4=this.cScale4||yt(this.primaryColor,{h:60}),this.cScale5=this.cScale5||yt(this.primaryColor,{h:90}),this.cScale6=this.cScale6||yt(this.primaryColor,{h:120}),this.cScale7=this.cScale7||yt(this.primaryColor,{h:150}),this.cScale8=this.cScale8||yt(this.primaryColor,{h:210}),this.cScale9=this.cScale9||yt(this.primaryColor,{h:270}),this.cScale10=this.cScale10||yt(this.primaryColor,{h:300}),this.cScale11=this.cScale11||yt(this.primaryColor,{h:330});for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleInv\\\"+e]=this[\\\"cScaleInv\\\"+e]||Wt(this[\\\"cScale\\\"+e]);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScalePeer\\\"+e]=this[\\\"cScalePeer\\\"+e]||ne(this[\\\"cScale\\\"+e],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?\\\"black\\\":this.labelTextColor);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleLabel\\\"+e]=this[\\\"cScaleLabel\\\"+e]||this.scaleLabelColor;for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"pie\\\"+e]=this[\\\"cScale\\\"+e];this.pieTitleTextSize=this.pieTitleTextSize||\\\"25px\\\",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||\\\"17px\\\",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||\\\"17px\\\",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||\\\"black\\\",this.pieStrokeWidth=this.pieStrokeWidth||\\\"2px\\\",this.pieOpacity=this.pieOpacity||\\\"0.7\\\",this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?de(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=ne(this.secondaryColor,20),this.git1=ne(this.pie2||this.secondaryColor,20),this.git2=ne(this.pie3||this.tertiaryColor,20),this.git3=ne(this.pie4||yt(this.primaryColor,{h:-30}),20),this.git4=ne(this.pie5||yt(this.primaryColor,{h:-60}),20),this.git5=ne(this.pie6||yt(this.primaryColor,{h:-90}),10),this.git6=ne(this.pie7||yt(this.primaryColor,{h:60}),10),this.git7=ne(this.pie8||yt(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||Wt(this.git0),this.gitInv1=this.gitInv1||Wt(this.git1),this.gitInv2=this.gitInv2||Wt(this.git2),this.gitInv3=this.gitInv3||Wt(this.git3),this.gitInv4=this.gitInv4||Wt(this.git4),this.gitInv5=this.gitInv5||Wt(this.git5),this.gitInv6=this.gitInv6||Wt(this.git6),this.gitInv7=this.gitInv7||Wt(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||\\\"10px\\\",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||\\\"10px\\\",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||ne(this.background,12),this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||ne(this.background,2)}calculate(e){if(typeof e!=\\\"object\\\"){this.updateColors();return}const r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}}const k8=t=>{const e=new v8;return e.calculate(t),e};class w8{constructor(){this.background=\\\"#f4f4f4\\\",this.primaryColor=\\\"#ECECFF\\\",this.secondaryColor=yt(this.primaryColor,{h:120}),this.secondaryColor=\\\"#ffffde\\\",this.tertiaryColor=yt(this.primaryColor,{h:-160}),this.primaryBorderColor=Mr(this.primaryColor,this.darkMode),this.secondaryBorderColor=Mr(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Mr(this.tertiaryColor,this.darkMode),this.primaryTextColor=Wt(this.primaryColor),this.secondaryTextColor=Wt(this.secondaryColor),this.tertiaryTextColor=Wt(this.tertiaryColor),this.lineColor=Wt(this.background),this.textColor=Wt(this.background),this.background=\\\"white\\\",this.mainBkg=\\\"#ECECFF\\\",this.secondBkg=\\\"#ffffde\\\",this.lineColor=\\\"#333333\\\",this.border1=\\\"#9370DB\\\",this.border2=\\\"#aaaa33\\\",this.arrowheadColor=\\\"#333333\\\",this.fontFamily='\\\"trebuchet ms\\\", verdana, arial, sans-serif',this.fontSize=\\\"16px\\\",this.labelBackground=\\\"#e8e8e8\\\",this.textColor=\\\"#333\\\",this.THEME_COLOR_LIMIT=12,this.nodeBkg=\\\"calculated\\\",this.nodeBorder=\\\"calculated\\\",this.clusterBkg=\\\"calculated\\\",this.clusterBorder=\\\"calculated\\\",this.defaultLinkColor=\\\"calculated\\\",this.titleColor=\\\"calculated\\\",this.edgeLabelBackground=\\\"calculated\\\",this.actorBorder=\\\"calculated\\\",this.actorBkg=\\\"calculated\\\",this.actorTextColor=\\\"black\\\",this.actorLineColor=\\\"grey\\\",this.signalColor=\\\"calculated\\\",this.signalTextColor=\\\"calculated\\\",this.labelBoxBkgColor=\\\"calculated\\\",this.labelBoxBorderColor=\\\"calculated\\\",this.labelTextColor=\\\"calculated\\\",this.loopTextColor=\\\"calculated\\\",this.noteBorderColor=\\\"calculated\\\",this.noteBkgColor=\\\"#fff5ad\\\",this.noteTextColor=\\\"calculated\\\",this.activationBorderColor=\\\"#666\\\",this.activationBkgColor=\\\"#f4f4f4\\\",this.sequenceNumberColor=\\\"white\\\",this.sectionBkgColor=\\\"calculated\\\",this.altSectionBkgColor=\\\"calculated\\\",this.sectionBkgColor2=\\\"calculated\\\",this.excludeBkgColor=\\\"#eeeeee\\\",this.taskBorderColor=\\\"calculated\\\",this.taskBkgColor=\\\"calculated\\\",this.taskTextLightColor=\\\"calculated\\\",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=\\\"calculated\\\",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor=\\\"calculated\\\",this.activeTaskBorderColor=\\\"calculated\\\",this.activeTaskBkgColor=\\\"calculated\\\",this.gridColor=\\\"calculated\\\",this.doneTaskBkgColor=\\\"calculated\\\",this.doneTaskBorderColor=\\\"calculated\\\",this.critBorderColor=\\\"calculated\\\",this.critBkgColor=\\\"calculated\\\",this.todayLineColor=\\\"calculated\\\",this.sectionBkgColor=ao(102,102,255,.49),this.altSectionBkgColor=\\\"white\\\",this.sectionBkgColor2=\\\"#fff400\\\",this.taskBorderColor=\\\"#534fbc\\\",this.taskBkgColor=\\\"#8a90dd\\\",this.taskTextLightColor=\\\"white\\\",this.taskTextColor=\\\"calculated\\\",this.taskTextDarkColor=\\\"black\\\",this.taskTextOutsideColor=\\\"calculated\\\",this.taskTextClickableColor=\\\"#003163\\\",this.activeTaskBorderColor=\\\"#534fbc\\\",this.activeTaskBkgColor=\\\"#bfc7ff\\\",this.gridColor=\\\"lightgrey\\\",this.doneTaskBkgColor=\\\"lightgrey\\\",this.doneTaskBorderColor=\\\"grey\\\",this.critBorderColor=\\\"#ff8888\\\",this.critBkgColor=\\\"red\\\",this.todayLineColor=\\\"red\\\",this.personBorder=\\\"calculated\\\",this.personBkg=\\\"calculated\\\",this.labelColor=\\\"black\\\",this.errorBkgColor=\\\"#552222\\\",this.errorTextColor=\\\"#552222\\\",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||yt(this.primaryColor,{h:30}),this.cScale4=this.cScale4||yt(this.primaryColor,{h:60}),this.cScale5=this.cScale5||yt(this.primaryColor,{h:90}),this.cScale6=this.cScale6||yt(this.primaryColor,{h:120}),this.cScale7=this.cScale7||yt(this.primaryColor,{h:150}),this.cScale8=this.cScale8||yt(this.primaryColor,{h:210}),this.cScale9=this.cScale9||yt(this.primaryColor,{h:270}),this.cScale10=this.cScale10||yt(this.primaryColor,{h:300}),this.cScale11=this.cScale11||yt(this.primaryColor,{h:330}),this[\\\"cScalePeer\\\"+1]=this[\\\"cScalePeer\\\"+1]||de(this.secondaryColor,45),this[\\\"cScalePeer\\\"+2]=this[\\\"cScalePeer\\\"+2]||de(this.tertiaryColor,40);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScale\\\"+e]=de(this[\\\"cScale\\\"+e],10),this[\\\"cScalePeer\\\"+e]=this[\\\"cScalePeer\\\"+e]||de(this[\\\"cScale\\\"+e],25);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleInv\\\"+e]=this[\\\"cScaleInv\\\"+e]||yt(this[\\\"cScale\\\"+e],{h:180});if(this.scaleLabelColor=this.scaleLabelColor!==\\\"calculated\\\"&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor,this.labelTextColor!==\\\"calculated\\\"){this.cScaleLabel0=this.cScaleLabel0||Wt(this.labelTextColor),this.cScaleLabel3=this.cScaleLabel3||Wt(this.labelTextColor);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleLabel\\\"+e]=this[\\\"cScaleLabel\\\"+e]||this.labelTextColor}this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=ne(this.border1,23),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||\\\"#f0f0f0\\\",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=yt(this.primaryColor,{h:64}),this.fillType3=yt(this.secondaryColor,{h:64}),this.fillType4=yt(this.primaryColor,{h:-64}),this.fillType5=yt(this.secondaryColor,{h:-64}),this.fillType6=yt(this.primaryColor,{h:128}),this.fillType7=yt(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||yt(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||yt(this.primaryColor,{l:-10}),this.pie5=this.pie5||yt(this.secondaryColor,{l:-30}),this.pie6=this.pie6||yt(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||yt(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||yt(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||yt(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||yt(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||yt(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||yt(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||\\\"25px\\\",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||\\\"17px\\\",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||\\\"17px\\\",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||\\\"black\\\",this.pieStrokeWidth=this.pieStrokeWidth||\\\"2px\\\",this.pieOpacity=this.pieOpacity||\\\"0.7\\\",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||yt(this.primaryColor,{h:-30}),this.git4=this.git4||yt(this.primaryColor,{h:-60}),this.git5=this.git5||yt(this.primaryColor,{h:-90}),this.git6=this.git6||yt(this.primaryColor,{h:60}),this.git7=this.git7||yt(this.primaryColor,{h:120}),this.darkMode?(this.git0=ne(this.git0,25),this.git1=ne(this.git1,25),this.git2=ne(this.git2,25),this.git3=ne(this.git3,25),this.git4=ne(this.git4,25),this.git5=ne(this.git5,25),this.git6=ne(this.git6,25),this.git7=ne(this.git7,25)):(this.git0=de(this.git0,25),this.git1=de(this.git1,25),this.git2=de(this.git2,25),this.git3=de(this.git3,25),this.git4=de(this.git4,25),this.git5=de(this.git5,25),this.git6=de(this.git6,25),this.git7=de(this.git7,25)),this.gitInv0=this.gitInv0||de(Wt(this.git0),25),this.gitInv1=this.gitInv1||Wt(this.git1),this.gitInv2=this.gitInv2||Wt(this.git2),this.gitInv3=this.gitInv3||Wt(this.git3),this.gitInv4=this.gitInv4||Wt(this.git4),this.gitInv5=this.gitInv5||Wt(this.git5),this.gitInv6=this.gitInv6||Wt(this.git6),this.gitInv7=this.gitInv7||Wt(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||Wt(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||Wt(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||\\\"10px\\\",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||\\\"10px\\\",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||oc,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||lc}calculate(e){if(typeof e!=\\\"object\\\"){this.updateColors();return}const r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}}const T8=t=>{const e=new w8;return e.calculate(t),e};class E8{constructor(){this.background=\\\"#f4f4f4\\\",this.primaryColor=\\\"#cde498\\\",this.secondaryColor=\\\"#cdffb2\\\",this.background=\\\"white\\\",this.mainBkg=\\\"#cde498\\\",this.secondBkg=\\\"#cdffb2\\\",this.lineColor=\\\"green\\\",this.border1=\\\"#13540c\\\",this.border2=\\\"#6eaa49\\\",this.arrowheadColor=\\\"green\\\",this.fontFamily='\\\"trebuchet ms\\\", verdana, arial, sans-serif',this.fontSize=\\\"16px\\\",this.tertiaryColor=ne(\\\"#cde498\\\",10),this.primaryBorderColor=Mr(this.primaryColor,this.darkMode),this.secondaryBorderColor=Mr(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Mr(this.tertiaryColor,this.darkMode),this.primaryTextColor=Wt(this.primaryColor),this.secondaryTextColor=Wt(this.secondaryColor),this.tertiaryTextColor=Wt(this.primaryColor),this.lineColor=Wt(this.background),this.textColor=Wt(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg=\\\"calculated\\\",this.nodeBorder=\\\"calculated\\\",this.clusterBkg=\\\"calculated\\\",this.clusterBorder=\\\"calculated\\\",this.defaultLinkColor=\\\"calculated\\\",this.titleColor=\\\"#333\\\",this.edgeLabelBackground=\\\"#e8e8e8\\\",this.actorBorder=\\\"calculated\\\",this.actorBkg=\\\"calculated\\\",this.actorTextColor=\\\"black\\\",this.actorLineColor=\\\"grey\\\",this.signalColor=\\\"#333\\\",this.signalTextColor=\\\"#333\\\",this.labelBoxBkgColor=\\\"calculated\\\",this.labelBoxBorderColor=\\\"#326932\\\",this.labelTextColor=\\\"calculated\\\",this.loopTextColor=\\\"calculated\\\",this.noteBorderColor=\\\"calculated\\\",this.noteBkgColor=\\\"#fff5ad\\\",this.noteTextColor=\\\"calculated\\\",this.activationBorderColor=\\\"#666\\\",this.activationBkgColor=\\\"#f4f4f4\\\",this.sequenceNumberColor=\\\"white\\\",this.sectionBkgColor=\\\"#6eaa49\\\",this.altSectionBkgColor=\\\"white\\\",this.sectionBkgColor2=\\\"#6eaa49\\\",this.excludeBkgColor=\\\"#eeeeee\\\",this.taskBorderColor=\\\"calculated\\\",this.taskBkgColor=\\\"#487e3a\\\",this.taskTextLightColor=\\\"white\\\",this.taskTextColor=\\\"calculated\\\",this.taskTextDarkColor=\\\"black\\\",this.taskTextOutsideColor=\\\"calculated\\\",this.taskTextClickableColor=\\\"#003163\\\",this.activeTaskBorderColor=\\\"calculated\\\",this.activeTaskBkgColor=\\\"calculated\\\",this.gridColor=\\\"lightgrey\\\",this.doneTaskBkgColor=\\\"lightgrey\\\",this.doneTaskBorderColor=\\\"grey\\\",this.critBorderColor=\\\"#ff8888\\\",this.critBkgColor=\\\"red\\\",this.todayLineColor=\\\"red\\\",this.personBorder=\\\"calculated\\\",this.personBkg=\\\"calculated\\\",this.labelColor=\\\"black\\\",this.errorBkgColor=\\\"#552222\\\",this.errorTextColor=\\\"#552222\\\"}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||yt(this.primaryColor,{h:30}),this.cScale4=this.cScale4||yt(this.primaryColor,{h:60}),this.cScale5=this.cScale5||yt(this.primaryColor,{h:90}),this.cScale6=this.cScale6||yt(this.primaryColor,{h:120}),this.cScale7=this.cScale7||yt(this.primaryColor,{h:150}),this.cScale8=this.cScale8||yt(this.primaryColor,{h:210}),this.cScale9=this.cScale9||yt(this.primaryColor,{h:270}),this.cScale10=this.cScale10||yt(this.primaryColor,{h:300}),this.cScale11=this.cScale11||yt(this.primaryColor,{h:330}),this[\\\"cScalePeer\\\"+1]=this[\\\"cScalePeer\\\"+1]||de(this.secondaryColor,45),this[\\\"cScalePeer\\\"+2]=this[\\\"cScalePeer\\\"+2]||de(this.tertiaryColor,40);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScale\\\"+e]=de(this[\\\"cScale\\\"+e],10),this[\\\"cScalePeer\\\"+e]=this[\\\"cScalePeer\\\"+e]||de(this[\\\"cScale\\\"+e],25);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleInv\\\"+e]=this[\\\"cScaleInv\\\"+e]||yt(this[\\\"cScale\\\"+e],{h:180});this.scaleLabelColor=this.scaleLabelColor!==\\\"calculated\\\"&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor;for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleLabel\\\"+e]=this[\\\"cScaleLabel\\\"+e]||this.scaleLabelColor;this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.actorBorder=de(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||\\\"#f0f0f0\\\",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=yt(this.primaryColor,{h:64}),this.fillType3=yt(this.secondaryColor,{h:64}),this.fillType4=yt(this.primaryColor,{h:-64}),this.fillType5=yt(this.secondaryColor,{h:-64}),this.fillType6=yt(this.primaryColor,{h:128}),this.fillType7=yt(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||yt(this.primaryColor,{l:-30}),this.pie5=this.pie5||yt(this.secondaryColor,{l:-30}),this.pie6=this.pie6||yt(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||yt(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||yt(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||yt(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||yt(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||yt(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||yt(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||\\\"25px\\\",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||\\\"17px\\\",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||\\\"17px\\\",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||\\\"black\\\",this.pieStrokeWidth=this.pieStrokeWidth||\\\"2px\\\",this.pieOpacity=this.pieOpacity||\\\"0.7\\\",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||yt(this.primaryColor,{h:-30}),this.git4=this.git4||yt(this.primaryColor,{h:-60}),this.git5=this.git5||yt(this.primaryColor,{h:-90}),this.git6=this.git6||yt(this.primaryColor,{h:60}),this.git7=this.git7||yt(this.primaryColor,{h:120}),this.darkMode?(this.git0=ne(this.git0,25),this.git1=ne(this.git1,25),this.git2=ne(this.git2,25),this.git3=ne(this.git3,25),this.git4=ne(this.git4,25),this.git5=ne(this.git5,25),this.git6=ne(this.git6,25),this.git7=ne(this.git7,25)):(this.git0=de(this.git0,25),this.git1=de(this.git1,25),this.git2=de(this.git2,25),this.git3=de(this.git3,25),this.git4=de(this.git4,25),this.git5=de(this.git5,25),this.git6=de(this.git6,25),this.git7=de(this.git7,25)),this.gitInv0=this.gitInv0||Wt(this.git0),this.gitInv1=this.gitInv1||Wt(this.git1),this.gitInv2=this.gitInv2||Wt(this.git2),this.gitInv3=this.gitInv3||Wt(this.git3),this.gitInv4=this.gitInv4||Wt(this.git4),this.gitInv5=this.gitInv5||Wt(this.git5),this.gitInv6=this.gitInv6||Wt(this.git6),this.gitInv7=this.gitInv7||Wt(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||\\\"10px\\\",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||\\\"10px\\\",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||oc,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||lc}calculate(e){if(typeof e!=\\\"object\\\"){this.updateColors();return}const r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}}const C8=t=>{const e=new E8;return e.calculate(t),e};class S8{constructor(){this.primaryColor=\\\"#eee\\\",this.contrast=\\\"#707070\\\",this.secondaryColor=ne(this.contrast,55),this.background=\\\"#ffffff\\\",this.tertiaryColor=yt(this.primaryColor,{h:-160}),this.primaryBorderColor=Mr(this.primaryColor,this.darkMode),this.secondaryBorderColor=Mr(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Mr(this.tertiaryColor,this.darkMode),this.primaryTextColor=Wt(this.primaryColor),this.secondaryTextColor=Wt(this.secondaryColor),this.tertiaryTextColor=Wt(this.tertiaryColor),this.lineColor=Wt(this.background),this.textColor=Wt(this.background),this.mainBkg=\\\"#eee\\\",this.secondBkg=\\\"calculated\\\",this.lineColor=\\\"#666\\\",this.border1=\\\"#999\\\",this.border2=\\\"calculated\\\",this.note=\\\"#ffa\\\",this.text=\\\"#333\\\",this.critical=\\\"#d42\\\",this.done=\\\"#bbb\\\",this.arrowheadColor=\\\"#333333\\\",this.fontFamily='\\\"trebuchet ms\\\", verdana, arial, sans-serif',this.fontSize=\\\"16px\\\",this.THEME_COLOR_LIMIT=12,this.nodeBkg=\\\"calculated\\\",this.nodeBorder=\\\"calculated\\\",this.clusterBkg=\\\"calculated\\\",this.clusterBorder=\\\"calculated\\\",this.defaultLinkColor=\\\"calculated\\\",this.titleColor=\\\"calculated\\\",this.edgeLabelBackground=\\\"white\\\",this.actorBorder=\\\"calculated\\\",this.actorBkg=\\\"calculated\\\",this.actorTextColor=\\\"calculated\\\",this.actorLineColor=\\\"calculated\\\",this.signalColor=\\\"calculated\\\",this.signalTextColor=\\\"calculated\\\",this.labelBoxBkgColor=\\\"calculated\\\",this.labelBoxBorderColor=\\\"calculated\\\",this.labelTextColor=\\\"calculated\\\",this.loopTextColor=\\\"calculated\\\",this.noteBorderColor=\\\"calculated\\\",this.noteBkgColor=\\\"calculated\\\",this.noteTextColor=\\\"calculated\\\",this.activationBorderColor=\\\"#666\\\",this.activationBkgColor=\\\"#f4f4f4\\\",this.sequenceNumberColor=\\\"white\\\",this.sectionBkgColor=\\\"calculated\\\",this.altSectionBkgColor=\\\"white\\\",this.sectionBkgColor2=\\\"calculated\\\",this.excludeBkgColor=\\\"#eeeeee\\\",this.taskBorderColor=\\\"calculated\\\",this.taskBkgColor=\\\"calculated\\\",this.taskTextLightColor=\\\"white\\\",this.taskTextColor=\\\"calculated\\\",this.taskTextDarkColor=\\\"calculated\\\",this.taskTextOutsideColor=\\\"calculated\\\",this.taskTextClickableColor=\\\"#003163\\\",this.activeTaskBorderColor=\\\"calculated\\\",this.activeTaskBkgColor=\\\"calculated\\\",this.gridColor=\\\"calculated\\\",this.doneTaskBkgColor=\\\"calculated\\\",this.doneTaskBorderColor=\\\"calculated\\\",this.critBkgColor=\\\"calculated\\\",this.critBorderColor=\\\"calculated\\\",this.todayLineColor=\\\"calculated\\\",this.personBorder=\\\"calculated\\\",this.personBkg=\\\"calculated\\\",this.labelColor=\\\"black\\\",this.errorBkgColor=\\\"#552222\\\",this.errorTextColor=\\\"#552222\\\"}updateColors(){this.secondBkg=ne(this.contrast,55),this.border2=this.contrast,this.cScale0=this.cScale0||\\\"#555\\\",this.cScale1=this.cScale1||\\\"#F4F4F4\\\",this.cScale2=this.cScale2||\\\"#555\\\",this.cScale3=this.cScale3||\\\"#BBB\\\",this.cScale4=this.cScale4||\\\"#777\\\",this.cScale5=this.cScale5||\\\"#999\\\",this.cScale6=this.cScale6||\\\"#DDD\\\",this.cScale7=this.cScale7||\\\"#FFF\\\",this.cScale8=this.cScale8||\\\"#DDD\\\",this.cScale9=this.cScale9||\\\"#BBB\\\",this.cScale10=this.cScale10||\\\"#999\\\",this.cScale11=this.cScale11||\\\"#777\\\";for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleInv\\\"+e]=this[\\\"cScaleInv\\\"+e]||Wt(this[\\\"cScale\\\"+e]);for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this.darkMode?this[\\\"cScalePeer\\\"+e]=this[\\\"cScalePeer\\\"+e]||ne(this[\\\"cScale\\\"+e],10):this[\\\"cScalePeer\\\"+e]=this[\\\"cScalePeer\\\"+e]||de(this[\\\"cScale\\\"+e],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?\\\"black\\\":this.labelTextColor),this.cScaleLabel0=this.cScaleLabel0||this.cScale1,this.cScaleLabel2=this.cScaleLabel2||this.cScale1;for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"cScaleLabel\\\"+e]=this[\\\"cScaleLabel\\\"+e]||this.scaleLabelColor;this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.actorBorder=ne(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor=\\\"#999\\\",this.noteBkgColor=\\\"#666\\\",this.noteTextColor=\\\"#fff\\\",this.sectionBkgColor=ne(this.contrast,30),this.sectionBkgColor2=ne(this.contrast,30),this.taskBorderColor=de(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=ne(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=de(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.transitionColor=this.transitionColor||\\\"#000\\\",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||\\\"#f4f4f4\\\",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||\\\"#000\\\",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=\\\"#222\\\",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=yt(this.primaryColor,{h:64}),this.fillType3=yt(this.secondaryColor,{h:64}),this.fillType4=yt(this.primaryColor,{h:-64}),this.fillType5=yt(this.secondaryColor,{h:-64}),this.fillType6=yt(this.primaryColor,{h:128}),this.fillType7=yt(this.secondaryColor,{h:128});for(let e=0;e\u003Cthis.THEME_COLOR_LIMIT;e++)this[\\\"pie\\\"+e]=this[\\\"cScale\\\"+e];this.pie12=this.pie0,this.pieTitleTextSize=this.pieTitleTextSize||\\\"25px\\\",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||\\\"17px\\\",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||\\\"17px\\\",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||\\\"black\\\",this.pieStrokeWidth=this.pieStrokeWidth||\\\"2px\\\",this.pieOpacity=this.pieOpacity||\\\"0.7\\\",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=de(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||yt(this.primaryColor,{h:-30}),this.git4=this.pie5||yt(this.primaryColor,{h:-60}),this.git5=this.pie6||yt(this.primaryColor,{h:-90}),this.git6=this.pie7||yt(this.primaryColor,{h:60}),this.git7=this.pie8||yt(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||Wt(this.git0),this.gitInv1=this.gitInv1||Wt(this.git1),this.gitInv2=this.gitInv2||Wt(this.git2),this.gitInv3=this.gitInv3||Wt(this.git3),this.gitInv4=this.gitInv4||Wt(this.git4),this.gitInv5=this.gitInv5||Wt(this.git5),this.gitInv6=this.gitInv6||Wt(this.git6),this.gitInv7=this.gitInv7||Wt(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1=\\\"white\\\",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3=\\\"white\\\",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||\\\"10px\\\",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||\\\"10px\\\",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||oc,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||lc}calculate(e){if(typeof e!=\\\"object\\\"){this.updateColors();return}const r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}}const oi={base:{getThemeVariables:x8},dark:{getThemeVariables:k8},default:{getThemeVariables:T8},forest:{getThemeVariables:C8},neutral:{getThemeVariables:t=>{const e=new S8;return e.calculate(t),e}}},Fi={theme:\\\"default\\\",themeVariables:oi.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'\\\"trebuchet ms\\\", verdana, arial, sans-serif;',logLevel:5,securityLevel:\\\"strict\\\",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:[\\\"secure\\\",\\\"securityLevel\\\",\\\"startOnLoad\\\",\\\"maxTextSize\\\"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:\\\"basis\\\",padding:15,useMaxWidth:!0,defaultRenderer:\\\"dagre-wrapper\\\"},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:\\\"center\\\",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'\\\"Open Sans\\\", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'\\\"trebuchet ms\\\", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:\\\"center\\\",messageFontSize:16,messageFontFamily:'\\\"trebuchet ms\\\", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:\\\"%Y-%m-%d\\\",tickInterval:void 0,useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:\\\"center\\\",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'\\\"Open Sans\\\", sans-serif',taskMargin:50,activationWidth:10,textPlacement:\\\"fo\\\",actorColours:[\\\"#8FBC8F\\\",\\\"#7CFC00\\\",\\\"#00FFFF\\\",\\\"#20B2AA\\\",\\\"#B0E0E6\\\",\\\"#FFFFE0\\\"],sectionFills:[\\\"#191970\\\",\\\"#8B008B\\\",\\\"#4B0082\\\",\\\"#2F4F4F\\\",\\\"#800000\\\",\\\"#8B4513\\\",\\\"#00008B\\\"],sectionColours:[\\\"#fff\\\"]},class:{titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,useMaxWidth:!0,defaultRenderer:\\\"dagre-wrapper\\\"},state:{titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:\\\"20\\\",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:\\\"dagre-wrapper\\\"},er:{titleTopMargin:25,diagramPadding:20,layoutDirection:\\\"TB\\\",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:\\\"gray\\\",fill:\\\"honeydew\\\",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:\\\"#f9f9f9\\\",text_color:\\\"#333\\\",rect_border_size:\\\"0.5px\\\",rect_border_color:\\\"#bbb\\\",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:\\\"main\\\",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0},c4:{useWidth:void 0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,useMaxWidth:!0,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'\\\"Open Sans\\\", sans-serif',personFontWeight:\\\"normal\\\",external_personFontSize:14,external_personFontFamily:'\\\"Open Sans\\\", sans-serif',external_personFontWeight:\\\"normal\\\",systemFontSize:14,systemFontFamily:'\\\"Open Sans\\\", sans-serif',systemFontWeight:\\\"normal\\\",external_systemFontSize:14,external_systemFontFamily:'\\\"Open Sans\\\", sans-serif',external_systemFontWeight:\\\"normal\\\",system_dbFontSize:14,system_dbFontFamily:'\\\"Open Sans\\\", sans-serif',system_dbFontWeight:\\\"normal\\\",external_system_dbFontSize:14,external_system_dbFontFamily:'\\\"Open Sans\\\", sans-serif',external_system_dbFontWeight:\\\"normal\\\",system_queueFontSize:14,system_queueFontFamily:'\\\"Open Sans\\\", sans-serif',system_queueFontWeight:\\\"normal\\\",external_system_queueFontSize:14,external_system_queueFontFamily:'\\\"Open Sans\\\", sans-serif',external_system_queueFontWeight:\\\"normal\\\",boundaryFontSize:14,boundaryFontFamily:'\\\"Open Sans\\\", sans-serif',boundaryFontWeight:\\\"normal\\\",messageFontSize:12,messageFontFamily:'\\\"Open Sans\\\", sans-serif',messageFontWeight:\\\"normal\\\",containerFontSize:14,containerFontFamily:'\\\"Open Sans\\\", sans-serif',containerFontWeight:\\\"normal\\\",external_containerFontSize:14,external_containerFontFamily:'\\\"Open Sans\\\", sans-serif',external_containerFontWeight:\\\"normal\\\",container_dbFontSize:14,container_dbFontFamily:'\\\"Open Sans\\\", sans-serif',container_dbFontWeight:\\\"normal\\\",external_container_dbFontSize:14,external_container_dbFontFamily:'\\\"Open Sans\\\", sans-serif',external_container_dbFontWeight:\\\"normal\\\",container_queueFontSize:14,container_queueFontFamily:'\\\"Open Sans\\\", sans-serif',container_queueFontWeight:\\\"normal\\\",external_container_queueFontSize:14,external_container_queueFontFamily:'\\\"Open Sans\\\", sans-serif',external_container_queueFontWeight:\\\"normal\\\",componentFontSize:14,componentFontFamily:'\\\"Open Sans\\\", sans-serif',componentFontWeight:\\\"normal\\\",external_componentFontSize:14,external_componentFontFamily:'\\\"Open Sans\\\", sans-serif',external_componentFontWeight:\\\"normal\\\",component_dbFontSize:14,component_dbFontFamily:'\\\"Open Sans\\\", sans-serif',component_dbFontWeight:\\\"normal\\\",external_component_dbFontSize:14,external_component_dbFontFamily:'\\\"Open Sans\\\", sans-serif',external_component_dbFontWeight:\\\"normal\\\",component_queueFontSize:14,component_queueFontFamily:'\\\"Open Sans\\\", sans-serif',component_queueFontWeight:\\\"normal\\\",external_component_queueFontSize:14,external_component_queueFontFamily:'\\\"Open Sans\\\", sans-serif',external_component_queueFontWeight:\\\"normal\\\",wrap:!0,wrapPadding:10,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},person_bg_color:\\\"#08427B\\\",person_border_color:\\\"#073B6F\\\",external_person_bg_color:\\\"#686868\\\",external_person_border_color:\\\"#8A8A8A\\\",system_bg_color:\\\"#1168BD\\\",system_border_color:\\\"#3C7FC0\\\",system_db_bg_color:\\\"#1168BD\\\",system_db_border_color:\\\"#3C7FC0\\\",system_queue_bg_color:\\\"#1168BD\\\",system_queue_border_color:\\\"#3C7FC0\\\",external_system_bg_color:\\\"#999999\\\",external_system_border_color:\\\"#8A8A8A\\\",external_system_db_bg_color:\\\"#999999\\\",external_system_db_border_color:\\\"#8A8A8A\\\",external_system_queue_bg_color:\\\"#999999\\\",external_system_queue_border_color:\\\"#8A8A8A\\\",container_bg_color:\\\"#438DD5\\\",container_border_color:\\\"#3C7FC0\\\",container_db_bg_color:\\\"#438DD5\\\",container_db_border_color:\\\"#3C7FC0\\\",container_queue_bg_color:\\\"#438DD5\\\",container_queue_border_color:\\\"#3C7FC0\\\",external_container_bg_color:\\\"#B3B3B3\\\",external_container_border_color:\\\"#A6A6A6\\\",external_container_db_bg_color:\\\"#B3B3B3\\\",external_container_db_border_color:\\\"#A6A6A6\\\",external_container_queue_bg_color:\\\"#B3B3B3\\\",external_container_queue_border_color:\\\"#A6A6A6\\\",component_bg_color:\\\"#85BBF0\\\",component_border_color:\\\"#78A8D8\\\",component_db_bg_color:\\\"#85BBF0\\\",component_db_border_color:\\\"#78A8D8\\\",component_queue_bg_color:\\\"#85BBF0\\\",component_queue_border_color:\\\"#78A8D8\\\",external_component_bg_color:\\\"#CCCCCC\\\",external_component_border_color:\\\"#BFBFBF\\\",external_component_db_bg_color:\\\"#CCCCCC\\\",external_component_db_border_color:\\\"#BFBFBF\\\",external_component_queue_bg_color:\\\"#CCCCCC\\\",external_component_queue_border_color:\\\"#BFBFBF\\\"},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},fontSize:16};Fi.class&&(Fi.class.arrowMarkerAbsolute=Fi.arrowMarkerAbsolute),Fi.gitGraph&&(Fi.gitGraph.arrowMarkerAbsolute=Fi.arrowMarkerAbsolute);const op=(t,e=\\\"\\\")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]==\\\"object\\\"&&t[n]!==null?[...r,e+n,...op(t[n],\\\"\\\")]:[...r,e+n],[]),A8=op(Fi,\\\"\\\"),L8=Fi;/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function lp(t){return typeof t>\\\"u\\\"||t===null}function D8(t){return typeof t==\\\"object\\\"&&t!==null}function M8(t){return Array.isArray(t)?t:lp(t)?[]:[t]}function N8(t,e){var r,n,i,s;if(e)for(s=Object.keys(e),r=0,n=s.length;r\u003Cn;r+=1)i=s[r],t[i]=e[i];return t}function B8(t,e){var r=\\\"\\\",n;for(n=0;n\u003Ce;n+=1)r+=t;return r}function I8(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var O8=lp,R8=D8,F8=M8,P8=B8,Y8=I8,V8=N8,Nr={isNothing:O8,isObject:R8,toArray:F8,repeat:P8,isNegativeZero:Y8,extend:V8};function cp(t,e){var r=\\\"\\\",n=t.reason||\\\"(unknown reason)\\\";return t.mark?(t.mark.name&&(r+='in \\\"'+t.mark.name+'\\\" '),r+=\\\"(\\\"+(t.mark.line+1)+\\\":\\\"+(t.mark.column+1)+\\\")\\\",!e&&t.mark.snippet&&(r+=`\\n\\n`+t.mark.snippet),n+\\\" \\\"+r):n}function oo(t,e){Error.call(this),this.name=\\\"YAMLException\\\",this.reason=t,this.mark=e,this.message=cp(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||\\\"\\\"}oo.prototype=Object.create(Error.prototype),oo.prototype.constructor=oo,oo.prototype.toString=function(e){return this.name+\\\": \\\"+cp(this,e)};var li=oo;function i1(t,e,r,n,i){var s=\\\"\\\",a=\\\"\\\",o=Math.floor(i/2)-1;return n-e>o&&(s=\\\" ... \\\",e=n-o+s.length),r-n>o&&(a=\\\" ...\\\",r=n+o-a.length),{str:s+t.slice(e,r).replace(/\\\\t/g,\\\"\\\\u2192\\\")+a,pos:n-e+s.length}}function s1(t,e){return Nr.repeat(\\\" \\\",e-t.length)+t}function U8(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!=\\\"number\\\"&&(e.indent=1),typeof e.linesBefore!=\\\"number\\\"&&(e.linesBefore=3),typeof e.linesAfter!=\\\"number\\\"&&(e.linesAfter=2);for(var r=/\\\\r?\\\\n|\\\\r|\\\\0/g,n=[0],i=[],s,a=-1;s=r.exec(t.buffer);)i.push(s.index),n.push(s.index+s[0].length),t.position\u003C=s.index&&a\u003C0&&(a=n.length-2);a\u003C0&&(a=n.length-1);var o=\\\"\\\",l,u,d=Math.min(t.line+e.linesAfter,i.length).toString().length,f=e.maxLength-(e.indent+d+3);for(l=1;l\u003C=e.linesBefore&&!(a-l\u003C0);l++)u=i1(t.buffer,n[a-l],i[a-l],t.position-(n[a]-n[a-l]),f),o=Nr.repeat(\\\" \\\",e.indent)+s1((t.line-l+1).toString(),d)+\\\" | \\\"+u.str+`\\n`+o;for(u=i1(t.buffer,n[a],i[a],t.position,f),o+=Nr.repeat(\\\" \\\",e.indent)+s1((t.line+1).toString(),d)+\\\" | \\\"+u.str+`\\n`,o+=Nr.repeat(\\\"-\\\",e.indent+d+3+u.pos)+`^\\n`,l=1;l\u003C=e.linesAfter&&!(a+l>=i.length);l++)u=i1(t.buffer,n[a+l],i[a+l],t.position-(n[a]-n[a+l]),f),o+=Nr.repeat(\\\" \\\",e.indent)+s1((t.line+l+1).toString(),d)+\\\" | \\\"+u.str+`\\n`;return o.replace(/\\\\n$/,\\\"\\\")}var z8=U8,W8=[\\\"kind\\\",\\\"multi\\\",\\\"resolve\\\",\\\"construct\\\",\\\"instanceOf\\\",\\\"predicate\\\",\\\"represent\\\",\\\"representName\\\",\\\"defaultStyle\\\",\\\"styleAliases\\\"],H8=[\\\"scalar\\\",\\\"sequence\\\",\\\"mapping\\\"];function G8(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function q8(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(W8.indexOf(r)===-1)throw new li('Unknown option \\\"'+r+'\\\" is met in definition of \\\"'+t+'\\\" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=G8(e.styleAliases||null),H8.indexOf(this.kind)===-1)throw new li('Unknown kind \\\"'+this.kind+'\\\" is specified for \\\"'+t+'\\\" YAML type.')}var Tr=q8;function up(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(s,a){s.tag===n.tag&&s.kind===n.kind&&s.multi===n.multi&&(i=a)}),r[i]=n}),r}function j8(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(e=0,r=arguments.length;e\u003Cr;e+=1)arguments[e].forEach(n);return t}function a1(t){return this.extend(t)}a1.prototype.extend=function(e){var r=[],n=[];if(e instanceof Tr)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new li(\\\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\\\");r.forEach(function(s){if(!(s instanceof Tr))throw new li(\\\"Specified list of YAML types (or a single Type object) contains a non-Type object.\\\");if(s.loadKind&&s.loadKind!==\\\"scalar\\\")throw new li(\\\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\\\");if(s.multi)throw new li(\\\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\\\")}),n.forEach(function(s){if(!(s instanceof Tr))throw new li(\\\"Specified list of YAML types (or a single Type object) contains a non-Type object.\\\")});var i=Object.create(a1.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=up(i,\\\"implicit\\\"),i.compiledExplicit=up(i,\\\"explicit\\\"),i.compiledTypeMap=j8(i.compiledImplicit,i.compiledExplicit),i};var $8=a1,X8=new Tr(\\\"tag:yaml.org,2002:str\\\",{kind:\\\"scalar\\\",construct:function(t){return t!==null?t:\\\"\\\"}}),K8=new Tr(\\\"tag:yaml.org,2002:seq\\\",{kind:\\\"sequence\\\",construct:function(t){return t!==null?t:[]}}),Z8=new Tr(\\\"tag:yaml.org,2002:map\\\",{kind:\\\"mapping\\\",construct:function(t){return t!==null?t:{}}}),hp=new $8({explicit:[X8,K8,Z8]});function Q8(t){if(t===null)return!0;var e=t.length;return e===1&&t===\\\"~\\\"||e===4&&(t===\\\"null\\\"||t===\\\"Null\\\"||t===\\\"NULL\\\")}function J8(){return null}function tw(t){return t===null}var ew=new Tr(\\\"tag:yaml.org,2002:null\\\",{kind:\\\"scalar\\\",resolve:Q8,construct:J8,predicate:tw,represent:{canonical:function(){return\\\"~\\\"},lowercase:function(){return\\\"null\\\"},uppercase:function(){return\\\"NULL\\\"},camelcase:function(){return\\\"Null\\\"},empty:function(){return\\\"\\\"}},defaultStyle:\\\"lowercase\\\"});function rw(t){if(t===null)return!1;var e=t.length;return e===4&&(t===\\\"true\\\"||t===\\\"True\\\"||t===\\\"TRUE\\\")||e===5&&(t===\\\"false\\\"||t===\\\"False\\\"||t===\\\"FALSE\\\")}function nw(t){return t===\\\"true\\\"||t===\\\"True\\\"||t===\\\"TRUE\\\"}function iw(t){return Object.prototype.toString.call(t)===\\\"[object Boolean]\\\"}var sw=new Tr(\\\"tag:yaml.org,2002:bool\\\",{kind:\\\"scalar\\\",resolve:rw,construct:nw,predicate:iw,represent:{lowercase:function(t){return t?\\\"true\\\":\\\"false\\\"},uppercase:function(t){return t?\\\"TRUE\\\":\\\"FALSE\\\"},camelcase:function(t){return t?\\\"True\\\":\\\"False\\\"}},defaultStyle:\\\"lowercase\\\"});function aw(t){return 48\u003C=t&&t\u003C=57||65\u003C=t&&t\u003C=70||97\u003C=t&&t\u003C=102}function ow(t){return 48\u003C=t&&t\u003C=55}function lw(t){return 48\u003C=t&&t\u003C=57}function cw(t){if(t===null)return!1;var e=t.length,r=0,n=!1,i;if(!e)return!1;if(i=t[r],(i===\\\"-\\\"||i===\\\"+\\\")&&(i=t[++r]),i===\\\"0\\\"){if(r+1===e)return!0;if(i=t[++r],i===\\\"b\\\"){for(r++;r\u003Ce;r++)if(i=t[r],i!==\\\"_\\\"){if(i!==\\\"0\\\"&&i!==\\\"1\\\")return!1;n=!0}return n&&i!==\\\"_\\\"}if(i===\\\"x\\\"){for(r++;r\u003Ce;r++)if(i=t[r],i!==\\\"_\\\"){if(!aw(t.charCodeAt(r)))return!1;n=!0}return n&&i!==\\\"_\\\"}if(i===\\\"o\\\"){for(r++;r\u003Ce;r++)if(i=t[r],i!==\\\"_\\\"){if(!ow(t.charCodeAt(r)))return!1;n=!0}return n&&i!==\\\"_\\\"}}if(i===\\\"_\\\")return!1;for(;r\u003Ce;r++)if(i=t[r],i!==\\\"_\\\"){if(!lw(t.charCodeAt(r)))return!1;n=!0}return!(!n||i===\\\"_\\\")}function uw(t){var e=t,r=1,n;if(e.indexOf(\\\"_\\\")!==-1&&(e=e.replace(/_/g,\\\"\\\")),n=e[0],(n===\\\"-\\\"||n===\\\"+\\\")&&(n===\\\"-\\\"&&(r=-1),e=e.slice(1),n=e[0]),e===\\\"0\\\")return 0;if(n===\\\"0\\\"){if(e[1]===\\\"b\\\")return r*parseInt(e.slice(2),2);if(e[1]===\\\"x\\\")return r*parseInt(e.slice(2),16);if(e[1]===\\\"o\\\")return r*parseInt(e.slice(2),8)}return r*parseInt(e,10)}function hw(t){return Object.prototype.toString.call(t)===\\\"[object Number]\\\"&&t%1===0&&!Nr.isNegativeZero(t)}var dw=new Tr(\\\"tag:yaml.org,2002:int\\\",{kind:\\\"scalar\\\",resolve:cw,construct:uw,predicate:hw,represent:{binary:function(t){return t>=0?\\\"0b\\\"+t.toString(2):\\\"-0b\\\"+t.toString(2).slice(1)},octal:function(t){return t>=0?\\\"0o\\\"+t.toString(8):\\\"-0o\\\"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?\\\"0x\\\"+t.toString(16).toUpperCase():\\\"-0x\\\"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:\\\"decimal\\\",styleAliases:{binary:[2,\\\"bin\\\"],octal:[8,\\\"oct\\\"],decimal:[10,\\\"dec\\\"],hexadecimal:[16,\\\"hex\\\"]}}),fw=new RegExp(\\\"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\\\\\.(?:inf|Inf|INF)|\\\\\\\\.(?:nan|NaN|NAN))$\\\");function pw(t){return!(t===null||!fw.test(t)||t[t.length-1]===\\\"_\\\")}function gw(t){var e,r;return e=t.replace(/_/g,\\\"\\\").toLowerCase(),r=e[0]===\\\"-\\\"?-1:1,\\\"+-\\\".indexOf(e[0])>=0&&(e=e.slice(1)),e===\\\".inf\\\"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===\\\".nan\\\"?NaN:r*parseFloat(e,10)}var yw=/^[-+]?[0-9]+e/;function mw(t,e){var r;if(isNaN(t))switch(e){case\\\"lowercase\\\":return\\\".nan\\\";case\\\"uppercase\\\":return\\\".NAN\\\";case\\\"camelcase\\\":return\\\".NaN\\\"}else if(Number.POSITIVE_INFINITY===t)switch(e){case\\\"lowercase\\\":return\\\".inf\\\";case\\\"uppercase\\\":return\\\".INF\\\";case\\\"camelcase\\\":return\\\".Inf\\\"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case\\\"lowercase\\\":return\\\"-.inf\\\";case\\\"uppercase\\\":return\\\"-.INF\\\";case\\\"camelcase\\\":return\\\"-.Inf\\\"}else if(Nr.isNegativeZero(t))return\\\"-0.0\\\";return r=t.toString(10),yw.test(r)?r.replace(\\\"e\\\",\\\".e\\\"):r}function bw(t){return Object.prototype.toString.call(t)===\\\"[object Number]\\\"&&(t%1!==0||Nr.isNegativeZero(t))}var _w=new Tr(\\\"tag:yaml.org,2002:float\\\",{kind:\\\"scalar\\\",resolve:pw,construct:gw,predicate:bw,represent:mw,defaultStyle:\\\"lowercase\\\"}),xw=hp.extend({implicit:[ew,sw,dw,_w]}),vw=xw,dp=new RegExp(\\\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\\\"),fp=new RegExp(\\\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\\\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\\\\\.([0-9]*))?(?:[ \\\\\\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\\\");function kw(t){return t===null?!1:dp.exec(t)!==null||fp.exec(t)!==null}function ww(t){var e,r,n,i,s,a,o,l=0,u=null,d,f,p;if(e=dp.exec(t),e===null&&(e=fp.exec(t)),e===null)throw new Error(\\\"Date resolve error\\\");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(s=+e[4],a=+e[5],o=+e[6],e[7]){for(l=e[7].slice(0,3);l.length\u003C3;)l+=\\\"0\\\";l=+l}return e[9]&&(d=+e[10],f=+(e[11]||0),u=(d*60+f)*6e4,e[9]===\\\"-\\\"&&(u=-u)),p=new Date(Date.UTC(r,n,i,s,a,o,l)),u&&p.setTime(p.getTime()-u),p}function Tw(t){return t.toISOString()}var Ew=new Tr(\\\"tag:yaml.org,2002:timestamp\\\",{kind:\\\"scalar\\\",resolve:kw,construct:ww,instanceOf:Date,represent:Tw});function Cw(t){return t===\\\"\u003C\u003C\\\"||t===null}var Sw=new Tr(\\\"tag:yaml.org,2002:merge\\\",{kind:\\\"scalar\\\",resolve:Cw}),o1=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\\\r`;function Aw(t){if(t===null)return!1;var e,r,n=0,i=t.length,s=o1;for(r=0;r\u003Ci;r++)if(e=s.indexOf(t.charAt(r)),!(e>64)){if(e\u003C0)return!1;n+=6}return n%8===0}function Lw(t){var e,r,n=t.replace(/[\\\\r\\\\n=]/g,\\\"\\\"),i=n.length,s=o1,a=0,o=[];for(e=0;e\u003Ci;e++)e%4===0&&e&&(o.push(a>>16&255),o.push(a>>8&255),o.push(a&255)),a=a\u003C\u003C6|s.indexOf(n.charAt(e));return r=i%4*6,r===0?(o.push(a>>16&255),o.push(a>>8&255),o.push(a&255)):r===18?(o.push(a>>10&255),o.push(a>>2&255)):r===12&&o.push(a>>4&255),new Uint8Array(o)}function Dw(t){var e=\\\"\\\",r=0,n,i,s=t.length,a=o1;for(n=0;n\u003Cs;n++)n%3===0&&n&&(e+=a[r>>18&63],e+=a[r>>12&63],e+=a[r>>6&63],e+=a[r&63]),r=(r\u003C\u003C8)+t[n];return i=s%3,i===0?(e+=a[r>>18&63],e+=a[r>>12&63],e+=a[r>>6&63],e+=a[r&63]):i===2?(e+=a[r>>10&63],e+=a[r>>4&63],e+=a[r\u003C\u003C2&63],e+=a[64]):i===1&&(e+=a[r>>2&63],e+=a[r\u003C\u003C4&63],e+=a[64],e+=a[64]),e}function Mw(t){return Object.prototype.toString.call(t)===\\\"[object Uint8Array]\\\"}var Nw=new Tr(\\\"tag:yaml.org,2002:binary\\\",{kind:\\\"scalar\\\",resolve:Aw,construct:Lw,predicate:Mw,represent:Dw}),Bw=Object.prototype.hasOwnProperty,Iw=Object.prototype.toString;function Ow(t){if(t===null)return!0;var e=[],r,n,i,s,a,o=t;for(r=0,n=o.length;r\u003Cn;r+=1){if(i=o[r],a=!1,Iw.call(i)!==\\\"[object Object]\\\")return!1;for(s in i)if(Bw.call(i,s))if(!a)a=!0;else return!1;if(!a)return!1;if(e.indexOf(s)===-1)e.push(s);else return!1}return!0}function Rw(t){return t!==null?t:[]}var Fw=new Tr(\\\"tag:yaml.org,2002:omap\\\",{kind:\\\"sequence\\\",resolve:Ow,construct:Rw}),Pw=Object.prototype.toString;function Yw(t){if(t===null)return!0;var e,r,n,i,s,a=t;for(s=new Array(a.length),e=0,r=a.length;e\u003Cr;e+=1){if(n=a[e],Pw.call(n)!==\\\"[object Object]\\\"||(i=Object.keys(n),i.length!==1))return!1;s[e]=[i[0],n[i[0]]]}return!0}function Vw(t){if(t===null)return[];var e,r,n,i,s,a=t;for(s=new Array(a.length),e=0,r=a.length;e\u003Cr;e+=1)n=a[e],i=Object.keys(n),s[e]=[i[0],n[i[0]]];return s}var Uw=new Tr(\\\"tag:yaml.org,2002:pairs\\\",{kind:\\\"sequence\\\",resolve:Yw,construct:Vw}),zw=Object.prototype.hasOwnProperty;function Ww(t){if(t===null)return!0;var e,r=t;for(e in r)if(zw.call(r,e)&&r[e]!==null)return!1;return!0}function Hw(t){return t!==null?t:{}}var Gw=new Tr(\\\"tag:yaml.org,2002:set\\\",{kind:\\\"mapping\\\",resolve:Ww,construct:Hw}),qw=vw.extend({implicit:[Ew,Sw],explicit:[Nw,Fw,Uw,Gw]}),Pi=Object.prototype.hasOwnProperty,cc=1,pp=2,gp=3,uc=4,l1=1,jw=2,yp=3,$w=/[\\\\x00-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F-\\\\x84\\\\x86-\\\\x9F\\\\uFFFE\\\\uFFFF]|[\\\\uD800-\\\\uDBFF](?![\\\\uDC00-\\\\uDFFF])|(?:[^\\\\uD800-\\\\uDBFF]|^)[\\\\uDC00-\\\\uDFFF]/,Xw=/[\\\\x85\\\\u2028\\\\u2029]/,Kw=/[,\\\\[\\\\]\\\\{\\\\}]/,mp=/^(?:!|!!|![a-z\\\\-]+!)$/i,bp=/^(?:!|[^,\\\\[\\\\]\\\\{\\\\}])(?:%[0-9a-f]{2}|[0-9a-z\\\\-#;\\\\/\\\\?:@&=\\\\+\\\\$,_\\\\.!~\\\\*'\\\\(\\\\)\\\\[\\\\]])*$/i;function _p(t){return Object.prototype.toString.call(t)}function Vn(t){return t===10||t===13}function fs(t){return t===9||t===32}function Fr(t){return t===9||t===32||t===10||t===13}function ra(t){return t===44||t===91||t===93||t===123||t===125}function Zw(t){var e;return 48\u003C=t&&t\u003C=57?t-48:(e=t|32,97\u003C=e&&e\u003C=102?e-97+10:-1)}function Qw(t){return t===120?2:t===117?4:t===85?8:0}function Jw(t){return 48\u003C=t&&t\u003C=57?t-48:-1}function xp(t){return t===48?\\\"\\\\0\\\":t===97?\\\"\\\\x07\\\":t===98?\\\"\\\\b\\\":t===116||t===9?\\\"\\t\\\":t===110?`\\n`:t===118?\\\"\\\\v\\\":t===102?\\\"\\\\f\\\":t===114?\\\"\\\\r\\\":t===101?\\\"\\\\x1B\\\":t===32?\\\" \\\":t===34?'\\\"':t===47?\\\"/\\\":t===92?\\\"\\\\\\\\\\\":t===78?\\\"\\\\x85\\\":t===95?\\\"\\\\xA0\\\":t===76?\\\"\\\\u2028\\\":t===80?\\\"\\\\u2029\\\":\\\"\\\"}function t7(t){return t\u003C=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}for(var vp=new Array(256),kp=new Array(256),na=0;na\u003C256;na++)vp[na]=xp(na)?1:0,kp[na]=xp(na);function e7(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||qw,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function wp(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=z8(r),new li(e,r)}function Qt(t,e){throw wp(t,e)}function hc(t,e){t.onWarning&&t.onWarning.call(null,wp(t,e))}var Tp={YAML:function(e,r,n){var i,s,a;e.version!==null&&Qt(e,\\\"duplication of %YAML directive\\\"),n.length!==1&&Qt(e,\\\"YAML directive accepts exactly one argument\\\"),i=/^([0-9]+)\\\\.([0-9]+)$/.exec(n[0]),i===null&&Qt(e,\\\"ill-formed argument of the YAML directive\\\"),s=parseInt(i[1],10),a=parseInt(i[2],10),s!==1&&Qt(e,\\\"unacceptable YAML version of the document\\\"),e.version=n[0],e.checkLineBreaks=a\u003C2,a!==1&&a!==2&&hc(e,\\\"unsupported YAML version of the document\\\")},TAG:function(e,r,n){var i,s;n.length!==2&&Qt(e,\\\"TAG directive accepts exactly two arguments\\\"),i=n[0],s=n[1],mp.test(i)||Qt(e,\\\"ill-formed tag handle (first argument) of the TAG directive\\\"),Pi.call(e.tagMap,i)&&Qt(e,'there is a previously declared suffix for \\\"'+i+'\\\" tag handle'),bp.test(s)||Qt(e,\\\"ill-formed tag prefix (second argument) of the TAG directive\\\");try{s=decodeURIComponent(s)}catch{Qt(e,\\\"tag prefix is malformed: \\\"+s)}e.tagMap[i]=s}};function Yi(t,e,r,n){var i,s,a,o;if(e\u003Cr){if(o=t.input.slice(e,r),n)for(i=0,s=o.length;i\u003Cs;i+=1)a=o.charCodeAt(i),a===9||32\u003C=a&&a\u003C=1114111||Qt(t,\\\"expected valid JSON character\\\");else $w.test(o)&&Qt(t,\\\"the stream contains non-printable characters\\\");t.result+=o}}function Ep(t,e,r,n){var i,s,a,o;for(Nr.isObject(r)||Qt(t,\\\"cannot merge mappings; the provided source object is unacceptable\\\"),i=Object.keys(r),a=0,o=i.length;a\u003Co;a+=1)s=i[a],Pi.call(e,s)||(e[s]=r[s],n[s]=!0)}function ia(t,e,r,n,i,s,a,o,l){var u,d;if(Array.isArray(i))for(i=Array.prototype.slice.call(i),u=0,d=i.length;u\u003Cd;u+=1)Array.isArray(i[u])&&Qt(t,\\\"nested arrays are not supported inside keys\\\"),typeof i==\\\"object\\\"&&_p(i[u])===\\\"[object Object]\\\"&&(i[u]=\\\"[object Object]\\\");if(typeof i==\\\"object\\\"&&_p(i)===\\\"[object Object]\\\"&&(i=\\\"[object Object]\\\"),i=String(i),e===null&&(e={}),n===\\\"tag:yaml.org,2002:merge\\\")if(Array.isArray(s))for(u=0,d=s.length;u\u003Cd;u+=1)Ep(t,e,s[u],r);else Ep(t,e,s,r);else!t.json&&!Pi.call(r,i)&&Pi.call(e,i)&&(t.line=a||t.line,t.lineStart=o||t.lineStart,t.position=l||t.position,Qt(t,\\\"duplicated mapping key\\\")),i===\\\"__proto__\\\"?Object.defineProperty(e,i,{configurable:!0,enumerable:!0,writable:!0,value:s}):e[i]=s,delete r[i];return e}function c1(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):Qt(t,\\\"a line break is expected\\\"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function tr(t,e,r){for(var n=0,i=t.input.charCodeAt(t.position);i!==0;){for(;fs(i);)i===9&&t.firstTabInLine===-1&&(t.firstTabInLine=t.position),i=t.input.charCodeAt(++t.position);if(e&&i===35)do i=t.input.charCodeAt(++t.position);while(i!==10&&i!==13&&i!==0);if(Vn(i))for(c1(t),i=t.input.charCodeAt(t.position),n++,t.lineIndent=0;i===32;)t.lineIndent++,i=t.input.charCodeAt(++t.position);else break}return r!==-1&&n!==0&&t.lineIndent\u003Cr&&hc(t,\\\"deficient indentation\\\"),n}function dc(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r===45||r===46)&&r===t.input.charCodeAt(e+1)&&r===t.input.charCodeAt(e+2)&&(e+=3,r=t.input.charCodeAt(e),r===0||Fr(r)))}function u1(t,e){e===1?t.result+=\\\" \\\":e>1&&(t.result+=Nr.repeat(`\\n`,e-1))}function r7(t,e,r){var n,i,s,a,o,l,u,d,f=t.kind,p=t.result,g;if(g=t.input.charCodeAt(t.position),Fr(g)||ra(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96||(g===63||g===45)&&(i=t.input.charCodeAt(t.position+1),Fr(i)||r&&ra(i)))return!1;for(t.kind=\\\"scalar\\\",t.result=\\\"\\\",s=a=t.position,o=!1;g!==0;){if(g===58){if(i=t.input.charCodeAt(t.position+1),Fr(i)||r&&ra(i))break}else if(g===35){if(n=t.input.charCodeAt(t.position-1),Fr(n))break}else{if(t.position===t.lineStart&&dc(t)||r&&ra(g))break;if(Vn(g))if(l=t.line,u=t.lineStart,d=t.lineIndent,tr(t,!1,-1),t.lineIndent>=e){o=!0,g=t.input.charCodeAt(t.position);continue}else{t.position=a,t.line=l,t.lineStart=u,t.lineIndent=d;break}}o&&(Yi(t,s,a,!1),u1(t,t.line-l),s=a=t.position,o=!1),fs(g)||(a=t.position+1),g=t.input.charCodeAt(++t.position)}return Yi(t,s,a,!1),t.result?!0:(t.kind=f,t.result=p,!1)}function n7(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind=\\\"scalar\\\",t.result=\\\"\\\",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Yi(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else Vn(r)?(Yi(t,n,i,!0),u1(t,tr(t,!1,e)),n=i=t.position):t.position===t.lineStart&&dc(t)?Qt(t,\\\"unexpected end of the document within a single quoted scalar\\\"):(t.position++,i=t.position);Qt(t,\\\"unexpected end of the stream within a single quoted scalar\\\")}function i7(t,e){var r,n,i,s,a,o;if(o=t.input.charCodeAt(t.position),o!==34)return!1;for(t.kind=\\\"scalar\\\",t.result=\\\"\\\",t.position++,r=n=t.position;(o=t.input.charCodeAt(t.position))!==0;){if(o===34)return Yi(t,r,t.position,!0),t.position++,!0;if(o===92){if(Yi(t,r,t.position,!0),o=t.input.charCodeAt(++t.position),Vn(o))tr(t,!1,e);else if(o\u003C256&&vp[o])t.result+=kp[o],t.position++;else if((a=Qw(o))>0){for(i=a,s=0;i>0;i--)o=t.input.charCodeAt(++t.position),(a=Zw(o))>=0?s=(s\u003C\u003C4)+a:Qt(t,\\\"expected hexadecimal character\\\");t.result+=t7(s),t.position++}else Qt(t,\\\"unknown escape sequence\\\");r=n=t.position}else Vn(o)?(Yi(t,r,n,!0),u1(t,tr(t,!1,e)),r=n=t.position):t.position===t.lineStart&&dc(t)?Qt(t,\\\"unexpected end of the document within a double quoted scalar\\\"):(t.position++,n=t.position)}Qt(t,\\\"unexpected end of the stream within a double quoted scalar\\\")}function s7(t,e){var r=!0,n,i,s,a=t.tag,o,l=t.anchor,u,d,f,p,g,b=Object.create(null),k,T,L,E;if(E=t.input.charCodeAt(t.position),E===91)d=93,g=!1,o=[];else if(E===123)d=125,g=!0,o={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=o),E=t.input.charCodeAt(++t.position);E!==0;){if(tr(t,!0,e),E=t.input.charCodeAt(t.position),E===d)return t.position++,t.tag=a,t.anchor=l,t.kind=g?\\\"mapping\\\":\\\"sequence\\\",t.result=o,!0;r?E===44&&Qt(t,\\\"expected the node content, but found ','\\\"):Qt(t,\\\"missed comma between flow collection entries\\\"),T=k=L=null,f=p=!1,E===63&&(u=t.input.charCodeAt(t.position+1),Fr(u)&&(f=p=!0,t.position++,tr(t,!0,e))),n=t.line,i=t.lineStart,s=t.position,sa(t,e,cc,!1,!0),T=t.tag,k=t.result,tr(t,!0,e),E=t.input.charCodeAt(t.position),(p||t.line===n)&&E===58&&(f=!0,E=t.input.charCodeAt(++t.position),tr(t,!0,e),sa(t,e,cc,!1,!0),L=t.result),g?ia(t,o,b,T,k,L,n,i,s):f?o.push(ia(t,null,b,T,k,L,n,i,s)):o.push(k),tr(t,!0,e),E=t.input.charCodeAt(t.position),E===44?(r=!0,E=t.input.charCodeAt(++t.position)):r=!1}Qt(t,\\\"unexpected end of the stream within a flow collection\\\")}function a7(t,e){var r,n,i=l1,s=!1,a=!1,o=e,l=0,u=!1,d,f;if(f=t.input.charCodeAt(t.position),f===124)n=!1;else if(f===62)n=!0;else return!1;for(t.kind=\\\"scalar\\\",t.result=\\\"\\\";f!==0;)if(f=t.input.charCodeAt(++t.position),f===43||f===45)l1===i?i=f===43?yp:jw:Qt(t,\\\"repeat of a chomping mode identifier\\\");else if((d=Jw(f))>=0)d===0?Qt(t,\\\"bad explicit indentation width of a block scalar; it cannot be less than one\\\"):a?Qt(t,\\\"repeat of an indentation width identifier\\\"):(o=e+d-1,a=!0);else break;if(fs(f)){do f=t.input.charCodeAt(++t.position);while(fs(f));if(f===35)do f=t.input.charCodeAt(++t.position);while(!Vn(f)&&f!==0)}for(;f!==0;){for(c1(t),t.lineIndent=0,f=t.input.charCodeAt(t.position);(!a||t.lineIndent\u003Co)&&f===32;)t.lineIndent++,f=t.input.charCodeAt(++t.position);if(!a&&t.lineIndent>o&&(o=t.lineIndent),Vn(f)){l++;continue}if(t.lineIndent\u003Co){i===yp?t.result+=Nr.repeat(`\\n`,s?1+l:l):i===l1&&s&&(t.result+=`\\n`);break}for(n?fs(f)?(u=!0,t.result+=Nr.repeat(`\\n`,s?1+l:l)):u?(u=!1,t.result+=Nr.repeat(`\\n`,l+1)):l===0?s&&(t.result+=\\\" \\\"):t.result+=Nr.repeat(`\\n`,l):t.result+=Nr.repeat(`\\n`,s?1+l:l),s=!0,a=!0,l=0,r=t.position;!Vn(f)&&f!==0;)f=t.input.charCodeAt(++t.position);Yi(t,r,t.position,!1)}return!0}function Cp(t,e){var r,n=t.tag,i=t.anchor,s=[],a,o=!1,l;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),l=t.input.charCodeAt(t.position);l!==0&&(t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,Qt(t,\\\"tab characters must not be used in indentation\\\")),!(l!==45||(a=t.input.charCodeAt(t.position+1),!Fr(a))));){if(o=!0,t.position++,tr(t,!0,-1)&&t.lineIndent\u003C=e){s.push(null),l=t.input.charCodeAt(t.position);continue}if(r=t.line,sa(t,e,gp,!1,!0),s.push(t.result),tr(t,!0,-1),l=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&l!==0)Qt(t,\\\"bad indentation of a sequence entry\\\");else if(t.lineIndent\u003Ce)break}return o?(t.tag=n,t.anchor=i,t.kind=\\\"sequence\\\",t.result=s,!0):!1}function o7(t,e,r){var n,i,s,a,o,l,u=t.tag,d=t.anchor,f={},p=Object.create(null),g=null,b=null,k=null,T=!1,L=!1,E;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=f),E=t.input.charCodeAt(t.position);E!==0;){if(!T&&t.firstTabInLine!==-1&&(t.position=t.firstTabInLine,Qt(t,\\\"tab characters must not be used in indentation\\\")),n=t.input.charCodeAt(t.position+1),s=t.line,(E===63||E===58)&&Fr(n))E===63?(T&&(ia(t,f,p,g,b,null,a,o,l),g=b=k=null),L=!0,T=!0,i=!0):T?(T=!1,i=!0):Qt(t,\\\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\\\"),t.position+=1,E=n;else{if(a=t.line,o=t.lineStart,l=t.position,!sa(t,r,pp,!1,!0))break;if(t.line===s){for(E=t.input.charCodeAt(t.position);fs(E);)E=t.input.charCodeAt(++t.position);if(E===58)E=t.input.charCodeAt(++t.position),Fr(E)||Qt(t,\\\"a whitespace character is expected after the key-value separator within a block mapping\\\"),T&&(ia(t,f,p,g,b,null,a,o,l),g=b=k=null),L=!0,T=!1,i=!1,g=t.tag,b=t.result;else if(L)Qt(t,\\\"can not read an implicit mapping pair; a colon is missed\\\");else return t.tag=u,t.anchor=d,!0}else if(L)Qt(t,\\\"can not read a block mapping entry; a multiline key may not be an implicit key\\\");else return t.tag=u,t.anchor=d,!0}if((t.line===s||t.lineIndent>e)&&(T&&(a=t.line,o=t.lineStart,l=t.position),sa(t,e,uc,!0,i)&&(T?b=t.result:k=t.result),T||(ia(t,f,p,g,b,k,a,o,l),g=b=k=null),tr(t,!0,-1),E=t.input.charCodeAt(t.position)),(t.line===s||t.lineIndent>e)&&E!==0)Qt(t,\\\"bad indentation of a mapping entry\\\");else if(t.lineIndent\u003Ce)break}return T&&ia(t,f,p,g,b,null,a,o,l),L&&(t.tag=u,t.anchor=d,t.kind=\\\"mapping\\\",t.result=f),L}function l7(t){var e,r=!1,n=!1,i,s,a;if(a=t.input.charCodeAt(t.position),a!==33)return!1;if(t.tag!==null&&Qt(t,\\\"duplication of a tag property\\\"),a=t.input.charCodeAt(++t.position),a===60?(r=!0,a=t.input.charCodeAt(++t.position)):a===33?(n=!0,i=\\\"!!\\\",a=t.input.charCodeAt(++t.position)):i=\\\"!\\\",e=t.position,r){do a=t.input.charCodeAt(++t.position);while(a!==0&&a!==62);t.position\u003Ct.length?(s=t.input.slice(e,t.position),a=t.input.charCodeAt(++t.position)):Qt(t,\\\"unexpected end of the stream within a verbatim tag\\\")}else{for(;a!==0&&!Fr(a);)a===33&&(n?Qt(t,\\\"tag suffix cannot contain exclamation marks\\\"):(i=t.input.slice(e-1,t.position+1),mp.test(i)||Qt(t,\\\"named tag handle cannot contain such characters\\\"),n=!0,e=t.position+1)),a=t.input.charCodeAt(++t.position);s=t.input.slice(e,t.position),Kw.test(s)&&Qt(t,\\\"tag suffix cannot contain flow indicator characters\\\")}s&&!bp.test(s)&&Qt(t,\\\"tag name cannot contain such characters: \\\"+s);try{s=decodeURIComponent(s)}catch{Qt(t,\\\"tag name is malformed: \\\"+s)}return r?t.tag=s:Pi.call(t.tagMap,i)?t.tag=t.tagMap[i]+s:i===\\\"!\\\"?t.tag=\\\"!\\\"+s:i===\\\"!!\\\"?t.tag=\\\"tag:yaml.org,2002:\\\"+s:Qt(t,'undeclared tag handle \\\"'+i+'\\\"'),!0}function c7(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&Qt(t,\\\"duplication of an anchor property\\\"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!Fr(r)&&!ra(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Qt(t,\\\"name of an anchor node must contain at least one character\\\"),t.anchor=t.input.slice(e,t.position),!0}function u7(t){var e,r,n;if(n=t.input.charCodeAt(t.position),n!==42)return!1;for(n=t.input.charCodeAt(++t.position),e=t.position;n!==0&&!Fr(n)&&!ra(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&Qt(t,\\\"name of an alias node must contain at least one character\\\"),r=t.input.slice(e,t.position),Pi.call(t.anchorMap,r)||Qt(t,'unidentified alias \\\"'+r+'\\\"'),t.result=t.anchorMap[r],tr(t,!0,-1),!0}function sa(t,e,r,n,i){var s,a,o,l=1,u=!1,d=!1,f,p,g,b,k,T;if(t.listener!==null&&t.listener(\\\"open\\\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,s=a=o=uc===r||gp===r,n&&tr(t,!0,-1)&&(u=!0,t.lineIndent>e?l=1:t.lineIndent===e?l=0:t.lineIndent\u003Ce&&(l=-1)),l===1)for(;l7(t)||c7(t);)tr(t,!0,-1)?(u=!0,o=s,t.lineIndent>e?l=1:t.lineIndent===e?l=0:t.lineIndent\u003Ce&&(l=-1)):o=!1;if(o&&(o=u||i),(l===1||uc===r)&&(cc===r||pp===r?k=e:k=e+1,T=t.position-t.lineStart,l===1?o&&(Cp(t,T)||o7(t,T,k))||s7(t,k)?d=!0:(a&&a7(t,k)||n7(t,k)||i7(t,k)?d=!0:u7(t)?(d=!0,(t.tag!==null||t.anchor!==null)&&Qt(t,\\\"alias node should not have any properties\\\")):r7(t,k,cc===r)&&(d=!0,t.tag===null&&(t.tag=\\\"?\\\")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):l===0&&(d=o&&Cp(t,T))),t.tag===null)t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);else if(t.tag===\\\"?\\\"){for(t.result!==null&&t.kind!==\\\"scalar\\\"&&Qt(t,'unacceptable node kind for !\u003C?> tag; it should be \\\"scalar\\\", not \\\"'+t.kind+'\\\"'),f=0,p=t.implicitTypes.length;f\u003Cp;f+=1)if(b=t.implicitTypes[f],b.resolve(t.result)){t.result=b.construct(t.result),t.tag=b.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else if(t.tag!==\\\"!\\\"){if(Pi.call(t.typeMap[t.kind||\\\"fallback\\\"],t.tag))b=t.typeMap[t.kind||\\\"fallback\\\"][t.tag];else for(b=null,g=t.typeMap.multi[t.kind||\\\"fallback\\\"],f=0,p=g.length;f\u003Cp;f+=1)if(t.tag.slice(0,g[f].tag.length)===g[f].tag){b=g[f];break}b||Qt(t,\\\"unknown tag !\u003C\\\"+t.tag+\\\">\\\"),t.result!==null&&b.kind!==t.kind&&Qt(t,\\\"unacceptable node kind for !\u003C\\\"+t.tag+'> tag; it should be \\\"'+b.kind+'\\\", not \\\"'+t.kind+'\\\"'),b.resolve(t.result,t.tag)?(t.result=b.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Qt(t,\\\"cannot resolve a node with !\u003C\\\"+t.tag+\\\"> explicit tag\\\")}return t.listener!==null&&t.listener(\\\"close\\\",t),t.tag!==null||t.anchor!==null||d}function h7(t){var e=t.position,r,n,i,s=!1,a;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(a=t.input.charCodeAt(t.position))!==0&&(tr(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||a!==37));){for(s=!0,a=t.input.charCodeAt(++t.position),r=t.position;a!==0&&!Fr(a);)a=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length\u003C1&&Qt(t,\\\"directive name must not be less than one character in length\\\");a!==0;){for(;fs(a);)a=t.input.charCodeAt(++t.position);if(a===35){do a=t.input.charCodeAt(++t.position);while(a!==0&&!Vn(a));break}if(Vn(a))break;for(r=t.position;a!==0&&!Fr(a);)a=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}a!==0&&c1(t),Pi.call(Tp,n)?Tp[n](t,n,i):hc(t,'unknown document directive \\\"'+n+'\\\"')}if(tr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,tr(t,!0,-1)):s&&Qt(t,\\\"directives end mark is expected\\\"),sa(t,t.lineIndent-1,uc,!1,!0),tr(t,!0,-1),t.checkLineBreaks&&Xw.test(t.input.slice(e,t.position))&&hc(t,\\\"non-ASCII line breaks are interpreted as content\\\"),t.documents.push(t.result),t.position===t.lineStart&&dc(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,tr(t,!0,-1));return}if(t.position\u003Ct.length-1)Qt(t,\\\"end of the stream or a document separator is expected\\\");else return}function Sp(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`\\n`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new e7(t,e),n=t.indexOf(\\\"\\\\0\\\");for(n!==-1&&(r.position=n,Qt(r,\\\"null byte is not allowed in input\\\")),r.input+=\\\"\\\\0\\\";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position\u003Cr.length-1;)h7(r);return r.documents}function d7(t,e,r){e!==null&&typeof e==\\\"object\\\"&&typeof r>\\\"u\\\"&&(r=e,e=null);var n=Sp(t,r);if(typeof e!=\\\"function\\\")return n;for(var i=0,s=n.length;i\u003Cs;i+=1)e(n[i])}function f7(t,e){var r=Sp(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new li(\\\"expected a single document in the stream, but found more\\\")}}var p7=d7,g7=f7,y7={loadAll:p7,load:g7},m7=hp,b7=y7.load;const Ap=/^-{3}\\\\s*[\\\\n\\\\r](.*?)[\\\\n\\\\r]-{3}\\\\s*[\\\\n\\\\r]+/s;function _7(t,e){var n;const r=t.match(Ap);if(r){const i=b7(r[1],{schema:m7});return i!=null&&i.title&&((n=e.setDiagramTitle)==null||n.call(e,i.title)),t.slice(r[0].length)}else return t}const x7=/%{2}{\\\\s*(?:(\\\\w+)\\\\s*:|(\\\\w+))\\\\s*(?:(\\\\w+)|((?:(?!}%{2}).|\\\\r?\\\\n)*))?\\\\s*(?:}%{2})?/gi,v7=/\\\\s*%%.*\\\\n/gm,fc={},h1=function(t,e){t=t.replace(Ap,\\\"\\\").replace(x7,\\\"\\\").replace(v7,`\\n`);for(const[r,{detector:n}]of Object.entries(fc))if(n(t,e))return r;throw new Error(`No diagram type detected for text: ${t}`)},Lp=(t,e,r)=>{if(fc[t])throw new Error(`Detector with key ${t} already exists`);fc[t]={detector:e,loader:r},B.debug(`Detector with key ${t} added${r?\\\" with loader\\\":\\\"\\\"}`)},k7=t=>fc[t].loader,d1=function(t,e,r){const{depth:n,clobber:i}=Object.assign({depth:2,clobber:!1},r);return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(s=>d1(t,s,r)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(s=>{t.includes(s)||t.push(s)}),t):t===void 0||n\u003C=0?t!=null&&typeof t==\\\"object\\\"&&typeof e==\\\"object\\\"?Object.assign(t,e):e:(e!==void 0&&typeof t==\\\"object\\\"&&typeof e==\\\"object\\\"&&Object.keys(e).forEach(s=>{typeof e[s]==\\\"object\\\"&&(t[s]===void 0||typeof t[s]==\\\"object\\\")?(t[s]===void 0&&(t[s]=Array.isArray(e[s])?[]:{}),t[s]=d1(t[s],e[s],{depth:n-1,clobber:i})):(i||typeof t[s]!=\\\"object\\\"&&typeof e[s]!=\\\"object\\\")&&(t[s]=e[s])}),t)},gr=d1;var w7=typeof global==\\\"object\\\"&&global&&global.Object===Object&&global;const Dp=w7;var T7=typeof self==\\\"object\\\"&&self&&self.Object===Object&&self,E7=Dp||T7||Function(\\\"return this\\\")();const mn=E7;var C7=mn.Symbol;const en=C7;var Mp=Object.prototype,S7=Mp.hasOwnProperty,A7=Mp.toString,lo=en?en.toStringTag:void 0;function L7(t){var e=S7.call(t,lo),r=t[lo];try{t[lo]=void 0;var n=!0}catch{}var i=A7.call(t);return n&&(e?t[lo]=r:delete t[lo]),i}var D7=Object.prototype,M7=D7.toString;function N7(t){return M7.call(t)}var B7=\\\"[object Null]\\\",I7=\\\"[object Undefined]\\\",Np=en?en.toStringTag:void 0;function ps(t){return t==null?t===void 0?I7:B7:Np&&Np in Object(t)?L7(t):N7(t)}function Gr(t){var e=typeof t;return t!=null&&(e==\\\"object\\\"||e==\\\"function\\\")}var O7=\\\"[object AsyncFunction]\\\",R7=\\\"[object Function]\\\",F7=\\\"[object GeneratorFunction]\\\",P7=\\\"[object Proxy]\\\";function aa(t){if(!Gr(t))return!1;var e=ps(t);return e==R7||e==F7||e==O7||e==P7}var Y7=mn[\\\"__core-js_shared__\\\"];const f1=Y7;var Bp=function(){var t=/[^.]+$/.exec(f1&&f1.keys&&f1.keys.IE_PROTO||\\\"\\\");return t?\\\"Symbol(src)_1.\\\"+t:\\\"\\\"}();function V7(t){return!!Bp&&Bp in t}var U7=Function.prototype,z7=U7.toString;function gs(t){if(t!=null){try{return z7.call(t)}catch{}try{return t+\\\"\\\"}catch{}}return\\\"\\\"}var W7=/[\\\\\\\\^$.*+?()[\\\\]{}|]/g,H7=/^\\\\[object .+?Constructor\\\\]$/,G7=Function.prototype,q7=Object.prototype,j7=G7.toString,$7=q7.hasOwnProperty,X7=RegExp(\\\"^\\\"+j7.call($7).replace(W7,\\\"\\\\\\\\$&\\\").replace(/hasOwnProperty|(function).*?(?=\\\\\\\\\\\\()| for .+?(?=\\\\\\\\\\\\])/g,\\\"$1.*?\\\")+\\\"$\\\");function K7(t){if(!Gr(t)||V7(t))return!1;var e=aa(t)?X7:H7;return e.test(gs(t))}function Z7(t,e){return t==null?void 0:t[e]}function ys(t,e){var r=Z7(t,e);return K7(r)?r:void 0}var Q7=ys(Object,\\\"create\\\");const co=Q7;function J7(){this.__data__=co?co(null):{},this.size=0}function tT(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var eT=\\\"__lodash_hash_undefined__\\\",rT=Object.prototype,nT=rT.hasOwnProperty;function iT(t){var e=this.__data__;if(co){var r=e[t];return r===eT?void 0:r}return nT.call(e,t)?e[t]:void 0}var sT=Object.prototype,aT=sT.hasOwnProperty;function oT(t){var e=this.__data__;return co?e[t]!==void 0:aT.call(e,t)}var lT=\\\"__lodash_hash_undefined__\\\";function cT(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=co&&e===void 0?lT:e,this}function ms(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e\u003Cr;){var n=t[e];this.set(n[0],n[1])}}ms.prototype.clear=J7,ms.prototype.delete=tT,ms.prototype.get=iT,ms.prototype.has=oT,ms.prototype.set=cT;function uT(){this.__data__=[],this.size=0}function oa(t,e){return t===e||t!==t&&e!==e}function pc(t,e){for(var r=t.length;r--;)if(oa(t[r][0],e))return r;return-1}var hT=Array.prototype,dT=hT.splice;function fT(t){var e=this.__data__,r=pc(e,t);if(r\u003C0)return!1;var n=e.length-1;return r==n?e.pop():dT.call(e,r,1),--this.size,!0}function pT(t){var e=this.__data__,r=pc(e,t);return r\u003C0?void 0:e[r][1]}function gT(t){return pc(this.__data__,t)>-1}function yT(t,e){var r=this.__data__,n=pc(r,t);return n\u003C0?(++this.size,r.push([t,e])):r[n][1]=e,this}function ci(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e\u003Cr;){var n=t[e];this.set(n[0],n[1])}}ci.prototype.clear=uT,ci.prototype.delete=fT,ci.prototype.get=pT,ci.prototype.has=gT,ci.prototype.set=yT;var mT=ys(mn,\\\"Map\\\");const uo=mT;function bT(){this.size=0,this.__data__={hash:new ms,map:new(uo||ci),string:new ms}}function _T(t){var e=typeof t;return e==\\\"string\\\"||e==\\\"number\\\"||e==\\\"symbol\\\"||e==\\\"boolean\\\"?t!==\\\"__proto__\\\":t===null}function gc(t,e){var r=t.__data__;return _T(e)?r[typeof e==\\\"string\\\"?\\\"string\\\":\\\"hash\\\"]:r.map}function xT(t){var e=gc(this,t).delete(t);return this.size-=e?1:0,e}function vT(t){return gc(this,t).get(t)}function kT(t){return gc(this,t).has(t)}function wT(t,e){var r=gc(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}function ui(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e\u003Cr;){var n=t[e];this.set(n[0],n[1])}}ui.prototype.clear=bT,ui.prototype.delete=xT,ui.prototype.get=vT,ui.prototype.has=kT,ui.prototype.set=wT;var TT=\\\"Expected a function\\\";function la(t,e){if(typeof t!=\\\"function\\\"||e!=null&&typeof e!=\\\"function\\\")throw new TypeError(TT);var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],s=r.cache;if(s.has(i))return s.get(i);var a=t.apply(this,n);return r.cache=s.set(i,a)||s,a};return r.cache=new(la.Cache||ui),r}la.Cache=ui;const ET={curveBasis:ta,curveBasisClosed:Ek,curveBasisOpen:Ck,curveLinear:Hr,curveLinearClosed:Sk,curveMonotoneX:Ak,curveMonotoneY:Lk,curveNatural:Dk,curveStep:Mk,curveStepAfter:Bk,curveStepBefore:Nk},p1=/%{2}{\\\\s*(?:(\\\\w+)\\\\s*:|(\\\\w+))\\\\s*(?:(\\\\w+)|((?:(?!}%{2}).|\\\\r?\\\\n)*))?\\\\s*(?:}%{2})?/gi,CT=/\\\\s*(?:(\\\\w+)(?=:):|(\\\\w+))\\\\s*(?:(\\\\w+)|((?:(?!}%{2}).|\\\\r?\\\\n)*))?\\\\s*(?:}%{2})?/gi,ST=function(t,e){const r=Ip(t,/(?:init\\\\b)|(?:initialize\\\\b)/);let n={};if(Array.isArray(r)){const i=r.map(s=>s.args);bs(i),n=gr(n,[...i])}else n=r.args;if(n){let i=h1(t,e);[\\\"config\\\"].forEach(s=>{n[s]!==void 0&&(i===\\\"flowchart-v2\\\"&&(i=\\\"flowchart\\\"),n[i]=n[s],delete n[s])})}return n},Ip=function(t,e=null){try{const r=new RegExp(`[%]{2}(?![{]${CT.source})(?=[}][%]{2}).*\\n`,\\\"ig\\\");t=t.trim().replace(r,\\\"\\\").replace(/'/gm,'\\\"'),B.debug(`Detecting diagram directive${e!==null?\\\" type:\\\"+e:\\\"\\\"} based on the text:${t}`);let n;const i=[];for(;(n=p1.exec(t))!==null;)if(n.index===p1.lastIndex&&p1.lastIndex++,n&&!e||e&&n[1]&&n[1].match(e)||e&&n[2]&&n[2].match(e)){const s=n[1]?n[1]:n[2],a=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:s,args:a})}return i.length===0&&i.push({type:t,args:null}),i.length===1?i[0]:i}catch(r){return B.error(`ERROR: ${r.message} - Unable to parse directive\\n ${e!==null?\\\" type:\\\"+e:\\\"\\\"} based on the text:${t}`),{type:null,args:null}}},AT=function(t,e){for(const[r,n]of e.entries())if(n.match(t))return r;return-1};function bn(t,e){if(!t)return e;const r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return ET[r]||e}function LT(t,e){const r=t.trim();if(r)return e.securityLevel!==\\\"loose\\\"?ti(r):r}const DT=(t,...e)=>{const r=t.split(\\\".\\\"),n=r.length-1,i=r[n];let s=window;for(let a=0;a\u003Cn;a++)if(s=s[r[a]],!s)return;s[i](...e)};function yc(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function MT(t){let e,r=0;t.forEach(s=>{r+=yc(s,e),e=s});let n=r/2,i;return e=void 0,t.forEach(s=>{if(e&&!i){const a=yc(s,e);if(a\u003Cn)n-=a;else{const o=n/a;o\u003C=0&&(i=e),o>=1&&(i={x:s.x,y:s.y}),o>0&&o\u003C1&&(i={x:(1-o)*e.x+o*s.x,y:(1-o)*e.y+o*s.y})}}e=s}),i}function NT(t){return t.length===1?t[0]:MT(t)}const BT=(t,e,r)=>{let n;B.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let s=25,a;n=void 0,e.forEach(d=>{if(n&&!a){const f=yc(d,n);if(f\u003Cs)s-=f;else{const p=s/f;p\u003C=0&&(a=n),p>=1&&(a={x:d.x,y:d.y}),p>0&&p\u003C1&&(a={x:(1-p)*n.x+p*d.x,y:(1-p)*n.y+p*d.y})}}n=d});const o=t?10:5,l=Math.atan2(e[0].y-a.y,e[0].x-a.x),u={x:0,y:0};return u.x=Math.sin(l)*o+(e[0].x+a.x)/2,u.y=-Math.cos(l)*o+(e[0].y+a.y)/2,u};function IT(t,e,r){let n=JSON.parse(JSON.stringify(r)),i;B.info(\\\"our points\\\",n),e!==\\\"start_left\\\"&&e!==\\\"start_right\\\"&&(n=n.reverse()),n.forEach(f=>{i=f});let a=25+t,o;i=void 0,n.forEach(f=>{if(i&&!o){const p=yc(f,i);if(p\u003Ca)a-=p;else{const g=a/p;g\u003C=0&&(o=i),g>=1&&(o={x:f.x,y:f.y}),g>0&&g\u003C1&&(o={x:(1-g)*i.x+g*f.x,y:(1-g)*i.y+g*f.y})}}i=f});const l=10+t*.5,u=Math.atan2(n[0].y-o.y,n[0].x-o.x),d={x:0,y:0};return d.x=Math.sin(u)*l+(n[0].x+o.x)/2,d.y=-Math.cos(u)*l+(n[0].y+o.y)/2,e===\\\"start_left\\\"&&(d.x=Math.sin(u+Math.PI)*l+(n[0].x+o.x)/2,d.y=-Math.cos(u+Math.PI)*l+(n[0].y+o.y)/2),e===\\\"end_right\\\"&&(d.x=Math.sin(u-Math.PI)*l+(n[0].x+o.x)/2-5,d.y=-Math.cos(u-Math.PI)*l+(n[0].y+o.y)/2-5),e===\\\"end_left\\\"&&(d.x=Math.sin(u)*l+(n[0].x+o.x)/2-5,d.y=-Math.cos(u)*l+(n[0].y+o.y)/2-5),d}function Vi(t){let e=\\\"\\\",r=\\\"\\\";for(const n of t)n!==void 0&&(n.startsWith(\\\"color:\\\")||n.startsWith(\\\"text-align:\\\")?r=r+n+\\\";\\\":e=e+n+\\\";\\\");return{style:e,labelStyle:r}}let Op=0;const Rp=()=>(Op++,\\\"id-\\\"+Math.random().toString(36).substr(2,12)+\\\"-\\\"+Op);function OT(t){let e=\\\"\\\";const r=\\\"0123456789abcdef\\\",n=r.length;for(let i=0;i\u003Ct;i++)e+=r.charAt(Math.floor(Math.random()*n));return e}const Fp=t=>OT(t.length),RT=function(){return{x:0,y:0,fill:void 0,anchor:\\\"start\\\",style:\\\"#666\\\",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0}},FT=function(t,e){const r=e.text.replace(he.lineBreakRegex,\\\" \\\"),n=t.append(\\\"text\\\");n.attr(\\\"x\\\",e.x),n.attr(\\\"y\\\",e.y),n.style(\\\"text-anchor\\\",e.anchor),n.style(\\\"font-family\\\",e.fontFamily),n.style(\\\"font-size\\\",e.fontSize),n.style(\\\"font-weight\\\",e.fontWeight),n.attr(\\\"fill\\\",e.fill),e.class!==void 0&&n.attr(\\\"class\\\",e.class);const i=n.append(\\\"tspan\\\");return i.attr(\\\"x\\\",e.x+e.textMargin*2),i.attr(\\\"fill\\\",e.fill),i.text(r),n},Pp=la((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:\\\"Arial\\\",joinWith:\\\"\u003Cbr/>\\\"},r),he.lineBreakRegex.test(t)))return t;const n=t.split(\\\" \\\"),i=[];let s=\\\"\\\";return n.forEach((a,o)=>{const l=Un(`${a} `,r),u=Un(s,r);if(l>e){const{hyphenatedStrings:p,remainingWord:g}=PT(a,e,\\\"-\\\",r);i.push(s,...p),s=g}else u+l>=e?(i.push(s),s=a):s=[s,a].filter(Boolean).join(\\\" \\\");o+1===n.length&&i.push(s)}),i.filter(a=>a!==\\\"\\\").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),PT=la((t,e,r=\\\"-\\\",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:\\\"Arial\\\",margin:0},n);const i=[...t],s=[];let a=\\\"\\\";return i.forEach((o,l)=>{const u=`${a}${o}`;if(Un(u,n)>=e){const f=l+1,p=i.length===f,g=`${u}${r}`;s.push(p?u:g),a=\\\"\\\"}else a=u}),{hyphenatedStrings:s,remainingWord:a}},(t,e,r=\\\"-\\\",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);function g1(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:\\\"Arial\\\",margin:15},e),y1(t,e).height}function Un(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:\\\"Arial\\\"},e),y1(t,e).width}const y1=la((t,e)=>{e=Object.assign({fontSize:12,fontWeight:400,fontFamily:\\\"Arial\\\"},e);const{fontSize:r,fontFamily:n,fontWeight:i}=e;if(!t)return{width:0,height:0};const s=[\\\"sans-serif\\\",n],a=t.split(he.lineBreakRegex),o=[],l=St(\\\"body\\\");if(!l.remove)return{width:0,height:0,lineHeight:0};const u=l.append(\\\"svg\\\");for(const f of s){let p=0;const g={width:0,height:0,lineHeight:0};for(const b of a){const k=RT();k.text=b;const T=FT(u,k).style(\\\"font-size\\\",r).style(\\\"font-weight\\\",i).style(\\\"font-family\\\",f),L=(T._groups||T)[0][0].getBBox();g.width=Math.round(Math.max(g.width,L.width)),p=Math.round(L.height),g.height+=p,g.lineHeight=Math.round(Math.max(g.lineHeight,p))}o.push(g)}u.remove();const d=isNaN(o[1].height)||isNaN(o[1].width)||isNaN(o[1].lineHeight)||o[0].height>o[1].height&&o[0].width>o[1].width&&o[0].lineHeight>o[1].lineHeight?0:1;return o[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),YT=class{constructor(e,r){this.deterministic=e,this.seed=r,this.count=r?r.length:0}next(){return this.deterministic?this.count++:Date.now()}};let mc;const VT=function(t){return mc=mc||document.createElement(\\\"div\\\"),t=escape(t).replace(/%26/g,\\\"&\\\").replace(/%23/g,\\\"#\\\").replace(/%3B/g,\\\";\\\"),mc.innerHTML=t,unescape(mc.textContent)},bs=t=>{if(B.debug(\\\"directiveSanitizer called with\\\",t),typeof t==\\\"object\\\"&&(t.length?t.forEach(e=>bs(e)):Object.keys(t).forEach(e=>{B.debug(\\\"Checking key\\\",e),e.startsWith(\\\"__\\\")&&(B.debug(\\\"sanitize deleting __ option\\\",e),delete t[e]),e.includes(\\\"proto\\\")&&(B.debug(\\\"sanitize deleting proto option\\\",e),delete t[e]),e.includes(\\\"constr\\\")&&(B.debug(\\\"sanitize deleting constr option\\\",e),delete t[e]),e.includes(\\\"themeCSS\\\")&&(B.debug(\\\"sanitizing themeCss option\\\"),t[e]=bc(t[e])),e.includes(\\\"fontFamily\\\")&&(B.debug(\\\"sanitizing fontFamily option\\\"),t[e]=bc(t[e])),e.includes(\\\"altFontFamily\\\")&&(B.debug(\\\"sanitizing altFontFamily option\\\"),t[e]=bc(t[e])),A8.includes(e)?typeof t[e]==\\\"object\\\"&&(B.debug(\\\"sanitize deleting object\\\",e),bs(t[e])):(B.debug(\\\"sanitize deleting option\\\",e),delete t[e])})),t.themeVariables){const e=Object.keys(t.themeVariables);for(const r of e){const n=t.themeVariables[r];n&&n.match&&!n.match(/^[\\\\d \\\"#%(),.;A-Za-z]+$/)&&(t.themeVariables[r]=\\\"\\\")}}B.debug(\\\"After sanitization\\\",t)},bc=t=>{let e=0,r=0;for(const n of t){if(e\u003Cr)return\\\"{ /* ERROR: Unbalanced CSS */ }\\\";n===\\\"{\\\"?e++:n===\\\"}\\\"&&r++}return e!==r?\\\"{ /* ERROR: Unbalanced CSS */ }\\\":t};function m1(t){return\\\"str\\\"in t}function UT(t){return t instanceof Error?t.message:String(t)}const ge={assignWithDepth:gr,wrapLabel:Pp,calculateTextHeight:g1,calculateTextWidth:Un,calculateTextDimensions:y1,detectInit:ST,detectDirective:Ip,isSubstringInArray:AT,interpolateToCurve:bn,calcLabelPosition:NT,calcCardinalityPosition:BT,calcTerminalLabelPosition:IT,formatUrl:LT,getStylesFromArray:Vi,generateId:Rp,random:Fp,runFunc:DT,entityDecode:VT,initIdGenerator:YT,directiveSanitizer:bs,sanitizeCss:bc,insertTitle:(t,e,r,n)=>{if(!n)return;const i=t.node().getBBox();t.append(\\\"text\\\").text(n).attr(\\\"x\\\",i.x+i.width/2).attr(\\\"y\\\",-r).attr(\\\"class\\\",e)}};var Yp=\\\"comm\\\",Vp=\\\"rule\\\",Up=\\\"decl\\\",zT=\\\"@import\\\",WT=\\\"@keyframes\\\",HT=Math.abs,b1=String.fromCharCode;function zp(t){return t.trim()}function _1(t,e,r){return t.replace(e,r)}function GT(t,e){return t.indexOf(e)}function _c(t,e){return t.charCodeAt(e)|0}function ho(t,e,r){return t.slice(e,r)}function Ui(t){return t.length}function Wp(t){return t.length}function xc(t,e){return e.push(t),t}var vc=1,ca=1,Hp=0,rn=0,er=0,ua=\\\"\\\";function x1(t,e,r,n,i,s,a){return{value:t,root:e,parent:r,type:n,props:i,children:s,line:vc,column:ca,length:a,return:\\\"\\\"}}function qT(){return er}function jT(){return er=rn>0?_c(ua,--rn):0,ca--,er===10&&(ca=1,vc--),er}function _n(){return er=rn\u003CHp?_c(ua,rn++):0,ca++,er===10&&(ca=1,vc++),er}function _s(){return _c(ua,rn)}function kc(){return rn}function wc(t,e){return ho(ua,t,e)}function v1(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function $T(t){return vc=ca=1,Hp=Ui(ua=t),rn=0,[]}function XT(t){return ua=\\\"\\\",t}function k1(t){return zp(wc(rn-1,w1(t===91?t+2:t===40?t+1:t)))}function KT(t){for(;(er=_s())&&er\u003C33;)_n();return v1(t)>2||v1(er)>3?\\\"\\\":\\\" \\\"}function ZT(t,e){for(;--e&&_n()&&!(er\u003C48||er>102||er>57&&er\u003C65||er>70&&er\u003C97););return wc(t,kc()+(e\u003C6&&_s()==32&&_n()==32))}function w1(t){for(;_n();)switch(er){case t:return rn;case 34:case 39:t!==34&&t!==39&&w1(er);break;case 40:t===41&&w1(t);break;case 92:_n();break}return rn}function QT(t,e){for(;_n()&&t+er!==47+10;)if(t+er===42+42&&_s()===47)break;return\\\"/*\\\"+wc(e,rn-1)+\\\"*\\\"+b1(t===47?t:_n())}function JT(t){for(;!v1(_s());)_n();return wc(t,rn)}function tE(t){return XT(Tc(\\\"\\\",null,null,null,[\\\"\\\"],t=$T(t),0,[0],t))}function Tc(t,e,r,n,i,s,a,o,l){for(var u=0,d=0,f=a,p=0,g=0,b=0,k=1,T=1,L=1,E=0,I=\\\"\\\",V=i,H=s,G=n,Y=I;T;)switch(b=E,E=_n()){case 40:if(b!=108&&_c(Y,f-1)==58){GT(Y+=_1(k1(E),\\\"&\\\",\\\"&\\\\f\\\"),\\\"&\\\\f\\\")!=-1&&(L=-1);break}case 34:case 39:case 91:Y+=k1(E);break;case 9:case 10:case 13:case 32:Y+=KT(b);break;case 92:Y+=ZT(kc()-1,7);continue;case 47:switch(_s()){case 42:case 47:xc(eE(QT(_n(),kc()),e,r),l);break;default:Y+=\\\"/\\\"}break;case 123*k:o[u++]=Ui(Y)*L;case 125*k:case 59:case 0:switch(E){case 0:case 125:T=0;case 59+d:g>0&&Ui(Y)-f&&xc(g>32?qp(Y+\\\";\\\",n,r,f-1):qp(_1(Y,\\\" \\\",\\\"\\\")+\\\";\\\",n,r,f-2),l);break;case 59:Y+=\\\";\\\";default:if(xc(G=Gp(Y,e,r,u,d,i,o,I,V=[],H=[],f),s),E===123)if(d===0)Tc(Y,e,G,G,V,s,f,o,H);else switch(p){case 100:case 109:case 115:Tc(t,G,G,n&&xc(Gp(t,G,G,0,0,i,o,I,i,V=[],f),H),i,H,f,o,n?V:H);break;default:Tc(Y,G,G,G,[\\\"\\\"],H,0,o,H)}}u=d=g=0,k=L=1,I=Y=\\\"\\\",f=a;break;case 58:f=1+Ui(Y),g=b;default:if(k\u003C1){if(E==123)--k;else if(E==125&&k++==0&&jT()==125)continue}switch(Y+=b1(E),E*k){case 38:L=d>0?1:(Y+=\\\"\\\\f\\\",-1);break;case 44:o[u++]=(Ui(Y)-1)*L,L=1;break;case 64:_s()===45&&(Y+=k1(_n())),p=_s(),d=f=Ui(I=Y+=JT(kc())),E++;break;case 45:b===45&&Ui(Y)==2&&(k=0)}}return s}function Gp(t,e,r,n,i,s,a,o,l,u,d){for(var f=i-1,p=i===0?s:[\\\"\\\"],g=Wp(p),b=0,k=0,T=0;b\u003Cn;++b)for(var L=0,E=ho(t,f+1,f=HT(k=a[b])),I=t;L\u003Cg;++L)(I=zp(k>0?p[L]+\\\" \\\"+E:_1(E,/&\\\\f/g,p[L])))&&(l[T++]=I);return x1(t,e,r,i===0?Vp:o,l,u,d)}function eE(t,e,r){return x1(t,e,r,Yp,b1(qT()),ho(t,2,-2),0)}function qp(t,e,r,n){return x1(t,e,r,Up,ho(t,0,n),ho(t,n+1,-1),n)}function T1(t,e){for(var r=\\\"\\\",n=Wp(t),i=0;i\u003Cn;i++)r+=e(t[i],i,t,e)||\\\"\\\";return r}function rE(t,e,r,n){switch(t.type){case zT:case Up:return t.return=t.return||t.value;case Yp:return\\\"\\\";case WT:return t.return=t.value+\\\"{\\\"+T1(t.children,n)+\\\"}\\\";case Vp:t.value=t.props.join(\\\",\\\")}return Ui(r=T1(t.children,n))?t.return=t.value+\\\"{\\\"+r+\\\"}\\\":\\\"\\\"}const Ec={name:\\\"mermaid\\\",version:\\\"9.3.0\\\",description:\\\"Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\\\",main:\\\"./dist/mermaid.min.js\\\",module:\\\"./dist/mermaid.core.mjs\\\",types:\\\"./dist/mermaid.d.ts\\\",exports:{\\\".\\\":{require:\\\"./dist/mermaid.min.js\\\",import:\\\"./dist/mermaid.core.mjs\\\",types:\\\"./dist/mermaid.d.ts\\\"},\\\"./*\\\":\\\"./*\\\"},keywords:[\\\"diagram\\\",\\\"markdown\\\",\\\"flowchart\\\",\\\"sequence diagram\\\",\\\"gantt\\\",\\\"class diagram\\\",\\\"git graph\\\"],scripts:{clean:\\\"rimraf dist\\\",\\\"docs:code\\\":\\\"typedoc src/defaultConfig.ts src/config.ts src/mermaidAPI.ts && prettier --write ./src/docs/config/setup\\\",\\\"docs:build\\\":\\\"rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts\\\",\\\"docs:verify\\\":\\\"pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts --verify\\\",\\\"docs:pre:vitepress\\\":\\\"rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress\\\",\\\"docs:build:vitepress\\\":\\\"pnpm docs:pre:vitepress && vitepress build src/vitepress\\\",\\\"docs:dev\\\":'pnpm docs:pre:vitepress && concurrently \\\"vitepress dev src/vitepress\\\" \\\"ts-node-esm src/docs.mts --watch --vitepress\\\"',\\\"docs:serve\\\":\\\"pnpm docs:build:vitepress && vitepress serve src/vitepress\\\",\\\"docs:spellcheck\\\":'cspell --config ../../cSpell.json \\\"src/docs/**/*.md\\\"',release:\\\"pnpm build\\\",prepublishOnly:\\\"pnpm -w run build\\\"},repository:{type:\\\"git\\\",url:\\\"https://github.com/mermaid-js/mermaid\\\"},author:\\\"Knut Sveidqvist\\\",license:\\\"MIT\\\",standard:{ignore:[\\\"**/parser/*.js\\\",\\\"dist/**/*.js\\\",\\\"cypress/**/*.js\\\"],globals:[\\\"page\\\"]},dependencies:{\\\"@braintree/sanitize-url\\\":\\\"^6.0.0\\\",d3:\\\"^7.0.0\\\",\\\"dagre-d3-es\\\":\\\"7.0.6\\\",dompurify:\\\"2.4.1\\\",khroma:\\\"^2.0.0\\\",\\\"lodash-es\\\":\\\"^4.17.21\\\",\\\"moment-mini\\\":\\\"^2.24.0\\\",\\\"non-layered-tidy-tree-layout\\\":\\\"^2.0.2\\\",stylis:\\\"^4.1.2\\\",uuid:\\\"^9.0.0\\\"},devDependencies:{\\\"@types/d3\\\":\\\"^7.4.0\\\",\\\"@types/dompurify\\\":\\\"^2.4.0\\\",\\\"@types/jsdom\\\":\\\"^20.0.1\\\",\\\"@types/lodash-es\\\":\\\"^4.17.6\\\",\\\"@types/micromatch\\\":\\\"^4.0.2\\\",\\\"@types/prettier\\\":\\\"^2.7.1\\\",\\\"@types/stylis\\\":\\\"^4.0.2\\\",\\\"@types/uuid\\\":\\\"^8.3.4\\\",\\\"@typescript-eslint/eslint-plugin\\\":\\\"^5.42.1\\\",\\\"@typescript-eslint/parser\\\":\\\"^5.42.1\\\",chokidar:\\\"^3.5.3\\\",concurrently:\\\"^7.5.0\\\",coveralls:\\\"^3.1.1\\\",cspell:\\\"^6.14.3\\\",globby:\\\"^13.1.2\\\",jison:\\\"^0.4.18\\\",\\\"js-base64\\\":\\\"^3.7.2\\\",jsdom:\\\"^20.0.2\\\",micromatch:\\\"^4.0.5\\\",moment:\\\"^2.29.4\\\",\\\"path-browserify\\\":\\\"^1.0.1\\\",prettier:\\\"^2.7.1\\\",remark:\\\"^14.0.2\\\",rimraf:\\\"^3.0.2\\\",\\\"start-server-and-test\\\":\\\"^1.14.0\\\",typedoc:\\\"^0.23.18\\\",\\\"typedoc-plugin-markdown\\\":\\\"^3.13.6\\\",typescript:\\\"^4.8.4\\\",\\\"unist-util-flatmap\\\":\\\"^1.0.0\\\",vitepress:\\\"^1.0.0-alpha.28\\\",\\\"vitepress-plugin-search\\\":\\\"^1.0.4-alpha.15\\\"},files:[\\\"dist\\\",\\\"README.md\\\"],sideEffects:[\\\"**/*.css\\\",\\\"**/*.scss\\\"]},ha=Object.freeze(L8);let Pr=gr({},ha),jp,da=[],fo=gr({},ha);const Cc=(t,e)=>{let r=gr({},t),n={};for(const i of e)Kp(i),n=gr(n,i);if(r=gr(r,n),n.theme&&n.theme in oi){const i=gr({},jp),s=gr(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in oi&&(r.themeVariables=oi[r.theme].getThemeVariables(s))}return fo=r,Jp(fo),fo},nE=t=>(Pr=gr({},ha),Pr=gr(Pr,t),t.theme&&oi[t.theme]&&(Pr.themeVariables=oi[t.theme].getThemeVariables(t.themeVariables)),Cc(Pr,da),Pr),iE=t=>{jp=gr({},t)},sE=t=>(Pr=gr(Pr,t),Cc(Pr,da),Pr),$p=()=>gr({},Pr),Xp=t=>(Jp(t),gr(fo,t),$()),$=()=>gr({},fo),Kp=t=>{var e;[\\\"secure\\\",...(e=Pr.secure)!=null?e:[]].forEach(r=>{t[r]!==void 0&&(B.debug(`Denied attempt to modify a secure key ${r}`,t[r]),delete t[r])}),Object.keys(t).forEach(r=>{r.indexOf(\\\"__\\\")===0&&delete t[r]}),Object.keys(t).forEach(r=>{typeof t[r]==\\\"string\\\"&&(t[r].includes(\\\"\u003C\\\")||t[r].includes(\\\">\\\")||t[r].includes(\\\"url(data:\\\"))&&delete t[r],typeof t[r]==\\\"object\\\"&&Kp(t[r])})},E1=t=>{t.fontFamily&&(t.themeVariables?t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily}):t.themeVariables={fontFamily:t.fontFamily}),da.push(t),Cc(Pr,da)},po=(t=Pr)=>{da=[],Cc(t,da)};var Zp=(t=>(t.LAZY_LOAD_DEPRECATED=\\\"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.\\\",t))(Zp||{});const Qp={},aE=t=>{Qp[t]||(B.warn(Zp[t]),Qp[t]=!0)},Jp=t=>{!t||(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&aE(\\\"LAZY_LOAD_DEPRECATED\\\")},oE=function(t,e){for(let r of e)t.attr(r[0],r[1])},lE=function(t,e,r){let n=new Map;return r?(n.set(\\\"width\\\",\\\"100%\\\"),n.set(\\\"style\\\",`max-width: ${e}px;`)):(n.set(\\\"height\\\",t),n.set(\\\"width\\\",e)),n},xn=function(t,e,r,n){const i=lE(e,r,n);oE(t,i)},Sc=function(t,e,r,n){const i=e.node().getBBox(),s=i.width,a=i.height;B.info(`SVG bounds: ${s}x${a}`,i);let o=0,l=0;B.info(`Graph bounds: ${o}x${l}`,t),o=s+r*2,l=a+r*2,B.info(`Calculated bounds: ${o}x${l}`),xn(e,l,o,n);const u=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr(\\\"viewBox\\\",u)},go=t=>`g.classGroup text {\\n fill: ${t.nodeBorder};\\n fill: ${t.classText};\\n stroke: none;\\n font-family: ${t.fontFamily};\\n font-size: 10px;\\n\\n .title {\\n font-weight: bolder;\\n }\\n\\n}\\n\\n.nodeLabel, .edgeLabel {\\n color: ${t.classText};\\n}\\n.edgeLabel .label rect {\\n fill: ${t.mainBkg};\\n}\\n.label text {\\n fill: ${t.classText};\\n}\\n.edgeLabel .label span {\\n background: ${t.mainBkg};\\n}\\n\\n.classTitle {\\n font-weight: bolder;\\n}\\n.node rect,\\n .node circle,\\n .node ellipse,\\n .node polygon,\\n .node path {\\n fill: ${t.mainBkg};\\n stroke: ${t.nodeBorder};\\n stroke-width: 1px;\\n }\\n\\n\\n.divider {\\n stroke: ${t.nodeBorder};\\n stroke: 1;\\n}\\n\\ng.clickable {\\n cursor: pointer;\\n}\\n\\ng.classGroup rect {\\n fill: ${t.mainBkg};\\n stroke: ${t.nodeBorder};\\n}\\n\\ng.classGroup line {\\n stroke: ${t.nodeBorder};\\n stroke-width: 1;\\n}\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: ${t.mainBkg};\\n opacity: 0.5;\\n}\\n\\n.classLabel .label {\\n fill: ${t.nodeBorder};\\n font-size: 10px;\\n}\\n\\n.relation {\\n stroke: ${t.lineColor};\\n stroke-width: 1;\\n fill: none;\\n}\\n\\n.dashed-line{\\n stroke-dasharray: 3;\\n}\\n\\n.dotted-line{\\n stroke-dasharray: 1 2;\\n}\\n\\n#compositionStart, .composition {\\n fill: ${t.lineColor} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#compositionEnd, .composition {\\n fill: ${t.lineColor} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#dependencyStart, .dependency {\\n fill: ${t.lineColor} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#dependencyStart, .dependency {\\n fill: ${t.lineColor} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#extensionStart, .extension {\\n fill: ${t.mainBkg} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#extensionEnd, .extension {\\n fill: ${t.mainBkg} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#aggregationStart, .aggregation {\\n fill: ${t.mainBkg} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#aggregationEnd, .aggregation {\\n fill: ${t.mainBkg} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#lollipopStart, .lollipop {\\n fill: ${t.mainBkg} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n#lollipopEnd, .lollipop {\\n fill: ${t.mainBkg} !important;\\n stroke: ${t.lineColor} !important;\\n stroke-width: 1;\\n}\\n\\n.edgeTerminals {\\n font-size: 11px;\\n}\\n\\n.classTitleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: ${t.textColor};\\n}\\n`,tg=t=>`\\n .entityBox {\\n fill: ${t.mainBkg};\\n stroke: ${t.nodeBorder};\\n }\\n\\n .attributeBoxOdd {\\n fill: ${t.attributeBackgroundColorOdd};\\n stroke: ${t.nodeBorder};\\n }\\n\\n .attributeBoxEven {\\n fill: ${t.attributeBackgroundColorEven};\\n stroke: ${t.nodeBorder};\\n }\\n\\n .relationshipLabelBox {\\n fill: ${t.tertiaryColor};\\n opacity: 0.7;\\n background-color: ${t.tertiaryColor};\\n rect {\\n opacity: 0.5;\\n }\\n }\\n\\n .relationshipLine {\\n stroke: ${t.lineColor};\\n }\\n\\n .entityTitleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: ${t.textColor};\\n } \\n`,eg=()=>\\\"\\\",Ac=t=>`.label {\\n font-family: ${t.fontFamily};\\n color: ${t.nodeTextColor||t.textColor};\\n }\\n .cluster-label text {\\n fill: ${t.titleColor};\\n }\\n .cluster-label span {\\n color: ${t.titleColor};\\n }\\n\\n .label text,span {\\n fill: ${t.nodeTextColor||t.textColor};\\n color: ${t.nodeTextColor||t.textColor};\\n }\\n\\n .node rect,\\n .node circle,\\n .node ellipse,\\n .node polygon,\\n .node path {\\n fill: ${t.mainBkg};\\n stroke: ${t.nodeBorder};\\n stroke-width: 1px;\\n }\\n\\n .node .label {\\n text-align: center;\\n }\\n .node.clickable {\\n cursor: pointer;\\n }\\n\\n .arrowheadPath {\\n fill: ${t.arrowheadColor};\\n }\\n\\n .edgePath .path {\\n stroke: ${t.lineColor};\\n stroke-width: 2.0px;\\n }\\n\\n .flowchart-link {\\n stroke: ${t.lineColor};\\n fill: none;\\n }\\n\\n .edgeLabel {\\n background-color: ${t.edgeLabelBackground};\\n rect {\\n opacity: 0.5;\\n background-color: ${t.edgeLabelBackground};\\n fill: ${t.edgeLabelBackground};\\n }\\n text-align: center;\\n }\\n\\n .cluster rect {\\n fill: ${t.clusterBkg};\\n stroke: ${t.clusterBorder};\\n stroke-width: 1px;\\n }\\n\\n .cluster text {\\n fill: ${t.titleColor};\\n }\\n\\n .cluster span {\\n color: ${t.titleColor};\\n }\\n /* .cluster div {\\n color: ${t.titleColor};\\n } */\\n\\n div.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: ${t.fontFamily};\\n font-size: 12px;\\n background: ${t.tertiaryColor};\\n border: 1px solid ${t.border2};\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100;\\n }\\n\\n .flowchartTitleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: ${t.textColor};\\n }\\n`,rg=t=>`\\n .mermaid-main-font {\\n font-family: \\\"trebuchet ms\\\", verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n .exclude-range {\\n fill: ${t.excludeBkgColor};\\n }\\n\\n .section {\\n stroke: none;\\n opacity: 0.2;\\n }\\n\\n .section0 {\\n fill: ${t.sectionBkgColor};\\n }\\n\\n .section2 {\\n fill: ${t.sectionBkgColor2};\\n }\\n\\n .section1,\\n .section3 {\\n fill: ${t.altSectionBkgColor};\\n opacity: 0.2;\\n }\\n\\n .sectionTitle0 {\\n fill: ${t.titleColor};\\n }\\n\\n .sectionTitle1 {\\n fill: ${t.titleColor};\\n }\\n\\n .sectionTitle2 {\\n fill: ${t.titleColor};\\n }\\n\\n .sectionTitle3 {\\n fill: ${t.titleColor};\\n }\\n\\n .sectionTitle {\\n text-anchor: start;\\n // font-size: ${t.ganttFontSize};\\n // text-height: 14px;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n\\n }\\n\\n\\n /* Grid and axis */\\n\\n .grid .tick {\\n stroke: ${t.gridColor};\\n opacity: 0.8;\\n shape-rendering: crispEdges;\\n text {\\n font-family: ${t.fontFamily};\\n fill: ${t.textColor};\\n }\\n }\\n\\n .grid path {\\n stroke-width: 0;\\n }\\n\\n\\n /* Today line */\\n\\n .today {\\n fill: none;\\n stroke: ${t.todayLineColor};\\n stroke-width: 2px;\\n }\\n\\n\\n /* Task styling */\\n\\n /* Default task */\\n\\n .task {\\n stroke-width: 2;\\n }\\n\\n .taskText {\\n text-anchor: middle;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n\\n // .taskText:not([font-size]) {\\n // font-size: ${t.ganttFontSize};\\n // }\\n\\n .taskTextOutsideRight {\\n fill: ${t.taskTextDarkColor};\\n text-anchor: start;\\n // font-size: ${t.ganttFontSize};\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n\\n }\\n\\n .taskTextOutsideLeft {\\n fill: ${t.taskTextDarkColor};\\n text-anchor: end;\\n // font-size: ${t.ganttFontSize};\\n }\\n\\n /* Special case clickable */\\n .task.clickable {\\n cursor: pointer;\\n }\\n .taskText.clickable {\\n cursor: pointer;\\n fill: ${t.taskTextClickableColor} !important;\\n font-weight: bold;\\n }\\n\\n .taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: ${t.taskTextClickableColor} !important;\\n font-weight: bold;\\n }\\n\\n .taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: ${t.taskTextClickableColor} !important;\\n font-weight: bold;\\n }\\n\\n /* Specific task settings for the sections*/\\n\\n .taskText0,\\n .taskText1,\\n .taskText2,\\n .taskText3 {\\n fill: ${t.taskTextColor};\\n }\\n\\n .task0,\\n .task1,\\n .task2,\\n .task3 {\\n fill: ${t.taskBkgColor};\\n stroke: ${t.taskBorderColor};\\n }\\n\\n .taskTextOutside0,\\n .taskTextOutside2\\n {\\n fill: ${t.taskTextOutsideColor};\\n }\\n\\n .taskTextOutside1,\\n .taskTextOutside3 {\\n fill: ${t.taskTextOutsideColor};\\n }\\n\\n\\n /* Active task */\\n\\n .active0,\\n .active1,\\n .active2,\\n .active3 {\\n fill: ${t.activeTaskBkgColor};\\n stroke: ${t.activeTaskBorderColor};\\n }\\n\\n .activeText0,\\n .activeText1,\\n .activeText2,\\n .activeText3 {\\n fill: ${t.taskTextDarkColor} !important;\\n }\\n\\n\\n /* Completed task */\\n\\n .done0,\\n .done1,\\n .done2,\\n .done3 {\\n stroke: ${t.doneTaskBorderColor};\\n fill: ${t.doneTaskBkgColor};\\n stroke-width: 2;\\n }\\n\\n .doneText0,\\n .doneText1,\\n .doneText2,\\n .doneText3 {\\n fill: ${t.taskTextDarkColor} !important;\\n }\\n\\n\\n /* Tasks on the critical line */\\n\\n .crit0,\\n .crit1,\\n .crit2,\\n .crit3 {\\n stroke: ${t.critBorderColor};\\n fill: ${t.critBkgColor};\\n stroke-width: 2;\\n }\\n\\n .activeCrit0,\\n .activeCrit1,\\n .activeCrit2,\\n .activeCrit3 {\\n stroke: ${t.critBorderColor};\\n fill: ${t.activeTaskBkgColor};\\n stroke-width: 2;\\n }\\n\\n .doneCrit0,\\n .doneCrit1,\\n .doneCrit2,\\n .doneCrit3 {\\n stroke: ${t.critBorderColor};\\n fill: ${t.doneTaskBkgColor};\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges;\\n }\\n\\n .milestone {\\n transform: rotate(45deg) scale(0.8,0.8);\\n }\\n\\n .milestoneText {\\n font-style: italic;\\n }\\n .doneCritText0,\\n .doneCritText1,\\n .doneCritText2,\\n .doneCritText3 {\\n fill: ${t.taskTextDarkColor} !important;\\n }\\n\\n .activeCritText0,\\n .activeCritText1,\\n .activeCritText2,\\n .activeCritText3 {\\n fill: ${t.taskTextDarkColor} !important;\\n }\\n\\n .titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: ${t.textColor} ;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n`,ng=()=>\\\"\\\",ig=t=>`\\n .pieCircle{\\n stroke: ${t.pieStrokeColor};\\n stroke-width : ${t.pieStrokeWidth};\\n opacity : ${t.pieOpacity};\\n }\\n .pieTitleText {\\n text-anchor: middle;\\n font-size: ${t.pieTitleTextSize};\\n fill: ${t.pieTitleTextColor};\\n font-family: ${t.fontFamily};\\n }\\n .slice {\\n font-family: ${t.fontFamily};\\n fill: ${t.pieSectionTextColor};\\n font-size:${t.pieSectionTextSize};\\n // fill: white;\\n }\\n .legend text {\\n fill: ${t.pieLegendTextColor};\\n font-family: ${t.fontFamily};\\n font-size: ${t.pieLegendTextSize};\\n }\\n`,sg=t=>`\\n\\n marker {\\n fill: ${t.relationColor};\\n stroke: ${t.relationColor};\\n }\\n\\n marker.cross {\\n stroke: ${t.lineColor};\\n }\\n\\n svg {\\n font-family: ${t.fontFamily};\\n font-size: ${t.fontSize};\\n }\\n\\n .reqBox {\\n fill: ${t.requirementBackground};\\n fill-opacity: 100%;\\n stroke: ${t.requirementBorderColor};\\n stroke-width: ${t.requirementBorderSize};\\n }\\n \\n .reqTitle, .reqLabel{\\n fill: ${t.requirementTextColor};\\n }\\n .reqLabelBox {\\n fill: ${t.relationLabelBackground};\\n fill-opacity: 100%;\\n }\\n\\n .req-title-line {\\n stroke: ${t.requirementBorderColor};\\n stroke-width: ${t.requirementBorderSize};\\n }\\n .relationshipLine {\\n stroke: ${t.relationColor};\\n stroke-width: 1;\\n }\\n .relationshipLabel {\\n fill: ${t.relationLabelColor};\\n }\\n\\n`,ag=t=>`.actor {\\n stroke: ${t.actorBorder};\\n fill: ${t.actorBkg};\\n }\\n\\n text.actor > tspan {\\n fill: ${t.actorTextColor};\\n stroke: none;\\n }\\n\\n .actor-line {\\n stroke: ${t.actorLineColor};\\n }\\n\\n .messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: none;\\n stroke: ${t.signalColor};\\n }\\n\\n .messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: 2, 2;\\n stroke: ${t.signalColor};\\n }\\n\\n #arrowhead path {\\n fill: ${t.signalColor};\\n stroke: ${t.signalColor};\\n }\\n\\n .sequenceNumber {\\n fill: ${t.sequenceNumberColor};\\n }\\n\\n #sequencenumber {\\n fill: ${t.signalColor};\\n }\\n\\n #crosshead path {\\n fill: ${t.signalColor};\\n stroke: ${t.signalColor};\\n }\\n\\n .messageText {\\n fill: ${t.signalTextColor};\\n stroke: none;\\n }\\n\\n .labelBox {\\n stroke: ${t.labelBoxBorderColor};\\n fill: ${t.labelBoxBkgColor};\\n }\\n\\n .labelText, .labelText > tspan {\\n fill: ${t.labelTextColor};\\n stroke: none;\\n }\\n\\n .loopText, .loopText > tspan {\\n fill: ${t.loopTextColor};\\n stroke: none;\\n }\\n\\n .loopLine {\\n stroke-width: 2px;\\n stroke-dasharray: 2, 2;\\n stroke: ${t.labelBoxBorderColor};\\n fill: ${t.labelBoxBorderColor};\\n }\\n\\n .note {\\n //stroke: #decc93;\\n stroke: ${t.noteBorderColor};\\n fill: ${t.noteBkgColor};\\n }\\n\\n .noteText, .noteText > tspan {\\n fill: ${t.noteTextColor};\\n stroke: none;\\n }\\n\\n .activation0 {\\n fill: ${t.activationBkgColor};\\n stroke: ${t.activationBorderColor};\\n }\\n\\n .activation1 {\\n fill: ${t.activationBkgColor};\\n stroke: ${t.activationBorderColor};\\n }\\n\\n .activation2 {\\n fill: ${t.activationBkgColor};\\n stroke: ${t.activationBorderColor};\\n }\\n\\n .actorPopupMenu {\\n position: absolute;\\n }\\n\\n .actorPopupMenuPanel {\\n position: absolute;\\n fill: ${t.actorBkg};\\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\\n}\\n .actor-man line {\\n stroke: ${t.actorBorder};\\n fill: ${t.actorBkg};\\n }\\n .actor-man circle, line {\\n stroke: ${t.actorBorder};\\n fill: ${t.actorBkg};\\n stroke-width: 2px;\\n }\\n`,Lc=t=>`\\ndefs #statediagram-barbEnd {\\n fill: ${t.transitionColor};\\n stroke: ${t.transitionColor};\\n }\\ng.stateGroup text {\\n fill: ${t.nodeBorder};\\n stroke: none;\\n font-size: 10px;\\n}\\ng.stateGroup text {\\n fill: ${t.textColor};\\n stroke: none;\\n font-size: 10px;\\n\\n}\\ng.stateGroup .state-title {\\n font-weight: bolder;\\n fill: ${t.stateLabelColor};\\n}\\n\\ng.stateGroup rect {\\n fill: ${t.mainBkg};\\n stroke: ${t.nodeBorder};\\n}\\n\\ng.stateGroup line {\\n stroke: ${t.lineColor};\\n stroke-width: 1;\\n}\\n\\n.transition {\\n stroke: ${t.transitionColor};\\n stroke-width: 1;\\n fill: none;\\n}\\n\\n.stateGroup .composit {\\n fill: ${t.background};\\n border-bottom: 1px\\n}\\n\\n.stateGroup .alt-composit {\\n fill: #e0e0e0;\\n border-bottom: 1px\\n}\\n\\n.state-note {\\n stroke: ${t.noteBorderColor};\\n fill: ${t.noteBkgColor};\\n\\n text {\\n fill: ${t.noteTextColor};\\n stroke: none;\\n font-size: 10px;\\n }\\n}\\n\\n.stateLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: ${t.mainBkg};\\n opacity: 0.5;\\n}\\n\\n.edgeLabel .label rect {\\n fill: ${t.labelBackgroundColor};\\n opacity: 0.5;\\n}\\n.edgeLabel .label text {\\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\\n}\\n.label div .edgeLabel {\\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\\n}\\n\\n.stateLabel text {\\n fill: ${t.stateLabelColor};\\n font-size: 10px;\\n font-weight: bold;\\n}\\n\\n.node circle.state-start {\\n fill: ${t.specialStateColor};\\n stroke: ${t.specialStateColor};\\n}\\n\\n.node .fork-join {\\n fill: ${t.specialStateColor};\\n stroke: ${t.specialStateColor};\\n}\\n\\n.node circle.state-end {\\n fill: ${t.innerEndBackground};\\n stroke: ${t.background};\\n stroke-width: 1.5\\n}\\n.end-state-inner {\\n fill: ${t.compositeBackground||t.background};\\n // stroke: ${t.background};\\n stroke-width: 1.5\\n}\\n\\n.node rect {\\n fill: ${t.stateBkg||t.mainBkg};\\n stroke: ${t.stateBorder||t.nodeBorder};\\n stroke-width: 1px;\\n}\\n.node polygon {\\n fill: ${t.mainBkg};\\n stroke: ${t.stateBorder||t.nodeBorder};;\\n stroke-width: 1px;\\n}\\n#statediagram-barbEnd {\\n fill: ${t.lineColor};\\n}\\n\\n.statediagram-cluster rect {\\n fill: ${t.compositeTitleBackground};\\n stroke: ${t.stateBorder||t.nodeBorder};\\n stroke-width: 1px;\\n}\\n\\n.cluster-label, .nodeLabel {\\n color: ${t.stateLabelColor};\\n}\\n\\n.statediagram-cluster rect.outer {\\n rx: 5px;\\n ry: 5px;\\n}\\n.statediagram-state .divider {\\n stroke: ${t.stateBorder||t.nodeBorder};\\n}\\n\\n.statediagram-state .title-state {\\n rx: 5px;\\n ry: 5px;\\n}\\n.statediagram-cluster.statediagram-cluster .inner {\\n fill: ${t.compositeBackground||t.background};\\n}\\n.statediagram-cluster.statediagram-cluster-alt .inner {\\n fill: ${t.altBackground?t.altBackground:\\\"#efefef\\\"};\\n}\\n\\n.statediagram-cluster .inner {\\n rx:0;\\n ry:0;\\n}\\n\\n.statediagram-state rect.basic {\\n rx: 5px;\\n ry: 5px;\\n}\\n.statediagram-state rect.divider {\\n stroke-dasharray: 10,10;\\n fill: ${t.altBackground?t.altBackground:\\\"#efefef\\\"};\\n}\\n\\n.note-edge {\\n stroke-dasharray: 5;\\n}\\n\\n.statediagram-note rect {\\n fill: ${t.noteBkgColor};\\n stroke: ${t.noteBorderColor};\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0;\\n}\\n.statediagram-note rect {\\n fill: ${t.noteBkgColor};\\n stroke: ${t.noteBorderColor};\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0;\\n}\\n\\n.statediagram-note text {\\n fill: ${t.noteTextColor};\\n}\\n\\n.statediagram-note .nodeLabel {\\n color: ${t.noteTextColor};\\n}\\n.statediagram .edgeLabel {\\n color: red; // ${t.noteTextColor};\\n}\\n\\n#dependencyStart, #dependencyEnd {\\n fill: ${t.lineColor};\\n stroke: ${t.lineColor};\\n stroke-width: 1;\\n}\\n\\n.statediagramTitleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: ${t.textColor};\\n}\\n`,og=t=>`.label {\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n color: ${t.textColor};\\n }\\n .mouth {\\n stroke: #666;\\n }\\n\\n line {\\n stroke: ${t.textColor}\\n }\\n\\n .legend {\\n fill: ${t.textColor};\\n }\\n\\n .label text {\\n fill: #333;\\n }\\n .label {\\n color: ${t.textColor}\\n }\\n\\n .face {\\n ${t.faceColor?`fill: ${t.faceColor}`:\\\"fill: #FFF8DC\\\"};\\n stroke: #999;\\n }\\n\\n .node rect,\\n .node circle,\\n .node ellipse,\\n .node polygon,\\n .node path {\\n fill: ${t.mainBkg};\\n stroke: ${t.nodeBorder};\\n stroke-width: 1px;\\n }\\n\\n .node .label {\\n text-align: center;\\n }\\n .node.clickable {\\n cursor: pointer;\\n }\\n\\n .arrowheadPath {\\n fill: ${t.arrowheadColor};\\n }\\n\\n .edgePath .path {\\n stroke: ${t.lineColor};\\n stroke-width: 1.5px;\\n }\\n\\n .flowchart-link {\\n stroke: ${t.lineColor};\\n fill: none;\\n }\\n\\n .edgeLabel {\\n background-color: ${t.edgeLabelBackground};\\n rect {\\n opacity: 0.5;\\n }\\n text-align: center;\\n }\\n\\n .cluster rect {\\n }\\n\\n .cluster text {\\n fill: ${t.titleColor};\\n }\\n\\n div.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n font-size: 12px;\\n background: ${t.tertiaryColor};\\n border: 1px solid ${t.border2};\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100;\\n }\\n\\n .task-type-0, .section-type-0 {\\n ${t.fillType0?`fill: ${t.fillType0}`:\\\"\\\"};\\n }\\n .task-type-1, .section-type-1 {\\n ${t.fillType0?`fill: ${t.fillType1}`:\\\"\\\"};\\n }\\n .task-type-2, .section-type-2 {\\n ${t.fillType0?`fill: ${t.fillType2}`:\\\"\\\"};\\n }\\n .task-type-3, .section-type-3 {\\n ${t.fillType0?`fill: ${t.fillType3}`:\\\"\\\"};\\n }\\n .task-type-4, .section-type-4 {\\n ${t.fillType0?`fill: ${t.fillType4}`:\\\"\\\"};\\n }\\n .task-type-5, .section-type-5 {\\n ${t.fillType0?`fill: ${t.fillType5}`:\\\"\\\"};\\n }\\n .task-type-6, .section-type-6 {\\n ${t.fillType0?`fill: ${t.fillType6}`:\\\"\\\"};\\n }\\n .task-type-7, .section-type-7 {\\n ${t.fillType0?`fill: ${t.fillType7}`:\\\"\\\"};\\n }\\n\\n .actor-0 {\\n ${t.actor0?`fill: ${t.actor0}`:\\\"\\\"};\\n }\\n .actor-1 {\\n ${t.actor1?`fill: ${t.actor1}`:\\\"\\\"};\\n }\\n .actor-2 {\\n ${t.actor2?`fill: ${t.actor2}`:\\\"\\\"};\\n }\\n .actor-3 {\\n ${t.actor3?`fill: ${t.actor3}`:\\\"\\\"};\\n }\\n .actor-4 {\\n ${t.actor4?`fill: ${t.actor4}`:\\\"\\\"};\\n }\\n .actor-5 {\\n ${t.actor5?`fill: ${t.actor5}`:\\\"\\\"};\\n }\\n`,lg=t=>`.person {\\n stroke: ${t.personBorder};\\n fill: ${t.personBkg};\\n }\\n`,Dc={flowchart:Ac,\\\"flowchart-v2\\\":Ac,sequence:ag,gantt:rg,classDiagram:go,\\\"classDiagram-v2\\\":go,class:go,stateDiagram:Lc,state:Lc,info:ng,pie:ig,er:tg,error:eg,journey:og,requirement:sg,c4:lg},cE=(t,e,r)=>{let n=\\\"\\\";return t in Dc&&Dc[t]?n=Dc[t](r):B.warn(`No theme found for ${t}`),` & {\\n font-family: ${r.fontFamily};\\n font-size: ${r.fontSize};\\n fill: ${r.textColor}\\n }\\n\\n /* Classes common for multiple diagrams */\\n\\n & .error-icon {\\n fill: ${r.errorBkgColor};\\n }\\n & .error-text {\\n fill: ${r.errorTextColor};\\n stroke: ${r.errorTextColor};\\n }\\n\\n & .edge-thickness-normal {\\n stroke-width: 2px;\\n }\\n & .edge-thickness-thick {\\n stroke-width: 3.5px\\n }\\n & .edge-pattern-solid {\\n stroke-dasharray: 0;\\n }\\n\\n & .edge-pattern-dashed{\\n stroke-dasharray: 3;\\n }\\n .edge-pattern-dotted {\\n stroke-dasharray: 2;\\n }\\n\\n & .marker {\\n fill: ${r.lineColor};\\n stroke: ${r.lineColor};\\n }\\n & .marker.cross {\\n stroke: ${r.lineColor};\\n }\\n\\n & svg {\\n font-family: ${r.fontFamily};\\n font-size: ${r.fontSize};\\n }\\n\\n ${n}\\n\\n ${e}\\n`},uE=(t,e)=>{Dc[t]=e},hE=cE,dE=B,fE=Qu,yo=$,pE=t=>yn(t,yo()),cg=Sc,Mc={},yr=(t,e,r)=>{if(Mc[t])throw new Error(`Diagram ${t} already registered.`);Mc[t]=e,r&&Lp(t,r),uE(t,e.styles),e.injectUtils&&e.injectUtils(dE,fE,yo,pE,cg)},ug=t=>{if(t in Mc)return Mc[t];throw new Error(`Diagram ${t} not found.`)};var C1=function(){var t=function(W,N,D,w){for(D=D||{},w=W.length;w--;D[W[w]]=N);return D},e=[1,4],r=[1,7],n=[1,5],i=[1,9],s=[1,6],a=[2,6],o=[1,16],l=[6,8,14,20,22,24,25,27,29,32,37,40,50,55],u=[8,14,20,22,24,25,27,29,32,37,40],d=[8,13,14,20,22,24,25,27,29,32,37,40],f=[1,26],p=[6,8,14,50,55],g=[8,14,55],b=[1,53],k=[1,52],T=[8,14,30,33,35,38,55],L=[1,67],E=[1,68],I=[1,69],V=[8,14,33,35,42,55],H={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,\\\":\\\":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,cherryPickStatement:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,branchStatement:26,CHECKOUT:27,ref:28,BRANCH:29,ORDER:30,NUM:31,CHERRY_PICK:32,COMMIT_ID:33,STR:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,openDirective:46,typeDirective:47,closeDirective:48,argDirective:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,ID:54,\\\";\\\":55,$accept:0,$end:1},terminals_:{2:\\\"error\\\",6:\\\"GG\\\",8:\\\"EOF\\\",9:\\\":\\\",10:\\\"DIR\\\",13:\\\"OPT\\\",14:\\\"NL\\\",20:\\\"acc_title\\\",21:\\\"acc_title_value\\\",22:\\\"acc_descr\\\",23:\\\"acc_descr_value\\\",24:\\\"acc_descr_multiline_value\\\",25:\\\"section\\\",27:\\\"CHECKOUT\\\",29:\\\"BRANCH\\\",30:\\\"ORDER\\\",31:\\\"NUM\\\",32:\\\"CHERRY_PICK\\\",33:\\\"COMMIT_ID\\\",34:\\\"STR\\\",35:\\\"COMMIT_TAG\\\",36:\\\"EMPTYSTR\\\",37:\\\"MERGE\\\",38:\\\"COMMIT_TYPE\\\",40:\\\"COMMIT\\\",42:\\\"COMMIT_MSG\\\",43:\\\"NORMAL\\\",44:\\\"REVERSE\\\",45:\\\"HIGHLIGHT\\\",50:\\\"open_directive\\\",51:\\\"type_directive\\\",52:\\\"arg_directive\\\",53:\\\"close_directive\\\",54:\\\"ID\\\",55:\\\";\\\"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[26,2],[26,4],[19,3],[19,5],[19,5],[19,5],[19,5],[18,2],[18,4],[18,4],[18,4],[18,6],[18,6],[18,6],[18,6],[18,6],[18,6],[18,8],[18,8],[18,8],[18,8],[18,8],[18,8],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[41,0],[41,1],[39,1],[39,1],[39,1],[5,3],[5,5],[46,1],[47,1],[49,1],[48,1],[28,1],[28,1],[4,1],[4,1],[4,1]],performAction:function(N,D,w,v,M,m,Q){var x=m.length-1;switch(M){case 3:return m[x];case 4:return m[x-1];case 5:return v.setDirection(m[x-3]),m[x-1];case 7:v.setOptions(m[x-1]),this.$=m[x];break;case 8:m[x-1]+=m[x],this.$=m[x-1];break;case 10:this.$=[];break;case 11:m[x-1].push(m[x]),this.$=m[x-1];break;case 12:this.$=m[x-1];break;case 17:this.$=m[x].trim(),v.setAccTitle(this.$);break;case 18:case 19:this.$=m[x].trim(),v.setAccDescription(this.$);break;case 20:v.addSection(m[x].substr(8)),this.$=m[x].substr(8);break;case 22:v.checkout(m[x]);break;case 23:v.branch(m[x]);break;case 24:v.branch(m[x-2],m[x]);break;case 25:v.cherryPick(m[x],\\\"\\\",void 0);break;case 26:v.cherryPick(m[x-2],\\\"\\\",m[x]);break;case 27:case 29:v.cherryPick(m[x-2],\\\"\\\",\\\"\\\");break;case 28:v.cherryPick(m[x],\\\"\\\",m[x-2]);break;case 30:v.merge(m[x],\\\"\\\",\\\"\\\",\\\"\\\");break;case 31:v.merge(m[x-2],m[x],\\\"\\\",\\\"\\\");break;case 32:v.merge(m[x-2],\\\"\\\",m[x],\\\"\\\");break;case 33:v.merge(m[x-2],\\\"\\\",\\\"\\\",m[x]);break;case 34:v.merge(m[x-4],m[x],\\\"\\\",m[x-2]);break;case 35:v.merge(m[x-4],\\\"\\\",m[x],m[x-2]);break;case 36:v.merge(m[x-4],\\\"\\\",m[x-2],m[x]);break;case 37:v.merge(m[x-4],m[x-2],m[x],\\\"\\\");break;case 38:v.merge(m[x-4],m[x-2],\\\"\\\",m[x]);break;case 39:v.merge(m[x-4],m[x],m[x-2],\\\"\\\");break;case 40:v.merge(m[x-6],m[x-4],m[x-2],m[x]);break;case 41:v.merge(m[x-6],m[x],m[x-4],m[x-2]);break;case 42:v.merge(m[x-6],m[x-4],m[x],m[x-2]);break;case 43:v.merge(m[x-6],m[x-2],m[x-4],m[x]);break;case 44:v.merge(m[x-6],m[x],m[x-2],m[x-4]);break;case 45:v.merge(m[x-6],m[x-2],m[x],m[x-4]);break;case 46:v.commit(m[x]);break;case 47:v.commit(\\\"\\\",\\\"\\\",v.commitType.NORMAL,m[x]);break;case 48:v.commit(\\\"\\\",\\\"\\\",m[x],\\\"\\\");break;case 49:v.commit(\\\"\\\",\\\"\\\",m[x],m[x-2]);break;case 50:v.commit(\\\"\\\",\\\"\\\",m[x-2],m[x]);break;case 51:v.commit(\\\"\\\",m[x],v.commitType.NORMAL,\\\"\\\");break;case 52:v.commit(\\\"\\\",m[x-2],v.commitType.NORMAL,m[x]);break;case 53:v.commit(\\\"\\\",m[x],v.commitType.NORMAL,m[x-2]);break;case 54:v.commit(\\\"\\\",m[x-2],m[x],\\\"\\\");break;case 55:v.commit(\\\"\\\",m[x],m[x-2],\\\"\\\");break;case 56:v.commit(\\\"\\\",m[x-4],m[x-2],m[x]);break;case 57:v.commit(\\\"\\\",m[x-4],m[x],m[x-2]);break;case 58:v.commit(\\\"\\\",m[x-2],m[x-4],m[x]);break;case 59:v.commit(\\\"\\\",m[x],m[x-4],m[x-2]);break;case 60:v.commit(\\\"\\\",m[x],m[x-2],m[x-4]);break;case 61:v.commit(\\\"\\\",m[x-2],m[x],m[x-4]);break;case 62:v.commit(m[x],\\\"\\\",v.commitType.NORMAL,\\\"\\\");break;case 63:v.commit(m[x],\\\"\\\",v.commitType.NORMAL,m[x-2]);break;case 64:v.commit(m[x-2],\\\"\\\",v.commitType.NORMAL,m[x]);break;case 65:v.commit(m[x-2],\\\"\\\",m[x],\\\"\\\");break;case 66:v.commit(m[x],\\\"\\\",m[x-2],\\\"\\\");break;case 67:v.commit(m[x],m[x-2],v.commitType.NORMAL,\\\"\\\");break;case 68:v.commit(m[x-2],m[x],v.commitType.NORMAL,\\\"\\\");break;case 69:v.commit(m[x-4],\\\"\\\",m[x-2],m[x]);break;case 70:v.commit(m[x-4],\\\"\\\",m[x],m[x-2]);break;case 71:v.commit(m[x-2],\\\"\\\",m[x-4],m[x]);break;case 72:v.commit(m[x],\\\"\\\",m[x-4],m[x-2]);break;case 73:v.commit(m[x],\\\"\\\",m[x-2],m[x-4]);break;case 74:v.commit(m[x-2],\\\"\\\",m[x],m[x-4]);break;case 75:v.commit(m[x-4],m[x],m[x-2],\\\"\\\");break;case 76:v.commit(m[x-4],m[x-2],m[x],\\\"\\\");break;case 77:v.commit(m[x-2],m[x],m[x-4],\\\"\\\");break;case 78:v.commit(m[x],m[x-2],m[x-4],\\\"\\\");break;case 79:v.commit(m[x],m[x-4],m[x-2],\\\"\\\");break;case 80:v.commit(m[x-2],m[x-4],m[x],\\\"\\\");break;case 81:v.commit(m[x-4],m[x],v.commitType.NORMAL,m[x-2]);break;case 82:v.commit(m[x-4],m[x-2],v.commitType.NORMAL,m[x]);break;case 83:v.commit(m[x-2],m[x],v.commitType.NORMAL,m[x-4]);break;case 84:v.commit(m[x],m[x-2],v.commitType.NORMAL,m[x-4]);break;case 85:v.commit(m[x],m[x-4],v.commitType.NORMAL,m[x-2]);break;case 86:v.commit(m[x-2],m[x-4],v.commitType.NORMAL,m[x]);break;case 87:v.commit(m[x-6],m[x-4],m[x-2],m[x]);break;case 88:v.commit(m[x-6],m[x-4],m[x],m[x-2]);break;case 89:v.commit(m[x-6],m[x-2],m[x-4],m[x]);break;case 90:v.commit(m[x-6],m[x],m[x-4],m[x-2]);break;case 91:v.commit(m[x-6],m[x-2],m[x],m[x-4]);break;case 92:v.commit(m[x-6],m[x],m[x-2],m[x-4]);break;case 93:v.commit(m[x-4],m[x-6],m[x-2],m[x]);break;case 94:v.commit(m[x-4],m[x-6],m[x],m[x-2]);break;case 95:v.commit(m[x-2],m[x-6],m[x-4],m[x]);break;case 96:v.commit(m[x],m[x-6],m[x-4],m[x-2]);break;case 97:v.commit(m[x-2],m[x-6],m[x],m[x-4]);break;case 98:v.commit(m[x],m[x-6],m[x-2],m[x-4]);break;case 99:v.commit(m[x],m[x-4],m[x-2],m[x-6]);break;case 100:v.commit(m[x-2],m[x-4],m[x],m[x-6]);break;case 101:v.commit(m[x],m[x-2],m[x-4],m[x-6]);break;case 102:v.commit(m[x-2],m[x],m[x-4],m[x-6]);break;case 103:v.commit(m[x-4],m[x-2],m[x],m[x-6]);break;case 104:v.commit(m[x-4],m[x],m[x-2],m[x-6]);break;case 105:v.commit(m[x-2],m[x-4],m[x-6],m[x]);break;case 106:v.commit(m[x],m[x-4],m[x-6],m[x-2]);break;case 107:v.commit(m[x-2],m[x],m[x-6],m[x-4]);break;case 108:v.commit(m[x],m[x-2],m[x-6],m[x-4]);break;case 109:v.commit(m[x-4],m[x-2],m[x-6],m[x]);break;case 110:v.commit(m[x-4],m[x],m[x-6],m[x-2]);break;case 111:this.$=\\\"\\\";break;case 112:this.$=m[x];break;case 113:this.$=v.commitType.NORMAL;break;case 114:this.$=v.commitType.REVERSE;break;case 115:this.$=v.commitType.HIGHLIGHT;break;case 118:v.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 119:v.parseDirective(m[x],\\\"type_directive\\\");break;case 120:m[x]=m[x].trim().replace(/'/g,'\\\"'),v.parseDirective(m[x],\\\"arg_directive\\\");break;case 121:v.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"gitGraph\\\");break}},table:[{3:1,4:2,5:3,6:e,8:r,14:n,46:8,50:i,55:s},{1:[3]},{3:10,4:2,5:3,6:e,8:r,14:n,46:8,50:i,55:s},{3:11,4:2,5:3,6:e,8:r,14:n,46:8,50:i,55:s},{7:12,8:a,9:[1,13],10:[1,14],11:15,14:o},t(l,[2,124]),t(l,[2,125]),t(l,[2,126]),{47:17,51:[1,18]},{51:[2,118]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:a,11:15,14:o},{9:[1,21]},t(u,[2,10],{12:22,13:[1,23]}),t(d,[2,9]),{9:[1,25],48:24,53:f},t([9,53],[2,119]),{1:[2,3]},{8:[1,27]},{7:28,8:a,11:15,14:o},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:34,20:[1,35],22:[1,36],24:[1,37],25:[1,38],26:39,27:[1,40],29:[1,44],32:[1,43],37:[1,42],40:[1,41]},t(d,[2,8]),t(p,[2,116]),{49:45,52:[1,46]},t(p,[2,121]),{1:[2,4]},{8:[1,47]},t(u,[2,11]),{4:48,8:r,14:n,55:s},t(u,[2,13]),t(g,[2,14]),t(g,[2,15]),t(g,[2,16]),{21:[1,49]},{23:[1,50]},t(g,[2,19]),t(g,[2,20]),t(g,[2,21]),{28:51,34:b,54:k},t(g,[2,111],{41:54,33:[1,57],34:[1,59],35:[1,55],38:[1,56],42:[1,58]}),{28:60,34:b,54:k},{33:[1,61],35:[1,62]},{28:63,34:b,54:k},{48:64,53:f},{53:[2,120]},{1:[2,5]},t(u,[2,12]),t(g,[2,17]),t(g,[2,18]),t(g,[2,22]),t(T,[2,122]),t(T,[2,123]),t(g,[2,46]),{34:[1,65]},{39:66,43:L,44:E,45:I},{34:[1,70]},{34:[1,71]},t(g,[2,112]),t(g,[2,30],{33:[1,72],35:[1,74],38:[1,73]}),{34:[1,75]},{34:[1,76],36:[1,77]},t(g,[2,23],{30:[1,78]}),t(p,[2,117]),t(g,[2,47],{33:[1,80],38:[1,79],42:[1,81]}),t(g,[2,48],{33:[1,83],35:[1,82],42:[1,84]}),t(V,[2,113]),t(V,[2,114]),t(V,[2,115]),t(g,[2,51],{35:[1,85],38:[1,86],42:[1,87]}),t(g,[2,62],{33:[1,90],35:[1,88],38:[1,89]}),{34:[1,91]},{39:92,43:L,44:E,45:I},{34:[1,93]},t(g,[2,25],{35:[1,94]}),{33:[1,95]},{33:[1,96]},{31:[1,97]},{39:98,43:L,44:E,45:I},{34:[1,99]},{34:[1,100]},{34:[1,101]},{34:[1,102]},{34:[1,103]},{34:[1,104]},{39:105,43:L,44:E,45:I},{34:[1,106]},{34:[1,107]},{39:108,43:L,44:E,45:I},{34:[1,109]},t(g,[2,31],{35:[1,111],38:[1,110]}),t(g,[2,32],{33:[1,113],35:[1,112]}),t(g,[2,33],{33:[1,114],38:[1,115]}),{34:[1,116],36:[1,117]},{34:[1,118]},{34:[1,119]},t(g,[2,24]),t(g,[2,49],{33:[1,120],42:[1,121]}),t(g,[2,53],{38:[1,122],42:[1,123]}),t(g,[2,63],{33:[1,125],38:[1,124]}),t(g,[2,50],{33:[1,126],42:[1,127]}),t(g,[2,55],{35:[1,128],42:[1,129]}),t(g,[2,66],{33:[1,131],35:[1,130]}),t(g,[2,52],{38:[1,132],42:[1,133]}),t(g,[2,54],{35:[1,134],42:[1,135]}),t(g,[2,67],{35:[1,137],38:[1,136]}),t(g,[2,64],{33:[1,139],38:[1,138]}),t(g,[2,65],{33:[1,141],35:[1,140]}),t(g,[2,68],{35:[1,143],38:[1,142]}),{39:144,43:L,44:E,45:I},{34:[1,145]},{34:[1,146]},{34:[1,147]},{34:[1,148]},{39:149,43:L,44:E,45:I},t(g,[2,26]),t(g,[2,27]),t(g,[2,28]),t(g,[2,29]),{34:[1,150]},{34:[1,151]},{39:152,43:L,44:E,45:I},{34:[1,153]},{39:154,43:L,44:E,45:I},{34:[1,155]},{34:[1,156]},{34:[1,157]},{34:[1,158]},{34:[1,159]},{34:[1,160]},{34:[1,161]},{39:162,43:L,44:E,45:I},{34:[1,163]},{34:[1,164]},{34:[1,165]},{39:166,43:L,44:E,45:I},{34:[1,167]},{39:168,43:L,44:E,45:I},{34:[1,169]},{34:[1,170]},{34:[1,171]},{39:172,43:L,44:E,45:I},{34:[1,173]},t(g,[2,37],{35:[1,174]}),t(g,[2,38],{38:[1,175]}),t(g,[2,36],{33:[1,176]}),t(g,[2,39],{35:[1,177]}),t(g,[2,34],{38:[1,178]}),t(g,[2,35],{33:[1,179]}),t(g,[2,60],{42:[1,180]}),t(g,[2,73],{33:[1,181]}),t(g,[2,61],{42:[1,182]}),t(g,[2,84],{38:[1,183]}),t(g,[2,74],{33:[1,184]}),t(g,[2,83],{38:[1,185]}),t(g,[2,59],{42:[1,186]}),t(g,[2,72],{33:[1,187]}),t(g,[2,58],{42:[1,188]}),t(g,[2,78],{35:[1,189]}),t(g,[2,71],{33:[1,190]}),t(g,[2,77],{35:[1,191]}),t(g,[2,57],{42:[1,192]}),t(g,[2,85],{38:[1,193]}),t(g,[2,56],{42:[1,194]}),t(g,[2,79],{35:[1,195]}),t(g,[2,80],{35:[1,196]}),t(g,[2,86],{38:[1,197]}),t(g,[2,70],{33:[1,198]}),t(g,[2,81],{38:[1,199]}),t(g,[2,69],{33:[1,200]}),t(g,[2,75],{35:[1,201]}),t(g,[2,76],{35:[1,202]}),t(g,[2,82],{38:[1,203]}),{34:[1,204]},{39:205,43:L,44:E,45:I},{34:[1,206]},{34:[1,207]},{39:208,43:L,44:E,45:I},{34:[1,209]},{34:[1,210]},{34:[1,211]},{34:[1,212]},{39:213,43:L,44:E,45:I},{34:[1,214]},{39:215,43:L,44:E,45:I},{34:[1,216]},{34:[1,217]},{34:[1,218]},{34:[1,219]},{34:[1,220]},{34:[1,221]},{34:[1,222]},{39:223,43:L,44:E,45:I},{34:[1,224]},{34:[1,225]},{34:[1,226]},{39:227,43:L,44:E,45:I},{34:[1,228]},{39:229,43:L,44:E,45:I},{34:[1,230]},{34:[1,231]},{34:[1,232]},{39:233,43:L,44:E,45:I},t(g,[2,40]),t(g,[2,42]),t(g,[2,41]),t(g,[2,43]),t(g,[2,45]),t(g,[2,44]),t(g,[2,101]),t(g,[2,102]),t(g,[2,99]),t(g,[2,100]),t(g,[2,104]),t(g,[2,103]),t(g,[2,108]),t(g,[2,107]),t(g,[2,106]),t(g,[2,105]),t(g,[2,110]),t(g,[2,109]),t(g,[2,98]),t(g,[2,97]),t(g,[2,96]),t(g,[2,95]),t(g,[2,93]),t(g,[2,94]),t(g,[2,92]),t(g,[2,91]),t(g,[2,90]),t(g,[2,89]),t(g,[2,87]),t(g,[2,88])],defaultActions:{9:[2,118],10:[2,1],11:[2,2],19:[2,3],27:[2,4],46:[2,120],47:[2,5]},parseError:function(N,D){if(D.recoverable)this.trace(N);else{var w=new Error(N);throw w.hash=D,w}},parse:function(N){var D=this,w=[0],v=[],M=[null],m=[],Q=this.table,x=\\\"\\\",ct=0,Dt=0,kt=2,j=1,ot=m.slice.call(arguments,1),rt=Object.create(this.lexer),nt={yy:{}};for(var ut in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ut)&&(nt.yy[ut]=this.yy[ut]);rt.setInput(N,nt.yy),nt.yy.lexer=rt,nt.yy.parser=this,typeof rt.yylloc>\\\"u\\\"&&(rt.yylloc={});var _t=rt.yylloc;m.push(_t);var K=rt.options&&rt.options.ranges;typeof nt.yy.parseError==\\\"function\\\"?this.parseError=nt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var Yt;return Yt=v.pop()||rt.lex()||j,typeof Yt!=\\\"number\\\"&&(Yt instanceof Array&&(v=Yt,Yt=v.pop()),Yt=D.symbols_[Yt]||Yt),Yt}for(var P,z,X,F,O={},A,J,C,ht;;){if(z=w[w.length-1],this.defaultActions[z]?X=this.defaultActions[z]:((P===null||typeof P>\\\"u\\\")&&(P=Ot()),X=Q[z]&&Q[z][P]),typeof X>\\\"u\\\"||!X.length||!X[0]){var U=\\\"\\\";ht=[];for(A in Q[z])this.terminals_[A]&&A>kt&&ht.push(\\\"'\\\"+this.terminals_[A]+\\\"'\\\");rt.showPosition?U=\\\"Parse error on line \\\"+(ct+1)+`:\\n`+rt.showPosition()+`\\nExpecting `+ht.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[P]||P)+\\\"'\\\":U=\\\"Parse error on line \\\"+(ct+1)+\\\": Unexpected \\\"+(P==j?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[P]||P)+\\\"'\\\"),this.parseError(U,{text:rt.match,token:this.terminals_[P]||P,line:rt.yylineno,loc:_t,expected:ht})}if(X[0]instanceof Array&&X.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+z+\\\", token: \\\"+P);switch(X[0]){case 1:w.push(P),M.push(rt.yytext),m.push(rt.yylloc),w.push(X[1]),P=null,Dt=rt.yyleng,x=rt.yytext,ct=rt.yylineno,_t=rt.yylloc;break;case 2:if(J=this.productions_[X[1]][1],O.$=M[M.length-J],O._$={first_line:m[m.length-(J||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(J||1)].first_column,last_column:m[m.length-1].last_column},K&&(O._$.range=[m[m.length-(J||1)].range[0],m[m.length-1].range[1]]),F=this.performAction.apply(O,[x,Dt,ct,nt.yy,X[1],M,m].concat(ot)),typeof F\u003C\\\"u\\\")return F;J&&(w=w.slice(0,-1*J*2),M=M.slice(0,-1*J),m=m.slice(0,-1*J)),w.push(this.productions_[X[1]][0]),M.push(O.$),m.push(O._$),C=Q[w[w.length-2]][w[w.length-1]],w.push(C);break;case 3:return!0}}return!0}},G=function(){var W={EOF:1,parseError:function(D,w){if(this.yy.parser)this.yy.parser.parseError(D,w);else throw new Error(D)},setInput:function(N,D){return this.yy=D||this.yy||{},this._input=N,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var N=this._input[0];this.yytext+=N,this.yyleng++,this.offset++,this.match+=N,this.matched+=N;var D=N.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return D?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),N},unput:function(N){var D=N.length,w=N.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=N+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-D),this.offset-=D;var v=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),w.length-1&&(this.yylineno-=w.length-1);var M=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:w?(w.length===v.length?this.yylloc.first_column:0)+v[v.length-w.length].length-w[0].length:this.yylloc.first_column-D},this.options.ranges&&(this.yylloc.range=[M[0],M[0]+this.yyleng-D]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(N){this.unput(this.match.slice(N))},pastInput:function(){var N=this.matched.substr(0,this.matched.length-this.match.length);return(N.length>20?\\\"...\\\":\\\"\\\")+N.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var N=this.match;return N.length\u003C20&&(N+=this._input.substr(0,20-N.length)),(N.substr(0,20)+(N.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var N=this.pastInput(),D=new Array(N.length+1).join(\\\"-\\\");return N+this.upcomingInput()+`\\n`+D+\\\"^\\\"},test_match:function(N,D){var w,v,M;if(this.options.backtrack_lexer&&(M={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(M.yylloc.range=this.yylloc.range.slice(0))),v=N[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+N[0].length},this.yytext+=N[0],this.match+=N[0],this.matches=N,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(N[0].length),this.matched+=N[0],w=this.performAction.call(this,this.yy,this,D,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),w)return w;if(this._backtrack){for(var m in M)this[m]=M[m];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var N,D,w,v;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var M=this._currentRules(),m=0;m\u003CM.length;m++)if(w=this._input.match(this.rules[M[m]]),w&&(!D||w[0].length>D[0].length)){if(D=w,v=m,this.options.backtrack_lexer){if(N=this.test_match(w,M[m]),N!==!1)return N;if(this._backtrack){D=!1;continue}else return!1}else if(!this.options.flex)break}return D?(N=this.test_match(D,M[v]),N!==!1?N:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var D=this.next();return D||this.lex()},begin:function(D){this.conditionStack.push(D)},popState:function(){var D=this.conditionStack.length-1;return D>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(D){return D=this.conditionStack.length-1-Math.abs(D||0),D>=0?this.conditionStack[D]:\\\"INITIAL\\\"},pushState:function(D){this.begin(D)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(D,w,v,M){switch(v){case 0:return this.begin(\\\"open_directive\\\"),50;case 1:return this.begin(\\\"type_directive\\\"),51;case 2:return this.popState(),this.begin(\\\"arg_directive\\\"),9;case 3:return this.popState(),this.popState(),53;case 4:return 52;case 5:return this.begin(\\\"acc_title\\\"),20;case 6:return this.popState(),\\\"acc_title_value\\\";case 7:return this.begin(\\\"acc_descr\\\"),22;case 8:return this.popState(),\\\"acc_descr_value\\\";case 9:this.begin(\\\"acc_descr_multiline\\\");break;case 10:this.popState();break;case 11:return\\\"acc_descr_multiline_value\\\";case 12:return 14;case 13:break;case 14:break;case 15:return 6;case 16:return 40;case 17:return 33;case 18:return 38;case 19:return 42;case 20:return 43;case 21:return 44;case 22:return 45;case 23:return 35;case 24:return 29;case 25:return 30;case 26:return 37;case 27:return 32;case 28:return 27;case 29:return 10;case 30:return 10;case 31:return 9;case 32:return\\\"CARET\\\";case 33:this.begin(\\\"options\\\");break;case 34:this.popState();break;case 35:return 13;case 36:return 36;case 37:this.begin(\\\"string\\\");break;case 38:this.popState();break;case 39:return 34;case 40:return 31;case 41:return 54;case 42:return 8}},rules:[/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:(\\\\r?\\\\n)+)/i,/^(?:#[^\\\\n]*)/i,/^(?:%[^\\\\n]*)/i,/^(?:gitGraph\\\\b)/i,/^(?:commit(?=\\\\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\\\\b)/i,/^(?:REVERSE\\\\b)/i,/^(?:HIGHLIGHT\\\\b)/i,/^(?:tag:)/i,/^(?:branch(?=\\\\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\\\\s|$))/i,/^(?:cherry-pick(?=\\\\s|$))/i,/^(?:checkout(?=\\\\s|$))/i,/^(?:LR\\\\b)/i,/^(?:BT\\\\b)/i,/^(?::)/i,/^(?:\\\\^)/i,/^(?:options\\\\r?\\\\n)/i,/^(?:[ \\\\r\\\\n\\\\t]+end\\\\b)/i,/^(?:[\\\\s\\\\S]+(?=[ \\\\r\\\\n\\\\t]+end))/i,/^(?:[\\\"][\\\"])/i,/^(?:[\\\"])/i,/^(?:[\\\"])/i,/^(?:[^\\\"]*)/i,/^(?:[0-9]+(?=\\\\s|$))/i,/^(?:\\\\w([-\\\\./\\\\w]*[-\\\\w])?)/i,/^(?:$)/i,/^(?:\\\\s+)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[38,39],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,37,40,41,42,43],inclusive:!0}}};return W}();H.lexer=G;function Y(){this.yy={}}return Y.prototype=H,H.Parser=Y,new Y}();C1.parser=C1;const gE=C1,yE=t=>t.match(/^\\\\s*gitGraph/)!==null;let S1=\\\"\\\",Nc=\\\"\\\",A1=\\\"\\\";const L1=t=>yn(t,$()),vn=function(){S1=\\\"\\\",A1=\\\"\\\",Nc=\\\"\\\"},nn=function(t){S1=L1(t).replace(/^\\\\s+/g,\\\"\\\")},kn=function(){return S1||Nc},wn=function(t){A1=L1(t).replace(/\\\\n\\\\s+/g,`\\n`)},Tn=function(){return A1},hi=function(t){Nc=L1(t)},di=function(){return Nc};let Bc=$().gitGraph.mainBranchName,mE=$().gitGraph.mainBranchOrder,cr={},Br=null,mo={};mo[Bc]={name:Bc,order:mE};let rr={};rr[Bc]=Br;let mr=Bc,hg=\\\"LR\\\",xs=0;function D1(){return Fp({length:7})}const bE=function(t,e,r){ze.parseDirective(this,t,e,r)};function _E(t,e){const r=Object.create(null);return t.reduce((n,i)=>{const s=e(i);return r[s]||(r[s]=!0,n.push(i)),n},[])}const xE=function(t){hg=t};let dg={};const vE=function(t){B.debug(\\\"options str\\\",t),t=t&&t.trim(),t=t||\\\"{}\\\";try{dg=JSON.parse(t)}catch(e){B.error(\\\"error while parsing gitGraph options\\\",e.message)}},kE=function(){return dg},wE=function(t,e,r,n){B.debug(\\\"Entering commit:\\\",t,e,r,n),e=he.sanitizeText(e,$()),t=he.sanitizeText(t,$()),n=he.sanitizeText(n,$());const i={id:e||xs+\\\"-\\\"+D1(),message:t,seq:xs++,type:r||bo.NORMAL,tag:n||\\\"\\\",parents:Br==null?[]:[Br.id],branch:mr};Br=i,cr[i.id]=i,rr[mr]=i.id,B.debug(\\\"in pushCommit \\\"+i.id)},TE=function(t,e){if(t=he.sanitizeText(t,$()),rr[t]===void 0)rr[t]=Br!=null?Br.id:null,mo[t]={name:t,order:e?parseInt(e,10):null},fg(t),B.debug(\\\"in createBranch\\\");else{let r=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \\\"checkout '+t+'\\\")');throw r.hash={text:\\\"branch \\\"+t,token:\\\"branch \\\"+t,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['\\\"checkout '+t+'\\\"']},r}},EE=function(t,e,r,n){t=he.sanitizeText(t,$()),e=he.sanitizeText(e,$());const i=cr[rr[mr]],s=cr[rr[t]];if(mr===t){let o=new Error('Incorrect usage of \\\"merge\\\". Cannot merge a branch to itself');throw o.hash={text:\\\"merge \\\"+t,token:\\\"merge \\\"+t,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"branch abc\\\"]},o}else if(i===void 0||!i){let o=new Error('Incorrect usage of \\\"merge\\\". Current branch ('+mr+\\\")has no commits\\\");throw o.hash={text:\\\"merge \\\"+t,token:\\\"merge \\\"+t,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"commit\\\"]},o}else if(rr[t]===void 0){let o=new Error('Incorrect usage of \\\"merge\\\". Branch to be merged ('+t+\\\") does not exist\\\");throw o.hash={text:\\\"merge \\\"+t,token:\\\"merge \\\"+t,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"branch \\\"+t]},o}else if(s===void 0||!s){let o=new Error('Incorrect usage of \\\"merge\\\". Branch to be merged ('+t+\\\") has no commits\\\");throw o.hash={text:\\\"merge \\\"+t,token:\\\"merge \\\"+t,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['\\\"commit\\\"']},o}else if(i===s){let o=new Error('Incorrect usage of \\\"merge\\\". Both branches have same head');throw o.hash={text:\\\"merge \\\"+t,token:\\\"merge \\\"+t,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"branch abc\\\"]},o}else if(e&&cr[e]!==void 0){let o=new Error('Incorrect usage of \\\"merge\\\". Commit with id:'+e+\\\" already exists, use different custom Id\\\");throw o.hash={text:\\\"merge \\\"+t+e+r+n,token:\\\"merge \\\"+t+e+r+n,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"merge \\\"+t+\\\" \\\"+e+\\\"_UNIQUE \\\"+r+\\\" \\\"+n]},o}const a={id:e||xs+\\\"-\\\"+D1(),message:\\\"merged branch \\\"+t+\\\" into \\\"+mr,seq:xs++,parents:[Br==null?null:Br.id,rr[t]],branch:mr,type:bo.MERGE,customType:r,customId:!!e,tag:n||\\\"\\\"};Br=a,cr[a.id]=a,rr[mr]=a.id,B.debug(rr),B.debug(\\\"in mergeBranch\\\")},CE=function(t,e,r){if(B.debug(\\\"Entering cherryPick:\\\",t,e,r),t=he.sanitizeText(t,$()),e=he.sanitizeText(e,$()),r=he.sanitizeText(r,$()),!t||cr[t]===void 0){let s=new Error('Incorrect usage of \\\"cherryPick\\\". Source commit id should exist and provided');throw s.hash={text:\\\"cherryPick \\\"+t+\\\" \\\"+e,token:\\\"cherryPick \\\"+t+\\\" \\\"+e,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"cherry-pick abc\\\"]},s}let n=cr[t],i=n.branch;if(n.type===bo.MERGE){let s=new Error('Incorrect usage of \\\"cherryPick\\\". Source commit should not be a merge commit');throw s.hash={text:\\\"cherryPick \\\"+t+\\\" \\\"+e,token:\\\"cherryPick \\\"+t+\\\" \\\"+e,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"cherry-pick abc\\\"]},s}if(!e||cr[e]===void 0){if(i===mr){let o=new Error('Incorrect usage of \\\"cherryPick\\\". Source commit is already on current branch');throw o.hash={text:\\\"cherryPick \\\"+t+\\\" \\\"+e,token:\\\"cherryPick \\\"+t+\\\" \\\"+e,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"cherry-pick abc\\\"]},o}const s=cr[rr[mr]];if(s===void 0||!s){let o=new Error('Incorrect usage of \\\"cherry-pick\\\". Current branch ('+mr+\\\")has no commits\\\");throw o.hash={text:\\\"cherryPick \\\"+t+\\\" \\\"+e,token:\\\"cherryPick \\\"+t+\\\" \\\"+e,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"cherry-pick abc\\\"]},o}const a={id:xs+\\\"-\\\"+D1(),message:\\\"cherry-picked \\\"+n+\\\" into \\\"+mr,seq:xs++,parents:[Br==null?null:Br.id,n.id],branch:mr,type:bo.CHERRY_PICK,tag:r!=null?r:\\\"cherry-pick:\\\"+n.id};Br=a,cr[a.id]=a,rr[mr]=a.id,B.debug(rr),B.debug(\\\"in cherryPick\\\")}},fg=function(t){if(t=he.sanitizeText(t,$()),rr[t]===void 0){let e=new Error('Trying to checkout branch which is not yet created. (Help try using \\\"branch '+t+'\\\")');throw e.hash={text:\\\"checkout \\\"+t,token:\\\"checkout \\\"+t,line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['\\\"branch '+t+'\\\"']},e}else{mr=t;const e=rr[mr];Br=cr[e]}};function pg(t,e,r){const n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function gg(t){const e=t.reduce((i,s)=>i.seq>s.seq?i:s,t[0]);let r=\\\"\\\";t.forEach(function(i){i===e?r+=\\\"\\t*\\\":r+=\\\"\\t|\\\"});const n=[r,e.id,e.seq];for(let i in rr)rr[i]===e.id&&n.push(i);if(B.debug(n.join(\\\" \\\")),e.parents&&e.parents.length==2){const i=cr[e.parents[0]];pg(t,e,i),t.push(cr[e.parents[1]])}else{if(e.parents.length==0)return;{const i=cr[e.parents];pg(t,e,i)}}t=_E(t,i=>i.id),gg(t)}const SE=function(){B.debug(cr);const t=yg()[0];gg([t])},AE=function(){cr={},Br=null;let t=$().gitGraph.mainBranchName,e=$().gitGraph.mainBranchOrder;rr={},rr[t]=null,mo={},mo[t]={name:t,order:e},mr=t,xs=0,vn()},LE=function(){return Object.values(mo).map((e,r)=>e.order!==null?e:{...e,order:parseFloat(`0.${r}`,10)}).sort((e,r)=>e.order-r.order).map(({name:e})=>({name:e}))},DE=function(){return rr},ME=function(){return cr},yg=function(){const t=Object.keys(cr).map(function(e){return cr[e]});return t.forEach(function(e){B.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},NE=function(){return mr},BE=function(){return hg},IE=function(){return Br},bo={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},OE={parseDirective:bE,getConfig:()=>$().gitGraph,setDirection:xE,setOptions:vE,getOptions:kE,commit:wE,branch:TE,merge:EE,cherryPick:CE,checkout:fg,prettyPrint:SE,clear:AE,getBranchesAsObjArray:LE,getBranches:DE,getCommits:ME,getCommitsArray:yg,getCurrentBranch:NE,getDirection:BE,getHead:IE,setAccTitle:nn,getAccTitle:kn,getAccDescription:Tn,setAccDescription:wn,setDiagramTitle:hi,getDiagramTitle:di,commitType:bo};let _o={};const qr={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},vs=8;let Yr={},Ic={},Oc=[],Rc=0;const RE=()=>{Yr={},Ic={},_o={},Rc=0,Oc=[]},FE=t=>{const e=document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"text\\\");let r=[];typeof t==\\\"string\\\"?r=t.split(/\\\\\\\\n|\\\\n|\u003Cbr\\\\s*\\\\/?>/gi):Array.isArray(t)?r=t:r=[];for(const n of r){const i=document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"tspan\\\");i.setAttributeNS(\\\"http://www.w3.org/XML/1998/namespace\\\",\\\"xml:space\\\",\\\"preserve\\\"),i.setAttribute(\\\"dy\\\",\\\"1em\\\"),i.setAttribute(\\\"x\\\",\\\"0\\\"),i.setAttribute(\\\"class\\\",\\\"row\\\"),i.textContent=n.trim(),e.appendChild(i)}return e},mg=(t,e,r)=>{const n=yo().gitGraph,i=t.append(\\\"g\\\").attr(\\\"class\\\",\\\"commit-bullets\\\"),s=t.append(\\\"g\\\").attr(\\\"class\\\",\\\"commit-labels\\\");let a=0;Object.keys(e).sort((u,d)=>e[u].seq-e[d].seq).forEach(u=>{const d=e[u],f=Yr[d.branch].pos,p=a+10;if(r){let g,b=d.customType!==void 0&&d.customType!==\\\"\\\"?d.customType:d.type;switch(b){case qr.NORMAL:g=\\\"commit-normal\\\";break;case qr.REVERSE:g=\\\"commit-reverse\\\";break;case qr.HIGHLIGHT:g=\\\"commit-highlight\\\";break;case qr.MERGE:g=\\\"commit-merge\\\";break;case qr.CHERRY_PICK:g=\\\"commit-cherry-pick\\\";break;default:g=\\\"commit-normal\\\"}if(b===qr.HIGHLIGHT){const k=i.append(\\\"rect\\\");k.attr(\\\"x\\\",p-10),k.attr(\\\"y\\\",f-10),k.attr(\\\"height\\\",20),k.attr(\\\"width\\\",20),k.attr(\\\"class\\\",`commit ${d.id} commit-highlight${Yr[d.branch].index%vs} ${g}-outer`),i.append(\\\"rect\\\").attr(\\\"x\\\",p-6).attr(\\\"y\\\",f-6).attr(\\\"height\\\",12).attr(\\\"width\\\",12).attr(\\\"class\\\",`commit ${d.id} commit${Yr[d.branch].index%vs} ${g}-inner`)}else if(b===qr.CHERRY_PICK)i.append(\\\"circle\\\").attr(\\\"cx\\\",p).attr(\\\"cy\\\",f).attr(\\\"r\\\",10).attr(\\\"class\\\",`commit ${d.id} ${g}`),i.append(\\\"circle\\\").attr(\\\"cx\\\",p-3).attr(\\\"cy\\\",f+2).attr(\\\"r\\\",2.75).attr(\\\"fill\\\",\\\"#fff\\\").attr(\\\"class\\\",`commit ${d.id} ${g}`),i.append(\\\"circle\\\").attr(\\\"cx\\\",p+3).attr(\\\"cy\\\",f+2).attr(\\\"r\\\",2.75).attr(\\\"fill\\\",\\\"#fff\\\").attr(\\\"class\\\",`commit ${d.id} ${g}`),i.append(\\\"line\\\").attr(\\\"x1\\\",p+3).attr(\\\"y1\\\",f+1).attr(\\\"x2\\\",p).attr(\\\"y2\\\",f-5).attr(\\\"stroke\\\",\\\"#fff\\\").attr(\\\"class\\\",`commit ${d.id} ${g}`),i.append(\\\"line\\\").attr(\\\"x1\\\",p-3).attr(\\\"y1\\\",f+1).attr(\\\"x2\\\",p).attr(\\\"y2\\\",f-5).attr(\\\"stroke\\\",\\\"#fff\\\").attr(\\\"class\\\",`commit ${d.id} ${g}`);else{const k=i.append(\\\"circle\\\");if(k.attr(\\\"cx\\\",p),k.attr(\\\"cy\\\",f),k.attr(\\\"r\\\",d.type===qr.MERGE?9:10),k.attr(\\\"class\\\",`commit ${d.id} commit${Yr[d.branch].index%vs}`),b===qr.MERGE){const T=i.append(\\\"circle\\\");T.attr(\\\"cx\\\",p),T.attr(\\\"cy\\\",f),T.attr(\\\"r\\\",6),T.attr(\\\"class\\\",`commit ${g} ${d.id} commit${Yr[d.branch].index%vs}`)}b===qr.REVERSE&&i.append(\\\"path\\\").attr(\\\"d\\\",`M ${p-5},${f-5}L${p+5},${f+5}M${p-5},${f+5}L${p+5},${f-5}`).attr(\\\"class\\\",`commit ${g} ${d.id} commit${Yr[d.branch].index%vs}`)}}if(Ic[d.id]={x:a+10,y:f},r){if(d.type!==qr.CHERRY_PICK&&(d.customId&&d.type===qr.MERGE||d.type!==qr.MERGE)&&n.showCommitLabel){const k=s.append(\\\"g\\\"),T=k.insert(\\\"rect\\\").attr(\\\"class\\\",\\\"commit-label-bkg\\\"),L=k.append(\\\"text\\\").attr(\\\"x\\\",a).attr(\\\"y\\\",f+25).attr(\\\"class\\\",\\\"commit-label\\\").text(d.id);let E=L.node().getBBox();if(T.attr(\\\"x\\\",a+10-E.width/2-2).attr(\\\"y\\\",f+13.5).attr(\\\"width\\\",E.width+2*2).attr(\\\"height\\\",E.height+2*2),L.attr(\\\"x\\\",a+10-E.width/2),n.rotateCommitLabel){let I=-7.5-(E.width+10)/25*9.5,V=10+E.width/25*8.5;k.attr(\\\"transform\\\",\\\"translate(\\\"+I+\\\", \\\"+V+\\\") rotate(\\\"+-45+\\\", \\\"+a+\\\", \\\"+f+\\\")\\\")}}if(d.tag){const k=s.insert(\\\"polygon\\\"),T=s.append(\\\"circle\\\"),L=s.append(\\\"text\\\").attr(\\\"y\\\",f-16).attr(\\\"class\\\",\\\"tag-label\\\").text(d.tag);let E=L.node().getBBox();L.attr(\\\"x\\\",a+10-E.width/2);const I=E.height/2,V=f-19.2;k.attr(\\\"class\\\",\\\"tag-label-bkg\\\").attr(\\\"points\\\",`\\n ${a-E.width/2-4/2},${V+2}\\n ${a-E.width/2-4/2},${V-2}\\n ${a+10-E.width/2-4},${V-I-2}\\n ${a+10+E.width/2+4},${V-I-2}\\n ${a+10+E.width/2+4},${V+I+2}\\n ${a+10-E.width/2-4},${V+I+2}`),T.attr(\\\"cx\\\",a-E.width/2+4/2).attr(\\\"cy\\\",V).attr(\\\"r\\\",1.5).attr(\\\"class\\\",\\\"tag-hole\\\")}}a+=50,a>Rc&&(Rc=a)})},PE=(t,e,r)=>Object.keys(r).filter(s=>r[s].branch===e.branch&&r[s].seq>t.seq&&r[s].seq\u003Ce.seq).length>0,M1=(t,e,r=0)=>{const n=t+Math.abs(t-e)/2;if(r>5)return n;if(Oc.every(a=>Math.abs(a-n)>=10))return Oc.push(n),n;const s=Math.abs(t-e);return M1(t,e-s/5,r+1)},YE=(t,e,r,n)=>{const i=Ic[e.id],s=Ic[r.id],a=PE(e,r,n);let o=\\\"\\\",l=\\\"\\\",u=0,d=0,f=Yr[r.branch].index,p;if(a){o=\\\"A 10 10, 0, 0, 0,\\\",l=\\\"A 10 10, 0, 0, 1,\\\",u=10,d=10,f=Yr[r.branch].index;const g=i.y\u003Cs.y?M1(i.y,s.y):M1(s.y,i.y);i.y\u003Cs.y?p=`M ${i.x} ${i.y} L ${i.x} ${g-u} ${o} ${i.x+d} ${g} L ${s.x-u} ${g} ${l} ${s.x} ${g+d} L ${s.x} ${s.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${g+u} ${l} ${i.x+d} ${g} L ${s.x-u} ${g} ${o} ${s.x} ${g-d} L ${s.x} ${s.y}`}else i.y\u003Cs.y&&(o=\\\"A 20 20, 0, 0, 0,\\\",u=20,d=20,f=Yr[r.branch].index,p=`M ${i.x} ${i.y} L ${i.x} ${s.y-u} ${o} ${i.x+d} ${s.y} L ${s.x} ${s.y}`),i.y>s.y&&(o=\\\"A 20 20, 0, 0, 0,\\\",u=20,d=20,f=Yr[e.branch].index,p=`M ${i.x} ${i.y} L ${s.x-u} ${i.y} ${o} ${s.x} ${i.y-d} L ${s.x} ${s.y}`),i.y===s.y&&(f=Yr[e.branch].index,p=`M ${i.x} ${i.y} L ${i.x} ${s.y-u} ${o} ${i.x+d} ${s.y} L ${s.x} ${s.y}`);t.append(\\\"path\\\").attr(\\\"d\\\",p).attr(\\\"class\\\",\\\"arrow arrow\\\"+f%vs)},VE=(t,e)=>{const r=t.append(\\\"g\\\").attr(\\\"class\\\",\\\"commit-arrows\\\");Object.keys(e).forEach(n=>{const i=e[n];i.parents&&i.parents.length>0&&i.parents.forEach(s=>{YE(r,e[s],i,e)})})},UE=(t,e)=>{const r=yo().gitGraph,n=t.append(\\\"g\\\");e.forEach((i,s)=>{const a=s%vs,o=Yr[i.name].pos,l=n.append(\\\"line\\\");l.attr(\\\"x1\\\",0),l.attr(\\\"y1\\\",o),l.attr(\\\"x2\\\",Rc),l.attr(\\\"y2\\\",o),l.attr(\\\"class\\\",\\\"branch branch\\\"+a),Oc.push(o);let u=i.name;const d=FE(u),f=n.insert(\\\"rect\\\"),g=n.insert(\\\"g\\\").attr(\\\"class\\\",\\\"branchLabel\\\").insert(\\\"g\\\").attr(\\\"class\\\",\\\"label branch-label\\\"+a);g.node().appendChild(d);let b=d.getBBox();f.attr(\\\"class\\\",\\\"branchLabelBkg label\\\"+a).attr(\\\"rx\\\",4).attr(\\\"ry\\\",4).attr(\\\"x\\\",-b.width-4-(r.rotateCommitLabel===!0?30:0)).attr(\\\"y\\\",-b.height/2+8).attr(\\\"width\\\",b.width+18).attr(\\\"height\\\",b.height+4),g.attr(\\\"transform\\\",\\\"translate(\\\"+(-b.width-14-(r.rotateCommitLabel===!0?30:0))+\\\", \\\"+(o-b.height/2-1)+\\\")\\\"),f.attr(\\\"transform\\\",\\\"translate(\\\"+-19+\\\", \\\"+(o-b.height/2)+\\\")\\\")})},zE={draw:function(t,e,r,n){var u;RE();const i=yo(),s=i.gitGraph;B.debug(\\\"in gitgraph renderer\\\",t+`\\n`,\\\"id:\\\",e,r),_o=n.db.getCommits();const a=n.db.getBranchesAsObjArray();let o=0;a.forEach((d,f)=>{Yr[d.name]={pos:o,index:f},o+=50+(s.rotateCommitLabel?40:0)});const l=St(`[id=\\\"${e}\\\"]`);mg(l,_o,!1),s.showBranches&&UE(l,a),VE(l,_o),mg(l,_o,!0),ge.insertTitle(l,\\\"gitTitleText\\\",s.titleTopMargin,n.db.getDiagramTitle()),cg(void 0,l,s.diagramPadding,(u=s.useMaxWidth)!=null?u:i.useMaxWidth)}},WE=t=>`\\n .commit-id,\\n .commit-msg,\\n .branch-label {\\n fill: lightgrey;\\n color: lightgrey;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n ${[0,1,2,3,4,5,6,7].map(e=>`\\n .branch-label${e} { fill: ${t[\\\"gitBranchLabel\\\"+e]}; }\\n .commit${e} { stroke: ${t[\\\"git\\\"+e]}; fill: ${t[\\\"git\\\"+e]}; }\\n .commit-highlight${e} { stroke: ${t[\\\"gitInv\\\"+e]}; fill: ${t[\\\"gitInv\\\"+e]}; }\\n .label${e} { fill: ${t[\\\"git\\\"+e]}; }\\n .arrow${e} { stroke: ${t[\\\"git\\\"+e]}; }\\n `).join(`\\n`)}\\n\\n .branch {\\n stroke-width: 1;\\n stroke: ${t.lineColor};\\n stroke-dasharray: 2;\\n }\\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\\n .tag-hole { fill: ${t.textColor}; }\\n\\n .commit-merge {\\n stroke: ${t.primaryColor};\\n fill: ${t.primaryColor};\\n }\\n .commit-reverse {\\n stroke: ${t.primaryColor};\\n fill: ${t.primaryColor};\\n stroke-width: 3;\\n }\\n .commit-highlight-outer {\\n }\\n .commit-highlight-inner {\\n stroke: ${t.primaryColor};\\n fill: ${t.primaryColor};\\n }\\n\\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\\n .gitTitleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: ${t.textColor};\\n }\\n }\\n`;var Fc=function(){var t=function(Ft,xt,ft,Lt){for(ft=ft||{},Lt=Ft.length;Lt--;ft[Ft[Lt]]=xt);return ft},e=[1,6],r=[1,7],n=[1,8],i=[1,9],s=[1,16],a=[1,11],o=[1,12],l=[1,13],u=[1,14],d=[1,15],f=[1,27],p=[1,33],g=[1,34],b=[1,35],k=[1,36],T=[1,37],L=[1,72],E=[1,73],I=[1,74],V=[1,75],H=[1,76],G=[1,77],Y=[1,78],W=[1,38],N=[1,39],D=[1,40],w=[1,41],v=[1,42],M=[1,43],m=[1,44],Q=[1,45],x=[1,46],ct=[1,47],Dt=[1,48],kt=[1,49],j=[1,50],ot=[1,51],rt=[1,52],nt=[1,53],ut=[1,54],_t=[1,55],K=[1,56],Ot=[1,57],P=[1,59],z=[1,60],X=[1,61],F=[1,62],O=[1,63],A=[1,64],J=[1,65],C=[1,66],ht=[1,67],U=[1,68],Yt=[1,69],et=[24,52],Mt=[24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Tt=[15,24,44,46,47,48,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],gt=[1,94],Et=[1,95],wt=[1,96],pt=[1,97],st=[15,24,52],le=[7,8,9,10,18,22,25,26,27,28],Xt=[15,24,43,52],jt=[15,24,43,52,86,87,89,90],Kt=[15,43],Gt=[44,46,47,48,49,50,51,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],Ee={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,directive:6,direction_tb:7,direction_bt:8,direction_rl:9,direction_lr:10,graphConfig:11,openDirective:12,typeDirective:13,closeDirective:14,NEWLINE:15,\\\":\\\":16,argDirective:17,open_directive:18,type_directive:19,arg_directive:20,close_directive:21,C4_CONTEXT:22,statements:23,EOF:24,C4_CONTAINER:25,C4_COMPONENT:26,C4_DYNAMIC:27,C4_DEPLOYMENT:28,otherStatements:29,diagramStatements:30,otherStatement:31,title:32,accDescription:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,boundaryStatement:39,boundaryStartStatement:40,boundaryStopStatement:41,boundaryStart:42,LBRACE:43,ENTERPRISE_BOUNDARY:44,attributes:45,SYSTEM_BOUNDARY:46,BOUNDARY:47,CONTAINER_BOUNDARY:48,NODE:49,NODE_L:50,NODE_R:51,RBRACE:52,diagramStatement:53,PERSON:54,PERSON_EXT:55,SYSTEM:56,SYSTEM_DB:57,SYSTEM_QUEUE:58,SYSTEM_EXT:59,SYSTEM_EXT_DB:60,SYSTEM_EXT_QUEUE:61,CONTAINER:62,CONTAINER_DB:63,CONTAINER_QUEUE:64,CONTAINER_EXT:65,CONTAINER_EXT_DB:66,CONTAINER_EXT_QUEUE:67,COMPONENT:68,COMPONENT_DB:69,COMPONENT_QUEUE:70,COMPONENT_EXT:71,COMPONENT_EXT_DB:72,COMPONENT_EXT_QUEUE:73,REL:74,BIREL:75,REL_U:76,REL_D:77,REL_L:78,REL_R:79,REL_B:80,REL_INDEX:81,UPDATE_EL_STYLE:82,UPDATE_REL_STYLE:83,UPDATE_LAYOUT_CONFIG:84,attribute:85,STR:86,STR_KEY:87,STR_VALUE:88,ATTRIBUTE:89,ATTRIBUTE_EMPTY:90,$accept:0,$end:1},terminals_:{2:\\\"error\\\",7:\\\"direction_tb\\\",8:\\\"direction_bt\\\",9:\\\"direction_rl\\\",10:\\\"direction_lr\\\",15:\\\"NEWLINE\\\",16:\\\":\\\",18:\\\"open_directive\\\",19:\\\"type_directive\\\",20:\\\"arg_directive\\\",21:\\\"close_directive\\\",22:\\\"C4_CONTEXT\\\",24:\\\"EOF\\\",25:\\\"C4_CONTAINER\\\",26:\\\"C4_COMPONENT\\\",27:\\\"C4_DYNAMIC\\\",28:\\\"C4_DEPLOYMENT\\\",32:\\\"title\\\",33:\\\"accDescription\\\",34:\\\"acc_title\\\",35:\\\"acc_title_value\\\",36:\\\"acc_descr\\\",37:\\\"acc_descr_value\\\",38:\\\"acc_descr_multiline_value\\\",43:\\\"LBRACE\\\",44:\\\"ENTERPRISE_BOUNDARY\\\",46:\\\"SYSTEM_BOUNDARY\\\",47:\\\"BOUNDARY\\\",48:\\\"CONTAINER_BOUNDARY\\\",49:\\\"NODE\\\",50:\\\"NODE_L\\\",51:\\\"NODE_R\\\",52:\\\"RBRACE\\\",54:\\\"PERSON\\\",55:\\\"PERSON_EXT\\\",56:\\\"SYSTEM\\\",57:\\\"SYSTEM_DB\\\",58:\\\"SYSTEM_QUEUE\\\",59:\\\"SYSTEM_EXT\\\",60:\\\"SYSTEM_EXT_DB\\\",61:\\\"SYSTEM_EXT_QUEUE\\\",62:\\\"CONTAINER\\\",63:\\\"CONTAINER_DB\\\",64:\\\"CONTAINER_QUEUE\\\",65:\\\"CONTAINER_EXT\\\",66:\\\"CONTAINER_EXT_DB\\\",67:\\\"CONTAINER_EXT_QUEUE\\\",68:\\\"COMPONENT\\\",69:\\\"COMPONENT_DB\\\",70:\\\"COMPONENT_QUEUE\\\",71:\\\"COMPONENT_EXT\\\",72:\\\"COMPONENT_EXT_DB\\\",73:\\\"COMPONENT_EXT_QUEUE\\\",74:\\\"REL\\\",75:\\\"BIREL\\\",76:\\\"REL_U\\\",77:\\\"REL_D\\\",78:\\\"REL_L\\\",79:\\\"REL_R\\\",80:\\\"REL_B\\\",81:\\\"REL_INDEX\\\",82:\\\"UPDATE_EL_STYLE\\\",83:\\\"UPDATE_REL_STYLE\\\",84:\\\"UPDATE_LAYOUT_CONFIG\\\",86:\\\"STR\\\",87:\\\"STR_KEY\\\",88:\\\"STR_VALUE\\\",89:\\\"ATTRIBUTE\\\",90:\\\"ATTRIBUTE_EMPTY\\\"},productions_:[0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[11,4],[11,4],[11,4],[11,4],[23,1],[23,1],[23,2],[29,1],[29,2],[29,3],[31,1],[31,1],[31,2],[31,2],[31,1],[39,3],[40,3],[40,3],[40,4],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[42,2],[41,1],[30,1],[30,2],[30,3],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,1],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[53,2],[45,1],[45,2],[85,1],[85,2],[85,1],[85,1]],performAction:function(xt,ft,Lt,bt,Ut,at,ie){var dt=at.length-1;switch(Ut){case 4:bt.setDirection(\\\"TB\\\");break;case 5:bt.setDirection(\\\"BT\\\");break;case 6:bt.setDirection(\\\"RL\\\");break;case 7:bt.setDirection(\\\"LR\\\");break;case 11:bt.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 12:break;case 13:at[dt]=at[dt].trim().replace(/'/g,'\\\"'),bt.parseDirective(at[dt],\\\"arg_directive\\\");break;case 14:bt.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"c4Context\\\");break;case 15:case 16:case 17:case 18:case 19:bt.setC4Type(at[dt-3]);break;case 26:bt.setTitle(at[dt].substring(6)),this.$=at[dt].substring(6);break;case 27:bt.setAccDescription(at[dt].substring(15)),this.$=at[dt].substring(15);break;case 28:this.$=at[dt].trim(),bt.setTitle(this.$);break;case 29:case 30:this.$=at[dt].trim(),bt.setAccDescription(this.$);break;case 35:case 36:at[dt].splice(2,0,\\\"ENTERPRISE\\\"),bt.addPersonOrSystemBoundary(...at[dt]),this.$=at[dt];break;case 37:bt.addPersonOrSystemBoundary(...at[dt]),this.$=at[dt];break;case 38:at[dt].splice(2,0,\\\"CONTAINER\\\"),bt.addContainerBoundary(...at[dt]),this.$=at[dt];break;case 39:bt.addDeploymentNode(\\\"node\\\",...at[dt]),this.$=at[dt];break;case 40:bt.addDeploymentNode(\\\"nodeL\\\",...at[dt]),this.$=at[dt];break;case 41:bt.addDeploymentNode(\\\"nodeR\\\",...at[dt]),this.$=at[dt];break;case 42:bt.popBoundaryParseStack();break;case 46:bt.addPersonOrSystem(\\\"person\\\",...at[dt]),this.$=at[dt];break;case 47:bt.addPersonOrSystem(\\\"external_person\\\",...at[dt]),this.$=at[dt];break;case 48:bt.addPersonOrSystem(\\\"system\\\",...at[dt]),this.$=at[dt];break;case 49:bt.addPersonOrSystem(\\\"system_db\\\",...at[dt]),this.$=at[dt];break;case 50:bt.addPersonOrSystem(\\\"system_queue\\\",...at[dt]),this.$=at[dt];break;case 51:bt.addPersonOrSystem(\\\"external_system\\\",...at[dt]),this.$=at[dt];break;case 52:bt.addPersonOrSystem(\\\"external_system_db\\\",...at[dt]),this.$=at[dt];break;case 53:bt.addPersonOrSystem(\\\"external_system_queue\\\",...at[dt]),this.$=at[dt];break;case 54:bt.addContainer(\\\"container\\\",...at[dt]),this.$=at[dt];break;case 55:bt.addContainer(\\\"container_db\\\",...at[dt]),this.$=at[dt];break;case 56:bt.addContainer(\\\"container_queue\\\",...at[dt]),this.$=at[dt];break;case 57:bt.addContainer(\\\"external_container\\\",...at[dt]),this.$=at[dt];break;case 58:bt.addContainer(\\\"external_container_db\\\",...at[dt]),this.$=at[dt];break;case 59:bt.addContainer(\\\"external_container_queue\\\",...at[dt]),this.$=at[dt];break;case 60:bt.addComponent(\\\"component\\\",...at[dt]),this.$=at[dt];break;case 61:bt.addComponent(\\\"component_db\\\",...at[dt]),this.$=at[dt];break;case 62:bt.addComponent(\\\"component_queue\\\",...at[dt]),this.$=at[dt];break;case 63:bt.addComponent(\\\"external_component\\\",...at[dt]),this.$=at[dt];break;case 64:bt.addComponent(\\\"external_component_db\\\",...at[dt]),this.$=at[dt];break;case 65:bt.addComponent(\\\"external_component_queue\\\",...at[dt]),this.$=at[dt];break;case 67:bt.addRel(\\\"rel\\\",...at[dt]),this.$=at[dt];break;case 68:bt.addRel(\\\"birel\\\",...at[dt]),this.$=at[dt];break;case 69:bt.addRel(\\\"rel_u\\\",...at[dt]),this.$=at[dt];break;case 70:bt.addRel(\\\"rel_d\\\",...at[dt]),this.$=at[dt];break;case 71:bt.addRel(\\\"rel_l\\\",...at[dt]),this.$=at[dt];break;case 72:bt.addRel(\\\"rel_r\\\",...at[dt]),this.$=at[dt];break;case 73:bt.addRel(\\\"rel_b\\\",...at[dt]),this.$=at[dt];break;case 74:at[dt].splice(0,1),bt.addRel(\\\"rel\\\",...at[dt]),this.$=at[dt];break;case 75:bt.updateElStyle(\\\"update_el_style\\\",...at[dt]),this.$=at[dt];break;case 76:bt.updateRelStyle(\\\"update_rel_style\\\",...at[dt]),this.$=at[dt];break;case 77:bt.updateLayoutConfig(\\\"update_layout_config\\\",...at[dt]),this.$=at[dt];break;case 78:this.$=[at[dt]];break;case 79:at[dt].unshift(at[dt-1]),this.$=at[dt];break;case 80:case 82:this.$=at[dt].trim();break;case 81:let ee={};ee[at[dt-1].trim()]=at[dt].trim(),this.$=ee;break;case 83:this.$=\\\"\\\";break}},table:[{3:1,4:2,5:3,6:4,7:e,8:r,9:n,10:i,11:5,12:10,18:s,22:a,25:o,26:l,27:u,28:d},{1:[3]},{1:[2,1]},{1:[2,2]},{3:17,4:2,5:3,6:4,7:e,8:r,9:n,10:i,11:5,12:10,18:s,22:a,25:o,26:l,27:u,28:d},{1:[2,8]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{1:[2,7]},{13:18,19:[1,19]},{15:[1,20]},{15:[1,21]},{15:[1,22]},{15:[1,23]},{15:[1,24]},{19:[2,11]},{1:[2,3]},{14:25,16:[1,26],21:f},t([16,21],[2,12]),{23:28,29:29,30:30,31:31,32:p,33:g,34:b,36:k,38:T,39:58,40:70,42:71,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,53:32,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt},{23:79,29:29,30:30,31:31,32:p,33:g,34:b,36:k,38:T,39:58,40:70,42:71,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,53:32,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt},{23:80,29:29,30:30,31:31,32:p,33:g,34:b,36:k,38:T,39:58,40:70,42:71,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,53:32,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt},{23:81,29:29,30:30,31:31,32:p,33:g,34:b,36:k,38:T,39:58,40:70,42:71,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,53:32,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt},{23:82,29:29,30:30,31:31,32:p,33:g,34:b,36:k,38:T,39:58,40:70,42:71,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,53:32,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt},{15:[1,83]},{17:84,20:[1,85]},{15:[2,14]},{24:[1,86]},t(et,[2,20],{53:32,39:58,40:70,42:71,30:87,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt}),t(et,[2,21]),t(Mt,[2,23],{15:[1,88]}),t(et,[2,43],{15:[1,89]}),t(Tt,[2,26]),t(Tt,[2,27]),{35:[1,90]},{37:[1,91]},t(Tt,[2,30]),{45:92,85:93,86:gt,87:Et,89:wt,90:pt},{45:98,85:93,86:gt,87:Et,89:wt,90:pt},{45:99,85:93,86:gt,87:Et,89:wt,90:pt},{45:100,85:93,86:gt,87:Et,89:wt,90:pt},{45:101,85:93,86:gt,87:Et,89:wt,90:pt},{45:102,85:93,86:gt,87:Et,89:wt,90:pt},{45:103,85:93,86:gt,87:Et,89:wt,90:pt},{45:104,85:93,86:gt,87:Et,89:wt,90:pt},{45:105,85:93,86:gt,87:Et,89:wt,90:pt},{45:106,85:93,86:gt,87:Et,89:wt,90:pt},{45:107,85:93,86:gt,87:Et,89:wt,90:pt},{45:108,85:93,86:gt,87:Et,89:wt,90:pt},{45:109,85:93,86:gt,87:Et,89:wt,90:pt},{45:110,85:93,86:gt,87:Et,89:wt,90:pt},{45:111,85:93,86:gt,87:Et,89:wt,90:pt},{45:112,85:93,86:gt,87:Et,89:wt,90:pt},{45:113,85:93,86:gt,87:Et,89:wt,90:pt},{45:114,85:93,86:gt,87:Et,89:wt,90:pt},{45:115,85:93,86:gt,87:Et,89:wt,90:pt},{45:116,85:93,86:gt,87:Et,89:wt,90:pt},t(st,[2,66]),{45:117,85:93,86:gt,87:Et,89:wt,90:pt},{45:118,85:93,86:gt,87:Et,89:wt,90:pt},{45:119,85:93,86:gt,87:Et,89:wt,90:pt},{45:120,85:93,86:gt,87:Et,89:wt,90:pt},{45:121,85:93,86:gt,87:Et,89:wt,90:pt},{45:122,85:93,86:gt,87:Et,89:wt,90:pt},{45:123,85:93,86:gt,87:Et,89:wt,90:pt},{45:124,85:93,86:gt,87:Et,89:wt,90:pt},{45:125,85:93,86:gt,87:Et,89:wt,90:pt},{45:126,85:93,86:gt,87:Et,89:wt,90:pt},{45:127,85:93,86:gt,87:Et,89:wt,90:pt},{30:128,39:58,40:70,42:71,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,53:32,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt},{15:[1,130],43:[1,129]},{45:131,85:93,86:gt,87:Et,89:wt,90:pt},{45:132,85:93,86:gt,87:Et,89:wt,90:pt},{45:133,85:93,86:gt,87:Et,89:wt,90:pt},{45:134,85:93,86:gt,87:Et,89:wt,90:pt},{45:135,85:93,86:gt,87:Et,89:wt,90:pt},{45:136,85:93,86:gt,87:Et,89:wt,90:pt},{45:137,85:93,86:gt,87:Et,89:wt,90:pt},{24:[1,138]},{24:[1,139]},{24:[1,140]},{24:[1,141]},t(le,[2,9]),{14:142,21:f},{21:[2,13]},{1:[2,15]},t(et,[2,22]),t(Mt,[2,24],{31:31,29:143,32:p,33:g,34:b,36:k,38:T}),t(et,[2,44],{29:29,30:30,31:31,53:32,39:58,40:70,42:71,23:144,32:p,33:g,34:b,36:k,38:T,44:L,46:E,47:I,48:V,49:H,50:G,51:Y,54:W,55:N,56:D,57:w,58:v,59:M,60:m,61:Q,62:x,63:ct,64:Dt,65:kt,66:j,67:ot,68:rt,69:nt,70:ut,71:_t,72:K,73:Ot,74:P,75:z,76:X,77:F,78:O,79:A,80:J,81:C,82:ht,83:U,84:Yt}),t(Tt,[2,28]),t(Tt,[2,29]),t(st,[2,46]),t(Xt,[2,78],{85:93,45:145,86:gt,87:Et,89:wt,90:pt}),t(jt,[2,80]),{88:[1,146]},t(jt,[2,82]),t(jt,[2,83]),t(st,[2,47]),t(st,[2,48]),t(st,[2,49]),t(st,[2,50]),t(st,[2,51]),t(st,[2,52]),t(st,[2,53]),t(st,[2,54]),t(st,[2,55]),t(st,[2,56]),t(st,[2,57]),t(st,[2,58]),t(st,[2,59]),t(st,[2,60]),t(st,[2,61]),t(st,[2,62]),t(st,[2,63]),t(st,[2,64]),t(st,[2,65]),t(st,[2,67]),t(st,[2,68]),t(st,[2,69]),t(st,[2,70]),t(st,[2,71]),t(st,[2,72]),t(st,[2,73]),t(st,[2,74]),t(st,[2,75]),t(st,[2,76]),t(st,[2,77]),{41:147,52:[1,148]},{15:[1,149]},{43:[1,150]},t(Kt,[2,35]),t(Kt,[2,36]),t(Kt,[2,37]),t(Kt,[2,38]),t(Kt,[2,39]),t(Kt,[2,40]),t(Kt,[2,41]),{1:[2,16]},{1:[2,17]},{1:[2,18]},{1:[2,19]},{15:[1,151]},t(Mt,[2,25]),t(et,[2,45]),t(Xt,[2,79]),t(jt,[2,81]),t(st,[2,31]),t(st,[2,42]),t(Gt,[2,32]),t(Gt,[2,33],{15:[1,152]}),t(le,[2,10]),t(Gt,[2,34])],defaultActions:{2:[2,1],3:[2,2],5:[2,8],6:[2,4],7:[2,5],8:[2,6],9:[2,7],16:[2,11],17:[2,3],27:[2,14],85:[2,13],86:[2,15],138:[2,16],139:[2,17],140:[2,18],141:[2,19]},parseError:function(xt,ft){if(ft.recoverable)this.trace(xt);else{var Lt=new Error(xt);throw Lt.hash=ft,Lt}},parse:function(xt){var ft=this,Lt=[0],bt=[],Ut=[null],at=[],ie=this.table,dt=\\\"\\\",ee=0,fe=0,be=2,_e=1,ke=at.slice.call(arguments,1),$t=Object.create(this.lexer),se={yy:{}};for(var ye in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ye)&&(se.yy[ye]=this.yy[ye]);$t.setInput(xt,se.yy),se.yy.lexer=$t,se.yy.parser=this,typeof $t.yylloc>\\\"u\\\"&&($t.yylloc={});var Jt=$t.yylloc;at.push(Jt);var Nn=$t.options&&$t.options.ranges;typeof se.yy.parseError==\\\"function\\\"?this.parseError=se.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Xr(){var Z;return Z=bt.pop()||$t.lex()||_e,typeof Z!=\\\"number\\\"&&(Z instanceof Array&&(bt=Z,Z=bt.pop()),Z=ft.symbols_[Z]||Z),Z}for(var De,ae,Be,Re,Pe={},Ye,Ie,$e,ar;;){if(ae=Lt[Lt.length-1],this.defaultActions[ae]?Be=this.defaultActions[ae]:((De===null||typeof De>\\\"u\\\")&&(De=Xr()),Be=ie[ae]&&ie[ae][De]),typeof Be>\\\"u\\\"||!Be.length||!Be[0]){var zt=\\\"\\\";ar=[];for(Ye in ie[ae])this.terminals_[Ye]&&Ye>be&&ar.push(\\\"'\\\"+this.terminals_[Ye]+\\\"'\\\");$t.showPosition?zt=\\\"Parse error on line \\\"+(ee+1)+`:\\n`+$t.showPosition()+`\\nExpecting `+ar.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[De]||De)+\\\"'\\\":zt=\\\"Parse error on line \\\"+(ee+1)+\\\": Unexpected \\\"+(De==_e?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[De]||De)+\\\"'\\\"),this.parseError(zt,{text:$t.match,token:this.terminals_[De]||De,line:$t.yylineno,loc:Jt,expected:ar})}if(Be[0]instanceof Array&&Be.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+ae+\\\", token: \\\"+De);switch(Be[0]){case 1:Lt.push(De),Ut.push($t.yytext),at.push($t.yylloc),Lt.push(Be[1]),De=null,fe=$t.yyleng,dt=$t.yytext,ee=$t.yylineno,Jt=$t.yylloc;break;case 2:if(Ie=this.productions_[Be[1]][1],Pe.$=Ut[Ut.length-Ie],Pe._$={first_line:at[at.length-(Ie||1)].first_line,last_line:at[at.length-1].last_line,first_column:at[at.length-(Ie||1)].first_column,last_column:at[at.length-1].last_column},Nn&&(Pe._$.range=[at[at.length-(Ie||1)].range[0],at[at.length-1].range[1]]),Re=this.performAction.apply(Pe,[dt,fe,ee,se.yy,Be[1],Ut,at].concat(ke)),typeof Re\u003C\\\"u\\\")return Re;Ie&&(Lt=Lt.slice(0,-1*Ie*2),Ut=Ut.slice(0,-1*Ie),at=at.slice(0,-1*Ie)),Lt.push(this.productions_[Be[1]][0]),Ut.push(Pe.$),at.push(Pe._$),$e=ie[Lt[Lt.length-2]][Lt[Lt.length-1]],Lt.push($e);break;case 3:return!0}}return!0}},Ht=function(){var Ft={EOF:1,parseError:function(ft,Lt){if(this.yy.parser)this.yy.parser.parseError(ft,Lt);else throw new Error(ft)},setInput:function(xt,ft){return this.yy=ft||this.yy||{},this._input=xt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var xt=this._input[0];this.yytext+=xt,this.yyleng++,this.offset++,this.match+=xt,this.matched+=xt;var ft=xt.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return ft?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),xt},unput:function(xt){var ft=xt.length,Lt=xt.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=xt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ft),this.offset-=ft;var bt=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Lt.length-1&&(this.yylineno-=Lt.length-1);var Ut=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Lt?(Lt.length===bt.length?this.yylloc.first_column:0)+bt[bt.length-Lt.length].length-Lt[0].length:this.yylloc.first_column-ft},this.options.ranges&&(this.yylloc.range=[Ut[0],Ut[0]+this.yyleng-ft]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(xt){this.unput(this.match.slice(xt))},pastInput:function(){var xt=this.matched.substr(0,this.matched.length-this.match.length);return(xt.length>20?\\\"...\\\":\\\"\\\")+xt.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var xt=this.match;return xt.length\u003C20&&(xt+=this._input.substr(0,20-xt.length)),(xt.substr(0,20)+(xt.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var xt=this.pastInput(),ft=new Array(xt.length+1).join(\\\"-\\\");return xt+this.upcomingInput()+`\\n`+ft+\\\"^\\\"},test_match:function(xt,ft){var Lt,bt,Ut;if(this.options.backtrack_lexer&&(Ut={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ut.yylloc.range=this.yylloc.range.slice(0))),bt=xt[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),bt&&(this.yylineno+=bt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:bt?bt[bt.length-1].length-bt[bt.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+xt[0].length},this.yytext+=xt[0],this.match+=xt[0],this.matches=xt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(xt[0].length),this.matched+=xt[0],Lt=this.performAction.call(this,this.yy,this,ft,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Lt)return Lt;if(this._backtrack){for(var at in Ut)this[at]=Ut[at];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var xt,ft,Lt,bt;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var Ut=this._currentRules(),at=0;at\u003CUt.length;at++)if(Lt=this._input.match(this.rules[Ut[at]]),Lt&&(!ft||Lt[0].length>ft[0].length)){if(ft=Lt,bt=at,this.options.backtrack_lexer){if(xt=this.test_match(Lt,Ut[at]),xt!==!1)return xt;if(this._backtrack){ft=!1;continue}else return!1}else if(!this.options.flex)break}return ft?(xt=this.test_match(ft,Ut[bt]),xt!==!1?xt:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var ft=this.next();return ft||this.lex()},begin:function(ft){this.conditionStack.push(ft)},popState:function(){var ft=this.conditionStack.length-1;return ft>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ft){return ft=this.conditionStack.length-1-Math.abs(ft||0),ft>=0?this.conditionStack[ft]:\\\"INITIAL\\\"},pushState:function(ft){this.begin(ft)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(ft,Lt,bt,Ut){switch(bt){case 0:return this.begin(\\\"open_directive\\\"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin(\\\"type_directive\\\"),19;case 6:return this.popState(),this.begin(\\\"arg_directive\\\"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin(\\\"acc_title\\\"),34;case 12:return this.popState(),\\\"acc_title_value\\\";case 13:return this.begin(\\\"acc_descr\\\"),36;case 14:return this.popState(),\\\"acc_descr_value\\\";case 15:this.begin(\\\"acc_descr_multiline\\\");break;case 16:this.popState();break;case 17:return\\\"acc_descr_multiline_value\\\";case 18:break;case 19:c;break;case 20:return 15;case 21:break;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin(\\\"person_ext\\\"),55;case 28:return this.begin(\\\"person\\\"),54;case 29:return this.begin(\\\"system_ext_queue\\\"),61;case 30:return this.begin(\\\"system_ext_db\\\"),60;case 31:return this.begin(\\\"system_ext\\\"),59;case 32:return this.begin(\\\"system_queue\\\"),58;case 33:return this.begin(\\\"system_db\\\"),57;case 34:return this.begin(\\\"system\\\"),56;case 35:return this.begin(\\\"boundary\\\"),47;case 36:return this.begin(\\\"enterprise_boundary\\\"),44;case 37:return this.begin(\\\"system_boundary\\\"),46;case 38:return this.begin(\\\"container_ext_queue\\\"),67;case 39:return this.begin(\\\"container_ext_db\\\"),66;case 40:return this.begin(\\\"container_ext\\\"),65;case 41:return this.begin(\\\"container_queue\\\"),64;case 42:return this.begin(\\\"container_db\\\"),63;case 43:return this.begin(\\\"container\\\"),62;case 44:return this.begin(\\\"container_boundary\\\"),48;case 45:return this.begin(\\\"component_ext_queue\\\"),73;case 46:return this.begin(\\\"component_ext_db\\\"),72;case 47:return this.begin(\\\"component_ext\\\"),71;case 48:return this.begin(\\\"component_queue\\\"),70;case 49:return this.begin(\\\"component_db\\\"),69;case 50:return this.begin(\\\"component\\\"),68;case 51:return this.begin(\\\"node\\\"),49;case 52:return this.begin(\\\"node\\\"),49;case 53:return this.begin(\\\"node_l\\\"),50;case 54:return this.begin(\\\"node_r\\\"),51;case 55:return this.begin(\\\"rel\\\"),74;case 56:return this.begin(\\\"birel\\\"),75;case 57:return this.begin(\\\"rel_u\\\"),76;case 58:return this.begin(\\\"rel_u\\\"),76;case 59:return this.begin(\\\"rel_d\\\"),77;case 60:return this.begin(\\\"rel_d\\\"),77;case 61:return this.begin(\\\"rel_l\\\"),78;case 62:return this.begin(\\\"rel_l\\\"),78;case 63:return this.begin(\\\"rel_r\\\"),79;case 64:return this.begin(\\\"rel_r\\\"),79;case 65:return this.begin(\\\"rel_b\\\"),80;case 66:return this.begin(\\\"rel_index\\\"),81;case 67:return this.begin(\\\"update_el_style\\\"),82;case 68:return this.begin(\\\"update_rel_style\\\"),83;case 69:return this.begin(\\\"update_layout_config\\\"),84;case 70:return\\\"EOF_IN_STRUCT\\\";case 71:return this.begin(\\\"attribute\\\"),\\\"ATTRIBUTE_EMPTY\\\";case 72:this.begin(\\\"attribute\\\");break;case 73:this.popState(),this.popState();break;case 74:return 90;case 75:break;case 76:return 90;case 77:this.begin(\\\"string\\\");break;case 78:this.popState();break;case 79:return\\\"STR\\\";case 80:this.begin(\\\"string_kv\\\");break;case 81:return this.begin(\\\"string_kv_key\\\"),\\\"STR_KEY\\\";case 82:this.popState(),this.begin(\\\"string_kv_value\\\");break;case 83:return\\\"STR_VALUE\\\";case 84:this.popState(),this.popState();break;case 85:return\\\"STR\\\";case 86:return\\\"LBRACE\\\";case 87:return\\\"RBRACE\\\";case 88:return\\\"SPACE\\\";case 89:return\\\"EOL\\\";case 90:return 24}},rules:[/^(?:%%\\\\{)/,/^(?:.*direction\\\\s+TB[^\\\\n]*)/,/^(?:.*direction\\\\s+BT[^\\\\n]*)/,/^(?:.*direction\\\\s+RL[^\\\\n]*)/,/^(?:.*direction\\\\s+LR[^\\\\n]*)/,/^(?:((?:(?!\\\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\\\}%%)/,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/,/^(?:title\\\\s[^#\\\\n;]+)/,/^(?:accDescription\\\\s[^#\\\\n;]+)/,/^(?:accTitle\\\\s*:\\\\s*)/,/^(?:(?!\\\\n||)*[^\\\\n]*)/,/^(?:accDescr\\\\s*:\\\\s*)/,/^(?:(?!\\\\n||)*[^\\\\n]*)/,/^(?:accDescr\\\\s*\\\\{\\\\s*)/,/^(?:[\\\\}])/,/^(?:[^\\\\}]*)/,/^(?:%%(?!\\\\{)*[^\\\\n]*(\\\\r?\\\\n?)+)/,/^(?:%%[^\\\\n]*(\\\\r?\\\\n)*)/,/^(?:\\\\s*(\\\\r?\\\\n)+)/,/^(?:\\\\s+)/,/^(?:C4Context\\\\b)/,/^(?:C4Container\\\\b)/,/^(?:C4Component\\\\b)/,/^(?:C4Dynamic\\\\b)/,/^(?:C4Deployment\\\\b)/,/^(?:Person_Ext\\\\b)/,/^(?:Person\\\\b)/,/^(?:SystemQueue_Ext\\\\b)/,/^(?:SystemDb_Ext\\\\b)/,/^(?:System_Ext\\\\b)/,/^(?:SystemQueue\\\\b)/,/^(?:SystemDb\\\\b)/,/^(?:System\\\\b)/,/^(?:Boundary\\\\b)/,/^(?:Enterprise_Boundary\\\\b)/,/^(?:System_Boundary\\\\b)/,/^(?:ContainerQueue_Ext\\\\b)/,/^(?:ContainerDb_Ext\\\\b)/,/^(?:Container_Ext\\\\b)/,/^(?:ContainerQueue\\\\b)/,/^(?:ContainerDb\\\\b)/,/^(?:Container\\\\b)/,/^(?:Container_Boundary\\\\b)/,/^(?:ComponentQueue_Ext\\\\b)/,/^(?:ComponentDb_Ext\\\\b)/,/^(?:Component_Ext\\\\b)/,/^(?:ComponentQueue\\\\b)/,/^(?:ComponentDb\\\\b)/,/^(?:Component\\\\b)/,/^(?:Deployment_Node\\\\b)/,/^(?:Node\\\\b)/,/^(?:Node_L\\\\b)/,/^(?:Node_R\\\\b)/,/^(?:Rel\\\\b)/,/^(?:BiRel\\\\b)/,/^(?:Rel_Up\\\\b)/,/^(?:Rel_U\\\\b)/,/^(?:Rel_Down\\\\b)/,/^(?:Rel_D\\\\b)/,/^(?:Rel_Left\\\\b)/,/^(?:Rel_L\\\\b)/,/^(?:Rel_Right\\\\b)/,/^(?:Rel_R\\\\b)/,/^(?:Rel_Back\\\\b)/,/^(?:RelIndex\\\\b)/,/^(?:UpdateElementStyle\\\\b)/,/^(?:UpdateRelStyle\\\\b)/,/^(?:UpdateLayoutConfig\\\\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*[\\\"][\\\"])/,/^(?:[ ]*[\\\"])/,/^(?:[\\\"])/,/^(?:[^\\\"]*)/,/^(?:[ ]*[\\\\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*[\\\"])/,/^(?:[^\\\"]+)/,/^(?:[\\\"])/,/^(?:[^,]+)/,/^(?:\\\\{)/,/^(?:\\\\})/,/^(?:[\\\\s]+)/,/^(?:[\\\\n\\\\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}};return Ft}();Ee.lexer=Ht;function Vt(){this.yy={}}return Vt.prototype=Ee,Ee.Parser=Vt,new Vt}();Fc.parser=Fc;const HE=Fc,GE=t=>t.match(/^\\\\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/)!==null;let En=[],zi=[\\\"\\\"],Ir=\\\"global\\\",Cn=\\\"\\\",zn=[{alias:\\\"global\\\",label:{text:\\\"global\\\"},type:{text:\\\"global\\\"},tags:null,link:null,parentBoundary:\\\"\\\"}],xo=[],N1=\\\"\\\",B1=!1,Pc=4,Yc=2;var bg;const qE=function(){return bg},jE=function(t){bg=yn(t,$())},$E=function(t,e,r){ze.parseDirective(this,t,e,r)},XE=function(t,e,r,n,i,s,a,o,l){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let u={};const d=xo.find(f=>f.from===e&&f.to===r);if(d?u=d:xo.push(u),u.type=t,u.from=e,u.to=r,u.label={text:n},i==null)u.techn={text:\\\"\\\"};else if(typeof i==\\\"object\\\"){let[f,p]=Object.entries(i)[0];u[f]={text:p}}else u.techn={text:i};if(s==null)u.descr={text:\\\"\\\"};else if(typeof s==\\\"object\\\"){let[f,p]=Object.entries(s)[0];u[f]={text:p}}else u.descr={text:s};if(typeof a==\\\"object\\\"){let[f,p]=Object.entries(a)[0];u[f]=p}else u.sprite=a;if(typeof o==\\\"object\\\"){let[f,p]=Object.entries(o)[0];u[f]=p}else u.tags=o;if(typeof l==\\\"object\\\"){let[f,p]=Object.entries(l)[0];u[f]=p}else u.link=l;u.wrap=Wi()},KE=function(t,e,r,n,i,s,a){if(e===null||r===null)return;let o={};const l=En.find(u=>u.alias===e);if(l&&e===l.alias?o=l:(o.alias=e,En.push(o)),r==null?o.label={text:\\\"\\\"}:o.label={text:r},n==null)o.descr={text:\\\"\\\"};else if(typeof n==\\\"object\\\"){let[u,d]=Object.entries(n)[0];o[u]={text:d}}else o.descr={text:n};if(typeof i==\\\"object\\\"){let[u,d]=Object.entries(i)[0];o[u]=d}else o.sprite=i;if(typeof s==\\\"object\\\"){let[u,d]=Object.entries(s)[0];o[u]=d}else o.tags=s;if(typeof a==\\\"object\\\"){let[u,d]=Object.entries(a)[0];o[u]=d}else o.link=a;o.typeC4Shape={text:t},o.parentBoundary=Ir,o.wrap=Wi()},ZE=function(t,e,r,n,i,s,a,o){if(e===null||r===null)return;let l={};const u=En.find(d=>d.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,En.push(l)),r==null?l.label={text:\\\"\\\"}:l.label={text:r},n==null)l.techn={text:\\\"\\\"};else if(typeof n==\\\"object\\\"){let[d,f]=Object.entries(n)[0];l[d]={text:f}}else l.techn={text:n};if(i==null)l.descr={text:\\\"\\\"};else if(typeof i==\\\"object\\\"){let[d,f]=Object.entries(i)[0];l[d]={text:f}}else l.descr={text:i};if(typeof s==\\\"object\\\"){let[d,f]=Object.entries(s)[0];l[d]=f}else l.sprite=s;if(typeof a==\\\"object\\\"){let[d,f]=Object.entries(a)[0];l[d]=f}else l.tags=a;if(typeof o==\\\"object\\\"){let[d,f]=Object.entries(o)[0];l[d]=f}else l.link=o;l.wrap=Wi(),l.typeC4Shape={text:t},l.parentBoundary=Ir},QE=function(t,e,r,n,i,s,a,o){if(e===null||r===null)return;let l={};const u=En.find(d=>d.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,En.push(l)),r==null?l.label={text:\\\"\\\"}:l.label={text:r},n==null)l.techn={text:\\\"\\\"};else if(typeof n==\\\"object\\\"){let[d,f]=Object.entries(n)[0];l[d]={text:f}}else l.techn={text:n};if(i==null)l.descr={text:\\\"\\\"};else if(typeof i==\\\"object\\\"){let[d,f]=Object.entries(i)[0];l[d]={text:f}}else l.descr={text:i};if(typeof s==\\\"object\\\"){let[d,f]=Object.entries(s)[0];l[d]=f}else l.sprite=s;if(typeof a==\\\"object\\\"){let[d,f]=Object.entries(a)[0];l[d]=f}else l.tags=a;if(typeof o==\\\"object\\\"){let[d,f]=Object.entries(o)[0];l[d]=f}else l.link=o;l.wrap=Wi(),l.typeC4Shape={text:t},l.parentBoundary=Ir},JE=function(t,e,r,n,i){if(t===null||e===null)return;let s={};const a=zn.find(o=>o.alias===t);if(a&&t===a.alias?s=a:(s.alias=t,zn.push(s)),e==null?s.label={text:\\\"\\\"}:s.label={text:e},r==null)s.type={text:\\\"system\\\"};else if(typeof r==\\\"object\\\"){let[o,l]=Object.entries(r)[0];s[o]={text:l}}else s.type={text:r};if(typeof n==\\\"object\\\"){let[o,l]=Object.entries(n)[0];s[o]=l}else s.tags=n;if(typeof i==\\\"object\\\"){let[o,l]=Object.entries(i)[0];s[o]=l}else s.link=i;s.parentBoundary=Ir,s.wrap=Wi(),Cn=Ir,Ir=t,zi.push(Cn)},tC=function(t,e,r,n,i){if(t===null||e===null)return;let s={};const a=zn.find(o=>o.alias===t);if(a&&t===a.alias?s=a:(s.alias=t,zn.push(s)),e==null?s.label={text:\\\"\\\"}:s.label={text:e},r==null)s.type={text:\\\"container\\\"};else if(typeof r==\\\"object\\\"){let[o,l]=Object.entries(r)[0];s[o]={text:l}}else s.type={text:r};if(typeof n==\\\"object\\\"){let[o,l]=Object.entries(n)[0];s[o]=l}else s.tags=n;if(typeof i==\\\"object\\\"){let[o,l]=Object.entries(i)[0];s[o]=l}else s.link=i;s.parentBoundary=Ir,s.wrap=Wi(),Cn=Ir,Ir=t,zi.push(Cn)},eC=function(t,e,r,n,i,s,a,o){if(e===null||r===null)return;let l={};const u=zn.find(d=>d.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,zn.push(l)),r==null?l.label={text:\\\"\\\"}:l.label={text:r},n==null)l.type={text:\\\"node\\\"};else if(typeof n==\\\"object\\\"){let[d,f]=Object.entries(n)[0];l[d]={text:f}}else l.type={text:n};if(i==null)l.descr={text:\\\"\\\"};else if(typeof i==\\\"object\\\"){let[d,f]=Object.entries(i)[0];l[d]={text:f}}else l.descr={text:i};if(typeof a==\\\"object\\\"){let[d,f]=Object.entries(a)[0];l[d]=f}else l.tags=a;if(typeof o==\\\"object\\\"){let[d,f]=Object.entries(o)[0];l[d]=f}else l.link=o;l.nodeType=t,l.parentBoundary=Ir,l.wrap=Wi(),Cn=Ir,Ir=e,zi.push(Cn)},rC=function(){Ir=Cn,zi.pop(),Cn=zi.pop(),zi.push(Cn)},nC=function(t,e,r,n,i,s,a,o,l,u,d){let f=En.find(p=>p.alias===e);if(!(f===void 0&&(f=zn.find(p=>p.alias===e),f===void 0))){if(r!=null)if(typeof r==\\\"object\\\"){let[p,g]=Object.entries(r)[0];f[p]=g}else f.bgColor=r;if(n!=null)if(typeof n==\\\"object\\\"){let[p,g]=Object.entries(n)[0];f[p]=g}else f.fontColor=n;if(i!=null)if(typeof i==\\\"object\\\"){let[p,g]=Object.entries(i)[0];f[p]=g}else f.borderColor=i;if(s!=null)if(typeof s==\\\"object\\\"){let[p,g]=Object.entries(s)[0];f[p]=g}else f.shadowing=s;if(a!=null)if(typeof a==\\\"object\\\"){let[p,g]=Object.entries(a)[0];f[p]=g}else f.shape=a;if(o!=null)if(typeof o==\\\"object\\\"){let[p,g]=Object.entries(o)[0];f[p]=g}else f.sprite=o;if(l!=null)if(typeof l==\\\"object\\\"){let[p,g]=Object.entries(l)[0];f[p]=g}else f.techn=l;if(u!=null)if(typeof u==\\\"object\\\"){let[p,g]=Object.entries(u)[0];f[p]=g}else f.legendText=u;if(d!=null)if(typeof d==\\\"object\\\"){let[p,g]=Object.entries(d)[0];f[p]=g}else f.legendSprite=d}},iC=function(t,e,r,n,i,s,a){const o=xo.find(l=>l.from===e&&l.to===r);if(o!==void 0){if(n!=null)if(typeof n==\\\"object\\\"){let[l,u]=Object.entries(n)[0];o[l]=u}else o.textColor=n;if(i!=null)if(typeof i==\\\"object\\\"){let[l,u]=Object.entries(i)[0];o[l]=u}else o.lineColor=i;if(s!=null)if(typeof s==\\\"object\\\"){let[l,u]=Object.entries(s)[0];o[l]=parseInt(u)}else o.offsetX=parseInt(s);if(a!=null)if(typeof a==\\\"object\\\"){let[l,u]=Object.entries(a)[0];o[l]=parseInt(u)}else o.offsetY=parseInt(a)}},sC=function(t,e,r){let n=Pc,i=Yc;if(typeof e==\\\"object\\\"){const s=Object.values(e)[0];n=parseInt(s)}else n=parseInt(e);if(typeof r==\\\"object\\\"){const s=Object.values(r)[0];i=parseInt(s)}else i=parseInt(r);n>=1&&(Pc=n),i>=1&&(Yc=i)},aC=function(){return Pc},oC=function(){return Yc},lC=function(){return Ir},cC=function(){return Cn},_g=function(t){return t==null?En:En.filter(e=>e.parentBoundary===t)},uC=function(t){return En.find(e=>e.alias===t)},hC=function(t){return Object.keys(_g(t))},dC=function(t){return t==null?zn:zn.filter(e=>e.parentBoundary===t)},fC=function(){return xo},pC=function(){return N1},gC=function(t){B1=t},Wi=function(){return B1},xg={addPersonOrSystem:KE,addPersonOrSystemBoundary:JE,addContainer:ZE,addContainerBoundary:tC,addComponent:QE,addDeploymentNode:eC,popBoundaryParseStack:rC,addRel:XE,updateElStyle:nC,updateRelStyle:iC,updateLayoutConfig:sC,autoWrap:Wi,setWrap:gC,getC4ShapeArray:_g,getC4Shape:uC,getC4ShapeKeys:hC,getBoundarys:dC,getCurrentBoundaryParse:lC,getParentBoundaryParse:cC,getRels:fC,getTitle:pC,getC4Type:qE,getC4ShapeInRow:aC,getC4BoundaryInRow:oC,setAccTitle:nn,getAccTitle:kn,getAccDescription:Tn,setAccDescription:wn,parseDirective:$E,getConfig:()=>$().c4,clear:function(){En=[],zn=[{alias:\\\"global\\\",label:{text:\\\"global\\\"},type:{text:\\\"global\\\"},tags:null,link:null,parentBoundary:\\\"\\\"}],Cn=\\\"\\\",Ir=\\\"global\\\",zi=[\\\"\\\"],xo=[],zi=[\\\"\\\"],N1=\\\"\\\",B1=!1,Pc=4,Yc=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(t){N1=yn(t,$())},setC4Type:jE},I1=function(t,e){const r=t.append(\\\"rect\\\");if(r.attr(\\\"x\\\",e.x),r.attr(\\\"y\\\",e.y),r.attr(\\\"fill\\\",e.fill),r.attr(\\\"stroke\\\",e.stroke),r.attr(\\\"width\\\",e.width),r.attr(\\\"height\\\",e.height),r.attr(\\\"rx\\\",e.rx),r.attr(\\\"ry\\\",e.ry),e.attrs!==\\\"undefined\\\"&&e.attrs!==null)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class!==\\\"undefined\\\"&&r.attr(\\\"class\\\",e.class),r},vg=function(t,e,r,n,i,s){const a=t.append(\\\"image\\\");a.attr(\\\"width\\\",e),a.attr(\\\"height\\\",r),a.attr(\\\"x\\\",n),a.attr(\\\"y\\\",i);let o=s.startsWith(\\\"data:image/png;base64\\\")?s:ti(s);a.attr(\\\"xlink:href\\\",o)},yC=(t,e,r)=>{const n=t.append(\\\"g\\\");let i=0;for(let s of e){let a=s.textColor?s.textColor:\\\"#444444\\\",o=s.lineColor?s.lineColor:\\\"#444444\\\",l=s.offsetX?parseInt(s.offsetX):0,u=s.offsetY?parseInt(s.offsetY):0,d=\\\"\\\";if(i===0){let p=n.append(\\\"line\\\");p.attr(\\\"x1\\\",s.startPoint.x),p.attr(\\\"y1\\\",s.startPoint.y),p.attr(\\\"x2\\\",s.endPoint.x),p.attr(\\\"y2\\\",s.endPoint.y),p.attr(\\\"stroke-width\\\",\\\"1\\\"),p.attr(\\\"stroke\\\",o),p.style(\\\"fill\\\",\\\"none\\\"),s.type!==\\\"rel_b\\\"&&p.attr(\\\"marker-end\\\",\\\"url(\\\"+d+\\\"#arrowhead)\\\"),(s.type===\\\"birel\\\"||s.type===\\\"rel_b\\\")&&p.attr(\\\"marker-start\\\",\\\"url(\\\"+d+\\\"#arrowend)\\\"),i=-1}else{let p=n.append(\\\"path\\\");p.attr(\\\"fill\\\",\\\"none\\\").attr(\\\"stroke-width\\\",\\\"1\\\").attr(\\\"stroke\\\",o).attr(\\\"d\\\",\\\"Mstartx,starty Qcontrolx,controly stopx,stopy \\\".replaceAll(\\\"startx\\\",s.startPoint.x).replaceAll(\\\"starty\\\",s.startPoint.y).replaceAll(\\\"controlx\\\",s.startPoint.x+(s.endPoint.x-s.startPoint.x)/2-(s.endPoint.x-s.startPoint.x)/4).replaceAll(\\\"controly\\\",s.startPoint.y+(s.endPoint.y-s.startPoint.y)/2).replaceAll(\\\"stopx\\\",s.endPoint.x).replaceAll(\\\"stopy\\\",s.endPoint.y)),s.type!==\\\"rel_b\\\"&&p.attr(\\\"marker-end\\\",\\\"url(\\\"+d+\\\"#arrowhead)\\\"),(s.type===\\\"birel\\\"||s.type===\\\"rel_b\\\")&&p.attr(\\\"marker-start\\\",\\\"url(\\\"+d+\\\"#arrowend)\\\")}let f=r.messageFont();fi(r)(s.label.text,n,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+l,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+u,s.label.width,s.label.height,{fill:a},f),s.techn&&s.techn.text!==\\\"\\\"&&(f=r.messageFont(),fi(r)(\\\"[\\\"+s.techn.text+\\\"]\\\",n,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+l,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+r.messageFontSize+5+u,Math.max(s.label.width,s.techn.width),s.techn.height,{fill:a,\\\"font-style\\\":\\\"italic\\\"},f))}},mC=function(t,e,r){const n=t.append(\\\"g\\\");let i=e.bgColor?e.bgColor:\\\"none\\\",s=e.borderColor?e.borderColor:\\\"#444444\\\",a=e.fontColor?e.fontColor:\\\"black\\\",o={\\\"stroke-width\\\":1,\\\"stroke-dasharray\\\":\\\"7.0,7.0\\\"};e.nodeType&&(o={\\\"stroke-width\\\":1});let l={x:e.x,y:e.y,fill:i,stroke:s,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:o};I1(n,l);let u=r.boundaryFont();u.fontWeight=\\\"bold\\\",u.fontSize=u.fontSize+2,u.fontColor=a,fi(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:\\\"#444444\\\"},u),e.type&&e.type.text!==\\\"\\\"&&(u=r.boundaryFont(),u.fontColor=a,fi(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:\\\"#444444\\\"},u)),e.descr&&e.descr.text!==\\\"\\\"&&(u=r.boundaryFont(),u.fontSize=u.fontSize-2,u.fontColor=a,fi(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:\\\"#444444\\\"},u))},bC=function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+\\\"_bg_color\\\"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+\\\"_border_color\\\"],s=e.fontColor?e.fontColor:\\\"#FFFFFF\\\",a=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\\\";switch(e.typeC4Shape.text){case\\\"person\\\":a=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\\\";break;case\\\"external_person\\\":a=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=\\\";break}const o=t.append(\\\"g\\\");o.attr(\\\"class\\\",\\\"person-man\\\");const l=kg();switch(e.typeC4Shape.text){case\\\"person\\\":case\\\"external_person\\\":case\\\"system\\\":case\\\"external_system\\\":case\\\"container\\\":case\\\"external_container\\\":case\\\"component\\\":case\\\"external_component\\\":l.x=e.x,l.y=e.y,l.fill=n,l.width=e.width,l.height=e.height,l.style=\\\"stroke:\\\"+i+\\\";stroke-width:0.5;\\\",l.rx=2.5,l.ry=2.5,I1(o,l);break;case\\\"system_db\\\":case\\\"external_system_db\\\":case\\\"container_db\\\":case\\\"external_container_db\\\":case\\\"component_db\\\":case\\\"external_component_db\\\":o.append(\\\"path\\\").attr(\\\"fill\\\",n).attr(\\\"stroke-width\\\",\\\"0.5\\\").attr(\\\"stroke\\\",i).attr(\\\"d\\\",\\\"Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height\\\".replaceAll(\\\"startx\\\",e.x).replaceAll(\\\"starty\\\",e.y).replaceAll(\\\"half\\\",e.width/2).replaceAll(\\\"height\\\",e.height)),o.append(\\\"path\\\").attr(\\\"fill\\\",\\\"none\\\").attr(\\\"stroke-width\\\",\\\"0.5\\\").attr(\\\"stroke\\\",i).attr(\\\"d\\\",\\\"Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10\\\".replaceAll(\\\"startx\\\",e.x).replaceAll(\\\"starty\\\",e.y).replaceAll(\\\"half\\\",e.width/2));break;case\\\"system_queue\\\":case\\\"external_system_queue\\\":case\\\"container_queue\\\":case\\\"external_container_queue\\\":case\\\"component_queue\\\":case\\\"external_component_queue\\\":o.append(\\\"path\\\").attr(\\\"fill\\\",n).attr(\\\"stroke-width\\\",\\\"0.5\\\").attr(\\\"stroke\\\",i).attr(\\\"d\\\",\\\"Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half\\\".replaceAll(\\\"startx\\\",e.x).replaceAll(\\\"starty\\\",e.y).replaceAll(\\\"width\\\",e.width).replaceAll(\\\"half\\\",e.height/2)),o.append(\\\"path\\\").attr(\\\"fill\\\",\\\"none\\\").attr(\\\"stroke-width\\\",\\\"0.5\\\").attr(\\\"stroke\\\",i).attr(\\\"d\\\",\\\"Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half\\\".replaceAll(\\\"startx\\\",e.x+e.width).replaceAll(\\\"starty\\\",e.y).replaceAll(\\\"half\\\",e.height/2));break}let u=SC(r,e.typeC4Shape.text);switch(o.append(\\\"text\\\").attr(\\\"fill\\\",s).attr(\\\"font-family\\\",u.fontFamily).attr(\\\"font-size\\\",u.fontSize-2).attr(\\\"font-style\\\",\\\"italic\\\").attr(\\\"lengthAdjust\\\",\\\"spacing\\\").attr(\\\"textLength\\\",e.typeC4Shape.width).attr(\\\"x\\\",e.x+e.width/2-e.typeC4Shape.width/2).attr(\\\"y\\\",e.y+e.typeC4Shape.Y).text(\\\"\u003C\u003C\\\"+e.typeC4Shape.text+\\\">>\\\"),e.typeC4Shape.text){case\\\"person\\\":case\\\"external_person\\\":vg(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,a);break}let d=r[e.typeC4Shape.text+\\\"Font\\\"]();return d.fontWeight=\\\"bold\\\",d.fontSize=d.fontSize+2,d.fontColor=s,fi(r)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},d),d=r[e.typeC4Shape.text+\\\"Font\\\"](),d.fontColor=s,e.thchn&&e.thchn.text!==\\\"\\\"?fi(r)(e.thchn.text,o,e.x,e.y+e.thchn.Y,e.width,e.height,{fill:s,\\\"font-style\\\":\\\"italic\\\"},d):e.type&&e.type.text!==\\\"\\\"&&fi(r)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,\\\"font-style\\\":\\\"italic\\\"},d),e.descr&&e.descr.text!==\\\"\\\"&&(d=r.personFont(),d.fontColor=s,fi(r)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},d)),e.height},_C=function(t){t.append(\\\"defs\\\").append(\\\"symbol\\\").attr(\\\"id\\\",\\\"database\\\").attr(\\\"fill-rule\\\",\\\"evenodd\\\").attr(\\\"clip-rule\\\",\\\"evenodd\\\").append(\\\"path\\\").attr(\\\"transform\\\",\\\"scale(.5)\\\").attr(\\\"d\\\",\\\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\\\")},xC=function(t){t.append(\\\"defs\\\").append(\\\"symbol\\\").attr(\\\"id\\\",\\\"computer\\\").attr(\\\"width\\\",\\\"24\\\").attr(\\\"height\\\",\\\"24\\\").append(\\\"path\\\").attr(\\\"transform\\\",\\\"scale(.5)\\\").attr(\\\"d\\\",\\\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\\\")},vC=function(t){t.append(\\\"defs\\\").append(\\\"symbol\\\").attr(\\\"id\\\",\\\"clock\\\").attr(\\\"width\\\",\\\"24\\\").attr(\\\"height\\\",\\\"24\\\").append(\\\"path\\\").attr(\\\"transform\\\",\\\"scale(.5)\\\").attr(\\\"d\\\",\\\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\\\")},kC=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"arrowhead\\\").attr(\\\"refX\\\",9).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",12).attr(\\\"markerHeight\\\",12).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 0 L 10 5 L 0 10 z\\\")},wC=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"arrowend\\\").attr(\\\"refX\\\",1).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",12).attr(\\\"markerHeight\\\",12).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 10 0 L 0 5 L 10 10 z\\\")},TC=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"filled-head\\\").attr(\\\"refX\\\",18).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L14,7 L9,1 Z\\\")},EC=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"sequencenumber\\\").attr(\\\"refX\\\",15).attr(\\\"refY\\\",15).attr(\\\"markerWidth\\\",60).attr(\\\"markerHeight\\\",40).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"circle\\\").attr(\\\"cx\\\",15).attr(\\\"cy\\\",15).attr(\\\"r\\\",6)},CC=function(t){const r=t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"crosshead\\\").attr(\\\"markerWidth\\\",15).attr(\\\"markerHeight\\\",8).attr(\\\"orient\\\",\\\"auto\\\").attr(\\\"refX\\\",16).attr(\\\"refY\\\",4);r.append(\\\"path\\\").attr(\\\"fill\\\",\\\"black\\\").attr(\\\"stroke\\\",\\\"#000000\\\").style(\\\"stroke-dasharray\\\",\\\"0, 0\\\").attr(\\\"stroke-width\\\",\\\"1px\\\").attr(\\\"d\\\",\\\"M 9,2 V 6 L16,4 Z\\\"),r.append(\\\"path\\\").attr(\\\"fill\\\",\\\"none\\\").attr(\\\"stroke\\\",\\\"#000000\\\").style(\\\"stroke-dasharray\\\",\\\"0, 0\\\").attr(\\\"stroke-width\\\",\\\"1px\\\").attr(\\\"d\\\",\\\"M 0,1 L 6,7 M 6,1 L 0,7\\\")},kg=function(){return{x:0,y:0,fill:\\\"#EDF2AE\\\",stroke:\\\"#666\\\",width:100,anchor:\\\"start\\\",height:100,rx:0,ry:0}},SC=(t,e)=>({fontFamily:t[e+\\\"FontFamily\\\"],fontSize:t[e+\\\"FontSize\\\"],fontWeight:t[e+\\\"FontWeight\\\"]}),fi=function(){function t(i,s,a,o,l,u,d){const f=s.append(\\\"text\\\").attr(\\\"x\\\",a+l/2).attr(\\\"y\\\",o+u/2+5).style(\\\"text-anchor\\\",\\\"middle\\\").text(i);n(f,d)}function e(i,s,a,o,l,u,d,f){const{fontSize:p,fontFamily:g,fontWeight:b}=f,k=i.split(he.lineBreakRegex);for(let T=0;T\u003Ck.length;T++){const L=T*p-p*(k.length-1)/2,E=s.append(\\\"text\\\").attr(\\\"x\\\",a+l/2).attr(\\\"y\\\",o).style(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"dominant-baseline\\\",\\\"middle\\\").style(\\\"font-size\\\",p).style(\\\"font-weight\\\",b).style(\\\"font-family\\\",g);E.append(\\\"tspan\\\").attr(\\\"dy\\\",L).text(k[T]).attr(\\\"alignment-baseline\\\",\\\"mathematical\\\"),n(E,d)}}function r(i,s,a,o,l,u,d,f){const p=s.append(\\\"switch\\\"),b=p.append(\\\"foreignObject\\\").attr(\\\"x\\\",a).attr(\\\"y\\\",o).attr(\\\"width\\\",l).attr(\\\"height\\\",u).append(\\\"xhtml:div\\\").style(\\\"display\\\",\\\"table\\\").style(\\\"height\\\",\\\"100%\\\").style(\\\"width\\\",\\\"100%\\\");b.append(\\\"div\\\").style(\\\"display\\\",\\\"table-cell\\\").style(\\\"text-align\\\",\\\"center\\\").style(\\\"vertical-align\\\",\\\"middle\\\").text(i),e(i,p,a,o,l,u,d,f),n(b,d)}function n(i,s){for(const a in s)s.hasOwnProperty(a)&&i.attr(a,s[a])}return function(i){return i.textPlacement===\\\"fo\\\"?r:i.textPlacement===\\\"old\\\"?t:e}}(),Wn={drawRect:I1,drawBoundary:mC,drawC4Shape:bC,drawRels:yC,drawImage:vg,insertArrowHead:kC,insertArrowEnd:wC,insertArrowFilledHead:TC,insertDynamicNumber:EC,insertArrowCrossHead:CC,insertDatabaseIcon:_C,insertComputerIcon:xC,insertClockIcon:vC,getNoteRect:kg,sanitizeUrl:ti};let Vc=0,Uc=0,wg=4,O1=2;Fc.yy=xg;let Zt={};class Tg{constructor(e){this.name=\\\"\\\",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,R1(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,s=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>wg)&&(r=this.nextData.startx+e.margin+Zt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=s=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,\\\"startx\\\",r,Math.min),this.updateVal(this.data,\\\"starty\\\",i,Math.min),this.updateVal(this.data,\\\"stopx\\\",n,Math.max),this.updateVal(this.data,\\\"stopy\\\",s,Math.max),this.updateVal(this.nextData,\\\"startx\\\",r,Math.min),this.updateVal(this.nextData,\\\"starty\\\",i,Math.min),this.updateVal(this.nextData,\\\"stopx\\\",n,Math.max),this.updateVal(this.nextData,\\\"stopy\\\",s,Math.max)}init(e){this.name=\\\"\\\",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},R1(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}}const R1=function(t){gr(Zt,t),t.fontFamily&&(Zt.personFontFamily=Zt.systemFontFamily=Zt.messageFontFamily=t.fontFamily),t.fontSize&&(Zt.personFontSize=Zt.systemFontSize=Zt.messageFontSize=t.fontSize),t.fontWeight&&(Zt.personFontWeight=Zt.systemFontWeight=Zt.messageFontWeight=t.fontWeight)},vo=(t,e)=>({fontFamily:t[e+\\\"FontFamily\\\"],fontSize:t[e+\\\"FontSize\\\"],fontWeight:t[e+\\\"FontWeight\\\"]}),zc=t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),AC=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight});function Sn(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=Pp(e[t].text,i,n),e[t].textLines=e[t].text.split(he.lineBreakRegex).length,e[t].width=i,e[t].height=g1(e[t].text,n);else{let s=e[t].text.split(he.lineBreakRegex);e[t].textLines=s.length;let a=0;e[t].height=0,e[t].width=0;for(const o of s)e[t].width=Math.max(Un(o,n),e[t].width),a=g1(o,n),e[t].height=e[t].height+a}}const Eg=function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=Zt.c4ShapeMargin-35;let n=e.wrap&&Zt.wrap,i=zc(Zt);i.fontSize=i.fontSize+2,i.fontWeight=\\\"bold\\\";let s=Un(e.label.text,i);Sn(\\\"label\\\",e,n,i,s),Wn.drawBoundary(t,e,Zt)},Cg=function(t,e,r,n){let i=0;for(const s of n){i=0;const a=r[s];let o=vo(Zt,a.typeC4Shape.text);switch(o.fontSize=o.fontSize-2,a.typeC4Shape.width=Un(\\\"\u003C\u003C\\\"+a.typeC4Shape.text+\\\">>\\\",o),a.typeC4Shape.height=o.fontSize+2,a.typeC4Shape.Y=Zt.c4ShapePadding,i=a.typeC4Shape.Y+a.typeC4Shape.height-4,a.image={width:0,height:0,Y:0},a.typeC4Shape.text){case\\\"person\\\":case\\\"external_person\\\":a.image.width=48,a.image.height=48,a.image.Y=i,i=a.image.Y+a.image.height;break}a.sprite&&(a.image.width=48,a.image.height=48,a.image.Y=i,i=a.image.Y+a.image.height);let l=a.wrap&&Zt.wrap,u=Zt.width-Zt.c4ShapePadding*2,d=vo(Zt,a.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight=\\\"bold\\\",Sn(\\\"label\\\",a,l,d,u),a.label.Y=i+8,i=a.label.Y+a.label.height,a.type&&a.type.text!==\\\"\\\"){a.type.text=\\\"[\\\"+a.type.text+\\\"]\\\";let g=vo(Zt,a.typeC4Shape.text);Sn(\\\"type\\\",a,l,g,u),a.type.Y=i+5,i=a.type.Y+a.type.height}else if(a.techn&&a.techn.text!==\\\"\\\"){a.techn.text=\\\"[\\\"+a.techn.text+\\\"]\\\";let g=vo(Zt,a.techn.text);Sn(\\\"techn\\\",a,l,g,u),a.techn.Y=i+5,i=a.techn.Y+a.techn.height}let f=i,p=a.label.width;if(a.descr&&a.descr.text!==\\\"\\\"){let g=vo(Zt,a.typeC4Shape.text);Sn(\\\"descr\\\",a,l,g,u),a.descr.Y=i+20,i=a.descr.Y+a.descr.height,p=Math.max(a.label.width,a.descr.width),f=i-a.descr.textLines*5}p=p+Zt.c4ShapePadding,a.width=Math.max(a.width||Zt.width,p,Zt.width),a.height=Math.max(a.height||Zt.height,f,Zt.height),a.margin=a.margin||Zt.c4ShapeMargin,t.insert(a),Wn.drawC4Shape(e,a,Zt)}t.bumpLastMargin(Zt.c4ShapeMargin)};class sn{constructor(e,r){this.x=e,this.y=r}}let Sg=function(t,e){let r=t.x,n=t.y,i=e.x,s=e.y,a=r+t.width/2,o=n+t.height/2,l=Math.abs(r-i),u=Math.abs(n-s),d=u/l,f=t.height/t.width,p=null;return n==s&&r\u003Ci?p=new sn(r+t.width,o):n==s&&r>i?p=new sn(r,o):r==i&&n\u003Cs?p=new sn(a,n+t.height):r==i&&n>s&&(p=new sn(a,n)),r>i&&n\u003Cs?f>=d?p=new sn(r,o+d*t.width/2):p=new sn(a-l/u*t.height/2,n+t.height):r\u003Ci&&n\u003Cs?f>=d?p=new sn(r+t.width,o+d*t.width/2):p=new sn(a+l/u*t.height/2,n+t.height):r\u003Ci&&n>s?f>=d?p=new sn(r+t.width,o-d*t.width/2):p=new sn(a+t.height/2*l/u,n):r>i&&n>s&&(f>=d?p=new sn(r,o-t.width/2*d):p=new sn(a-t.height/2*l/u,n)),p},LC=function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=Sg(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=Sg(e,r);return{startPoint:n,endPoint:i}};const DC=function(t,e,r,n){let i=0;for(let s of e){i=i+1;let a=s.wrap&&Zt.wrap,o=AC(Zt);n.db.getC4Type()===\\\"C4Dynamic\\\"&&(s.label.text=i+\\\": \\\"+s.label.text);let u=Un(s.label.text,o);Sn(\\\"label\\\",s,a,o,u),s.techn&&s.techn.text!==\\\"\\\"&&(u=Un(s.techn.text,o),Sn(\\\"techn\\\",s,a,o,u)),s.descr&&s.descr.text!==\\\"\\\"&&(u=Un(s.descr.text,o),Sn(\\\"descr\\\",s,a,o,u));let d=r(s.from),f=r(s.to),p=LC(d,f);s.startPoint=p.startPoint,s.endPoint=p.endPoint}Wn.drawRels(t,e,Zt)};function Ag(t,e,r,n,i){let s=new Tg(i);s.data.widthLimit=r.data.widthLimit/Math.min(O1,n.length);for(let[a,o]of n.entries()){let l=0;o.image={width:0,height:0,Y:0},o.sprite&&(o.image.width=48,o.image.height=48,o.image.Y=l,l=o.image.Y+o.image.height);let u=o.wrap&&Zt.wrap,d=zc(Zt);if(d.fontSize=d.fontSize+2,d.fontWeight=\\\"bold\\\",Sn(\\\"label\\\",o,u,d,s.data.widthLimit),o.label.Y=l+8,l=o.label.Y+o.label.height,o.type&&o.type.text!==\\\"\\\"){o.type.text=\\\"[\\\"+o.type.text+\\\"]\\\";let b=zc(Zt);Sn(\\\"type\\\",o,u,b,s.data.widthLimit),o.type.Y=l+5,l=o.type.Y+o.type.height}if(o.descr&&o.descr.text!==\\\"\\\"){let b=zc(Zt);b.fontSize=b.fontSize-2,Sn(\\\"descr\\\",o,u,b,s.data.widthLimit),o.descr.Y=l+20,l=o.descr.Y+o.descr.height}if(a==0||a%O1===0){let b=r.data.startx+Zt.diagramMarginX,k=r.data.stopy+Zt.diagramMarginY+l;s.setData(b,b,k,k)}else{let b=s.data.stopx!==s.data.startx?s.data.stopx+Zt.diagramMarginX:s.data.startx,k=s.data.starty;s.setData(b,b,k,k)}s.name=o.alias;let f=i.db.getC4ShapeArray(o.alias),p=i.db.getC4ShapeKeys(o.alias);p.length>0&&Cg(s,t,f,p),e=o.alias;let g=i.db.getBoundarys(e);g.length>0&&Ag(t,e,s,g,i),o.alias!==\\\"global\\\"&&Eg(t,o,s),r.data.stopy=Math.max(s.data.stopy+Zt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(s.data.stopx+Zt.c4ShapeMargin,r.data.stopx),Vc=Math.max(Vc,r.data.stopx),Uc=Math.max(Uc,r.data.stopy)}}const Lg={drawPersonOrSystemArray:Cg,drawBoundary:Eg,setConf:R1,draw:function(t,e,r,n){Zt=$().c4;const i=$().securityLevel;let s;i===\\\"sandbox\\\"&&(s=St(\\\"#i\\\"+e));const a=St(i===\\\"sandbox\\\"?s.nodes()[0].contentDocument.body:\\\"body\\\");let o=n.db;n.db.setWrap(Zt.wrap),wg=o.getC4ShapeInRow(),O1=o.getC4BoundaryInRow(),B.debug(`C:${JSON.stringify(Zt,null,2)}`);const l=i===\\\"sandbox\\\"?a.select(`[id=\\\"${e}\\\"]`):St(`[id=\\\"${e}\\\"]`);Wn.insertComputerIcon(l),Wn.insertDatabaseIcon(l),Wn.insertClockIcon(l);let u=new Tg(n);u.setData(Zt.diagramMarginX,Zt.diagramMarginX,Zt.diagramMarginY,Zt.diagramMarginY),u.data.widthLimit=screen.availWidth,Vc=Zt.diagramMarginX,Uc=Zt.diagramMarginY;const d=n.db.getTitle();let f=n.db.getBoundarys(\\\"\\\");Ag(l,\\\"\\\",u,f,n),Wn.insertArrowHead(l),Wn.insertArrowEnd(l),Wn.insertArrowCrossHead(l),Wn.insertArrowFilledHead(l),DC(l,n.db.getRels(),n.db.getC4Shape,n),u.data.stopx=Vc,u.data.stopy=Uc;const p=u.data;let b=p.stopy-p.starty+2*Zt.diagramMarginY;const T=p.stopx-p.startx+2*Zt.diagramMarginX;d&&l.append(\\\"text\\\").text(d).attr(\\\"x\\\",(p.stopx-p.startx)/2-4*Zt.diagramMarginX).attr(\\\"y\\\",p.starty+Zt.diagramMarginY),xn(l,b,T,Zt.useMaxWidth);const L=d?60:0;l.attr(\\\"viewBox\\\",p.startx-Zt.diagramMarginX+\\\" -\\\"+(Zt.diagramMarginY+L)+\\\" \\\"+T+\\\" \\\"+(b+L)),B.debug(\\\"models:\\\",p)}};var F1=function(){var t=function(F,O,A,J){for(A=A||{},J=F.length;J--;A[F[J]]=O);return A},e=[1,3],r=[1,7],n=[1,8],i=[1,9],s=[1,10],a=[1,13],o=[1,12],l=[1,16,25],u=[1,20],d=[1,32],f=[1,33],p=[1,34],g=[1,36],b=[1,39],k=[1,37],T=[1,38],L=[1,44],E=[1,45],I=[1,40],V=[1,41],H=[1,42],G=[1,43],Y=[1,48],W=[1,49],N=[1,50],D=[1,51],w=[16,25],v=[1,65],M=[1,66],m=[1,67],Q=[1,68],x=[1,69],ct=[1,70],Dt=[1,71],kt=[1,80],j=[16,25,32,45,46,54,60,61,62,63,64,65,66,71,73],ot=[16,25,30,32,45,46,50,54,60,61,62,63,64,65,66,71,73,88,89,90,91],rt=[5,8,9,10,11,16,19,23,25],nt=[54,88,89,90,91],ut=[54,65,66,88,89,90,91],_t=[54,60,61,62,63,64,88,89,90,91],K=[16,25,32],Ot=[1,107],P={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statments:5,direction:6,directive:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,\\\":\\\":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,statements:24,EOF:25,statement:26,className:27,alphaNumToken:28,classLiteralName:29,GENERICTYPE:30,relationStatement:31,LABEL:32,classStatement:33,methodStatement:34,annotationStatement:35,clickStatement:36,cssClassStatement:37,noteStatement:38,acc_title:39,acc_title_value:40,acc_descr:41,acc_descr_value:42,acc_descr_multiline_value:43,CLASS:44,STYLE_SEPARATOR:45,STRUCT_START:46,members:47,STRUCT_STOP:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,STR:54,NOTE_FOR:55,noteText:56,NOTE:57,relationType:58,lineType:59,AGGREGATION:60,EXTENSION:61,COMPOSITION:62,DEPENDENCY:63,LOLLIPOP:64,LINE:65,DOTTED_LINE:66,CALLBACK:67,LINK:68,LINK_TARGET:69,CLICK:70,CALLBACK_NAME:71,CALLBACK_ARGS:72,HREF:73,CSSCLASS:74,commentToken:75,textToken:76,graphCodeTokens:77,textNoTagsToken:78,TAGSTART:79,TAGEND:80,\\\"==\\\":81,\\\"--\\\":82,PCT:83,DEFAULT:84,SPACE:85,MINUS:86,keywords:87,UNICODE_TEXT:88,NUM:89,ALPHA:90,BQUOTE_STR:91,$accept:0,$end:1},terminals_:{2:\\\"error\\\",5:\\\"statments\\\",8:\\\"direction_tb\\\",9:\\\"direction_bt\\\",10:\\\"direction_rl\\\",11:\\\"direction_lr\\\",16:\\\"NEWLINE\\\",17:\\\":\\\",19:\\\"open_directive\\\",20:\\\"type_directive\\\",21:\\\"arg_directive\\\",22:\\\"close_directive\\\",23:\\\"CLASS_DIAGRAM\\\",25:\\\"EOF\\\",30:\\\"GENERICTYPE\\\",32:\\\"LABEL\\\",39:\\\"acc_title\\\",40:\\\"acc_title_value\\\",41:\\\"acc_descr\\\",42:\\\"acc_descr_value\\\",43:\\\"acc_descr_multiline_value\\\",44:\\\"CLASS\\\",45:\\\"STYLE_SEPARATOR\\\",46:\\\"STRUCT_START\\\",48:\\\"STRUCT_STOP\\\",49:\\\"ANNOTATION_START\\\",50:\\\"ANNOTATION_END\\\",51:\\\"MEMBER\\\",52:\\\"SEPARATOR\\\",54:\\\"STR\\\",55:\\\"NOTE_FOR\\\",57:\\\"NOTE\\\",60:\\\"AGGREGATION\\\",61:\\\"EXTENSION\\\",62:\\\"COMPOSITION\\\",63:\\\"DEPENDENCY\\\",64:\\\"LOLLIPOP\\\",65:\\\"LINE\\\",66:\\\"DOTTED_LINE\\\",67:\\\"CALLBACK\\\",68:\\\"LINK\\\",69:\\\"LINK_TARGET\\\",70:\\\"CLICK\\\",71:\\\"CALLBACK_NAME\\\",72:\\\"CALLBACK_ARGS\\\",73:\\\"HREF\\\",74:\\\"CSSCLASS\\\",77:\\\"graphCodeTokens\\\",79:\\\"TAGSTART\\\",80:\\\"TAGEND\\\",81:\\\"==\\\",82:\\\"--\\\",83:\\\"PCT\\\",84:\\\"DEFAULT\\\",85:\\\"SPACE\\\",86:\\\"MINUS\\\",87:\\\"keywords\\\",88:\\\"UNICODE_TEXT\\\",89:\\\"NUM\\\",90:\\\"ALPHA\\\",91:\\\"BQUOTE_STR\\\"},productions_:[0,[3,1],[3,1],[3,1],[3,2],[6,1],[6,1],[6,1],[6,1],[4,1],[7,4],[7,6],[13,1],[14,1],[18,1],[15,1],[12,4],[24,1],[24,2],[24,3],[27,1],[27,1],[27,2],[27,2],[27,2],[26,1],[26,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,2],[26,2],[26,1],[33,2],[33,4],[33,5],[33,7],[35,4],[47,1],[47,2],[34,1],[34,2],[34,1],[34,1],[31,3],[31,4],[31,4],[31,5],[38,3],[38,2],[53,3],[53,2],[53,2],[53,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[36,3],[36,4],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[37,3],[75,1],[75,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[78,1],[78,1],[78,1],[78,1],[28,1],[28,1],[28,1],[29,1],[56,1]],performAction:function(O,A,J,C,ht,U,Yt){var et=U.length-1;switch(ht){case 5:C.setDirection(\\\"TB\\\");break;case 6:C.setDirection(\\\"BT\\\");break;case 7:C.setDirection(\\\"RL\\\");break;case 8:C.setDirection(\\\"LR\\\");break;case 12:C.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 13:C.parseDirective(U[et],\\\"type_directive\\\");break;case 14:U[et]=U[et].trim().replace(/'/g,'\\\"'),C.parseDirective(U[et],\\\"arg_directive\\\");break;case 15:C.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"class\\\");break;case 20:case 21:this.$=U[et];break;case 22:this.$=U[et-1]+U[et];break;case 23:case 24:this.$=U[et-1]+\\\"~\\\"+U[et];break;case 25:C.addRelation(U[et]);break;case 26:U[et-1].title=C.cleanupLabel(U[et]),C.addRelation(U[et-1]);break;case 35:this.$=U[et].trim(),C.setAccTitle(this.$);break;case 36:case 37:this.$=U[et].trim(),C.setAccDescription(this.$);break;case 38:C.addClass(U[et]);break;case 39:C.addClass(U[et-2]),C.setCssClass(U[et-2],U[et]);break;case 40:C.addClass(U[et-3]),C.addMembers(U[et-3],U[et-1]);break;case 41:C.addClass(U[et-5]),C.setCssClass(U[et-5],U[et-3]),C.addMembers(U[et-5],U[et-1]);break;case 42:C.addAnnotation(U[et],U[et-2]);break;case 43:this.$=[U[et]];break;case 44:U[et].push(U[et-1]),this.$=U[et];break;case 45:break;case 46:C.addMember(U[et-1],C.cleanupLabel(U[et]));break;case 47:break;case 48:break;case 49:this.$={id1:U[et-2],id2:U[et],relation:U[et-1],relationTitle1:\\\"none\\\",relationTitle2:\\\"none\\\"};break;case 50:this.$={id1:U[et-3],id2:U[et],relation:U[et-1],relationTitle1:U[et-2],relationTitle2:\\\"none\\\"};break;case 51:this.$={id1:U[et-3],id2:U[et],relation:U[et-2],relationTitle1:\\\"none\\\",relationTitle2:U[et-1]};break;case 52:this.$={id1:U[et-4],id2:U[et],relation:U[et-2],relationTitle1:U[et-3],relationTitle2:U[et-1]};break;case 53:C.addNote(U[et],U[et-1]);break;case 54:C.addNote(U[et]);break;case 55:this.$={type1:U[et-2],type2:U[et],lineType:U[et-1]};break;case 56:this.$={type1:\\\"none\\\",type2:U[et],lineType:U[et-1]};break;case 57:this.$={type1:U[et-1],type2:\\\"none\\\",lineType:U[et]};break;case 58:this.$={type1:\\\"none\\\",type2:\\\"none\\\",lineType:U[et]};break;case 59:this.$=C.relationType.AGGREGATION;break;case 60:this.$=C.relationType.EXTENSION;break;case 61:this.$=C.relationType.COMPOSITION;break;case 62:this.$=C.relationType.DEPENDENCY;break;case 63:this.$=C.relationType.LOLLIPOP;break;case 64:this.$=C.lineType.LINE;break;case 65:this.$=C.lineType.DOTTED_LINE;break;case 66:case 72:this.$=U[et-2],C.setClickEvent(U[et-1],U[et]);break;case 67:case 73:this.$=U[et-3],C.setClickEvent(U[et-2],U[et-1]),C.setTooltip(U[et-2],U[et]);break;case 68:case 76:this.$=U[et-2],C.setLink(U[et-1],U[et]);break;case 69:this.$=U[et-3],C.setLink(U[et-2],U[et-1],U[et]);break;case 70:case 78:this.$=U[et-3],C.setLink(U[et-2],U[et-1]),C.setTooltip(U[et-2],U[et]);break;case 71:case 79:this.$=U[et-4],C.setLink(U[et-3],U[et-2],U[et]),C.setTooltip(U[et-3],U[et-1]);break;case 74:this.$=U[et-3],C.setClickEvent(U[et-2],U[et-1],U[et]);break;case 75:this.$=U[et-4],C.setClickEvent(U[et-3],U[et-2],U[et-1]),C.setTooltip(U[et-3],U[et]);break;case 77:this.$=U[et-3],C.setLink(U[et-2],U[et-1],U[et]);break;case 80:C.setCssClass(U[et-1],U[et]);break}},table:[{3:1,4:2,5:e,6:4,7:5,8:r,9:n,10:i,11:s,12:6,13:11,19:a,23:o},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{3:14,4:2,5:e,6:4,7:5,8:r,9:n,10:i,11:s,12:6,13:11,19:a,23:o},{1:[2,9]},t(l,[2,5]),t(l,[2,6]),t(l,[2,7]),t(l,[2,8]),{14:15,20:[1,16]},{16:[1,17]},{20:[2,12]},{1:[2,4]},{15:18,17:[1,19],22:u},t([17,22],[2,13]),{6:31,7:30,8:r,9:n,10:i,11:s,13:11,19:a,24:21,26:22,27:35,28:46,29:47,31:23,33:24,34:25,35:26,36:27,37:28,38:29,39:d,41:f,43:p,44:g,49:b,51:k,52:T,55:L,57:E,67:I,68:V,70:H,74:G,88:Y,89:W,90:N,91:D},{16:[1,52]},{18:53,21:[1,54]},{16:[2,15]},{25:[1,55]},{16:[1,56],25:[2,17]},t(w,[2,25],{32:[1,57]}),t(w,[2,27]),t(w,[2,28]),t(w,[2,29]),t(w,[2,30]),t(w,[2,31]),t(w,[2,32]),t(w,[2,33]),t(w,[2,34]),{40:[1,58]},{42:[1,59]},t(w,[2,37]),t(w,[2,45],{53:60,58:63,59:64,32:[1,62],54:[1,61],60:v,61:M,62:m,63:Q,64:x,65:ct,66:Dt}),{27:72,28:46,29:47,88:Y,89:W,90:N,91:D},t(w,[2,47]),t(w,[2,48]),{28:73,88:Y,89:W,90:N},{27:74,28:46,29:47,88:Y,89:W,90:N,91:D},{27:75,28:46,29:47,88:Y,89:W,90:N,91:D},{27:76,28:46,29:47,88:Y,89:W,90:N,91:D},{54:[1,77]},{27:78,28:46,29:47,88:Y,89:W,90:N,91:D},{54:kt,56:79},t(j,[2,20],{28:46,29:47,27:81,30:[1,82],88:Y,89:W,90:N,91:D}),t(j,[2,21],{30:[1,83]}),t(ot,[2,94]),t(ot,[2,95]),t(ot,[2,96]),t([16,25,30,32,45,46,54,60,61,62,63,64,65,66,71,73],[2,97]),t(rt,[2,10]),{15:84,22:u},{22:[2,14]},{1:[2,16]},{6:31,7:30,8:r,9:n,10:i,11:s,13:11,19:a,24:85,25:[2,18],26:22,27:35,28:46,29:47,31:23,33:24,34:25,35:26,36:27,37:28,38:29,39:d,41:f,43:p,44:g,49:b,51:k,52:T,55:L,57:E,67:I,68:V,70:H,74:G,88:Y,89:W,90:N,91:D},t(w,[2,26]),t(w,[2,35]),t(w,[2,36]),{27:86,28:46,29:47,54:[1,87],88:Y,89:W,90:N,91:D},{53:88,58:63,59:64,60:v,61:M,62:m,63:Q,64:x,65:ct,66:Dt},t(w,[2,46]),{59:89,65:ct,66:Dt},t(nt,[2,58],{58:90,60:v,61:M,62:m,63:Q,64:x}),t(ut,[2,59]),t(ut,[2,60]),t(ut,[2,61]),t(ut,[2,62]),t(ut,[2,63]),t(_t,[2,64]),t(_t,[2,65]),t(w,[2,38],{45:[1,91],46:[1,92]}),{50:[1,93]},{54:[1,94]},{54:[1,95]},{71:[1,96],73:[1,97]},{28:98,88:Y,89:W,90:N},{54:kt,56:99},t(w,[2,54]),t(w,[2,98]),t(j,[2,22]),t(j,[2,23]),t(j,[2,24]),{16:[1,100]},{25:[2,19]},t(K,[2,49]),{27:101,28:46,29:47,88:Y,89:W,90:N,91:D},{27:102,28:46,29:47,54:[1,103],88:Y,89:W,90:N,91:D},t(nt,[2,57],{58:104,60:v,61:M,62:m,63:Q,64:x}),t(nt,[2,56]),{28:105,88:Y,89:W,90:N},{47:106,51:Ot},{27:108,28:46,29:47,88:Y,89:W,90:N,91:D},t(w,[2,66],{54:[1,109]}),t(w,[2,68],{54:[1,111],69:[1,110]}),t(w,[2,72],{54:[1,112],72:[1,113]}),t(w,[2,76],{54:[1,115],69:[1,114]}),t(w,[2,80]),t(w,[2,53]),t(rt,[2,11]),t(K,[2,51]),t(K,[2,50]),{27:116,28:46,29:47,88:Y,89:W,90:N,91:D},t(nt,[2,55]),t(w,[2,39],{46:[1,117]}),{48:[1,118]},{47:119,48:[2,43],51:Ot},t(w,[2,42]),t(w,[2,67]),t(w,[2,69]),t(w,[2,70],{69:[1,120]}),t(w,[2,73]),t(w,[2,74],{54:[1,121]}),t(w,[2,77]),t(w,[2,78],{69:[1,122]}),t(K,[2,52]),{47:123,51:Ot},t(w,[2,40]),{48:[2,44]},t(w,[2,71]),t(w,[2,75]),t(w,[2,79]),{48:[1,124]},t(w,[2,41])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],6:[2,9],13:[2,12],14:[2,4],20:[2,15],54:[2,14],55:[2,16],85:[2,19],119:[2,44]},parseError:function(O,A){if(A.recoverable)this.trace(O);else{var J=new Error(O);throw J.hash=A,J}},parse:function(O){var A=this,J=[0],C=[],ht=[null],U=[],Yt=this.table,et=\\\"\\\",Mt=0,Tt=0,gt=2,Et=1,wt=U.slice.call(arguments,1),pt=Object.create(this.lexer),st={yy:{}};for(var le in this.yy)Object.prototype.hasOwnProperty.call(this.yy,le)&&(st.yy[le]=this.yy[le]);pt.setInput(O,st.yy),st.yy.lexer=pt,st.yy.parser=this,typeof pt.yylloc>\\\"u\\\"&&(pt.yylloc={});var Xt=pt.yylloc;U.push(Xt);var jt=pt.options&&pt.options.ranges;typeof st.yy.parseError==\\\"function\\\"?this.parseError=st.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Kt(){var at;return at=C.pop()||pt.lex()||Et,typeof at!=\\\"number\\\"&&(at instanceof Array&&(C=at,at=C.pop()),at=A.symbols_[at]||at),at}for(var Gt,Ee,Ht,Vt,Ft={},xt,ft,Lt,bt;;){if(Ee=J[J.length-1],this.defaultActions[Ee]?Ht=this.defaultActions[Ee]:((Gt===null||typeof Gt>\\\"u\\\")&&(Gt=Kt()),Ht=Yt[Ee]&&Yt[Ee][Gt]),typeof Ht>\\\"u\\\"||!Ht.length||!Ht[0]){var Ut=\\\"\\\";bt=[];for(xt in Yt[Ee])this.terminals_[xt]&&xt>gt&&bt.push(\\\"'\\\"+this.terminals_[xt]+\\\"'\\\");pt.showPosition?Ut=\\\"Parse error on line \\\"+(Mt+1)+`:\\n`+pt.showPosition()+`\\nExpecting `+bt.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[Gt]||Gt)+\\\"'\\\":Ut=\\\"Parse error on line \\\"+(Mt+1)+\\\": Unexpected \\\"+(Gt==Et?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[Gt]||Gt)+\\\"'\\\"),this.parseError(Ut,{text:pt.match,token:this.terminals_[Gt]||Gt,line:pt.yylineno,loc:Xt,expected:bt})}if(Ht[0]instanceof Array&&Ht.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+Ee+\\\", token: \\\"+Gt);switch(Ht[0]){case 1:J.push(Gt),ht.push(pt.yytext),U.push(pt.yylloc),J.push(Ht[1]),Gt=null,Tt=pt.yyleng,et=pt.yytext,Mt=pt.yylineno,Xt=pt.yylloc;break;case 2:if(ft=this.productions_[Ht[1]][1],Ft.$=ht[ht.length-ft],Ft._$={first_line:U[U.length-(ft||1)].first_line,last_line:U[U.length-1].last_line,first_column:U[U.length-(ft||1)].first_column,last_column:U[U.length-1].last_column},jt&&(Ft._$.range=[U[U.length-(ft||1)].range[0],U[U.length-1].range[1]]),Vt=this.performAction.apply(Ft,[et,Tt,Mt,st.yy,Ht[1],ht,U].concat(wt)),typeof Vt\u003C\\\"u\\\")return Vt;ft&&(J=J.slice(0,-1*ft*2),ht=ht.slice(0,-1*ft),U=U.slice(0,-1*ft)),J.push(this.productions_[Ht[1]][0]),ht.push(Ft.$),U.push(Ft._$),Lt=Yt[J[J.length-2]][J[J.length-1]],J.push(Lt);break;case 3:return!0}}return!0}},z=function(){var F={EOF:1,parseError:function(A,J){if(this.yy.parser)this.yy.parser.parseError(A,J);else throw new Error(A)},setInput:function(O,A){return this.yy=A||this.yy||{},this._input=O,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var O=this._input[0];this.yytext+=O,this.yyleng++,this.offset++,this.match+=O,this.matched+=O;var A=O.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return A?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),O},unput:function(O){var A=O.length,J=O.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=O+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-A),this.offset-=A;var C=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),J.length-1&&(this.yylineno-=J.length-1);var ht=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:J?(J.length===C.length?this.yylloc.first_column:0)+C[C.length-J.length].length-J[0].length:this.yylloc.first_column-A},this.options.ranges&&(this.yylloc.range=[ht[0],ht[0]+this.yyleng-A]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(O){this.unput(this.match.slice(O))},pastInput:function(){var O=this.matched.substr(0,this.matched.length-this.match.length);return(O.length>20?\\\"...\\\":\\\"\\\")+O.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var O=this.match;return O.length\u003C20&&(O+=this._input.substr(0,20-O.length)),(O.substr(0,20)+(O.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var O=this.pastInput(),A=new Array(O.length+1).join(\\\"-\\\");return O+this.upcomingInput()+`\\n`+A+\\\"^\\\"},test_match:function(O,A){var J,C,ht;if(this.options.backtrack_lexer&&(ht={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ht.yylloc.range=this.yylloc.range.slice(0))),C=O[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+O[0].length},this.yytext+=O[0],this.match+=O[0],this.matches=O,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(O[0].length),this.matched+=O[0],J=this.performAction.call(this,this.yy,this,A,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),J)return J;if(this._backtrack){for(var U in ht)this[U]=ht[U];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var O,A,J,C;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var ht=this._currentRules(),U=0;U\u003Cht.length;U++)if(J=this._input.match(this.rules[ht[U]]),J&&(!A||J[0].length>A[0].length)){if(A=J,C=U,this.options.backtrack_lexer){if(O=this.test_match(J,ht[U]),O!==!1)return O;if(this._backtrack){A=!1;continue}else return!1}else if(!this.options.flex)break}return A?(O=this.test_match(A,ht[C]),O!==!1?O:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var A=this.next();return A||this.lex()},begin:function(A){this.conditionStack.push(A)},popState:function(){var A=this.conditionStack.length-1;return A>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(A){return A=this.conditionStack.length-1-Math.abs(A||0),A>=0?this.conditionStack[A]:\\\"INITIAL\\\"},pushState:function(A){this.begin(A)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(A,J,C,ht){switch(C){case 0:return this.begin(\\\"open_directive\\\"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin(\\\"type_directive\\\"),20;case 6:return this.popState(),this.begin(\\\"arg_directive\\\"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:break;case 10:break;case 11:return this.begin(\\\"acc_title\\\"),39;case 12:return this.popState(),\\\"acc_title_value\\\";case 13:return this.begin(\\\"acc_descr\\\"),41;case 14:return this.popState(),\\\"acc_descr_value\\\";case 15:this.begin(\\\"acc_descr_multiline\\\");break;case 16:this.popState();break;case 17:return\\\"acc_descr_multiline_value\\\";case 18:return 16;case 19:break;case 20:return 23;case 21:return 23;case 22:return this.begin(\\\"struct\\\"),46;case 23:return\\\"EDGE_STATE\\\";case 24:return\\\"EOF_IN_STRUCT\\\";case 25:return\\\"OPEN_IN_STRUCT\\\";case 26:return this.popState(),48;case 27:break;case 28:return\\\"MEMBER\\\";case 29:return 44;case 30:return 74;case 31:return 67;case 32:return 68;case 33:return 70;case 34:return 55;case 35:return 57;case 36:return 49;case 37:return 50;case 38:this.begin(\\\"generic\\\");break;case 39:this.popState();break;case 40:return\\\"GENERICTYPE\\\";case 41:this.begin(\\\"string\\\");break;case 42:this.popState();break;case 43:return\\\"STR\\\";case 44:this.begin(\\\"bqstring\\\");break;case 45:this.popState();break;case 46:return\\\"BQUOTE_STR\\\";case 47:this.begin(\\\"href\\\");break;case 48:this.popState();break;case 49:return 73;case 50:this.begin(\\\"callback_name\\\");break;case 51:this.popState();break;case 52:this.popState(),this.begin(\\\"callback_args\\\");break;case 53:return 71;case 54:this.popState();break;case 55:return 72;case 56:return 69;case 57:return 69;case 58:return 69;case 59:return 69;case 60:return 61;case 61:return 61;case 62:return 63;case 63:return 63;case 64:return 62;case 65:return 60;case 66:return 64;case 67:return 65;case 68:return 66;case 69:return 32;case 70:return 45;case 71:return 86;case 72:return\\\"DOT\\\";case 73:return\\\"PLUS\\\";case 74:return 83;case 75:return\\\"EQUALS\\\";case 76:return\\\"EQUALS\\\";case 77:return 90;case 78:return\\\"PUNCTUATION\\\";case 79:return 89;case 80:return 88;case 81:return 85;case 82:return 25}},rules:[/^(?:%%\\\\{)/,/^(?:.*direction\\\\s+TB[^\\\\n]*)/,/^(?:.*direction\\\\s+BT[^\\\\n]*)/,/^(?:.*direction\\\\s+RL[^\\\\n]*)/,/^(?:.*direction\\\\s+LR[^\\\\n]*)/,/^(?:((?:(?!\\\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\\\}%%)/,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/,/^(?:%%(?!\\\\{)*[^\\\\n]*(\\\\r?\\\\n?)+)/,/^(?:%%[^\\\\n]*(\\\\r?\\\\n)*)/,/^(?:accTitle\\\\s*:\\\\s*)/,/^(?:(?!\\\\n||)*[^\\\\n]*)/,/^(?:accDescr\\\\s*:\\\\s*)/,/^(?:(?!\\\\n||)*[^\\\\n]*)/,/^(?:accDescr\\\\s*\\\\{\\\\s*)/,/^(?:[\\\\}])/,/^(?:[^\\\\}]*)/,/^(?:\\\\s*(\\\\r?\\\\n)+)/,/^(?:\\\\s+)/,/^(?:classDiagram-v2\\\\b)/,/^(?:classDiagram\\\\b)/,/^(?:[{])/,/^(?:\\\\[\\\\*\\\\])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\\\n])/,/^(?:[^{}\\\\n]*)/,/^(?:class\\\\b)/,/^(?:cssClass\\\\b)/,/^(?:callback\\\\b)/,/^(?:link\\\\b)/,/^(?:click\\\\b)/,/^(?:note for\\\\b)/,/^(?:note\\\\b)/,/^(?:\u003C\u003C)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\\\"])/,/^(?:[\\\"])/,/^(?:[^\\\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\\\s]+[\\\"])/,/^(?:[\\\"])/,/^(?:[^\\\"]*)/,/^(?:call[\\\\s]+)/,/^(?:\\\\([\\\\s]*\\\\))/,/^(?:\\\\()/,/^(?:[^(]*)/,/^(?:\\\\))/,/^(?:[^)]*)/,/^(?:_self\\\\b)/,/^(?:_blank\\\\b)/,/^(?:_parent\\\\b)/,/^(?:_top\\\\b)/,/^(?:\\\\s*\u003C\\\\|)/,/^(?:\\\\s*\\\\|>)/,/^(?:\\\\s*>)/,/^(?:\\\\s*\u003C)/,/^(?:\\\\s*\\\\*)/,/^(?:\\\\s*o\\\\b)/,/^(?:\\\\s*\\\\(\\\\))/,/^(?:--)/,/^(?:\\\\.\\\\.)/,/^(?::{1}[^:\\\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\\\.)/,/^(?:\\\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\\\w+)/,/^(?:[!\\\"#$%&'*+,-.`?\\\\\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\\\u00AA\\\\u00B5\\\\u00BA\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6]|[\\\\u00F8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377]|[\\\\u037A-\\\\u037D\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5]|[\\\\u03F7-\\\\u0481\\\\u048A-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA]|[\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE]|[\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA]|[\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0]|[\\\\u08A2-\\\\u08AC\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977]|[\\\\u0979-\\\\u097F\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2]|[\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A]|[\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39]|[\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8]|[\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C]|[\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C]|[\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99]|[\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0]|[\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C33\\\\u0C35-\\\\u0C39\\\\u0C3D]|[\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3]|[\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10]|[\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1]|[\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81]|[\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3]|[\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6]|[\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A]|[\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081]|[\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D]|[\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0]|[\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310]|[\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C]|[\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711]|[\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7]|[\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191C]|[\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16]|[\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF]|[\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC]|[\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D]|[\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D]|[\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3]|[\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F]|[\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128]|[\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2183\\\\u2184]|[\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3]|[\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6]|[\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE]|[\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005\\\\u3006\\\\u3031-\\\\u3035\\\\u303B\\\\u303C]|[\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D]|[\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC]|[\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B]|[\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA697\\\\uA6A0-\\\\uA6E5\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788]|[\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA793\\\\uA7A0-\\\\uA7AA\\\\uA7F8-\\\\uA801\\\\uA803-\\\\uA805]|[\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB]|[\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uAA00-\\\\uAA28]|[\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA80-\\\\uAAAF\\\\uAAB1\\\\uAAB5]|[\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4]|[\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E]|[\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D]|[\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36]|[\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D]|[\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC]|[\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF]|[\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC])/,/^(?:\\\\s)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[54,55],inclusive:!1},callback_name:{rules:[51,52,53],inclusive:!1},href:{rules:[48,49],inclusive:!1},struct:{rules:[23,24,25,26,27,28],inclusive:!1},generic:{rules:[39,40],inclusive:!1},bqstring:{rules:[45,46],inclusive:!1},string:{rules:[42,43],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,29,30,31,32,33,34,35,36,37,38,41,44,47,50,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82],inclusive:!0}}};return F}();P.lexer=z;function X(){this.yy={}}return X.prototype=P,P.Parser=X,new X}();F1.parser=F1;const Dg=F1,MC=(t,e)=>{var r;return((r=e==null?void 0:e.class)==null?void 0:r.defaultRenderer)===\\\"dagre-wrapper\\\"?!1:t.match(/^\\\\s*classDiagram/)!==null},NC=(t,e)=>{var r;return t.match(/^\\\\s*classDiagram/)!==null&&((r=e==null?void 0:e.class)==null?void 0:r.defaultRenderer)===\\\"dagre-wrapper\\\"?!0:t.match(/^\\\\s*classDiagram-v2/)!==null},P1=\\\"classid-\\\";let Y1=[],Ke={},Wc=[],Mg=0,ko=[];const wo=t=>he.sanitizeText(t,$()),BC=function(t,e,r){ze.parseDirective(this,t,e,r)},To=function(t){let e=\\\"\\\",r=t;if(t.indexOf(\\\"~\\\")>0){let n=t.split(\\\"~\\\");r=n[0],e=he.sanitizeText(n[1],$())}return{className:r,type:e}},V1=function(t){let e=To(t);Ke[e.className]===void 0&&(Ke[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:P1+e.className+\\\"-\\\"+Mg},Mg++)},Ng=function(t){const e=Object.keys(Ke);for(const r of e)if(Ke[r].id===t)return Ke[r].domId},IC=function(){Y1=[],Ke={},Wc=[],ko=[],ko.push(Ig),vn()},OC=function(t){return Ke[t]},RC=function(){return Ke},FC=function(){return Y1},PC=function(){return Wc},YC=function(t){B.debug(\\\"Adding relation: \\\"+JSON.stringify(t)),V1(t.id1),V1(t.id2),t.id1=To(t.id1).className,t.id2=To(t.id2).className,t.relationTitle1=he.sanitizeText(t.relationTitle1.trim(),$()),t.relationTitle2=he.sanitizeText(t.relationTitle2.trim(),$()),Y1.push(t)},VC=function(t,e){const r=To(t).className;Ke[r].annotations.push(e)},Bg=function(t,e){const r=To(t).className,n=Ke[r];if(typeof e==\\\"string\\\"){const i=e.trim();i.startsWith(\\\"\u003C\u003C\\\")&&i.endsWith(\\\">>\\\")?n.annotations.push(wo(i.substring(2,i.length-2))):i.indexOf(\\\")\\\")>0?n.methods.push(wo(i)):i&&n.members.push(wo(i))}},UC=function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(r=>Bg(t,r)))},zC=function(t,e){const r={id:`note${Wc.length}`,class:e,text:t};Wc.push(r)},WC=function(t){return t.substring(0,1)===\\\":\\\"?he.sanitizeText(t.substr(1).trim(),$()):wo(t.trim())},U1=function(t,e){t.split(\\\",\\\").forEach(function(r){let n=r;r[0].match(/\\\\d/)&&(n=P1+n),Ke[n]!==void 0&&Ke[n].cssClasses.push(e)})},HC=function(t,e){const r=$();t.split(\\\",\\\").forEach(function(n){e!==void 0&&(Ke[n].tooltip=he.sanitizeText(e,r))})},GC=function(t){return Ke[t].tooltip},qC=function(t,e,r){const n=$();t.split(\\\",\\\").forEach(function(i){let s=i;i[0].match(/\\\\d/)&&(s=P1+s),Ke[s]!==void 0&&(Ke[s].link=ge.formatUrl(e,n),n.securityLevel===\\\"sandbox\\\"?Ke[s].linkTarget=\\\"_top\\\":typeof r==\\\"string\\\"?Ke[s].linkTarget=wo(r):Ke[s].linkTarget=\\\"_blank\\\")}),U1(t,\\\"clickable\\\")},jC=function(t,e,r){t.split(\\\",\\\").forEach(function(n){$C(n,e,r),Ke[n].haveCallback=!0}),U1(t,\\\"clickable\\\")},$C=function(t,e,r){const n=$();let i=t,s=Ng(i);if(n.securityLevel===\\\"loose\\\"&&e!==void 0&&Ke[i]!==void 0){let a=[];if(typeof r==\\\"string\\\"){a=r.split(/,(?=(?:(?:[^\\\"]*\\\"){2})*[^\\\"]*$)/);for(let o=0;o\u003Ca.length;o++){let l=a[o].trim();l.charAt(0)==='\\\"'&&l.charAt(l.length-1)==='\\\"'&&(l=l.substr(1,l.length-2)),a[o]=l}}a.length===0&&a.push(s),ko.push(function(){const o=document.querySelector(`[id=\\\"${s}\\\"]`);o!==null&&o.addEventListener(\\\"click\\\",function(){ge.runFunc(e,...a)},!1)})}},XC=function(t){ko.forEach(function(e){e(t)})},KC={LINE:0,DOTTED_LINE:1},ZC={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},Ig=function(t){let e=St(\\\".mermaidTooltip\\\");(e._groups||e)[0][0]===null&&(e=St(\\\"body\\\").append(\\\"div\\\").attr(\\\"class\\\",\\\"mermaidTooltip\\\").style(\\\"opacity\\\",0)),St(t).select(\\\"svg\\\").selectAll(\\\"g.node\\\").on(\\\"mouseover\\\",function(){const i=St(this);if(i.attr(\\\"title\\\")===null)return;const a=this.getBoundingClientRect();e.transition().duration(200).style(\\\"opacity\\\",\\\".9\\\"),e.text(i.attr(\\\"title\\\")).style(\\\"left\\\",window.scrollX+a.left+(a.right-a.left)/2+\\\"px\\\").style(\\\"top\\\",window.scrollY+a.top-14+document.body.scrollTop+\\\"px\\\"),e.html(e.html().replace(/<br\\\\/>/g,\\\"\u003Cbr/>\\\")),i.classed(\\\"hover\\\",!0)}).on(\\\"mouseout\\\",function(){e.transition().duration(500).style(\\\"opacity\\\",0),St(this).classed(\\\"hover\\\",!1)})};ko.push(Ig);let Og=\\\"TB\\\";const fa={parseDirective:BC,setAccTitle:nn,getAccTitle:kn,getAccDescription:Tn,setAccDescription:wn,getConfig:()=>$().class,addClass:V1,bindFunctions:XC,clear:IC,getClass:OC,getClasses:RC,getNotes:PC,addAnnotation:VC,addNote:zC,getRelations:FC,addRelation:YC,getDirection:()=>Og,setDirection:t=>{Og=t},addMember:Bg,addMembers:UC,cleanupLabel:WC,lineType:KC,relationType:ZC,setClickEvent:jC,setCssClass:U1,setLink:qC,getTooltip:GC,setTooltip:HC,lookUpDomId:Ng,setDiagramTitle:hi,getDiagramTitle:di};function Hn(t){return t!=null&&typeof t==\\\"object\\\"}var QC=\\\"[object Symbol]\\\";function ks(t){return typeof t==\\\"symbol\\\"||Hn(t)&&ps(t)==QC}function pa(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r\u003Cn;)i[r]=e(t[r],r,t);return i}var JC=Array.isArray;const nr=JC;var t9=1/0,Rg=en?en.prototype:void 0,Fg=Rg?Rg.toString:void 0;function Pg(t){if(typeof t==\\\"string\\\")return t;if(nr(t))return pa(t,Pg)+\\\"\\\";if(ks(t))return Fg?Fg.call(t):\\\"\\\";var e=t+\\\"\\\";return e==\\\"0\\\"&&1/t==-t9?\\\"-0\\\":e}var e9=/\\\\s/;function r9(t){for(var e=t.length;e--&&e9.test(t.charAt(e)););return e}var n9=/^\\\\s+/;function i9(t){return t&&t.slice(0,r9(t)+1).replace(n9,\\\"\\\")}var Yg=0/0,s9=/^[-+]0x[0-9a-f]+$/i,a9=/^0b[01]+$/i,o9=/^0o[0-7]+$/i,l9=parseInt;function c9(t){if(typeof t==\\\"number\\\")return t;if(ks(t))return Yg;if(Gr(t)){var e=typeof t.valueOf==\\\"function\\\"?t.valueOf():t;t=Gr(e)?e+\\\"\\\":e}if(typeof t!=\\\"string\\\")return t===0?t:+t;t=i9(t);var r=a9.test(t);return r||o9.test(t)?l9(t.slice(2),r?2:8):s9.test(t)?Yg:+t}var Vg=1/0,u9=17976931348623157e292;function Hc(t){if(!t)return t===0?t:0;if(t=c9(t),t===Vg||t===-Vg){var e=t\u003C0?-1:1;return e*u9}return t===t?t:0}function h9(t){var e=Hc(t),r=e%1;return e===e?r?e-r:e:0}function ws(t){return t}var d9=ys(mn,\\\"WeakMap\\\");const z1=d9;var Ug=Object.create,f9=function(){function t(){}return function(e){if(!Gr(e))return{};if(Ug)return Ug(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();const p9=f9;function g9(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}function y9(){}function zg(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r\u003Cn;)e[r]=t[r];return e}var m9=800,b9=16,_9=Date.now;function x9(t){var e=0,r=0;return function(){var n=_9(),i=b9-(n-r);if(r=n,i>0){if(++e>=m9)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function ga(t){return function(){return t}}var v9=function(){try{var t=ys(Object,\\\"defineProperty\\\");return t({},\\\"\\\",{}),t}catch{}}();const Gc=v9;var k9=Gc?function(t,e){return Gc(t,\\\"toString\\\",{configurable:!0,enumerable:!1,value:ga(e),writable:!0})}:ws,w9=x9(k9);const Wg=w9;function Hg(t,e){for(var r=-1,n=t==null?0:t.length;++r\u003Cn&&e(t[r],r,t)!==!1;);return t}function Gg(t,e,r,n){for(var i=t.length,s=r+(n?1:-1);n?s--:++s\u003Ci;)if(e(t[s],s,t))return s;return-1}function T9(t){return t!==t}function E9(t,e,r){for(var n=r-1,i=t.length;++n\u003Ci;)if(t[n]===e)return n;return-1}function C9(t,e,r){return e===e?E9(t,e,r):Gg(t,T9,r)}function S9(t,e){var r=t==null?0:t.length;return!!r&&C9(t,e,0)>-1}var A9=9007199254740991,L9=/^(?:0|[1-9]\\\\d*)$/;function qc(t,e){var r=typeof t;return e=e==null?A9:e,!!e&&(r==\\\"number\\\"||r!=\\\"symbol\\\"&&L9.test(t))&&t>-1&&t%1==0&&t\u003Ce}function jc(t,e,r){e==\\\"__proto__\\\"&&Gc?Gc(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var D9=Object.prototype,M9=D9.hasOwnProperty;function $c(t,e,r){var n=t[e];(!(M9.call(t,e)&&oa(n,r))||r===void 0&&!(e in t))&&jc(t,e,r)}function Eo(t,e,r,n){var i=!r;r||(r={});for(var s=-1,a=e.length;++s\u003Ca;){var o=e[s],l=n?n(r[o],t[o],o,r,t):void 0;l===void 0&&(l=t[o]),i?jc(r,o,l):$c(r,o,l)}return r}var qg=Math.max;function jg(t,e,r){return e=qg(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,s=qg(n.length-e,0),a=Array(s);++i\u003Cs;)a[i]=n[e+i];i=-1;for(var o=Array(e+1);++i\u003Ce;)o[i]=n[i];return o[e]=r(a),g9(t,this,o)}}function Xc(t,e){return Wg(jg(t,e,ws),t+\\\"\\\")}var N9=9007199254740991;function W1(t){return typeof t==\\\"number\\\"&&t>-1&&t%1==0&&t\u003C=N9}function Hi(t){return t!=null&&W1(t.length)&&!aa(t)}function Co(t,e,r){if(!Gr(r))return!1;var n=typeof e;return(n==\\\"number\\\"?Hi(r)&&qc(e,r.length):n==\\\"string\\\"&&e in r)?oa(r[e],t):!1}function B9(t){return Xc(function(e,r){var n=-1,i=r.length,s=i>1?r[i-1]:void 0,a=i>2?r[2]:void 0;for(s=t.length>3&&typeof s==\\\"function\\\"?(i--,s):void 0,a&&Co(r[0],r[1],a)&&(s=i\u003C3?void 0:s,i=1),e=Object(e);++n\u003Ci;){var o=r[n];o&&t(e,o,n,s)}return e})}var I9=Object.prototype;function Kc(t){var e=t&&t.constructor,r=typeof e==\\\"function\\\"&&e.prototype||I9;return t===r}function O9(t,e){for(var r=-1,n=Array(t);++r\u003Ct;)n[r]=e(r);return n}var R9=\\\"[object Arguments]\\\";function $g(t){return Hn(t)&&ps(t)==R9}var Xg=Object.prototype,F9=Xg.hasOwnProperty,P9=Xg.propertyIsEnumerable,Y9=$g(function(){return arguments}())?$g:function(t){return Hn(t)&&F9.call(t,\\\"callee\\\")&&!P9.call(t,\\\"callee\\\")};const ya=Y9;function V9(){return!1}var Kg=typeof exports==\\\"object\\\"&&exports&&!exports.nodeType&&exports,Zg=Kg&&typeof module==\\\"object\\\"&&module&&!module.nodeType&&module,U9=Zg&&Zg.exports===Kg,Qg=U9?mn.Buffer:void 0,z9=Qg?Qg.isBuffer:void 0,W9=z9||V9;const ma=W9;var H9=\\\"[object Arguments]\\\",G9=\\\"[object Array]\\\",q9=\\\"[object Boolean]\\\",j9=\\\"[object Date]\\\",$9=\\\"[object Error]\\\",X9=\\\"[object Function]\\\",K9=\\\"[object Map]\\\",Z9=\\\"[object Number]\\\",Q9=\\\"[object Object]\\\",J9=\\\"[object RegExp]\\\",tS=\\\"[object Set]\\\",eS=\\\"[object String]\\\",rS=\\\"[object WeakMap]\\\",nS=\\\"[object ArrayBuffer]\\\",iS=\\\"[object DataView]\\\",sS=\\\"[object Float32Array]\\\",aS=\\\"[object Float64Array]\\\",oS=\\\"[object Int8Array]\\\",lS=\\\"[object Int16Array]\\\",cS=\\\"[object Int32Array]\\\",uS=\\\"[object Uint8Array]\\\",hS=\\\"[object Uint8ClampedArray]\\\",dS=\\\"[object Uint16Array]\\\",fS=\\\"[object Uint32Array]\\\",Fe={};Fe[sS]=Fe[aS]=Fe[oS]=Fe[lS]=Fe[cS]=Fe[uS]=Fe[hS]=Fe[dS]=Fe[fS]=!0,Fe[H9]=Fe[G9]=Fe[nS]=Fe[q9]=Fe[iS]=Fe[j9]=Fe[$9]=Fe[X9]=Fe[K9]=Fe[Z9]=Fe[Q9]=Fe[J9]=Fe[tS]=Fe[eS]=Fe[rS]=!1;function pS(t){return Hn(t)&&W1(t.length)&&!!Fe[ps(t)]}function Zc(t){return function(e){return t(e)}}var Jg=typeof exports==\\\"object\\\"&&exports&&!exports.nodeType&&exports,So=Jg&&typeof module==\\\"object\\\"&&module&&!module.nodeType&&module,gS=So&&So.exports===Jg,H1=gS&&Dp.process,yS=function(){try{var t=So&&So.require&&So.require(\\\"util\\\").types;return t||H1&&H1.binding&&H1.binding(\\\"util\\\")}catch{}}();const ba=yS;var ty=ba&&ba.isTypedArray,mS=ty?Zc(ty):pS;const Qc=mS;var bS=Object.prototype,_S=bS.hasOwnProperty;function ey(t,e){var r=nr(t),n=!r&&ya(t),i=!r&&!n&&ma(t),s=!r&&!n&&!i&&Qc(t),a=r||n||i||s,o=a?O9(t.length,String):[],l=o.length;for(var u in t)(e||_S.call(t,u))&&!(a&&(u==\\\"length\\\"||i&&(u==\\\"offset\\\"||u==\\\"parent\\\")||s&&(u==\\\"buffer\\\"||u==\\\"byteLength\\\"||u==\\\"byteOffset\\\")||qc(u,l)))&&o.push(u);return o}function ry(t,e){return function(r){return t(e(r))}}var xS=ry(Object.keys,Object);const vS=xS;var kS=Object.prototype,wS=kS.hasOwnProperty;function ny(t){if(!Kc(t))return vS(t);var e=[];for(var r in Object(t))wS.call(t,r)&&r!=\\\"constructor\\\"&&e.push(r);return e}function jr(t){return Hi(t)?ey(t):ny(t)}function TS(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var ES=Object.prototype,CS=ES.hasOwnProperty;function SS(t){if(!Gr(t))return TS(t);var e=Kc(t),r=[];for(var n in t)n==\\\"constructor\\\"&&(e||!CS.call(t,n))||r.push(n);return r}function Ts(t){return Hi(t)?ey(t,!0):SS(t)}var AS=/\\\\.|\\\\[(?:[^[\\\\]]*|([\\\"'])(?:(?!\\\\1)[^\\\\\\\\]|\\\\\\\\.)*?\\\\1)\\\\]/,LS=/^\\\\w*$/;function G1(t,e){if(nr(t))return!1;var r=typeof t;return r==\\\"number\\\"||r==\\\"symbol\\\"||r==\\\"boolean\\\"||t==null||ks(t)?!0:LS.test(t)||!AS.test(t)||e!=null&&t in Object(e)}var DS=500;function MS(t){var e=la(t,function(n){return r.size===DS&&r.clear(),n}),r=e.cache;return e}var NS=/[^.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))/g,BS=/\\\\\\\\(\\\\\\\\)?/g,IS=MS(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(\\\"\\\"),t.replace(NS,function(r,n,i,s){e.push(i?s.replace(BS,\\\"$1\\\"):n||r)}),e});const OS=IS;function iy(t){return t==null?\\\"\\\":Pg(t)}function Jc(t,e){return nr(t)?t:G1(t,e)?[t]:OS(iy(t))}var RS=1/0;function Ao(t){if(typeof t==\\\"string\\\"||ks(t))return t;var e=t+\\\"\\\";return e==\\\"0\\\"&&1/t==-RS?\\\"-0\\\":e}function tu(t,e){e=Jc(e,t);for(var r=0,n=e.length;t!=null&&r\u003Cn;)t=t[Ao(e[r++])];return r&&r==n?t:void 0}function FS(t,e,r){var n=t==null?void 0:tu(t,e);return n===void 0?r:n}function q1(t,e){for(var r=-1,n=e.length,i=t.length;++r\u003Cn;)t[i+r]=e[r];return t}var sy=en?en.isConcatSpreadable:void 0;function PS(t){return nr(t)||ya(t)||!!(sy&&t&&t[sy])}function eu(t,e,r,n,i){var s=-1,a=t.length;for(r||(r=PS),i||(i=[]);++s\u003Ca;){var o=t[s];e>0&&r(o)?e>1?eu(o,e-1,r,n,i):q1(i,o):n||(i[i.length]=o)}return i}function _a(t){var e=t==null?0:t.length;return e?eu(t,1):[]}function YS(t){return Wg(jg(t,void 0,_a),t+\\\"\\\")}var VS=ry(Object.getPrototypeOf,Object);const j1=VS;var US=\\\"[object Object]\\\",zS=Function.prototype,WS=Object.prototype,ay=zS.toString,HS=WS.hasOwnProperty,GS=ay.call(Object);function oy(t){if(!Hn(t)||ps(t)!=US)return!1;var e=j1(t);if(e===null)return!0;var r=HS.call(e,\\\"constructor\\\")&&e.constructor;return typeof r==\\\"function\\\"&&r instanceof r&&ay.call(r)==GS}function qS(t,e,r,n){var i=-1,s=t==null?0:t.length;for(n&&s&&(r=t[++i]);++i\u003Cs;)r=e(r,t[i],i,t);return r}function jS(){this.__data__=new ci,this.size=0}function $S(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}function XS(t){return this.__data__.get(t)}function KS(t){return this.__data__.has(t)}var ZS=200;function QS(t,e){var r=this.__data__;if(r instanceof ci){var n=r.__data__;if(!uo||n.length\u003CZS-1)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new ui(n)}return r.set(t,e),this.size=r.size,this}function An(t){var e=this.__data__=new ci(t);this.size=e.size}An.prototype.clear=jS,An.prototype.delete=$S,An.prototype.get=XS,An.prototype.has=KS,An.prototype.set=QS;function JS(t,e){return t&&Eo(e,jr(e),t)}function tA(t,e){return t&&Eo(e,Ts(e),t)}var ly=typeof exports==\\\"object\\\"&&exports&&!exports.nodeType&&exports,cy=ly&&typeof module==\\\"object\\\"&&module&&!module.nodeType&&module,eA=cy&&cy.exports===ly,uy=eA?mn.Buffer:void 0,hy=uy?uy.allocUnsafe:void 0;function dy(t,e){if(e)return t.slice();var r=t.length,n=hy?hy(r):new t.constructor(r);return t.copy(n),n}function fy(t,e){for(var r=-1,n=t==null?0:t.length,i=0,s=[];++r\u003Cn;){var a=t[r];e(a,r,t)&&(s[i++]=a)}return s}function py(){return[]}var rA=Object.prototype,nA=rA.propertyIsEnumerable,gy=Object.getOwnPropertySymbols,iA=gy?function(t){return t==null?[]:(t=Object(t),fy(gy(t),function(e){return nA.call(t,e)}))}:py;const $1=iA;function sA(t,e){return Eo(t,$1(t),e)}var aA=Object.getOwnPropertySymbols,oA=aA?function(t){for(var e=[];t;)q1(e,$1(t)),t=j1(t);return e}:py;const yy=oA;function lA(t,e){return Eo(t,yy(t),e)}function my(t,e,r){var n=e(t);return nr(t)?n:q1(n,r(t))}function X1(t){return my(t,jr,$1)}function cA(t){return my(t,Ts,yy)}var uA=ys(mn,\\\"DataView\\\");const K1=uA;var hA=ys(mn,\\\"Promise\\\");const Z1=hA;var dA=ys(mn,\\\"Set\\\");const xa=dA;var by=\\\"[object Map]\\\",fA=\\\"[object Object]\\\",_y=\\\"[object Promise]\\\",xy=\\\"[object Set]\\\",vy=\\\"[object WeakMap]\\\",ky=\\\"[object DataView]\\\",pA=gs(K1),gA=gs(uo),yA=gs(Z1),mA=gs(xa),bA=gs(z1),Es=ps;(K1&&Es(new K1(new ArrayBuffer(1)))!=ky||uo&&Es(new uo)!=by||Z1&&Es(Z1.resolve())!=_y||xa&&Es(new xa)!=xy||z1&&Es(new z1)!=vy)&&(Es=function(t){var e=ps(t),r=e==fA?t.constructor:void 0,n=r?gs(r):\\\"\\\";if(n)switch(n){case pA:return ky;case gA:return by;case yA:return _y;case mA:return xy;case bA:return vy}return e});const va=Es;var _A=Object.prototype,xA=_A.hasOwnProperty;function vA(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]==\\\"string\\\"&&xA.call(t,\\\"index\\\")&&(r.index=t.index,r.input=t.input),r}var kA=mn.Uint8Array;const ru=kA;function Q1(t){var e=new t.constructor(t.byteLength);return new ru(e).set(new ru(t)),e}function wA(t,e){var r=e?Q1(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var TA=/\\\\w*$/;function EA(t){var e=new t.constructor(t.source,TA.exec(t));return e.lastIndex=t.lastIndex,e}var wy=en?en.prototype:void 0,Ty=wy?wy.valueOf:void 0;function CA(t){return Ty?Object(Ty.call(t)):{}}function Ey(t,e){var r=e?Q1(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var SA=\\\"[object Boolean]\\\",AA=\\\"[object Date]\\\",LA=\\\"[object Map]\\\",DA=\\\"[object Number]\\\",MA=\\\"[object RegExp]\\\",NA=\\\"[object Set]\\\",BA=\\\"[object String]\\\",IA=\\\"[object Symbol]\\\",OA=\\\"[object ArrayBuffer]\\\",RA=\\\"[object DataView]\\\",FA=\\\"[object Float32Array]\\\",PA=\\\"[object Float64Array]\\\",YA=\\\"[object Int8Array]\\\",VA=\\\"[object Int16Array]\\\",UA=\\\"[object Int32Array]\\\",zA=\\\"[object Uint8Array]\\\",WA=\\\"[object Uint8ClampedArray]\\\",HA=\\\"[object Uint16Array]\\\",GA=\\\"[object Uint32Array]\\\";function qA(t,e,r){var n=t.constructor;switch(e){case OA:return Q1(t);case SA:case AA:return new n(+t);case RA:return wA(t,r);case FA:case PA:case YA:case VA:case UA:case zA:case WA:case HA:case GA:return Ey(t,r);case LA:return new n;case DA:case BA:return new n(t);case MA:return EA(t);case NA:return new n;case IA:return CA(t)}}function Cy(t){return typeof t.constructor==\\\"function\\\"&&!Kc(t)?p9(j1(t)):{}}var jA=\\\"[object Map]\\\";function $A(t){return Hn(t)&&va(t)==jA}var Sy=ba&&ba.isMap,XA=Sy?Zc(Sy):$A;const KA=XA;var ZA=\\\"[object Set]\\\";function QA(t){return Hn(t)&&va(t)==ZA}var Ay=ba&&ba.isSet,JA=Ay?Zc(Ay):QA;const tL=JA;var eL=1,rL=2,nL=4,Ly=\\\"[object Arguments]\\\",iL=\\\"[object Array]\\\",sL=\\\"[object Boolean]\\\",aL=\\\"[object Date]\\\",oL=\\\"[object Error]\\\",Dy=\\\"[object Function]\\\",lL=\\\"[object GeneratorFunction]\\\",cL=\\\"[object Map]\\\",uL=\\\"[object Number]\\\",My=\\\"[object Object]\\\",hL=\\\"[object RegExp]\\\",dL=\\\"[object Set]\\\",fL=\\\"[object String]\\\",pL=\\\"[object Symbol]\\\",gL=\\\"[object WeakMap]\\\",yL=\\\"[object ArrayBuffer]\\\",mL=\\\"[object DataView]\\\",bL=\\\"[object Float32Array]\\\",_L=\\\"[object Float64Array]\\\",xL=\\\"[object Int8Array]\\\",vL=\\\"[object Int16Array]\\\",kL=\\\"[object Int32Array]\\\",wL=\\\"[object Uint8Array]\\\",TL=\\\"[object Uint8ClampedArray]\\\",EL=\\\"[object Uint16Array]\\\",CL=\\\"[object Uint32Array]\\\",Oe={};Oe[Ly]=Oe[iL]=Oe[yL]=Oe[mL]=Oe[sL]=Oe[aL]=Oe[bL]=Oe[_L]=Oe[xL]=Oe[vL]=Oe[kL]=Oe[cL]=Oe[uL]=Oe[My]=Oe[hL]=Oe[dL]=Oe[fL]=Oe[pL]=Oe[wL]=Oe[TL]=Oe[EL]=Oe[CL]=!0,Oe[oL]=Oe[Dy]=Oe[gL]=!1;function Lo(t,e,r,n,i,s){var a,o=e&eL,l=e&rL,u=e&nL;if(r&&(a=i?r(t,n,i,s):r(t)),a!==void 0)return a;if(!Gr(t))return t;var d=nr(t);if(d){if(a=vA(t),!o)return zg(t,a)}else{var f=va(t),p=f==Dy||f==lL;if(ma(t))return dy(t,o);if(f==My||f==Ly||p&&!i){if(a=l||p?{}:Cy(t),!o)return l?lA(t,tA(a,t)):sA(t,JS(a,t))}else{if(!Oe[f])return i?t:{};a=qA(t,f,o)}}s||(s=new An);var g=s.get(t);if(g)return g;s.set(t,a),tL(t)?t.forEach(function(T){a.add(Lo(T,e,r,T,t,s))}):KA(t)&&t.forEach(function(T,L){a.set(L,Lo(T,e,r,L,t,s))});var b=u?l?cA:X1:l?Ts:jr,k=d?void 0:b(t);return Hg(k||t,function(T,L){k&&(L=T,T=t[L]),$c(a,L,Lo(T,e,r,L,t,s))}),a}var SL=4;function AL(t){return Lo(t,SL)}var LL=1,DL=4;function ML(t){return Lo(t,LL|DL)}var NL=\\\"__lodash_hash_undefined__\\\";function BL(t){return this.__data__.set(t,NL),this}function IL(t){return this.__data__.has(t)}function Do(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new ui;++e\u003Cr;)this.add(t[e])}Do.prototype.add=Do.prototype.push=BL,Do.prototype.has=IL;function OL(t,e){for(var r=-1,n=t==null?0:t.length;++r\u003Cn;)if(e(t[r],r,t))return!0;return!1}function Ny(t,e){return t.has(e)}var RL=1,FL=2;function By(t,e,r,n,i,s){var a=r&RL,o=t.length,l=e.length;if(o!=l&&!(a&&l>o))return!1;var u=s.get(t),d=s.get(e);if(u&&d)return u==e&&d==t;var f=-1,p=!0,g=r&FL?new Do:void 0;for(s.set(t,e),s.set(e,t);++f\u003Co;){var b=t[f],k=e[f];if(n)var T=a?n(k,b,f,e,t,s):n(b,k,f,t,e,s);if(T!==void 0){if(T)continue;p=!1;break}if(g){if(!OL(e,function(L,E){if(!Ny(g,E)&&(b===L||i(b,L,r,n,s)))return g.push(E)})){p=!1;break}}else if(!(b===k||i(b,k,r,n,s))){p=!1;break}}return s.delete(t),s.delete(e),p}function PL(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}function J1(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var YL=1,VL=2,UL=\\\"[object Boolean]\\\",zL=\\\"[object Date]\\\",WL=\\\"[object Error]\\\",HL=\\\"[object Map]\\\",GL=\\\"[object Number]\\\",qL=\\\"[object RegExp]\\\",jL=\\\"[object Set]\\\",$L=\\\"[object String]\\\",XL=\\\"[object Symbol]\\\",KL=\\\"[object ArrayBuffer]\\\",ZL=\\\"[object DataView]\\\",Iy=en?en.prototype:void 0,t0=Iy?Iy.valueOf:void 0;function QL(t,e,r,n,i,s,a){switch(r){case ZL:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case KL:return!(t.byteLength!=e.byteLength||!s(new ru(t),new ru(e)));case UL:case zL:case GL:return oa(+t,+e);case WL:return t.name==e.name&&t.message==e.message;case qL:case $L:return t==e+\\\"\\\";case HL:var o=PL;case jL:var l=n&YL;if(o||(o=J1),t.size!=e.size&&!l)return!1;var u=a.get(t);if(u)return u==e;n|=VL,a.set(t,e);var d=By(o(t),o(e),n,i,s,a);return a.delete(t),d;case XL:if(t0)return t0.call(t)==t0.call(e)}return!1}var JL=1,tD=Object.prototype,eD=tD.hasOwnProperty;function rD(t,e,r,n,i,s){var a=r&JL,o=X1(t),l=o.length,u=X1(e),d=u.length;if(l!=d&&!a)return!1;for(var f=l;f--;){var p=o[f];if(!(a?p in e:eD.call(e,p)))return!1}var g=s.get(t),b=s.get(e);if(g&&b)return g==e&&b==t;var k=!0;s.set(t,e),s.set(e,t);for(var T=a;++f\u003Cl;){p=o[f];var L=t[p],E=e[p];if(n)var I=a?n(E,L,p,e,t,s):n(L,E,p,t,e,s);if(!(I===void 0?L===E||i(L,E,r,n,s):I)){k=!1;break}T||(T=p==\\\"constructor\\\")}if(k&&!T){var V=t.constructor,H=e.constructor;V!=H&&\\\"constructor\\\"in t&&\\\"constructor\\\"in e&&!(typeof V==\\\"function\\\"&&V instanceof V&&typeof H==\\\"function\\\"&&H instanceof H)&&(k=!1)}return s.delete(t),s.delete(e),k}var nD=1,Oy=\\\"[object Arguments]\\\",Ry=\\\"[object Array]\\\",nu=\\\"[object Object]\\\",iD=Object.prototype,Fy=iD.hasOwnProperty;function sD(t,e,r,n,i,s){var a=nr(t),o=nr(e),l=a?Ry:va(t),u=o?Ry:va(e);l=l==Oy?nu:l,u=u==Oy?nu:u;var d=l==nu,f=u==nu,p=l==u;if(p&&ma(t)){if(!ma(e))return!1;a=!0,d=!1}if(p&&!d)return s||(s=new An),a||Qc(t)?By(t,e,r,n,i,s):QL(t,e,l,r,n,i,s);if(!(r&nD)){var g=d&&Fy.call(t,\\\"__wrapped__\\\"),b=f&&Fy.call(e,\\\"__wrapped__\\\");if(g||b){var k=g?t.value():t,T=b?e.value():e;return s||(s=new An),i(k,T,r,n,s)}}return p?(s||(s=new An),rD(t,e,r,n,i,s)):!1}function e0(t,e,r,n,i){return t===e?!0:t==null||e==null||!Hn(t)&&!Hn(e)?t!==t&&e!==e:sD(t,e,r,n,e0,i)}var aD=1,oD=2;function lD(t,e,r,n){var i=r.length,s=i,a=!n;if(t==null)return!s;for(t=Object(t);i--;){var o=r[i];if(a&&o[2]?o[1]!==t[o[0]]:!(o[0]in t))return!1}for(;++i\u003Cs;){o=r[i];var l=o[0],u=t[l],d=o[1];if(a&&o[2]){if(u===void 0&&!(l in t))return!1}else{var f=new An;if(n)var p=n(u,d,l,t,e,f);if(!(p===void 0?e0(d,u,aD|oD,n,f):p))return!1}}return!0}function Py(t){return t===t&&!Gr(t)}function cD(t){for(var e=jr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,Py(i)]}return e}function Yy(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}function uD(t){var e=cD(t);return e.length==1&&e[0][2]?Yy(e[0][0],e[0][1]):function(r){return r===t||lD(r,t,e)}}function hD(t,e){return t!=null&&e in Object(t)}function Vy(t,e,r){e=Jc(e,t);for(var n=-1,i=e.length,s=!1;++n\u003Ci;){var a=Ao(e[n]);if(!(s=t!=null&&r(t,a)))break;t=t[a]}return s||++n!=i?s:(i=t==null?0:t.length,!!i&&W1(i)&&qc(a,i)&&(nr(t)||ya(t)))}function Uy(t,e){return t!=null&&Vy(t,e,hD)}var dD=1,fD=2;function pD(t,e){return G1(t)&&Py(e)?Yy(Ao(t),e):function(r){var n=FS(r,t);return n===void 0&&n===e?Uy(r,t):e0(e,n,dD|fD)}}function gD(t){return function(e){return e==null?void 0:e[t]}}function yD(t){return function(e){return tu(e,t)}}function mD(t){return G1(t)?gD(Ao(t)):yD(t)}function Gi(t){return typeof t==\\\"function\\\"?t:t==null?ws:typeof t==\\\"object\\\"?nr(t)?pD(t[0],t[1]):uD(t):mD(t)}function bD(t){return function(e,r,n){for(var i=-1,s=Object(e),a=n(e),o=a.length;o--;){var l=a[t?o:++i];if(r(s[l],l,s)===!1)break}return e}}var _D=bD();const r0=_D;function zy(t,e){return t&&r0(t,e,jr)}function xD(t,e){return function(r,n){if(r==null)return r;if(!Hi(r))return t(r,n);for(var i=r.length,s=e?i:-1,a=Object(r);(e?s--:++s\u003Ci)&&n(a[s],s,a)!==!1;);return r}}var vD=xD(zy);const iu=vD;var kD=function(){return mn.Date.now()};const Wy=kD;var Hy=Object.prototype,wD=Hy.hasOwnProperty,TD=Xc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&Co(e[0],e[1],i)&&(n=1);++r\u003Cn;)for(var s=e[r],a=Ts(s),o=-1,l=a.length;++o\u003Cl;){var u=a[o],d=t[u];(d===void 0||oa(d,Hy[u])&&!wD.call(t,u))&&(t[u]=s[u])}return t});const ka=TD;function n0(t,e,r){(r!==void 0&&!oa(t[e],r)||r===void 0&&!(e in t))&&jc(t,e,r)}function Gy(t){return Hn(t)&&Hi(t)}function i0(t,e){if(!(e===\\\"constructor\\\"&&typeof t[e]==\\\"function\\\")&&e!=\\\"__proto__\\\")return t[e]}function ED(t){return Eo(t,Ts(t))}function CD(t,e,r,n,i,s,a){var o=i0(t,r),l=i0(e,r),u=a.get(l);if(u){n0(t,r,u);return}var d=s?s(o,l,r+\\\"\\\",t,e,a):void 0,f=d===void 0;if(f){var p=nr(l),g=!p&&ma(l),b=!p&&!g&&Qc(l);d=l,p||g||b?nr(o)?d=o:Gy(o)?d=zg(o):g?(f=!1,d=dy(l,!0)):b?(f=!1,d=Ey(l,!0)):d=[]:oy(l)||ya(l)?(d=o,ya(o)?d=ED(o):(!Gr(o)||aa(o))&&(d=Cy(l))):f=!1}f&&(a.set(l,d),i(d,l,n,s,a),a.delete(l)),n0(t,r,d)}function qy(t,e,r,n,i){t!==e&&r0(e,function(s,a){if(i||(i=new An),Gr(s))CD(t,e,a,r,qy,n,i);else{var o=n?n(i0(t,a),s,a+\\\"\\\",t,e,i):void 0;o===void 0&&(o=s),n0(t,a,o)}},Ts)}function SD(t,e,r){for(var n=-1,i=t==null?0:t.length;++n\u003Ci;)if(r(e,t[n]))return!0;return!1}function su(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}function jy(t){return typeof t==\\\"function\\\"?t:ws}function vt(t,e){var r=nr(t)?Hg:iu;return r(t,jy(e))}function AD(t,e){var r=[];return iu(t,function(n,i,s){e(n,i,s)&&r.push(n)}),r}function pi(t,e){var r=nr(t)?fy:AD;return r(t,Gi(e))}function LD(t){return function(e,r,n){var i=Object(e);if(!Hi(e)){var s=Gi(r);e=jr(e),r=function(o){return s(i[o],o,i)}}var a=t(e,r,n);return a>-1?i[s?e[a]:a]:void 0}}var DD=Math.max;function MD(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:h9(r);return i\u003C0&&(i=DD(n+i,0)),Gg(t,Gi(e),i)}var ND=LD(MD);const s0=ND;function $y(t,e){var r=-1,n=Hi(t)?Array(t.length):[];return iu(t,function(i,s,a){n[++r]=e(i,s,a)}),n}function ir(t,e){var r=nr(t)?pa:$y;return r(t,Gi(e))}function BD(t,e){return t==null?t:r0(t,jy(e),Ts)}function ID(t,e){return t>e}var OD=Object.prototype,RD=OD.hasOwnProperty;function FD(t,e){return t!=null&&RD.call(t,e)}function me(t,e){return t!=null&&Vy(t,e,FD)}function PD(t,e){return pa(e,function(r){return t[r]})}function gi(t){return t==null?[]:PD(t,jr(t))}var YD=\\\"[object Map]\\\",VD=\\\"[object Set]\\\",UD=Object.prototype,zD=UD.hasOwnProperty;function wa(t){if(t==null)return!0;if(Hi(t)&&(nr(t)||typeof t==\\\"string\\\"||typeof t.splice==\\\"function\\\"||ma(t)||Qc(t)||ya(t)))return!t.length;var e=va(t);if(e==YD||e==VD)return!t.size;if(Kc(t))return!ny(t).length;for(var r in t)if(zD.call(t,r))return!1;return!0}function Ze(t){return t===void 0}function Xy(t,e){return t\u003Ce}function au(t,e){var r={};return e=Gi(e),zy(t,function(n,i,s){jc(r,i,e(n,i,s))}),r}function a0(t,e,r){for(var n=-1,i=t.length;++n\u003Ci;){var s=t[n],a=e(s);if(a!=null&&(o===void 0?a===a&&!ks(a):r(a,o)))var o=a,l=s}return l}function Cs(t){return t&&t.length?a0(t,ws,ID):void 0}var WD=B9(function(t,e,r){qy(t,e,r)});const o0=WD;function Mo(t){return t&&t.length?a0(t,ws,Xy):void 0}function l0(t,e){return t&&t.length?a0(t,Gi(e),Xy):void 0}function HD(t,e,r,n){if(!Gr(t))return t;e=Jc(e,t);for(var i=-1,s=e.length,a=s-1,o=t;o!=null&&++i\u003Cs;){var l=Ao(e[i]),u=r;if(l===\\\"__proto__\\\"||l===\\\"constructor\\\"||l===\\\"prototype\\\")return t;if(i!=a){var d=o[l];u=n?n(d,l,o):void 0,u===void 0&&(u=Gr(d)?d:qc(e[i+1])?[]:{})}$c(o,l,u),o=o[l]}return t}function GD(t,e,r){for(var n=-1,i=e.length,s={};++n\u003Ci;){var a=e[n],o=tu(t,a);r(o,a)&&HD(s,Jc(a,t),o)}return s}function qD(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}function jD(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,s=ks(t),a=e!==void 0,o=e===null,l=e===e,u=ks(e);if(!o&&!u&&!s&&t>e||s&&a&&l&&!o&&!u||n&&a&&l||!r&&l||!i)return 1;if(!n&&!s&&!u&&t\u003Ce||u&&r&&i&&!n&&!s||o&&r&&i||!a&&i||!l)return-1}return 0}function $D(t,e,r){for(var n=-1,i=t.criteria,s=e.criteria,a=i.length,o=r.length;++n\u003Ca;){var l=jD(i[n],s[n]);if(l){if(n>=o)return l;var u=r[n];return l*(u==\\\"desc\\\"?-1:1)}}return t.index-e.index}function XD(t,e,r){e.length?e=pa(e,function(s){return nr(s)?function(a){return tu(a,s.length===1?s[0]:s)}:s}):e=[ws];var n=-1;e=pa(e,Zc(Gi));var i=$y(t,function(s,a,o){var l=pa(e,function(u){return u(s)});return{criteria:l,index:++n,value:s}});return qD(i,function(s,a){return $D(s,a,r)})}function KD(t,e){return GD(t,e,function(r,n){return Uy(t,n)})}var ZD=YS(function(t,e){return t==null?{}:KD(t,e)});const No=ZD;var QD=Math.ceil,JD=Math.max;function tM(t,e,r,n){for(var i=-1,s=JD(QD((e-t)/(r||1)),0),a=Array(s);s--;)a[n?s:++i]=t,t+=r;return a}function eM(t){return function(e,r,n){return n&&typeof n!=\\\"number\\\"&&Co(e,r,n)&&(r=n=void 0),e=Hc(e),r===void 0?(r=e,e=0):r=Hc(r),n=n===void 0?e\u003Cr?1:-1:Hc(n),tM(e,r,n,t)}}var rM=eM();const Ss=rM;function nM(t,e,r,n,i){return i(t,function(s,a,o){r=n?(n=!1,s):e(r,s,a,o)}),r}function Bo(t,e,r){var n=nr(t)?qS:nM,i=arguments.length\u003C3;return n(t,Gi(e),r,i,iu)}var iM=Xc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&Co(t,e[0],e[1])?e=[]:r>2&&Co(e[0],e[1],e[2])&&(e=[e[0]]),XD(t,eu(e,1),[])});const Io=iM;var sM=1/0,aM=xa&&1/J1(new xa([,-0]))[1]==sM?function(t){return new xa(t)}:y9;const oM=aM;var lM=200;function cM(t,e,r){var n=-1,i=S9,s=t.length,a=!0,o=[],l=o;if(r)a=!1,i=SD;else if(s>=lM){var u=e?null:oM(t);if(u)return J1(u);a=!1,i=Ny,l=new Do}else l=e?[]:o;t:for(;++n\u003Cs;){var d=t[n],f=e?e(d):d;if(d=r||d!==0?d:0,a&&f===f){for(var p=l.length;p--;)if(l[p]===f)continue t;e&&l.push(f),o.push(d)}else i(l,f,r)||(l!==o&&l.push(f),o.push(d))}return o}var uM=Xc(function(t){return cM(eu(t,1,Gy,!0))});const hM=uM;var dM=0;function ou(t){var e=++dM;return iy(t)+e}function fM(t,e,r){for(var n=-1,i=t.length,s=e.length,a={};++n\u003Ci;){var o=n\u003Cs?e[n]:void 0;r(a,t[n],o)}return a}function pM(t,e){return fM(t||[],e||[],$c)}var gM=\\\"\\\\0\\\",As=\\\"\\\\0\\\",Ky=\\\"\\u0001\\\";class sr{constructor(e={}){this._isDirected=me(e,\\\"directed\\\")?e.directed:!0,this._isMultigraph=me(e,\\\"multigraph\\\")?e.multigraph:!1,this._isCompound=me(e,\\\"compound\\\")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=ga(void 0),this._defaultEdgeLabelFn=ga(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[As]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return aa(e)||(e=ga(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return jr(this._nodes)}sources(){var e=this;return pi(this.nodes(),function(r){return wa(e._in[r])})}sinks(){var e=this;return pi(this.nodes(),function(r){return wa(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return vt(e,function(s){n.length>1?i.setNode(s,r):i.setNode(s)}),this}setNode(e,r){return me(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=As,this._children[e]={},this._children[As][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return me(this._nodes,e)}removeNode(e){var r=this;if(me(this._nodes,e)){var n=function(i){r.removeEdge(r._edgeObjs[i])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],vt(this.children(e),function(i){r.setParent(i)}),delete this._children[e]),vt(jr(this._in[e]),n),delete this._in[e],delete this._preds[e],vt(jr(this._out[e]),n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error(\\\"Cannot set parent in a non-compound graph\\\");if(Ze(r))r=As;else{r+=\\\"\\\";for(var n=r;!Ze(n);n=this.parent(n))if(n===e)throw new Error(\\\"Setting \\\"+r+\\\" as parent of \\\"+e+\\\" would create a cycle\\\");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==As)return r}}children(e){if(Ze(e)&&(e=As),this._isCompound){var r=this._children[e];if(r)return jr(r)}else{if(e===As)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return jr(r)}successors(e){var r=this._sucs[e];if(r)return jr(r)}neighbors(e){var r=this.predecessors(e);if(r)return hM(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;vt(this._nodes,function(a,o){e(o)&&r.setNode(o,a)}),vt(this._edgeObjs,function(a){r.hasNode(a.v)&&r.hasNode(a.w)&&r.setEdge(a,n.edge(a))});var i={};function s(a){var o=n.parent(a);return o===void 0||r.hasNode(o)?(i[a]=o,o):o in i?i[o]:s(o)}return this._isCompound&&vt(r.nodes(),function(a){r.setParent(a,s(a))}),r}setDefaultEdgeLabel(e){return aa(e)||(e=ga(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return gi(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return Bo(e,function(s,a){return i.length>1?n.setEdge(s,a,r):n.setEdge(s,a),a}),this}setEdge(){var e,r,n,i,s=!1,a=arguments[0];typeof a==\\\"object\\\"&&a!==null&&\\\"v\\\"in a?(e=a.v,r=a.w,n=a.name,arguments.length===2&&(i=arguments[1],s=!0)):(e=a,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],s=!0)),e=\\\"\\\"+e,r=\\\"\\\"+r,Ze(n)||(n=\\\"\\\"+n);var o=Oo(this._isDirected,e,r,n);if(me(this._edgeLabels,o))return s&&(this._edgeLabels[o]=i),this;if(!Ze(n)&&!this._isMultigraph)throw new Error(\\\"Cannot set a named edge when isMultigraph = false\\\");this.setNode(e),this.setNode(r),this._edgeLabels[o]=s?i:this._defaultEdgeLabelFn(e,r,n);var l=yM(this._isDirected,e,r,n);return e=l.v,r=l.w,Object.freeze(l),this._edgeObjs[o]=l,Zy(this._preds[r],e),Zy(this._sucs[e],r),this._in[r][o]=l,this._out[e][o]=l,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?c0(this._isDirected,arguments[0]):Oo(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?c0(this._isDirected,arguments[0]):Oo(this._isDirected,e,r,n);return me(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?c0(this._isDirected,arguments[0]):Oo(this._isDirected,e,r,n),s=this._edgeObjs[i];return s&&(e=s.v,r=s.w,delete this._edgeLabels[i],delete this._edgeObjs[i],Qy(this._preds[r],e),Qy(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=gi(n);return r?pi(i,function(s){return s.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=gi(n);return r?pi(i,function(s){return s.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}}sr.prototype._nodeCount=0,sr.prototype._edgeCount=0;function Zy(t,e){t[e]?t[e]++:t[e]=1}function Qy(t,e){--t[e]||delete t[e]}function Oo(t,e,r,n){var i=\\\"\\\"+e,s=\\\"\\\"+r;if(!t&&i>s){var a=i;i=s,s=a}return i+Ky+s+Ky+(Ze(n)?gM:n)}function yM(t,e,r,n){var i=\\\"\\\"+e,s=\\\"\\\"+r;if(!t&&i>s){var a=i;i=s,s=a}var o={v:i,w:s};return n&&(o.name=n),o}function c0(t,e){return Oo(t,e.v,e.w,e.name)}class mM{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return Jy(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&Jy(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,bM)),n=n._prev;return\\\"[\\\"+e.join(\\\", \\\")+\\\"]\\\"}}function Jy(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function bM(t,e){if(t!==\\\"_next\\\"&&t!==\\\"_prev\\\")return e}var _M=ga(1);function xM(t,e){if(t.nodeCount()\u003C=1)return[];var r=kM(t,e||_M),n=vM(r.graph,r.buckets,r.zeroIdx);return _a(ir(n,function(i){return t.outEdges(i.v,i.w)}))}function vM(t,e,r){for(var n=[],i=e[e.length-1],s=e[0],a;t.nodeCount();){for(;a=s.dequeue();)u0(t,e,r,a);for(;a=i.dequeue();)u0(t,e,r,a);if(t.nodeCount()){for(var o=e.length-2;o>0;--o)if(a=e[o].dequeue(),a){n=n.concat(u0(t,e,r,a,!0));break}}}return n}function u0(t,e,r,n,i){var s=i?[]:void 0;return vt(t.inEdges(n.v),function(a){var o=t.edge(a),l=t.node(a.v);i&&s.push({v:a.v,w:a.w}),l.out-=o,h0(e,r,l)}),vt(t.outEdges(n.v),function(a){var o=t.edge(a),l=a.w,u=t.node(l);u.in-=o,h0(e,r,u)}),t.removeNode(n.v),s}function kM(t,e){var r=new sr,n=0,i=0;vt(t.nodes(),function(o){r.setNode(o,{v:o,in:0,out:0})}),vt(t.edges(),function(o){var l=r.edge(o.v,o.w)||0,u=e(o),d=l+u;r.setEdge(o.v,o.w,d),i=Math.max(i,r.node(o.v).out+=u),n=Math.max(n,r.node(o.w).in+=u)});var s=Ss(i+n+3).map(function(){return new mM}),a=n+1;return vt(r.nodes(),function(o){h0(s,a,r.node(o))}),{graph:r,buckets:s,zeroIdx:a}}function h0(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}function wM(t){var e=t.graph().acyclicer===\\\"greedy\\\"?xM(t,r(t)):TM(t);vt(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,ou(\\\"rev\\\"))});function r(n){return function(i){return n.edge(i).weight}}}function TM(t){var e=[],r={},n={};function i(s){me(n,s)||(n[s]=!0,r[s]=!0,vt(t.outEdges(s),function(a){me(r,a.w)?e.push(a):i(a.w)}),delete r[s])}return vt(t.nodes(),i),e}function EM(t){vt(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}function Ta(t,e,r,n){var i;do i=ou(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function CM(t){var e=new sr().setGraph(t.graph());return vt(t.nodes(),function(r){e.setNode(r,t.node(r))}),vt(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function tm(t){var e=new sr({multigraph:t.isMultigraph()}).setGraph(t.graph());return vt(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),vt(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function em(t,e){var r=t.x,n=t.y,i=e.x-r,s=e.y-n,a=t.width/2,o=t.height/2;if(!i&&!s)throw new Error(\\\"Not possible to find intersection inside of the rectangle\\\");var l,u;return Math.abs(s)*a>Math.abs(i)*o?(s\u003C0&&(o=-o),l=o*i/s,u=o):(i\u003C0&&(a=-a),l=a,u=a*s/i),{x:r+l,y:n+u}}function lu(t){var e=ir(Ss(nm(t)+1),function(){return[]});return vt(t.nodes(),function(r){var n=t.node(r),i=n.rank;Ze(i)||(e[i][n.order]=r)}),e}function SM(t){var e=Mo(ir(t.nodes(),function(r){return t.node(r).rank}));vt(t.nodes(),function(r){var n=t.node(r);me(n,\\\"rank\\\")&&(n.rank-=e)})}function AM(t){var e=Mo(ir(t.nodes(),function(s){return t.node(s).rank})),r=[];vt(t.nodes(),function(s){var a=t.node(s).rank-e;r[a]||(r[a]=[]),r[a].push(s)});var n=0,i=t.graph().nodeRankFactor;vt(r,function(s,a){Ze(s)&&a%i!==0?--n:n&&vt(s,function(o){t.node(o).rank+=n})})}function rm(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),Ta(t,\\\"border\\\",i,e)}function nm(t){return Cs(ir(t.nodes(),function(e){var r=t.node(e).rank;if(!Ze(r))return r}))}function LM(t,e){var r={lhs:[],rhs:[]};return vt(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function DM(t,e){var r=Wy();try{return e()}finally{console.log(t+\\\" time: \\\"+(Wy()-r)+\\\"ms\\\")}}function MM(t,e){return e()}function NM(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&vt(n,e),me(i,\\\"minRank\\\")){i.borderLeft=[],i.borderRight=[];for(var s=i.minRank,a=i.maxRank+1;s\u003Ca;++s)im(t,\\\"borderLeft\\\",\\\"_bl\\\",r,i,s),im(t,\\\"borderRight\\\",\\\"_br\\\",r,i,s)}}vt(t.children(),e)}function im(t,e,r,n,i,s){var a={width:0,height:0,rank:s,borderType:e},o=i[e][s-1],l=Ta(t,\\\"border\\\",a,r);i[e][s]=l,t.setParent(l,n),o&&t.setEdge(o,l,{weight:1})}function BM(t){var e=t.graph().rankdir.toLowerCase();(e===\\\"lr\\\"||e===\\\"rl\\\")&&sm(t)}function IM(t){var e=t.graph().rankdir.toLowerCase();(e===\\\"bt\\\"||e===\\\"rl\\\")&&OM(t),(e===\\\"lr\\\"||e===\\\"rl\\\")&&(RM(t),sm(t))}function sm(t){vt(t.nodes(),function(e){am(t.node(e))}),vt(t.edges(),function(e){am(t.edge(e))})}function am(t){var e=t.width;t.width=t.height,t.height=e}function OM(t){vt(t.nodes(),function(e){d0(t.node(e))}),vt(t.edges(),function(e){var r=t.edge(e);vt(r.points,d0),me(r,\\\"y\\\")&&d0(r)})}function d0(t){t.y=-t.y}function RM(t){vt(t.nodes(),function(e){f0(t.node(e))}),vt(t.edges(),function(e){var r=t.edge(e);vt(r.points,f0),me(r,\\\"x\\\")&&f0(r)})}function f0(t){var e=t.x;t.x=t.y,t.y=e}function FM(t){var e=Ta(t,\\\"root\\\",{},\\\"_root\\\"),r=PM(t),n=Cs(gi(r))-1,i=2*n+1;t.graph().nestingRoot=e,vt(t.edges(),function(a){t.edge(a).minlen*=i});var s=YM(t)+1;vt(t.children(),function(a){om(t,e,i,s,n,r,a)}),t.graph().nodeRankFactor=i}function om(t,e,r,n,i,s,a){var o=t.children(a);if(!o.length){a!==e&&t.setEdge(e,a,{weight:0,minlen:r});return}var l=rm(t,\\\"_bt\\\"),u=rm(t,\\\"_bb\\\"),d=t.node(a);t.setParent(l,a),d.borderTop=l,t.setParent(u,a),d.borderBottom=u,vt(o,function(f){om(t,e,r,n,i,s,f);var p=t.node(f),g=p.borderTop?p.borderTop:f,b=p.borderBottom?p.borderBottom:f,k=p.borderTop?n:2*n,T=g!==b?1:i-s[a]+1;t.setEdge(l,g,{weight:k,minlen:T,nestingEdge:!0}),t.setEdge(b,u,{weight:k,minlen:T,nestingEdge:!0})}),t.parent(a)||t.setEdge(e,l,{weight:0,minlen:i+s[a]})}function PM(t){var e={};function r(n,i){var s=t.children(n);s&&s.length&&vt(s,function(a){r(a,i+1)}),e[n]=i}return vt(t.children(),function(n){r(n,1)}),e}function YM(t){return Bo(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function VM(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,vt(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}function UM(t,e,r){var n={},i;vt(r,function(s){for(var a=t.parent(s),o,l;a;){if(o=t.parent(a),o?(l=n[o],n[o]=a):(l=i,i=a),l&&l!==a){e.setEdge(l,a);return}a=o}})}function zM(t,e,r){var n=WM(t),i=new sr({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(s){return t.node(s)});return vt(t.nodes(),function(s){var a=t.node(s),o=t.parent(s);(a.rank===e||a.minRank\u003C=e&&e\u003C=a.maxRank)&&(i.setNode(s),i.setParent(s,o||n),vt(t[r](s),function(l){var u=l.v===s?l.w:l.v,d=i.edge(u,s),f=Ze(d)?0:d.weight;i.setEdge(u,s,{weight:t.edge(l).weight+f})}),me(a,\\\"minRank\\\")&&i.setNode(s,{borderLeft:a.borderLeft[e],borderRight:a.borderRight[e]}))}),i}function WM(t){for(var e;t.hasNode(e=ou(\\\"_root\\\")););return e}function HM(t,e){for(var r=0,n=1;n\u003Ce.length;++n)r+=GM(t,e[n-1],e[n]);return r}function GM(t,e,r){for(var n=pM(r,ir(r,function(u,d){return d})),i=_a(ir(e,function(u){return Io(ir(t.outEdges(u),function(d){return{pos:n[d.w],weight:t.edge(d).weight}}),\\\"pos\\\")})),s=1;s\u003Cr.length;)s\u003C\u003C=1;var a=2*s-1;s-=1;var o=ir(new Array(a),function(){return 0}),l=0;return vt(i.forEach(function(u){var d=u.pos+s;o[d]+=u.weight;for(var f=0;d>0;)d%2&&(f+=o[d+1]),d=d-1>>1,o[d]+=u.weight;l+=u.weight*f})),l}function qM(t){var e={},r=pi(t.nodes(),function(o){return!t.children(o).length}),n=Cs(ir(r,function(o){return t.node(o).rank})),i=ir(Ss(n+1),function(){return[]});function s(o){if(!me(e,o)){e[o]=!0;var l=t.node(o);i[l.rank].push(o),vt(t.successors(o),s)}}var a=Io(r,function(o){return t.node(o).rank});return vt(a,s),i}function jM(t,e){return ir(e,function(r){var n=t.inEdges(r);if(n.length){var i=Bo(n,function(s,a){var o=t.edge(a),l=t.node(a.v);return{sum:s.sum+o.weight*l.order,weight:s.weight+o.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}function $M(t,e){var r={};vt(t,function(i,s){var a=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:s};Ze(i.barycenter)||(a.barycenter=i.barycenter,a.weight=i.weight)}),vt(e.edges(),function(i){var s=r[i.v],a=r[i.w];!Ze(s)&&!Ze(a)&&(a.indegree++,s.out.push(r[i.w]))});var n=pi(r,function(i){return!i.indegree});return XM(n)}function XM(t){var e=[];function r(s){return function(a){a.merged||(Ze(a.barycenter)||Ze(s.barycenter)||a.barycenter>=s.barycenter)&&KM(s,a)}}function n(s){return function(a){a.in.push(s),--a.indegree===0&&t.push(a)}}for(;t.length;){var i=t.pop();e.push(i),vt(i.in.reverse(),r(i)),vt(i.out,n(i))}return ir(pi(e,function(s){return!s.merged}),function(s){return No(s,[\\\"vs\\\",\\\"i\\\",\\\"barycenter\\\",\\\"weight\\\"])})}function KM(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}function ZM(t,e){var r=LM(t,function(d){return me(d,\\\"barycenter\\\")}),n=r.lhs,i=Io(r.rhs,function(d){return-d.i}),s=[],a=0,o=0,l=0;n.sort(QM(!!e)),l=lm(s,i,l),vt(n,function(d){l+=d.vs.length,s.push(d.vs),a+=d.barycenter*d.weight,o+=d.weight,l=lm(s,i,l)});var u={vs:_a(s)};return o&&(u.barycenter=a/o,u.weight=o),u}function lm(t,e,r){for(var n;e.length&&(n=su(e)).i\u003C=r;)e.pop(),t.push(n.vs),r++;return r}function QM(t){return function(e,r){return e.barycenter\u003Cr.barycenter?-1:e.barycenter>r.barycenter?1:t?r.i-e.i:e.i-r.i}}function cm(t,e,r,n){var i=t.children(e),s=t.node(e),a=s?s.borderLeft:void 0,o=s?s.borderRight:void 0,l={};a&&(i=pi(i,function(b){return b!==a&&b!==o}));var u=jM(t,i);vt(u,function(b){if(t.children(b.v).length){var k=cm(t,b.v,r,n);l[b.v]=k,me(k,\\\"barycenter\\\")&&tN(b,k)}});var d=$M(u,r);JM(d,l);var f=ZM(d,n);if(a&&(f.vs=_a([a,f.vs,o]),t.predecessors(a).length)){var p=t.node(t.predecessors(a)[0]),g=t.node(t.predecessors(o)[0]);me(f,\\\"barycenter\\\")||(f.barycenter=0,f.weight=0),f.barycenter=(f.barycenter*f.weight+p.order+g.order)/(f.weight+2),f.weight+=2}return f}function JM(t,e){vt(t,function(r){r.vs=_a(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function tN(t,e){Ze(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}function eN(t){var e=nm(t),r=um(t,Ss(1,e+1),\\\"inEdges\\\"),n=um(t,Ss(e-1,-1,-1),\\\"outEdges\\\"),i=qM(t);hm(t,i);for(var s=Number.POSITIVE_INFINITY,a,o=0,l=0;l\u003C4;++o,++l){rN(o%2?r:n,o%4>=2),i=lu(t);var u=HM(t,i);u\u003Cs&&(l=0,a=ML(i),s=u)}hm(t,a)}function um(t,e,r){return ir(e,function(n){return zM(t,n,r)})}function rN(t,e){var r=new sr;vt(t,function(n){var i=n.graph().root,s=cm(n,i,r,e);vt(s.vs,function(a,o){n.node(a).order=o}),UM(n,r,s.vs)})}function hm(t,e){vt(e,function(r){vt(r,function(n,i){t.node(n).order=i})})}function nN(t){var e=sN(t);vt(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,s=iN(t,e,i.v,i.w),a=s.path,o=s.lca,l=0,u=a[l],d=!0;r!==i.w;){if(n=t.node(r),d){for(;(u=a[l])!==o&&t.node(u).maxRank\u003Cn.rank;)l++;u===o&&(d=!1)}if(!d){for(;l\u003Ca.length-1&&t.node(u=a[l+1]).minRank\u003C=n.rank;)l++;u=a[l]}t.setParent(r,u),r=t.successors(r)[0]}})}function iN(t,e,r,n){var i=[],s=[],a=Math.min(e[r].low,e[n].low),o=Math.max(e[r].lim,e[n].lim),l,u;l=r;do l=t.parent(l),i.push(l);while(l&&(e[l].low>a||o>e[l].lim));for(u=l,l=n;(l=t.parent(l))!==u;)s.push(l);return{path:i.concat(s.reverse()),lca:u}}function sN(t){var e={},r=0;function n(i){var s=r;vt(t.children(i),n),e[i]={low:s,lim:r++}}return vt(t.children(),n),e}function aN(t,e){var r={};function n(i,s){var a=0,o=0,l=i.length,u=su(s);return vt(s,function(d,f){var p=lN(t,d),g=p?t.node(p).order:l;(p||d===u)&&(vt(s.slice(o,f+1),function(b){vt(t.predecessors(b),function(k){var T=t.node(k),L=T.order;(L\u003Ca||g\u003CL)&&!(T.dummy&&t.node(b).dummy)&&dm(r,k,b)})}),o=f+1,a=g)}),s}return Bo(e,n),r}function oN(t,e){var r={};function n(s,a,o,l,u){var d;vt(Ss(a,o),function(f){d=s[f],t.node(d).dummy&&vt(t.predecessors(d),function(p){var g=t.node(p);g.dummy&&(g.order\u003Cl||g.order>u)&&dm(r,p,d)})})}function i(s,a){var o=-1,l,u=0;return vt(a,function(d,f){if(t.node(d).dummy===\\\"border\\\"){var p=t.predecessors(d);p.length&&(l=t.node(p[0]).order,n(a,u,f,o,l),u=f,o=l)}n(a,u,a.length,l,s.length)}),a}return Bo(e,i),r}function lN(t,e){if(t.node(e).dummy)return s0(t.predecessors(e),function(r){return t.node(r).dummy})}function dm(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function cN(t,e,r){if(e>r){var n=e;e=r,r=n}return me(t[e],r)}function uN(t,e,r,n){var i={},s={},a={};return vt(e,function(o){vt(o,function(l,u){i[l]=l,s[l]=l,a[l]=u})}),vt(e,function(o){var l=-1;vt(o,function(u){var d=n(u);if(d.length){d=Io(d,function(k){return a[k]});for(var f=(d.length-1)/2,p=Math.floor(f),g=Math.ceil(f);p\u003C=g;++p){var b=d[p];s[u]===u&&l\u003Ca[b]&&!cN(r,u,b)&&(s[b]=u,s[u]=i[u]=i[b],l=a[b])}}})}),{root:i,align:s}}function hN(t,e,r,n,i){var s={},a=dN(t,e,r,i),o=i?\\\"borderLeft\\\":\\\"borderRight\\\";function l(f,p){for(var g=a.nodes(),b=g.pop(),k={};b;)k[b]?f(b):(k[b]=!0,g.push(b),g=g.concat(p(b))),b=g.pop()}function u(f){s[f]=a.inEdges(f).reduce(function(p,g){return Math.max(p,s[g.v]+a.edge(g))},0)}function d(f){var p=a.outEdges(f).reduce(function(b,k){return Math.min(b,s[k.w]-a.edge(k))},Number.POSITIVE_INFINITY),g=t.node(f);p!==Number.POSITIVE_INFINITY&&g.borderType!==o&&(s[f]=Math.max(s[f],p))}return l(u,a.predecessors.bind(a)),l(d,a.successors.bind(a)),vt(n,function(f){s[f]=s[r[f]]}),s}function dN(t,e,r,n){var i=new sr,s=t.graph(),a=mN(s.nodesep,s.edgesep,n);return vt(e,function(o){var l;vt(o,function(u){var d=r[u];if(i.setNode(d),l){var f=r[l],p=i.edge(f,d);i.setEdge(f,d,Math.max(a(t,u,l),p||0))}l=u})}),i}function fN(t,e){return l0(gi(e),function(r){var n=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;return BD(r,function(s,a){var o=bN(t,a)/2;n=Math.max(s+o,n),i=Math.min(s-o,i)}),n-i})}function pN(t,e){var r=gi(e),n=Mo(r),i=Cs(r);vt([\\\"u\\\",\\\"d\\\"],function(s){vt([\\\"l\\\",\\\"r\\\"],function(a){var o=s+a,l=t[o],u;if(l!==e){var d=gi(l);u=a===\\\"l\\\"?n-Mo(d):i-Cs(d),u&&(t[o]=au(l,function(f){return f+u}))}})})}function gN(t,e){return au(t.ul,function(r,n){if(e)return t[e.toLowerCase()][n];var i=Io(ir(t,n));return(i[1]+i[2])/2})}function yN(t){var e=lu(t),r=o0(aN(t,e),oN(t,e)),n={},i;vt([\\\"u\\\",\\\"d\\\"],function(a){i=a===\\\"u\\\"?e:gi(e).reverse(),vt([\\\"l\\\",\\\"r\\\"],function(o){o===\\\"r\\\"&&(i=ir(i,function(f){return gi(f).reverse()}));var l=(a===\\\"u\\\"?t.predecessors:t.successors).bind(t),u=uN(t,i,r,l),d=hN(t,i,u.root,u.align,o===\\\"r\\\");o===\\\"r\\\"&&(d=au(d,function(f){return-f})),n[a+o]=d})});var s=fN(t,n);return pN(n,s),gN(n,t.graph().align)}function mN(t,e,r){return function(n,i,s){var a=n.node(i),o=n.node(s),l=0,u;if(l+=a.width/2,me(a,\\\"labelpos\\\"))switch(a.labelpos.toLowerCase()){case\\\"l\\\":u=-a.width/2;break;case\\\"r\\\":u=a.width/2;break}if(u&&(l+=r?u:-u),u=0,l+=(a.dummy?e:t)/2,l+=(o.dummy?e:t)/2,l+=o.width/2,me(o,\\\"labelpos\\\"))switch(o.labelpos.toLowerCase()){case\\\"l\\\":u=o.width/2;break;case\\\"r\\\":u=-o.width/2;break}return u&&(l+=r?u:-u),u=0,l}}function bN(t,e){return t.node(e).width}function _N(t){t=tm(t),xN(t),vt(yN(t),function(e,r){t.node(r).x=e})}function xN(t){var e=lu(t),r=t.graph().ranksep,n=0;vt(e,function(i){var s=Cs(ir(i,function(a){return t.node(a).height}));vt(i,function(a){t.node(a).y=n+s/2}),n+=s+r})}function Ea(t,e){var r=e&&e.debugTiming?DM:MM;r(\\\"layout\\\",function(){var n=r(\\\" buildLayoutGraph\\\",function(){return MN(t)});r(\\\" runLayout\\\",function(){vN(n,r)}),r(\\\" updateInputGraph\\\",function(){kN(t,n)})})}function vN(t,e){e(\\\" makeSpaceForEdgeLabels\\\",function(){NN(t)}),e(\\\" removeSelfEdges\\\",function(){UN(t)}),e(\\\" acyclic\\\",function(){wM(t)}),e(\\\" nestingGraph.run\\\",function(){FM(t)}),e(\\\" rank\\\",function(){rB(tm(t))}),e(\\\" injectEdgeLabelProxies\\\",function(){BN(t)}),e(\\\" removeEmptyRanks\\\",function(){AM(t)}),e(\\\" nestingGraph.cleanup\\\",function(){VM(t)}),e(\\\" normalizeRanks\\\",function(){SM(t)}),e(\\\" assignRankMinMax\\\",function(){IN(t)}),e(\\\" removeEdgeLabelProxies\\\",function(){ON(t)}),e(\\\" normalize.run\\\",function(){HN(t)}),e(\\\" parentDummyChains\\\",function(){nN(t)}),e(\\\" addBorderSegments\\\",function(){NM(t)}),e(\\\" order\\\",function(){eN(t)}),e(\\\" insertSelfEdges\\\",function(){zN(t)}),e(\\\" adjustCoordinateSystem\\\",function(){BM(t)}),e(\\\" position\\\",function(){_N(t)}),e(\\\" positionSelfEdges\\\",function(){WN(t)}),e(\\\" removeBorderNodes\\\",function(){VN(t)}),e(\\\" normalize.undo\\\",function(){qN(t)}),e(\\\" fixupEdgeLabelCoords\\\",function(){PN(t)}),e(\\\" undoCoordinateSystem\\\",function(){IM(t)}),e(\\\" translateGraph\\\",function(){RN(t)}),e(\\\" assignNodeIntersects\\\",function(){FN(t)}),e(\\\" reversePoints\\\",function(){YN(t)}),e(\\\" acyclic.undo\\\",function(){EM(t)})}function kN(t,e){vt(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),vt(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,me(i,\\\"x\\\")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}var wN=[\\\"nodesep\\\",\\\"edgesep\\\",\\\"ranksep\\\",\\\"marginx\\\",\\\"marginy\\\"],TN={ranksep:50,edgesep:20,nodesep:50,rankdir:\\\"tb\\\"},EN=[\\\"acyclicer\\\",\\\"ranker\\\",\\\"rankdir\\\",\\\"align\\\"],CN=[\\\"width\\\",\\\"height\\\"],SN={width:0,height:0},AN=[\\\"minlen\\\",\\\"weight\\\",\\\"width\\\",\\\"height\\\",\\\"labeloffset\\\"],LN={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\\\"r\\\"},DN=[\\\"labelpos\\\"];function MN(t){var e=new sr({multigraph:!0,compound:!0}),r=g0(t.graph());return e.setGraph(o0({},TN,p0(r,wN),No(r,EN))),vt(t.nodes(),function(n){var i=g0(t.node(n));e.setNode(n,ka(p0(i,CN),SN)),e.setParent(n,t.parent(n))}),vt(t.edges(),function(n){var i=g0(t.edge(n));e.setEdge(n,o0({},LN,p0(i,AN),No(i,DN)))}),e}function NN(t){var e=t.graph();e.ranksep/=2,vt(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!==\\\"c\\\"&&(e.rankdir===\\\"TB\\\"||e.rankdir===\\\"BT\\\"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function BN(t){vt(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),s={rank:(i.rank-n.rank)/2+n.rank,e};Ta(t,\\\"edge-proxy\\\",s,\\\"_ep\\\")}})}function IN(t){var e=0;vt(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Cs(e,n.maxRank))}),t.graph().maxRank=e}function ON(t){vt(t.nodes(),function(e){var r=t.node(e);r.dummy===\\\"edge-proxy\\\"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function RN(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,s=t.graph(),a=s.marginx||0,o=s.marginy||0;function l(u){var d=u.x,f=u.y,p=u.width,g=u.height;e=Math.min(e,d-p/2),r=Math.max(r,d+p/2),n=Math.min(n,f-g/2),i=Math.max(i,f+g/2)}vt(t.nodes(),function(u){l(t.node(u))}),vt(t.edges(),function(u){var d=t.edge(u);me(d,\\\"x\\\")&&l(d)}),e-=a,n-=o,vt(t.nodes(),function(u){var d=t.node(u);d.x-=e,d.y-=n}),vt(t.edges(),function(u){var d=t.edge(u);vt(d.points,function(f){f.x-=e,f.y-=n}),me(d,\\\"x\\\")&&(d.x-=e),me(d,\\\"y\\\")&&(d.y-=n)}),s.width=r-e+a,s.height=i-n+o}function FN(t){vt(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),s,a;r.points?(s=r.points[0],a=r.points[r.points.length-1]):(r.points=[],s=i,a=n),r.points.unshift(em(n,s)),r.points.push(em(i,a))})}function PN(t){vt(t.edges(),function(e){var r=t.edge(e);if(me(r,\\\"x\\\"))switch((r.labelpos===\\\"l\\\"||r.labelpos===\\\"r\\\")&&(r.width-=r.labeloffset),r.labelpos){case\\\"l\\\":r.x-=r.width/2+r.labeloffset;break;case\\\"r\\\":r.x+=r.width/2+r.labeloffset;break}})}function YN(t){vt(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function VN(t){vt(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),s=t.node(su(r.borderLeft)),a=t.node(su(r.borderRight));r.width=Math.abs(a.x-s.x),r.height=Math.abs(i.y-n.y),r.x=s.x+r.width/2,r.y=n.y+r.height/2}}),vt(t.nodes(),function(e){t.node(e).dummy===\\\"border\\\"&&t.removeNode(e)})}function UN(t){vt(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function zN(t){var e=lu(t);vt(e,function(r){var n=0;vt(r,function(i,s){var a=t.node(i);a.order=s+n,vt(a.selfEdges,function(o){Ta(t,\\\"selfedge\\\",{width:o.label.width,height:o.label.height,rank:a.rank,order:s+ ++n,e:o.e,label:o.label},\\\"_se\\\")}),delete a.selfEdges})})}function WN(t){vt(t.nodes(),function(e){var r=t.node(e);if(r.dummy===\\\"selfedge\\\"){var n=t.node(r.e.v),i=n.x+n.width/2,s=n.y,a=r.x-i,o=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*a/3,y:s-o},{x:i+5*a/6,y:s-o},{x:i+a,y:s},{x:i+5*a/6,y:s+o},{x:i+2*a/3,y:s+o}],r.label.x=r.x,r.label.y=r.y}})}function p0(t,e){return au(No(t,e),Number)}function g0(t){var e={};return vt(t,function(r,n){e[n.toLowerCase()]=r}),e}function HN(t){t.graph().dummyChains=[],vt(t.edges(),function(e){GN(t,e)})}function GN(t,e){var r=e.v,n=t.node(r).rank,i=e.w,s=t.node(i).rank,a=e.name,o=t.edge(e),l=o.labelRank;if(s!==n+1){t.removeEdge(e);var u,d,f;for(f=0,++n;n\u003Cs;++f,++n)o.points=[],d={width:0,height:0,edgeLabel:o,edgeObj:e,rank:n},u=Ta(t,\\\"edge\\\",d,\\\"_d\\\"),n===l&&(d.width=o.width,d.height=o.height,d.dummy=\\\"edge-label\\\",d.labelpos=o.labelpos),t.setEdge(r,u,{weight:o.weight},a),f===0&&t.graph().dummyChains.push(u),r=u;t.setEdge(r,i,{weight:o.weight},a)}}function qN(t){vt(t.graph().dummyChains,function(e){var r=t.node(e),n=r.edgeLabel,i;for(t.setEdge(r.edgeObj,n);r.dummy;)i=t.successors(e)[0],t.removeNode(e),n.points.push({x:r.x,y:r.y}),r.dummy===\\\"edge-label\\\"&&(n.x=r.x,n.y=r.y,n.width=r.width,n.height=r.height),e=i,r=t.node(e)})}function y0(t){var e={};function r(n){var i=t.node(n);if(me(e,n))return i.rank;e[n]=!0;var s=Mo(ir(t.outEdges(n),function(a){return r(a.w)-t.edge(a).minlen}));return(s===Number.POSITIVE_INFINITY||s===void 0||s===null)&&(s=0),i.rank=s}vt(t.sources(),r)}function Ro(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}function fm(t){var e=new sr({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,s;jN(e,t)\u003Cn;)i=$N(e,t),s=e.hasNode(i.v)?Ro(t,i):-Ro(t,i),XN(e,t,s);return e}function jN(t,e){function r(n){vt(e.nodeEdges(n),function(i){var s=i.v,a=n===s?i.w:s;!t.hasNode(a)&&!Ro(e,i)&&(t.setNode(a,{}),t.setEdge(n,a,{}),r(a))})}return vt(t.nodes(),r),t.nodeCount()}function $N(t,e){return l0(e.edges(),function(r){if(t.hasNode(r.v)!==t.hasNode(r.w))return Ro(e,r)})}function XN(t,e,r){vt(t.nodes(),function(n){e.node(n).rank+=r})}function KN(){}KN.prototype=new Error;function pm(t,e,r){nr(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],s={};return vt(e,function(a){if(!t.hasNode(a))throw new Error(\\\"Graph does not have node: \\\"+a);gm(t,a,r===\\\"post\\\",s,n,i)}),i}function gm(t,e,r,n,i,s){me(n,e)||(n[e]=!0,r||s.push(e),vt(i(e),function(a){gm(t,a,r,n,i,s)}),r&&s.push(e))}function ZN(t,e){return pm(t,e,\\\"post\\\")}function QN(t,e){return pm(t,e,\\\"pre\\\")}Ls.initLowLimValues=b0,Ls.initCutValues=m0,Ls.calcCutValue=ym,Ls.leaveEdge=bm,Ls.enterEdge=_m,Ls.exchangeEdges=xm;function Ls(t){t=CM(t),y0(t);var e=fm(t);b0(e),m0(e,t);for(var r,n;r=bm(e);)n=_m(e,t,r),xm(e,t,r,n)}function m0(t,e){var r=ZN(t,t.nodes());r=r.slice(0,r.length-1),vt(r,function(n){JN(t,e,n)})}function JN(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=ym(t,e,r)}function ym(t,e,r){var n=t.node(r),i=n.parent,s=!0,a=e.edge(r,i),o=0;return a||(s=!1,a=e.edge(i,r)),o=a.weight,vt(e.nodeEdges(r),function(l){var u=l.v===r,d=u?l.w:l.v;if(d!==i){var f=u===s,p=e.edge(l).weight;if(o+=f?p:-p,eB(t,r,d)){var g=t.edge(r,d).cutvalue;o+=f?-g:g}}}),o}function b0(t,e){arguments.length\u003C2&&(e=t.nodes()[0]),mm(t,{},1,e)}function mm(t,e,r,n,i){var s=r,a=t.node(n);return e[n]=!0,vt(t.neighbors(n),function(o){me(e,o)||(r=mm(t,e,r,o,n))}),a.low=s,a.lim=r++,i?a.parent=i:delete a.parent,r}function bm(t){return s0(t.edges(),function(e){return t.edge(e).cutvalue\u003C0})}function _m(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var s=t.node(n),a=t.node(i),o=s,l=!1;s.lim>a.lim&&(o=a,l=!0);var u=pi(e.edges(),function(d){return l===vm(t,t.node(d.v),o)&&l!==vm(t,t.node(d.w),o)});return l0(u,function(d){return Ro(e,d)})}function xm(t,e,r,n){var i=r.v,s=r.w;t.removeEdge(i,s),t.setEdge(n.v,n.w,{}),b0(t),m0(t,e),tB(t,e)}function tB(t,e){var r=s0(t.nodes(),function(i){return!e.node(i).parent}),n=QN(t,r);n=n.slice(1),vt(n,function(i){var s=t.node(i).parent,a=e.edge(i,s),o=!1;a||(a=e.edge(s,i),o=!0),e.node(i).rank=e.node(s).rank+(o?a.minlen:-a.minlen)})}function eB(t,e,r){return t.hasEdge(e,r)}function vm(t,e,r){return r.low\u003C=e.lim&&e.lim\u003C=r.lim}function rB(t){switch(t.graph().ranker){case\\\"network-simplex\\\":km(t);break;case\\\"tight-tree\\\":iB(t);break;case\\\"longest-path\\\":nB(t);break;default:km(t)}}var nB=y0;function iB(t){y0(t),fm(t)}function km(t){Ls(t)}let wm=0;const sB=function(t,e,r,n,i){const s=function(E){switch(E){case i.db.relationType.AGGREGATION:return\\\"aggregation\\\";case i.db.relationType.EXTENSION:return\\\"extension\\\";case i.db.relationType.COMPOSITION:return\\\"composition\\\";case i.db.relationType.DEPENDENCY:return\\\"dependency\\\";case i.db.relationType.LOLLIPOP:return\\\"lollipop\\\"}};e.points=e.points.filter(E=>!Number.isNaN(E.y));const a=e.points,o=Js().x(function(E){return E.x}).y(function(E){return E.y}).curve(ta),l=t.append(\\\"path\\\").attr(\\\"d\\\",o(a)).attr(\\\"id\\\",\\\"edge\\\"+wm).attr(\\\"class\\\",\\\"relation\\\");let u=\\\"\\\";n.arrowMarkerAbsolute&&(u=window.location.protocol+\\\"//\\\"+window.location.host+window.location.pathname+window.location.search,u=u.replace(/\\\\(/g,\\\"\\\\\\\\(\\\"),u=u.replace(/\\\\)/g,\\\"\\\\\\\\)\\\")),r.relation.lineType==1&&l.attr(\\\"class\\\",\\\"relation dashed-line\\\"),r.relation.lineType==10&&l.attr(\\\"class\\\",\\\"relation dotted-line\\\"),r.relation.type1!==\\\"none\\\"&&l.attr(\\\"marker-start\\\",\\\"url(\\\"+u+\\\"#\\\"+s(r.relation.type1)+\\\"Start)\\\"),r.relation.type2!==\\\"none\\\"&&l.attr(\\\"marker-end\\\",\\\"url(\\\"+u+\\\"#\\\"+s(r.relation.type2)+\\\"End)\\\");let d,f;const p=e.points.length;let g=ge.calcLabelPosition(e.points);d=g.x,f=g.y;let b,k,T,L;if(p%2!==0&&p>1){let E=ge.calcCardinalityPosition(r.relation.type1!==\\\"none\\\",e.points,e.points[0]),I=ge.calcCardinalityPosition(r.relation.type2!==\\\"none\\\",e.points,e.points[p-1]);B.debug(\\\"cardinality_1_point \\\"+JSON.stringify(E)),B.debug(\\\"cardinality_2_point \\\"+JSON.stringify(I)),b=E.x,k=E.y,T=I.x,L=I.y}if(r.title!==void 0){const E=t.append(\\\"g\\\").attr(\\\"class\\\",\\\"classLabel\\\"),I=E.append(\\\"text\\\").attr(\\\"class\\\",\\\"label\\\").attr(\\\"x\\\",d).attr(\\\"y\\\",f).attr(\\\"fill\\\",\\\"red\\\").attr(\\\"text-anchor\\\",\\\"middle\\\").text(r.title);window.label=I;const V=I.node().getBBox();E.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"class\\\",\\\"box\\\").attr(\\\"x\\\",V.x-n.padding/2).attr(\\\"y\\\",V.y-n.padding/2).attr(\\\"width\\\",V.width+n.padding).attr(\\\"height\\\",V.height+n.padding)}B.info(\\\"Rendering relation \\\"+JSON.stringify(r)),r.relationTitle1!==void 0&&r.relationTitle1!==\\\"none\\\"&&t.append(\\\"g\\\").attr(\\\"class\\\",\\\"cardinality\\\").append(\\\"text\\\").attr(\\\"class\\\",\\\"type1\\\").attr(\\\"x\\\",b).attr(\\\"y\\\",k).attr(\\\"fill\\\",\\\"black\\\").attr(\\\"font-size\\\",\\\"6\\\").text(r.relationTitle1),r.relationTitle2!==void 0&&r.relationTitle2!==\\\"none\\\"&&t.append(\\\"g\\\").attr(\\\"class\\\",\\\"cardinality\\\").append(\\\"text\\\").attr(\\\"class\\\",\\\"type2\\\").attr(\\\"x\\\",T).attr(\\\"y\\\",L).attr(\\\"fill\\\",\\\"black\\\").attr(\\\"font-size\\\",\\\"6\\\").text(r.relationTitle2),wm++},aB=function(t,e,r,n){B.debug(\\\"Rendering class \\\",e,r);const i=e.id,s={id:i,label:e.id,width:0,height:0},a=t.append(\\\"g\\\").attr(\\\"id\\\",n.db.lookUpDomId(i)).attr(\\\"class\\\",\\\"classGroup\\\");let o;e.link?o=a.append(\\\"svg:a\\\").attr(\\\"xlink:href\\\",e.link).attr(\\\"target\\\",e.linkTarget).append(\\\"text\\\").attr(\\\"y\\\",r.textHeight+r.padding).attr(\\\"x\\\",0):o=a.append(\\\"text\\\").attr(\\\"y\\\",r.textHeight+r.padding).attr(\\\"x\\\",0);let l=!0;e.annotations.forEach(function(H){const G=o.append(\\\"tspan\\\").text(\\\"\\\\xAB\\\"+H+\\\"\\\\xBB\\\");l||G.attr(\\\"dy\\\",r.textHeight),l=!1});let u=e.id;e.type!==void 0&&e.type!==\\\"\\\"&&(u+=\\\"\u003C\\\"+e.type+\\\">\\\");const d=o.append(\\\"tspan\\\").text(u).attr(\\\"class\\\",\\\"title\\\");l||d.attr(\\\"dy\\\",r.textHeight);const f=o.node().getBBox().height,p=a.append(\\\"line\\\").attr(\\\"x1\\\",0).attr(\\\"y1\\\",r.padding+f+r.dividerMargin/2).attr(\\\"y2\\\",r.padding+f+r.dividerMargin/2),g=a.append(\\\"text\\\").attr(\\\"x\\\",r.padding).attr(\\\"y\\\",f+r.dividerMargin+r.textHeight).attr(\\\"fill\\\",\\\"white\\\").attr(\\\"class\\\",\\\"classText\\\");l=!0,e.members.forEach(function(H){Tm(g,H,l,r),l=!1});const b=g.node().getBBox(),k=a.append(\\\"line\\\").attr(\\\"x1\\\",0).attr(\\\"y1\\\",r.padding+f+r.dividerMargin+b.height).attr(\\\"y2\\\",r.padding+f+r.dividerMargin+b.height),T=a.append(\\\"text\\\").attr(\\\"x\\\",r.padding).attr(\\\"y\\\",f+2*r.dividerMargin+b.height+r.textHeight).attr(\\\"fill\\\",\\\"white\\\").attr(\\\"class\\\",\\\"classText\\\");l=!0,e.methods.forEach(function(H){Tm(T,H,l,r),l=!1});const L=a.node().getBBox();var E=\\\" \\\";e.cssClasses.length>0&&(E=E+e.cssClasses.join(\\\" \\\"));const V=a.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"x\\\",0).attr(\\\"y\\\",0).attr(\\\"width\\\",L.width+2*r.padding).attr(\\\"height\\\",L.height+r.padding+.5*r.dividerMargin).attr(\\\"class\\\",E).node().getBBox().width;return o.node().childNodes.forEach(function(H){H.setAttribute(\\\"x\\\",(V-H.getBBox().width)/2)}),e.tooltip&&o.insert(\\\"title\\\").text(e.tooltip),p.attr(\\\"x2\\\",V),k.attr(\\\"x2\\\",V),s.width=V,s.height=L.height+r.padding+.5*r.dividerMargin,s},oB=function(t,e,r,n){B.debug(\\\"Rendering note \\\",e,r);const i=e.id,s={id:i,text:e.text,width:0,height:0},a=t.append(\\\"g\\\").attr(\\\"id\\\",i).attr(\\\"class\\\",\\\"classGroup\\\");let o=a.append(\\\"text\\\").attr(\\\"y\\\",r.textHeight+r.padding).attr(\\\"x\\\",0);const l=JSON.parse(`\\\"${e.text}\\\"`).split(`\\n`);l.forEach(function(p){B.debug(`Adding line: ${p}`),o.append(\\\"tspan\\\").text(p).attr(\\\"class\\\",\\\"title\\\").attr(\\\"dy\\\",r.textHeight)});const u=a.node().getBBox(),f=a.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"x\\\",0).attr(\\\"y\\\",0).attr(\\\"width\\\",u.width+2*r.padding).attr(\\\"height\\\",u.height+l.length*r.textHeight+r.padding+.5*r.dividerMargin).node().getBBox().width;return o.node().childNodes.forEach(function(p){p.setAttribute(\\\"x\\\",(f-p.getBBox().width)/2)}),s.width=f,s.height=u.height+l.length*r.textHeight+r.padding+.5*r.dividerMargin,s},cu=function(t){const e=/^([#+~-])?(\\\\w+)(~\\\\w+~|\\\\[])?\\\\s+(\\\\w+) *([$*])?$/,r=/^([#+|~-])?(\\\\w+) *\\\\( *(.*)\\\\) *([$*])? *(\\\\w*[[\\\\]|~]*\\\\s*\\\\w*~?)$/;let n=t.match(e),i=t.match(r);return n&&!i?lB(n):i?cB(i):uB(t)},lB=function(t){let e=\\\"\\\",r=\\\"\\\";try{let n=t[1]?t[1].trim():\\\"\\\",i=t[2]?t[2].trim():\\\"\\\",s=t[3]?Oi(t[3].trim()):\\\"\\\",a=t[4]?t[4].trim():\\\"\\\",o=t[5]?t[5].trim():\\\"\\\";r=n+i+s+\\\" \\\"+a,e=_0(o)}catch{r=t}return{displayText:r,cssStyle:e}},cB=function(t){let e=\\\"\\\",r=\\\"\\\";try{let n=t[1]?t[1].trim():\\\"\\\",i=t[2]?t[2].trim():\\\"\\\",s=t[3]?Oi(t[3].trim()):\\\"\\\",a=t[4]?t[4].trim():\\\"\\\",o=t[5]?\\\" : \\\"+Oi(t[5]).trim():\\\"\\\";r=n+i+\\\"(\\\"+s+\\\")\\\"+o,e=_0(a)}catch{r=t}return{displayText:r,cssStyle:e}},uB=function(t){let e=\\\"\\\",r=\\\"\\\",n=\\\"\\\",i=t.indexOf(\\\"(\\\"),s=t.indexOf(\\\")\\\");if(i>1&&s>i&&s\u003C=t.length){let a=\\\"\\\",o=\\\"\\\",l=t.substring(0,1);l.match(/\\\\w/)?o=t.substring(0,i).trim():(l.match(/[#+~-]/)&&(a=l),o=t.substring(1,i).trim());const u=t.substring(i+1,s);t.substring(s+1,1),r=_0(t.substring(s+1,s+2)),e=a+o+\\\"(\\\"+Oi(u.trim())+\\\")\\\",s\u003Ct.length&&(n=t.substring(s+2).trim(),n!==\\\"\\\"&&(n=\\\" : \\\"+Oi(n),e+=n))}else e=Oi(t);return{displayText:e,cssStyle:r}},Tm=function(t,e,r,n){let i=cu(e);const s=t.append(\\\"tspan\\\").attr(\\\"x\\\",n.padding).text(i.displayText);i.cssStyle!==\\\"\\\"&&s.attr(\\\"style\\\",i.cssStyle),r||s.attr(\\\"dy\\\",n.textHeight)},_0=function(t){switch(t){case\\\"*\\\":return\\\"font-style:italic;\\\";case\\\"$\\\":return\\\"text-decoration:underline;\\\";default:return\\\"\\\"}},x0={drawClass:aB,drawEdge:sB,drawNote:oB,parseMember:cu};let uu={};const hu=20,Fo=function(t){const e=Object.entries(uu).find(r=>r[1].label===t);if(e)return e[0]},hB=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"extensionStart\\\").attr(\\\"class\\\",\\\"extension\\\").attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 1,7 L18,13 V 1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"extensionEnd\\\").attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 1,1 V 13 L18,7 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"compositionStart\\\").attr(\\\"class\\\",\\\"extension\\\").attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"compositionEnd\\\").attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"aggregationStart\\\").attr(\\\"class\\\",\\\"extension\\\").attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"aggregationEnd\\\").attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"dependencyStart\\\").attr(\\\"class\\\",\\\"extension\\\").attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 5,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"dependencyEnd\\\").attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L14,7 L9,1 Z\\\")},dB={draw:function(t,e,r,n){const i=$().class;uu={},B.info(\\\"Rendering diagram \\\"+t);const s=$().securityLevel;let a;s===\\\"sandbox\\\"&&(a=St(\\\"#i\\\"+e));const o=St(s===\\\"sandbox\\\"?a.nodes()[0].contentDocument.body:\\\"body\\\"),l=o.select(`[id='${e}']`);hB(l);const u=new sr({multigraph:!0});u.setGraph({isMultiGraph:!0}),u.setDefaultEdgeLabel(function(){return{}});const d=n.db.getClasses(),f=Object.keys(d);for(const E of f){const I=d[E],V=x0.drawClass(l,I,i,n);uu[V.id]=V,u.setNode(V.id,V),B.info(\\\"Org height: \\\"+V.height)}n.db.getRelations().forEach(function(E){B.info(\\\"tjoho\\\"+Fo(E.id1)+Fo(E.id2)+JSON.stringify(E)),u.setEdge(Fo(E.id1),Fo(E.id2),{relation:E},E.title||\\\"DEFAULT\\\")}),n.db.getNotes().forEach(function(E){B.debug(`Adding note: ${JSON.stringify(E)}`);const I=x0.drawNote(l,E,i,n);uu[I.id]=I,u.setNode(I.id,I),E.class&&E.class in d&&u.setEdge(E.id,Fo(E.class),{relation:{id1:E.id,id2:E.class,relation:{type1:\\\"none\\\",type2:\\\"none\\\",lineType:10}}},\\\"DEFAULT\\\")}),Ea(u),u.nodes().forEach(function(E){E!==void 0&&u.node(E)!==void 0&&(B.debug(\\\"Node \\\"+E+\\\": \\\"+JSON.stringify(u.node(E))),o.select(\\\"#\\\"+(n.db.lookUpDomId(E)||E)).attr(\\\"transform\\\",\\\"translate(\\\"+(u.node(E).x-u.node(E).width/2)+\\\",\\\"+(u.node(E).y-u.node(E).height/2)+\\\" )\\\"))}),u.edges().forEach(function(E){E!==void 0&&u.edge(E)!==void 0&&(B.debug(\\\"Edge \\\"+E.v+\\\" -> \\\"+E.w+\\\": \\\"+JSON.stringify(u.edge(E))),x0.drawEdge(l,u.edge(E),u.edge(E).relation,i,n))});const b=l.node().getBBox(),k=b.width+hu*2,T=b.height+hu*2;xn(l,T,k,i.useMaxWidth);const L=`${b.x-hu} ${b.y-hu} ${k} ${T}`;B.debug(`viewBox ${L}`),l.attr(\\\"viewBox\\\",L)}};function yi(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:fB(t),edges:pB(t)};return Ze(t.graph())||(e.value=AL(t.graph())),e}function fB(t){return ir(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return Ze(r)||(i.value=r),Ze(n)||(i.parent=n),i})}function pB(t){return ir(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return Ze(e.name)||(n.name=e.name),Ze(r)||(n.value=r),n})}const gB=(t,e,r,n)=>{e.forEach(i=>{yB[i](t,r,n)})},yB={extension:(t,e,r)=>{B.trace(\\\"Making markers for \\\",r),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-extensionStart\\\").attr(\\\"class\\\",\\\"marker extension \\\"+e).attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 1,7 L18,13 V 1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-extensionEnd\\\").attr(\\\"class\\\",\\\"marker extension \\\"+e).attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 1,1 V 13 L18,7 Z\\\")},composition:(t,e)=>{t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-compositionStart\\\").attr(\\\"class\\\",\\\"marker composition \\\"+e).attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-compositionEnd\\\").attr(\\\"class\\\",\\\"marker composition \\\"+e).attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\")},aggregation:(t,e)=>{t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-aggregationStart\\\").attr(\\\"class\\\",\\\"marker aggregation \\\"+e).attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-aggregationEnd\\\").attr(\\\"class\\\",\\\"marker aggregation \\\"+e).attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L1,7 L9,1 Z\\\")},dependency:(t,e)=>{t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-dependencyStart\\\").attr(\\\"class\\\",\\\"marker dependency \\\"+e).attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 5,7 L9,13 L1,7 L9,1 Z\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-dependencyEnd\\\").attr(\\\"class\\\",\\\"marker dependency \\\"+e).attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L14,7 L9,1 Z\\\")},lollipop:(t,e)=>{t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-lollipopStart\\\").attr(\\\"class\\\",\\\"marker lollipop \\\"+e).attr(\\\"refX\\\",0).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",190).attr(\\\"markerHeight\\\",240).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"circle\\\").attr(\\\"stroke\\\",\\\"black\\\").attr(\\\"fill\\\",\\\"white\\\").attr(\\\"cx\\\",6).attr(\\\"cy\\\",7).attr(\\\"r\\\",6)},point:(t,e)=>{t.append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-pointEnd\\\").attr(\\\"class\\\",\\\"marker \\\"+e).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",10).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",12).attr(\\\"markerHeight\\\",12).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 0 L 10 5 L 0 10 z\\\").attr(\\\"class\\\",\\\"arrowMarkerPath\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\"),t.append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-pointStart\\\").attr(\\\"class\\\",\\\"marker \\\"+e).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",0).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",12).attr(\\\"markerHeight\\\",12).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 5 L 10 10 L 10 0 z\\\").attr(\\\"class\\\",\\\"arrowMarkerPath\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\")},circle:(t,e)=>{t.append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-circleEnd\\\").attr(\\\"class\\\",\\\"marker \\\"+e).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",11).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",11).attr(\\\"markerHeight\\\",11).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"circle\\\").attr(\\\"cx\\\",\\\"5\\\").attr(\\\"cy\\\",\\\"5\\\").attr(\\\"r\\\",\\\"5\\\").attr(\\\"class\\\",\\\"arrowMarkerPath\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\"),t.append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-circleStart\\\").attr(\\\"class\\\",\\\"marker \\\"+e).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",-1).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",11).attr(\\\"markerHeight\\\",11).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"circle\\\").attr(\\\"cx\\\",\\\"5\\\").attr(\\\"cy\\\",\\\"5\\\").attr(\\\"r\\\",\\\"5\\\").attr(\\\"class\\\",\\\"arrowMarkerPath\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\")},cross:(t,e)=>{t.append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-crossEnd\\\").attr(\\\"class\\\",\\\"marker cross \\\"+e).attr(\\\"viewBox\\\",\\\"0 0 11 11\\\").attr(\\\"refX\\\",12).attr(\\\"refY\\\",5.2).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",11).attr(\\\"markerHeight\\\",11).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 1,1 l 9,9 M 10,1 l -9,9\\\").attr(\\\"class\\\",\\\"arrowMarkerPath\\\").style(\\\"stroke-width\\\",2).style(\\\"stroke-dasharray\\\",\\\"1,0\\\"),t.append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-crossStart\\\").attr(\\\"class\\\",\\\"marker cross \\\"+e).attr(\\\"viewBox\\\",\\\"0 0 11 11\\\").attr(\\\"refX\\\",-1).attr(\\\"refY\\\",5.2).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",11).attr(\\\"markerHeight\\\",11).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 1,1 l 9,9 M 10,1 l -9,9\\\").attr(\\\"class\\\",\\\"arrowMarkerPath\\\").style(\\\"stroke-width\\\",2).style(\\\"stroke-dasharray\\\",\\\"1,0\\\")},barb:(t,e)=>{t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",e+\\\"-barbEnd\\\").attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",14).attr(\\\"markerUnits\\\",\\\"strokeWidth\\\").attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 19,7 L9,13 L14,7 L9,1 Z\\\")}},mB=gB;function bB(t,e){e&&t.attr(\\\"style\\\",e)}function _B(t){const e=St(document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"foreignObject\\\")),r=e.append(\\\"xhtml:div\\\"),n=t.label,i=t.isNode?\\\"nodeLabel\\\":\\\"edgeLabel\\\";return r.html('\u003Cspan class=\\\"'+i+'\\\" '+(t.labelStyle?'style=\\\"'+t.labelStyle+'\\\"':\\\"\\\")+\\\">\\\"+n+\\\"\u003C/span>\\\"),bB(r,t.labelStyle),r.style(\\\"display\\\",\\\"inline-block\\\"),r.style(\\\"white-space\\\",\\\"nowrap\\\"),r.attr(\\\"xmlns\\\",\\\"http://www.w3.org/1999/xhtml\\\"),e.node()}const Vr=(t,e,r,n)=>{let i=t||\\\"\\\";if(typeof i==\\\"object\\\"&&(i=i[0]),pr($().flowchart.htmlLabels)){i=i.replace(/\\\\\\\\n|\\\\n/g,\\\"\u003Cbr />\\\"),B.info(\\\"vertexText\\\"+i);const s={isNode:n,label:Id(i).replace(/fa[blrs]?:fa-[\\\\w-]+/g,o=>`\u003Ci class='${o.replace(\\\":\\\",\\\" \\\")}'>\u003C/i>`),labelStyle:e.replace(\\\"fill:\\\",\\\"color:\\\")};return _B(s)}else{const s=document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"text\\\");s.setAttribute(\\\"style\\\",e.replace(\\\"color:\\\",\\\"fill:\\\"));let a=[];typeof i==\\\"string\\\"?a=i.split(/\\\\\\\\n|\\\\n|\u003Cbr\\\\s*\\\\/?>/gi):Array.isArray(i)?a=i:a=[];for(const o of a){const l=document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"tspan\\\");l.setAttributeNS(\\\"http://www.w3.org/XML/1998/namespace\\\",\\\"xml:space\\\",\\\"preserve\\\"),l.setAttribute(\\\"dy\\\",\\\"1em\\\"),l.setAttribute(\\\"x\\\",\\\"0\\\"),r?l.setAttribute(\\\"class\\\",\\\"title-row\\\"):l.setAttribute(\\\"class\\\",\\\"row\\\"),l.textContent=o.trim(),s.appendChild(l)}return s}},Er=(t,e,r,n)=>{let i;r?i=r:i=\\\"node default\\\";const s=t.insert(\\\"g\\\").attr(\\\"class\\\",i).attr(\\\"id\\\",e.domId||e.id),a=s.insert(\\\"g\\\").attr(\\\"class\\\",\\\"label\\\").attr(\\\"style\\\",e.labelStyle);let o;e.labelText===void 0?o=\\\"\\\":o=typeof e.labelText==\\\"string\\\"?e.labelText:e.labelText[0];const l=a.node().appendChild(Vr(yn(Id(o),$()),e.labelStyle,!1,n));let u=l.getBBox();if(pr($().flowchart.htmlLabels)){const f=l.children[0],p=St(l);u=f.getBoundingClientRect(),p.attr(\\\"width\\\",u.width),p.attr(\\\"height\\\",u.height)}const d=e.padding/2;return a.attr(\\\"transform\\\",\\\"translate(\\\"+-u.width/2+\\\", \\\"+-u.height/2+\\\")\\\"),{shapeSvg:s,bbox:u,halfPadding:d,label:a}},Qe=(t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height};function mi(t,e,r,n){return t.insert(\\\"polygon\\\",\\\":first-child\\\").attr(\\\"points\\\",n.map(function(i){return i.x+\\\",\\\"+i.y}).join(\\\" \\\")).attr(\\\"class\\\",\\\"label-container\\\").attr(\\\"transform\\\",\\\"translate(\\\"+-e/2+\\\",\\\"+r/2+\\\")\\\")}let Te={},Ln={},Em={};const xB=()=>{Ln={},Em={},Te={}},du=(t,e)=>(B.trace(\\\"In isDecendant\\\",e,\\\" \\\",t,\\\" = \\\",Ln[e].includes(t)),!!Ln[e].includes(t)),vB=(t,e)=>(B.info(\\\"Decendants of \\\",e,\\\" is \\\",Ln[e]),B.info(\\\"Edge is \\\",t),t.v===e||t.w===e?!1:Ln[e]?Ln[e].includes(t.v)||du(t.v,e)||du(t.w,e)||Ln[e].includes(t.w):(B.debug(\\\"Tilt, \\\",e,\\\",not in decendants\\\"),!1)),Cm=(t,e,r,n)=>{B.warn(\\\"Copying children of \\\",t,\\\"root\\\",n,\\\"data\\\",e.node(t),n);const i=e.children(t)||[];t!==n&&i.push(t),B.warn(\\\"Copying (nodes) clusterId\\\",t,\\\"nodes\\\",i),i.forEach(s=>{if(e.children(s).length>0)Cm(s,e,r,n);else{const a=e.node(s);B.info(\\\"cp \\\",s,\\\" to \\\",n,\\\" with parent \\\",t),r.setNode(s,a),n!==e.parent(s)&&(B.warn(\\\"Setting parent\\\",s,e.parent(s)),r.setParent(s,e.parent(s))),t!==n&&s!==t?(B.debug(\\\"Setting parent\\\",s,t),r.setParent(s,t)):(B.info(\\\"In copy \\\",t,\\\"root\\\",n,\\\"data\\\",e.node(t),n),B.debug(\\\"Not Setting parent for node=\\\",s,\\\"cluster!==rootId\\\",t!==n,\\\"node!==clusterId\\\",s!==t));const o=e.edges(s);B.debug(\\\"Copying Edges\\\",o),o.forEach(l=>{B.info(\\\"Edge\\\",l);const u=e.edge(l.v,l.w,l.name);B.info(\\\"Edge data\\\",u,n);try{vB(l,n)?(B.info(\\\"Copying as \\\",l.v,l.w,u,l.name),r.setEdge(l.v,l.w,u,l.name),B.info(\\\"newGraph edges \\\",r.edges(),r.edge(r.edges()[0]))):B.info(\\\"Skipping copy of edge \\\",l.v,\\\"-->\\\",l.w,\\\" rootId: \\\",n,\\\" clusterId:\\\",t)}catch(d){B.error(d)}})}B.debug(\\\"Removing node\\\",s),e.removeNode(s)})},Sm=(t,e)=>{const r=e.children(t);let n=[...r];for(const i of r)Em[i]=t,n=[...n,...Sm(i,e)];return n},Po=(t,e)=>{B.trace(\\\"Searching\\\",t);const r=e.children(t);if(B.trace(\\\"Searching children of id \\\",t,r),r.length\u003C1)return B.trace(\\\"This is a valid node\\\",t),t;for(const n of r){const i=Po(n,e);if(i)return B.trace(\\\"Found replacement for\\\",t,\\\" => \\\",i),i}},fu=t=>!Te[t]||!Te[t].externalConnections?t:Te[t]?Te[t].id:t,kB=(t,e)=>{if(!t||e>10){B.debug(\\\"Opting out, no graph \\\");return}else B.debug(\\\"Opting in, graph \\\");t.nodes().forEach(function(r){t.children(r).length>0&&(B.warn(\\\"Cluster identified\\\",r,\\\" Replacement id in edges: \\\",Po(r,t)),Ln[r]=Sm(r,t),Te[r]={id:Po(r,t),clusterData:t.node(r)})}),t.nodes().forEach(function(r){const n=t.children(r),i=t.edges();n.length>0?(B.debug(\\\"Cluster identified\\\",r,Ln),i.forEach(s=>{if(s.v!==r&&s.w!==r){const a=du(s.v,r),o=du(s.w,r);a^o&&(B.warn(\\\"Edge: \\\",s,\\\" leaves cluster \\\",r),B.warn(\\\"Decendants of XXX \\\",r,\\\": \\\",Ln[r]),Te[r].externalConnections=!0)}})):B.debug(\\\"Not a cluster \\\",r,Ln)}),t.edges().forEach(function(r){const n=t.edge(r);B.warn(\\\"Edge \\\"+r.v+\\\" -> \\\"+r.w+\\\": \\\"+JSON.stringify(r)),B.warn(\\\"Edge \\\"+r.v+\\\" -> \\\"+r.w+\\\": \\\"+JSON.stringify(t.edge(r)));let i=r.v,s=r.w;if(B.warn(\\\"Fix XXX\\\",Te,\\\"ids:\\\",r.v,r.w,\\\"Translating: \\\",Te[r.v],\\\" --- \\\",Te[r.w]),Te[r.v]&&Te[r.w]&&Te[r.v]===Te[r.w]){B.warn(\\\"Fixing and trixing link to self - removing XXX\\\",r.v,r.w,r.name),B.warn(\\\"Fixing and trixing - removing XXX\\\",r.v,r.w,r.name),i=fu(r.v),s=fu(r.w),t.removeEdge(r.v,r.w,r.name);const a=r.w+\\\"---\\\"+r.v;t.setNode(a,{domId:a,id:a,labelStyle:\\\"\\\",labelText:n.label,padding:0,shape:\\\"labelRect\\\",style:\\\"\\\"});const o=JSON.parse(JSON.stringify(n)),l=JSON.parse(JSON.stringify(n));o.label=\\\"\\\",o.arrowTypeEnd=\\\"none\\\",l.label=\\\"\\\",o.fromCluster=r.v,l.toCluster=r.v,t.setEdge(i,a,o,r.name+\\\"-cyclic-special\\\"),t.setEdge(a,s,l,r.name+\\\"-cyclic-special\\\")}else(Te[r.v]||Te[r.w])&&(B.warn(\\\"Fixing and trixing - removing XXX\\\",r.v,r.w,r.name),i=fu(r.v),s=fu(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v&&(n.fromCluster=r.v),s!==r.w&&(n.toCluster=r.w),B.warn(\\\"Fix Replacing with XXX\\\",i,s,r.name),t.setEdge(i,s,n,r.name))}),B.warn(\\\"Adjusted Graph\\\",yi(t)),Am(t,0),B.trace(Te)},Am=(t,e)=>{if(B.warn(\\\"extractor - \\\",e,yi(t),t.children(\\\"D\\\")),e>10){B.error(\\\"Bailing out\\\");return}let r=t.nodes(),n=!1;for(const i of r){const s=t.children(i);n=n||s.length>0}if(!n){B.debug(\\\"Done, no node has children\\\",t.nodes());return}B.debug(\\\"Nodes = \\\",r,e);for(const i of r)if(B.debug(\\\"Extracting node\\\",i,Te,Te[i]&&!Te[i].externalConnections,!t.parent(i),t.node(i),t.children(\\\"D\\\"),\\\" Depth \\\",e),!Te[i])B.debug(\\\"Not a cluster\\\",i,e);else if(!Te[i].externalConnections&&t.children(i)&&t.children(i).length>0){B.warn(\\\"Cluster without external connections, without a parent and with children\\\",i,e);let a=t.graph().rankdir===\\\"TB\\\"?\\\"LR\\\":\\\"TB\\\";Te[i]&&Te[i].clusterData&&Te[i].clusterData.dir&&(a=Te[i].clusterData.dir,B.warn(\\\"Fixing dir\\\",Te[i].clusterData.dir,a));const o=new sr({multigraph:!0,compound:!0}).setGraph({rankdir:a,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});B.warn(\\\"Old graph before copy\\\",yi(t)),Cm(i,t,o,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:Te[i].clusterData,labelText:Te[i].labelText,graph:o}),B.warn(\\\"New graph after copy node: (\\\",i,\\\")\\\",yi(o)),B.debug(\\\"Old graph after copy\\\",yi(t))}else B.warn(\\\"Cluster ** \\\",i,\\\" **not meeting the criteria !externalConnections:\\\",!Te[i].externalConnections,\\\" no parent: \\\",!t.parent(i),\\\" children \\\",t.children(i)&&t.children(i).length>0,t.children(\\\"D\\\"),e),B.debug(Te);r=t.nodes(),B.warn(\\\"New list of nodes\\\",r);for(const i of r){const s=t.node(i);B.warn(\\\" Now next level\\\",i,s),s.clusterNode&&Am(s.graph,e+1)}},Lm=(t,e)=>{if(e.length===0)return[];let r=Object.assign(e);return e.forEach(n=>{const i=t.children(n),s=Lm(t,i);r=[...r,...s]}),r},wB=t=>Lm(t,t.children());function TB(t,e){return t.intersect(e)}function Dm(t,e,r,n){var i=t.x,s=t.y,a=i-n.x,o=s-n.y,l=Math.sqrt(e*e*o*o+r*r*a*a),u=Math.abs(e*r*a/l);n.x\u003Ci&&(u=-u);var d=Math.abs(e*r*o/l);return n.y\u003Cs&&(d=-d),{x:i+u,y:s+d}}function EB(t,e,r){return Dm(t,e,e,r)}function CB(t,e,r,n){var i,s,a,o,l,u,d,f,p,g,b,k,T,L,E;if(i=e.y-t.y,a=t.x-e.x,l=e.x*t.y-t.x*e.y,p=i*r.x+a*r.y+l,g=i*n.x+a*n.y+l,!(p!==0&&g!==0&&Mm(p,g))&&(s=n.y-r.y,o=r.x-n.x,u=n.x*r.y-r.x*n.y,d=s*t.x+o*t.y+u,f=s*e.x+o*e.y+u,!(d!==0&&f!==0&&Mm(d,f))&&(b=i*o-s*a,b!==0)))return k=Math.abs(b/2),T=a*u-o*l,L=T\u003C0?(T-k)/b:(T+k)/b,T=s*l-i*u,E=T\u003C0?(T-k)/b:(T+k)/b,{x:L,y:E}}function Mm(t,e){return t*e>0}function SB(t,e,r){var n=t.x,i=t.y,s=[],a=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;typeof e.forEach==\\\"function\\\"?e.forEach(function(b){a=Math.min(a,b.x),o=Math.min(o,b.y)}):(a=Math.min(a,e.x),o=Math.min(o,e.y));for(var l=n-t.width/2-a,u=i-t.height/2-o,d=0;d\u003Ce.length;d++){var f=e[d],p=e[d\u003Ce.length-1?d+1:0],g=CB(t,r,{x:l+f.x,y:u+f.y},{x:l+p.x,y:u+p.y});g&&s.push(g)}return s.length?(s.length>1&&s.sort(function(b,k){var T=b.x-r.x,L=b.y-r.y,E=Math.sqrt(T*T+L*L),I=k.x-r.x,V=k.y-r.y,H=Math.sqrt(I*I+V*V);return E\u003CH?-1:E===H?0:1}),s[0]):t}const Yo=(t,e)=>{var r=t.x,n=t.y,i=e.x-r,s=e.y-n,a=t.width/2,o=t.height/2,l,u;return Math.abs(s)*a>Math.abs(i)*o?(s\u003C0&&(o=-o),l=s===0?0:o*i/s,u=o):(i\u003C0&&(a=-a),l=a,u=i===0?0:a*s/i),{x:r+l,y:n+u}},Ge={node:TB,circle:EB,ellipse:Dm,polygon:SB,rect:Yo},AB=(t,e)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=Er(t,e,\\\"node \\\"+e.classes,!0);B.info(\\\"Classes = \\\",e.classes);const s=r.insert(\\\"rect\\\",\\\":first-child\\\");return s.attr(\\\"rx\\\",e.rx).attr(\\\"ry\\\",e.ry).attr(\\\"x\\\",-n.width/2-i).attr(\\\"y\\\",-n.height/2-i).attr(\\\"width\\\",n.width+e.padding).attr(\\\"height\\\",n.height+e.padding),Qe(e,s),e.intersect=function(a){return Ge.rect(e,a)},r},LB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=i+s,o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];B.info(\\\"Question main (Circle)\\\");const l=mi(r,a,a,o);return l.attr(\\\"style\\\",e.style),Qe(e,l),e.intersect=function(u){return B.warn(\\\"Intersect called\\\"),Ge.polygon(e,o,u)},r},DB=(t,e)=>{const r=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"node default\\\").attr(\\\"id\\\",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert(\\\"polygon\\\",\\\":first-child\\\").attr(\\\"points\\\",i.map(function(a){return a.x+\\\",\\\"+a.y}).join(\\\" \\\")).attr(\\\"class\\\",\\\"state-start\\\").attr(\\\"r\\\",7).attr(\\\"width\\\",28).attr(\\\"height\\\",28),e.width=28,e.height=28,e.intersect=function(a){return Ge.circle(e,14,a)},r},MB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=4,s=n.height+e.padding,a=s/i,o=n.width+2*a+e.padding,l=[{x:a,y:0},{x:o-a,y:0},{x:o,y:-s/2},{x:o-a,y:-s},{x:a,y:-s},{x:0,y:-s/2}],u=mi(r,o,s,l);return u.attr(\\\"style\\\",e.style),Qe(e,u),e.intersect=function(d){return Ge.polygon(e,l,d)},r},NB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=[{x:-s/2,y:0},{x:i,y:0},{x:i,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}];return mi(r,i,s,a).attr(\\\"style\\\",e.style),e.width=i+s,e.height=s,e.intersect=function(l){return Ge.polygon(e,a,l)},r},BB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=[{x:-2*s/6,y:0},{x:i-s/6,y:0},{x:i+2*s/6,y:-s},{x:s/6,y:-s}],o=mi(r,i,s,a);return o.attr(\\\"style\\\",e.style),Qe(e,o),e.intersect=function(l){return Ge.polygon(e,a,l)},r},IB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=[{x:2*s/6,y:0},{x:i+s/6,y:0},{x:i-2*s/6,y:-s},{x:-s/6,y:-s}],o=mi(r,i,s,a);return o.attr(\\\"style\\\",e.style),Qe(e,o),e.intersect=function(l){return Ge.polygon(e,a,l)},r},OB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=[{x:-2*s/6,y:0},{x:i+2*s/6,y:0},{x:i-s/6,y:-s},{x:s/6,y:-s}],o=mi(r,i,s,a);return o.attr(\\\"style\\\",e.style),Qe(e,o),e.intersect=function(l){return Ge.polygon(e,a,l)},r},RB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=[{x:s/6,y:0},{x:i-s/6,y:0},{x:i+2*s/6,y:-s},{x:-2*s/6,y:-s}],o=mi(r,i,s,a);return o.attr(\\\"style\\\",e.style),Qe(e,o),e.intersect=function(l){return Ge.polygon(e,a,l)},r},FB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=[{x:0,y:0},{x:i+s/2,y:0},{x:i,y:-s/2},{x:i+s/2,y:-s},{x:0,y:-s}],o=mi(r,i,s,a);return o.attr(\\\"style\\\",e.style),Qe(e,o),e.intersect=function(l){return Ge.polygon(e,a,l)},r},PB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=i/2,a=s/(2.5+i/50),o=n.height+a+e.padding,l=\\\"M 0,\\\"+a+\\\" a \\\"+s+\\\",\\\"+a+\\\" 0,0,0 \\\"+i+\\\" 0 a \\\"+s+\\\",\\\"+a+\\\" 0,0,0 \\\"+-i+\\\" 0 l 0,\\\"+o+\\\" a \\\"+s+\\\",\\\"+a+\\\" 0,0,0 \\\"+i+\\\" 0 l 0,\\\"+-o,u=r.attr(\\\"label-offset-y\\\",a).insert(\\\"path\\\",\\\":first-child\\\").attr(\\\"style\\\",e.style).attr(\\\"d\\\",l).attr(\\\"transform\\\",\\\"translate(\\\"+-i/2+\\\",\\\"+-(o/2+a)+\\\")\\\");return Qe(e,u),e.intersect=function(d){const f=Ge.rect(e,d),p=f.x-e.x;if(s!=0&&(Math.abs(p)\u003Ce.width/2||Math.abs(p)==e.width/2&&Math.abs(f.y-e.y)>e.height/2-a)){let g=a*a*(1-p*p/(s*s));g!=0&&(g=Math.sqrt(g)),g=a-g,d.y-e.y>0&&(g=-g),f.y+=g}return f},r},YB=(t,e)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=Er(t,e,\\\"node \\\"+e.classes,!0);B.trace(\\\"Classes = \\\",e.classes);const s=r.insert(\\\"rect\\\",\\\":first-child\\\"),a=n.width+e.padding,o=n.height+e.padding;if(s.attr(\\\"class\\\",\\\"basic label-container\\\").attr(\\\"style\\\",e.style).attr(\\\"rx\\\",e.rx).attr(\\\"ry\\\",e.ry).attr(\\\"x\\\",-n.width/2-i).attr(\\\"y\\\",-n.height/2-i).attr(\\\"width\\\",a).attr(\\\"height\\\",o),e.props){const l=new Set(Object.keys(e.props));e.props.borders&&(Nm(s,e.props.borders,a,o),l.delete(\\\"borders\\\")),l.forEach(u=>{B.warn(`Unknown node property ${u}`)})}return Qe(e,s),e.intersect=function(l){return Ge.rect(e,l)},r},VB=(t,e)=>{const{shapeSvg:r}=Er(t,e,\\\"label\\\",!0);B.trace(\\\"Classes = \\\",e.classes);const n=r.insert(\\\"rect\\\",\\\":first-child\\\"),i=0,s=0;if(n.attr(\\\"width\\\",i).attr(\\\"height\\\",s),r.attr(\\\"class\\\",\\\"label edgeLabel\\\"),e.props){const a=new Set(Object.keys(e.props));e.props.borders&&(Nm(n,e.props.borders,i,s),a.delete(\\\"borders\\\")),a.forEach(o=>{B.warn(`Unknown node property ${o}`)})}return Qe(e,n),e.intersect=function(a){return Ge.rect(e,a)},r};function Nm(t,e,r,n){const i=[],s=o=>{i.push(o,0)},a=o=>{i.push(0,o)};e.includes(\\\"t\\\")?(B.debug(\\\"add top border\\\"),s(r)):a(r),e.includes(\\\"r\\\")?(B.debug(\\\"add right border\\\"),s(n)):a(n),e.includes(\\\"b\\\")?(B.debug(\\\"add bottom border\\\"),s(r)):a(r),e.includes(\\\"l\\\")?(B.debug(\\\"add left border\\\"),s(n)):a(n),t.attr(\\\"stroke-dasharray\\\",i.join(\\\" \\\"))}const UB=(t,e)=>{let r;e.classes?r=\\\"node \\\"+e.classes:r=\\\"node default\\\";const n=t.insert(\\\"g\\\").attr(\\\"class\\\",r).attr(\\\"id\\\",e.domId||e.id),i=n.insert(\\\"rect\\\",\\\":first-child\\\"),s=n.insert(\\\"line\\\"),a=n.insert(\\\"g\\\").attr(\\\"class\\\",\\\"label\\\"),o=e.labelText.flat?e.labelText.flat():e.labelText;let l=\\\"\\\";typeof o==\\\"object\\\"?l=o[0]:l=o,B.info(\\\"Label text abc79\\\",l,o,typeof o==\\\"object\\\");const u=a.node().appendChild(Vr(l,e.labelStyle,!0,!0));let d={width:0,height:0};if(pr($().flowchart.htmlLabels)){const k=u.children[0],T=St(u);d=k.getBoundingClientRect(),T.attr(\\\"width\\\",d.width),T.attr(\\\"height\\\",d.height)}B.info(\\\"Text 2\\\",o);const f=o.slice(1,o.length);let p=u.getBBox();const g=a.node().appendChild(Vr(f.join?f.join(\\\"\u003Cbr/>\\\"):f,e.labelStyle,!0,!0));if(pr($().flowchart.htmlLabels)){const k=g.children[0],T=St(g);d=k.getBoundingClientRect(),T.attr(\\\"width\\\",d.width),T.attr(\\\"height\\\",d.height)}const b=e.padding/2;return St(g).attr(\\\"transform\\\",\\\"translate( \\\"+(d.width>p.width?0:(p.width-d.width)/2)+\\\", \\\"+(p.height+b+5)+\\\")\\\"),St(u).attr(\\\"transform\\\",\\\"translate( \\\"+(d.width\u003Cp.width?0:-(p.width-d.width)/2)+\\\", \\\"+0+\\\")\\\"),d=a.node().getBBox(),a.attr(\\\"transform\\\",\\\"translate(\\\"+-d.width/2+\\\", \\\"+(-d.height/2-b+3)+\\\")\\\"),i.attr(\\\"class\\\",\\\"outer title-state\\\").attr(\\\"x\\\",-d.width/2-b).attr(\\\"y\\\",-d.height/2-b).attr(\\\"width\\\",d.width+e.padding).attr(\\\"height\\\",d.height+e.padding),s.attr(\\\"class\\\",\\\"divider\\\").attr(\\\"x1\\\",-d.width/2-b).attr(\\\"x2\\\",d.width/2+b).attr(\\\"y1\\\",-d.height/2-b+p.height+b).attr(\\\"y2\\\",-d.height/2-b+p.height+b),Qe(e,i),e.intersect=function(k){return Ge.rect(e,k)},n},zB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.height+e.padding,s=n.width+i/4+e.padding,a=r.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"style\\\",e.style).attr(\\\"rx\\\",i/2).attr(\\\"ry\\\",i/2).attr(\\\"x\\\",-s/2).attr(\\\"y\\\",-i/2).attr(\\\"width\\\",s).attr(\\\"height\\\",i);return Qe(e,a),e.intersect=function(o){return Ge.rect(e,o)},r},WB=(t,e)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=Er(t,e,void 0,!0),s=r.insert(\\\"circle\\\",\\\":first-child\\\");return s.attr(\\\"style\\\",e.style).attr(\\\"rx\\\",e.rx).attr(\\\"ry\\\",e.ry).attr(\\\"r\\\",n.width/2+i).attr(\\\"width\\\",n.width+e.padding).attr(\\\"height\\\",n.height+e.padding),B.info(\\\"Circle main\\\"),Qe(e,s),e.intersect=function(a){return B.info(\\\"Circle intersect\\\",e,n.width/2+i,a),Ge.circle(e,n.width/2+i,a)},r},HB=(t,e)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=Er(t,e,void 0,!0),s=5,a=r.insert(\\\"g\\\",\\\":first-child\\\"),o=a.insert(\\\"circle\\\"),l=a.insert(\\\"circle\\\");return o.attr(\\\"style\\\",e.style).attr(\\\"rx\\\",e.rx).attr(\\\"ry\\\",e.ry).attr(\\\"r\\\",n.width/2+i+s).attr(\\\"width\\\",n.width+e.padding+s*2).attr(\\\"height\\\",n.height+e.padding+s*2),l.attr(\\\"style\\\",e.style).attr(\\\"rx\\\",e.rx).attr(\\\"ry\\\",e.ry).attr(\\\"r\\\",n.width/2+i).attr(\\\"width\\\",n.width+e.padding).attr(\\\"height\\\",n.height+e.padding),B.info(\\\"DoubleCircle main\\\"),Qe(e,o),e.intersect=function(u){return B.info(\\\"DoubleCircle intersect\\\",e,n.width/2+i+s,u),Ge.circle(e,n.width/2+i+s,u)},r},GB=(t,e)=>{const{shapeSvg:r,bbox:n}=Er(t,e,void 0,!0),i=n.width+e.padding,s=n.height+e.padding,a=[{x:0,y:0},{x:i,y:0},{x:i,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],o=mi(r,i,s,a);return o.attr(\\\"style\\\",e.style),Qe(e,o),e.intersect=function(l){return Ge.polygon(e,a,l)},r},qB=(t,e)=>{const r=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"node default\\\").attr(\\\"id\\\",e.domId||e.id),n=r.insert(\\\"circle\\\",\\\":first-child\\\");return n.attr(\\\"class\\\",\\\"state-start\\\").attr(\\\"r\\\",7).attr(\\\"width\\\",14).attr(\\\"height\\\",14),Qe(e,n),e.intersect=function(i){return Ge.circle(e,7,i)},r},Bm=(t,e,r)=>{const n=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"node default\\\").attr(\\\"id\\\",e.domId||e.id);let i=70,s=10;r===\\\"LR\\\"&&(i=10,s=70);const a=n.append(\\\"rect\\\").attr(\\\"x\\\",-1*i/2).attr(\\\"y\\\",-1*s/2).attr(\\\"width\\\",i).attr(\\\"height\\\",s).attr(\\\"class\\\",\\\"fork-join\\\");return Qe(e,a),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(o){return Ge.rect(e,o)},n},Im={question:LB,rect:YB,labelRect:VB,rectWithTitle:UB,choice:DB,circle:WB,doublecircle:HB,stadium:zB,hexagon:MB,rect_left_inv_arrow:NB,lean_right:BB,lean_left:IB,trapezoid:OB,inv_trapezoid:RB,rect_right_inv_arrow:FB,cylinder:PB,start:qB,end:(t,e)=>{const r=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"node default\\\").attr(\\\"id\\\",e.domId||e.id),n=r.insert(\\\"circle\\\",\\\":first-child\\\"),i=r.insert(\\\"circle\\\",\\\":first-child\\\");return i.attr(\\\"class\\\",\\\"state-start\\\").attr(\\\"r\\\",7).attr(\\\"width\\\",14).attr(\\\"height\\\",14),n.attr(\\\"class\\\",\\\"state-end\\\").attr(\\\"r\\\",5).attr(\\\"width\\\",10).attr(\\\"height\\\",10),Qe(e,i),e.intersect=function(s){return Ge.circle(e,7,s)},r},note:AB,subroutine:GB,fork:Bm,join:Bm,class_box:(t,e)=>{const r=e.padding/2,n=4,i=8;let s;e.classes?s=\\\"node \\\"+e.classes:s=\\\"node default\\\";const a=t.insert(\\\"g\\\").attr(\\\"class\\\",s).attr(\\\"id\\\",e.domId||e.id),o=a.insert(\\\"rect\\\",\\\":first-child\\\"),l=a.insert(\\\"line\\\"),u=a.insert(\\\"line\\\");let d=0,f=n;const p=a.insert(\\\"g\\\").attr(\\\"class\\\",\\\"label\\\");let g=0;const b=e.classData.annotations&&e.classData.annotations[0],k=e.classData.annotations[0]?\\\"\\\\xAB\\\"+e.classData.annotations[0]+\\\"\\\\xBB\\\":\\\"\\\",T=p.node().appendChild(Vr(k,e.labelStyle,!0,!0));let L=T.getBBox();if(pr($().flowchart.htmlLabels)){const W=T.children[0],N=St(T);L=W.getBoundingClientRect(),N.attr(\\\"width\\\",L.width),N.attr(\\\"height\\\",L.height)}e.classData.annotations[0]&&(f+=L.height+n,d+=L.width);let E=e.classData.id;e.classData.type!==void 0&&e.classData.type!==\\\"\\\"&&($().flowchart.htmlLabels?E+=\\\"<\\\"+e.classData.type+\\\">\\\":E+=\\\"\u003C\\\"+e.classData.type+\\\">\\\");const I=p.node().appendChild(Vr(E,e.labelStyle,!0,!0));St(I).attr(\\\"class\\\",\\\"classTitle\\\");let V=I.getBBox();if(pr($().flowchart.htmlLabels)){const W=I.children[0],N=St(I);V=W.getBoundingClientRect(),N.attr(\\\"width\\\",V.width),N.attr(\\\"height\\\",V.height)}f+=V.height+n,V.width>d&&(d=V.width);const H=[];e.classData.members.forEach(W=>{const N=cu(W);let D=N.displayText;$().flowchart.htmlLabels&&(D=D.replace(/\u003C/g,\\\"<\\\").replace(/>/g,\\\">\\\"));const w=p.node().appendChild(Vr(D,N.cssStyle?N.cssStyle:e.labelStyle,!0,!0));let v=w.getBBox();if(pr($().flowchart.htmlLabels)){const M=w.children[0],m=St(w);v=M.getBoundingClientRect(),m.attr(\\\"width\\\",v.width),m.attr(\\\"height\\\",v.height)}v.width>d&&(d=v.width),f+=v.height+n,H.push(w)}),f+=i;const G=[];if(e.classData.methods.forEach(W=>{const N=cu(W);let D=N.displayText;$().flowchart.htmlLabels&&(D=D.replace(/\u003C/g,\\\"<\\\").replace(/>/g,\\\">\\\"));const w=p.node().appendChild(Vr(D,N.cssStyle?N.cssStyle:e.labelStyle,!0,!0));let v=w.getBBox();if(pr($().flowchart.htmlLabels)){const M=w.children[0],m=St(w);v=M.getBoundingClientRect(),m.attr(\\\"width\\\",v.width),m.attr(\\\"height\\\",v.height)}v.width>d&&(d=v.width),f+=v.height+n,G.push(w)}),f+=i,b){let W=(d-L.width)/2;St(T).attr(\\\"transform\\\",\\\"translate( \\\"+(-1*d/2+W)+\\\", \\\"+-1*f/2+\\\")\\\"),g=L.height+n}let Y=(d-V.width)/2;return St(I).attr(\\\"transform\\\",\\\"translate( \\\"+(-1*d/2+Y)+\\\", \\\"+(-1*f/2+g)+\\\")\\\"),g+=V.height+n,l.attr(\\\"class\\\",\\\"divider\\\").attr(\\\"x1\\\",-d/2-r).attr(\\\"x2\\\",d/2+r).attr(\\\"y1\\\",-f/2-r+i+g).attr(\\\"y2\\\",-f/2-r+i+g),g+=i,H.forEach(W=>{St(W).attr(\\\"transform\\\",\\\"translate( \\\"+-d/2+\\\", \\\"+(-1*f/2+g+i/2)+\\\")\\\"),g+=V.height+n}),g+=i,u.attr(\\\"class\\\",\\\"divider\\\").attr(\\\"x1\\\",-d/2-r).attr(\\\"x2\\\",d/2+r).attr(\\\"y1\\\",-f/2-r+i+g).attr(\\\"y2\\\",-f/2-r+i+g),g+=i,G.forEach(W=>{St(W).attr(\\\"transform\\\",\\\"translate( \\\"+-d/2+\\\", \\\"+(-1*f/2+g)+\\\")\\\"),g+=V.height+n}),o.attr(\\\"class\\\",\\\"outer title-state\\\").attr(\\\"x\\\",-d/2-r).attr(\\\"y\\\",-(f/2)-r).attr(\\\"width\\\",d+e.padding).attr(\\\"height\\\",f+e.padding),Qe(e,o),e.intersect=function(W){return Ge.rect(e,W)},a}};let Ca={};const jB=(t,e,r)=>{let n,i;if(e.link){let s;$().securityLevel===\\\"sandbox\\\"?s=\\\"_top\\\":e.linkTarget&&(s=e.linkTarget||\\\"_blank\\\"),n=t.insert(\\\"svg:a\\\").attr(\\\"xlink:href\\\",e.link).attr(\\\"target\\\",s),i=Im[e.shape](n,e,r)}else i=Im[e.shape](t,e,r),n=i;e.tooltip&&i.attr(\\\"title\\\",e.tooltip),e.class&&i.attr(\\\"class\\\",\\\"node default \\\"+e.class),Ca[e.id]=n,e.haveCallback&&Ca[e.id].attr(\\\"class\\\",Ca[e.id].attr(\\\"class\\\")+\\\" clickable\\\")},$B=(t,e)=>{Ca[e.id]=t},XB=()=>{Ca={}},Om=t=>{const e=Ca[t.id];B.trace(\\\"Transforming node\\\",t.diff,t,\\\"translate(\\\"+(t.x-t.width/2-5)+\\\", \\\"+t.width/2+\\\")\\\");const r=8,n=t.diff||0;return t.clusterNode?e.attr(\\\"transform\\\",\\\"translate(\\\"+(t.x+n-t.width/2)+\\\", \\\"+(t.y-t.height/2-r)+\\\")\\\"):e.attr(\\\"transform\\\",\\\"translate(\\\"+t.x+\\\", \\\"+t.y+\\\")\\\"),n},KB={rect:(t,e)=>{B.trace(\\\"Creating subgraph rect for \\\",e.id,e);const r=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"cluster\\\"+(e.class?\\\" \\\"+e.class:\\\"\\\")).attr(\\\"id\\\",e.id),n=r.insert(\\\"rect\\\",\\\":first-child\\\"),i=r.insert(\\\"g\\\").attr(\\\"class\\\",\\\"cluster-label\\\"),s=i.node().appendChild(Vr(e.labelText,e.labelStyle,void 0,!0));let a=s.getBBox();if(pr($().flowchart.htmlLabels)){const f=s.children[0],p=St(s);a=f.getBoundingClientRect(),p.attr(\\\"width\\\",a.width),p.attr(\\\"height\\\",a.height)}const o=0*e.padding,l=o/2,u=e.width\u003C=a.width+o?a.width+o:e.width;e.width\u003C=a.width+o?e.diff=(a.width-e.width)/2-e.padding/2:e.diff=-e.padding/2,B.trace(\\\"Data \\\",e,JSON.stringify(e)),n.attr(\\\"style\\\",e.style).attr(\\\"rx\\\",e.rx).attr(\\\"ry\\\",e.ry).attr(\\\"x\\\",e.x-u/2).attr(\\\"y\\\",e.y-e.height/2-l).attr(\\\"width\\\",u).attr(\\\"height\\\",e.height+o),i.attr(\\\"transform\\\",\\\"translate(\\\"+(e.x-a.width/2)+\\\", \\\"+(e.y-e.height/2)+\\\")\\\");const d=n.node().getBBox();return e.width=d.width,e.height=d.height,e.intersect=function(f){return Yo(e,f)},r},roundedWithTitle:(t,e)=>{const r=t.insert(\\\"g\\\").attr(\\\"class\\\",e.classes).attr(\\\"id\\\",e.id),n=r.insert(\\\"rect\\\",\\\":first-child\\\"),i=r.insert(\\\"g\\\").attr(\\\"class\\\",\\\"cluster-label\\\"),s=r.append(\\\"rect\\\"),a=i.node().appendChild(Vr(e.labelText,e.labelStyle,void 0,!0));let o=a.getBBox();if(pr($().flowchart.htmlLabels)){const p=a.children[0],g=St(a);o=p.getBoundingClientRect(),g.attr(\\\"width\\\",o.width),g.attr(\\\"height\\\",o.height)}o=a.getBBox();const l=0*e.padding,u=l/2,d=e.width\u003C=o.width+e.padding?o.width+e.padding:e.width;e.width\u003C=o.width+e.padding?e.diff=(o.width+e.padding*0-e.width)/2:e.diff=-e.padding/2,n.attr(\\\"class\\\",\\\"outer\\\").attr(\\\"x\\\",e.x-d/2-u).attr(\\\"y\\\",e.y-e.height/2-u).attr(\\\"width\\\",d+l).attr(\\\"height\\\",e.height+l),s.attr(\\\"class\\\",\\\"inner\\\").attr(\\\"x\\\",e.x-d/2-u).attr(\\\"y\\\",e.y-e.height/2-u+o.height-1).attr(\\\"width\\\",d+l).attr(\\\"height\\\",e.height+l-o.height-3),i.attr(\\\"transform\\\",\\\"translate(\\\"+(e.x-o.width/2)+\\\", \\\"+(e.y-e.height/2-e.padding/3+(pr($().flowchart.htmlLabels)?5:3))+\\\")\\\");const f=n.node().getBBox();return e.height=f.height,e.intersect=function(p){return Yo(e,p)},r},noteGroup:(t,e)=>{const r=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"note-cluster\\\").attr(\\\"id\\\",e.id),n=r.insert(\\\"rect\\\",\\\":first-child\\\"),i=0*e.padding,s=i/2;n.attr(\\\"rx\\\",e.rx).attr(\\\"ry\\\",e.ry).attr(\\\"x\\\",e.x-e.width/2-s).attr(\\\"y\\\",e.y-e.height/2-s).attr(\\\"width\\\",e.width+i).attr(\\\"height\\\",e.height+i).attr(\\\"fill\\\",\\\"none\\\");const a=n.node().getBBox();return e.width=a.width,e.height=a.height,e.intersect=function(o){return Yo(e,o)},r},divider:(t,e)=>{const r=t.insert(\\\"g\\\").attr(\\\"class\\\",e.classes).attr(\\\"id\\\",e.id),n=r.insert(\\\"rect\\\",\\\":first-child\\\"),i=0*e.padding,s=i/2;n.attr(\\\"class\\\",\\\"divider\\\").attr(\\\"x\\\",e.x-e.width/2-s).attr(\\\"y\\\",e.y-e.height/2).attr(\\\"width\\\",e.width+i).attr(\\\"height\\\",e.height+i);const a=n.node().getBBox();return e.width=a.width,e.height=a.height,e.diff=-e.padding/2,e.intersect=function(o){return Yo(e,o)},r}};let Rm={};const ZB=(t,e)=>{B.trace(\\\"Inserting cluster\\\");const r=e.shape||\\\"rect\\\";Rm[e.id]=KB[r](t,e)},QB=()=>{Rm={}};let pu={},br={};const JB=()=>{pu={},br={}},tI=(t,e)=>{const r=Vr(e.label,e.labelStyle),n=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"edgeLabel\\\"),i=n.insert(\\\"g\\\").attr(\\\"class\\\",\\\"label\\\");i.node().appendChild(r);let s=r.getBBox();if(pr($().flowchart.htmlLabels)){const o=r.children[0],l=St(r);s=o.getBoundingClientRect(),l.attr(\\\"width\\\",s.width),l.attr(\\\"height\\\",s.height)}i.attr(\\\"transform\\\",\\\"translate(\\\"+-s.width/2+\\\", \\\"+-s.height/2+\\\")\\\"),pu[e.id]=n,e.width=s.width,e.height=s.height;let a;if(e.startLabelLeft){const o=Vr(e.startLabelLeft,e.labelStyle),l=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"edgeTerminals\\\"),u=l.insert(\\\"g\\\").attr(\\\"class\\\",\\\"inner\\\");a=u.node().appendChild(o);const d=o.getBBox();u.attr(\\\"transform\\\",\\\"translate(\\\"+-d.width/2+\\\", \\\"+-d.height/2+\\\")\\\"),br[e.id]||(br[e.id]={}),br[e.id].startLeft=l,gu(a,e.startLabelLeft)}if(e.startLabelRight){const o=Vr(e.startLabelRight,e.labelStyle),l=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"edgeTerminals\\\"),u=l.insert(\\\"g\\\").attr(\\\"class\\\",\\\"inner\\\");a=l.node().appendChild(o),u.node().appendChild(o);const d=o.getBBox();u.attr(\\\"transform\\\",\\\"translate(\\\"+-d.width/2+\\\", \\\"+-d.height/2+\\\")\\\"),br[e.id]||(br[e.id]={}),br[e.id].startRight=l,gu(a,e.startLabelRight)}if(e.endLabelLeft){const o=Vr(e.endLabelLeft,e.labelStyle),l=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"edgeTerminals\\\"),u=l.insert(\\\"g\\\").attr(\\\"class\\\",\\\"inner\\\");a=u.node().appendChild(o);const d=o.getBBox();u.attr(\\\"transform\\\",\\\"translate(\\\"+-d.width/2+\\\", \\\"+-d.height/2+\\\")\\\"),l.node().appendChild(o),br[e.id]||(br[e.id]={}),br[e.id].endLeft=l,gu(a,e.endLabelLeft)}if(e.endLabelRight){const o=Vr(e.endLabelRight,e.labelStyle),l=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"edgeTerminals\\\"),u=l.insert(\\\"g\\\").attr(\\\"class\\\",\\\"inner\\\");a=u.node().appendChild(o);const d=o.getBBox();u.attr(\\\"transform\\\",\\\"translate(\\\"+-d.width/2+\\\", \\\"+-d.height/2+\\\")\\\"),l.node().appendChild(o),br[e.id]||(br[e.id]={}),br[e.id].endRight=l,gu(a,e.endLabelRight)}};function gu(t,e){$().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+\\\"px\\\",t.style.height=\\\"12px\\\")}const eI=(t,e)=>{B.info(\\\"Moving label abc78 \\\",t.id,t.label,pu[t.id]);let r=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){const n=pu[t.id];let i=t.x,s=t.y;if(r){const a=ge.calcLabelPosition(r);B.info(\\\"Moving label \\\"+t.label+\\\" from (\\\",i,\\\",\\\",s,\\\") to (\\\",a.x,\\\",\\\",a.y,\\\") abc78\\\"),e.updatedPath&&(i=a.x,s=a.y)}n.attr(\\\"transform\\\",\\\"translate(\\\"+i+\\\", \\\"+s+\\\")\\\")}if(t.startLabelLeft){const n=br[t.id].startLeft;let i=t.x,s=t.y;if(r){const a=ge.calcTerminalLabelPosition(t.arrowTypeStart?10:0,\\\"start_left\\\",r);i=a.x,s=a.y}n.attr(\\\"transform\\\",\\\"translate(\\\"+i+\\\", \\\"+s+\\\")\\\")}if(t.startLabelRight){const n=br[t.id].startRight;let i=t.x,s=t.y;if(r){const a=ge.calcTerminalLabelPosition(t.arrowTypeStart?10:0,\\\"start_right\\\",r);i=a.x,s=a.y}n.attr(\\\"transform\\\",\\\"translate(\\\"+i+\\\", \\\"+s+\\\")\\\")}if(t.endLabelLeft){const n=br[t.id].endLeft;let i=t.x,s=t.y;if(r){const a=ge.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,\\\"end_left\\\",r);i=a.x,s=a.y}n.attr(\\\"transform\\\",\\\"translate(\\\"+i+\\\", \\\"+s+\\\")\\\")}if(t.endLabelRight){const n=br[t.id].endRight;let i=t.x,s=t.y;if(r){const a=ge.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,\\\"end_right\\\",r);i=a.x,s=a.y}n.attr(\\\"transform\\\",\\\"translate(\\\"+i+\\\", \\\"+s+\\\")\\\")}},rI=(t,e)=>{const r=t.x,n=t.y,i=Math.abs(e.x-r),s=Math.abs(e.y-n),a=t.width/2,o=t.height/2;return i>=a||s>=o},nI=(t,e,r)=>{B.warn(`intersection calc abc89:\\n outsidePoint: ${JSON.stringify(e)}\\n insidePoint : ${JSON.stringify(r)}\\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const n=t.x,i=t.y,s=Math.abs(n-r.x),a=t.width/2;let o=r.x\u003Ce.x?a-s:a+s;const l=t.height/2,u=Math.abs(e.y-r.y),d=Math.abs(e.x-r.x);if(Math.abs(i-e.y)*a>Math.abs(n-e.x)*l){let f=r.y\u003Ce.y?e.y-l-i:i-l-e.y;o=d*f/u;const p={x:r.x\u003Ce.x?r.x+o:r.x-d+o,y:r.y\u003Ce.y?r.y+u-f:r.y-u+f};return o===0&&(p.x=e.x,p.y=e.y),d===0&&(p.x=e.x),u===0&&(p.y=e.y),B.warn(`abc89 topp/bott calc, Q ${u}, q ${f}, R ${d}, r ${o}`,p),p}else{r.x\u003Ce.x?o=e.x-a-n:o=n-a-e.x;let f=u*o/d,p=r.x\u003Ce.x?r.x+d-o:r.x-d+o,g=r.y\u003Ce.y?r.y+f:r.y-f;return B.warn(`sides calc abc89, Q ${u}, q ${f}, R ${d}, r ${o}`,{_x:p,_y:g}),o===0&&(p=e.x,g=e.y),d===0&&(p=e.x),u===0&&(g=e.y),{x:p,y:g}}},Fm=(t,e)=>{B.warn(\\\"abc88 cutPathAtIntersect\\\",t,e);let r=[],n=t[0],i=!1;return t.forEach(s=>{if(B.info(\\\"abc88 checking point\\\",s,e),!rI(e,s)&&!i){const a=nI(e,n,s);B.warn(\\\"abc88 inside\\\",s,n,a),B.warn(\\\"abc88 intersection\\\",a);let o=!1;r.forEach(l=>{o=o||l.x===a.x&&l.y===a.y}),r.some(l=>l.x===a.x&&l.y===a.y)?B.warn(\\\"abc88 no intersect\\\",a,r):r.push(a),i=!0}else B.warn(\\\"abc88 outside\\\",s,n),n=s,i||r.push(s)}),B.warn(\\\"abc88 returning points\\\",r),r},iI=function(t,e,r,n,i,s){let a=r.points,o=!1;const l=s.node(e.v);var u=s.node(e.w);B.info(\\\"abc88 InsertEdge: \\\",r),u.intersect&&l.intersect&&(a=a.slice(1,r.points.length-1),a.unshift(l.intersect(a[0])),B.info(\\\"Last point\\\",a[a.length-1],u,u.intersect(a[a.length-1])),a.push(u.intersect(a[a.length-1]))),r.toCluster&&(B.info(\\\"to cluster abc88\\\",n[r.toCluster]),a=Fm(r.points,n[r.toCluster].node),o=!0),r.fromCluster&&(B.info(\\\"from cluster abc88\\\",n[r.fromCluster]),a=Fm(a.reverse(),n[r.fromCluster].node).reverse(),o=!0);const d=a.filter(L=>!Number.isNaN(L.y));let f;i===\\\"graph\\\"||i===\\\"flowchart\\\"?f=r.curve||ta:f=ta;const p=Js().x(function(L){return L.x}).y(function(L){return L.y}).curve(f);let g;switch(r.thickness){case\\\"normal\\\":g=\\\"edge-thickness-normal\\\";break;case\\\"thick\\\":g=\\\"edge-thickness-thick\\\";break;default:g=\\\"\\\"}switch(r.pattern){case\\\"solid\\\":g+=\\\" edge-pattern-solid\\\";break;case\\\"dotted\\\":g+=\\\" edge-pattern-dotted\\\";break;case\\\"dashed\\\":g+=\\\" edge-pattern-dashed\\\";break}const b=t.append(\\\"path\\\").attr(\\\"d\\\",p(d)).attr(\\\"id\\\",r.id).attr(\\\"class\\\",\\\" \\\"+g+(r.classes?\\\" \\\"+r.classes:\\\"\\\")).attr(\\\"style\\\",r.style);let k=\\\"\\\";switch(($().flowchart.arrowMarkerAbsolute||$().state.arrowMarkerAbsolute)&&(k=window.location.protocol+\\\"//\\\"+window.location.host+window.location.pathname+window.location.search,k=k.replace(/\\\\(/g,\\\"\\\\\\\\(\\\"),k=k.replace(/\\\\)/g,\\\"\\\\\\\\)\\\")),B.info(\\\"arrowTypeStart\\\",r.arrowTypeStart),B.info(\\\"arrowTypeEnd\\\",r.arrowTypeEnd),r.arrowTypeStart){case\\\"arrow_cross\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-crossStart)\\\");break;case\\\"arrow_point\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-pointStart)\\\");break;case\\\"arrow_barb\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-barbStart)\\\");break;case\\\"arrow_circle\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-circleStart)\\\");break;case\\\"aggregation\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-aggregationStart)\\\");break;case\\\"extension\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-extensionStart)\\\");break;case\\\"composition\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-compositionStart)\\\");break;case\\\"dependency\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-dependencyStart)\\\");break;case\\\"lollipop\\\":b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-lollipopStart)\\\");break}switch(r.arrowTypeEnd){case\\\"arrow_cross\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-crossEnd)\\\");break;case\\\"arrow_point\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-pointEnd)\\\");break;case\\\"arrow_barb\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-barbEnd)\\\");break;case\\\"arrow_circle\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-circleEnd)\\\");break;case\\\"aggregation\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-aggregationEnd)\\\");break;case\\\"extension\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-extensionEnd)\\\");break;case\\\"composition\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-compositionEnd)\\\");break;case\\\"dependency\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-dependencyEnd)\\\");break;case\\\"lollipop\\\":b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#\\\"+i+\\\"-lollipopEnd)\\\");break}let T={};return o&&(T.updatedPath=a),T.originalPath=r.points,T},Pm=(t,e,r,n)=>{B.info(\\\"Graph in recursive render: XXX\\\",yi(e),n);const i=e.graph().rankdir;B.trace(\\\"Dir in recursive render - dir:\\\",i);const s=t.insert(\\\"g\\\").attr(\\\"class\\\",\\\"root\\\");e.nodes()?B.info(\\\"Recursive render XXX\\\",e.nodes()):B.info(\\\"No nodes found for\\\",e),e.edges().length>0&&B.trace(\\\"Recursive edges\\\",e.edge(e.edges()[0]));const a=s.insert(\\\"g\\\").attr(\\\"class\\\",\\\"clusters\\\"),o=s.insert(\\\"g\\\").attr(\\\"class\\\",\\\"edgePaths\\\"),l=s.insert(\\\"g\\\").attr(\\\"class\\\",\\\"edgeLabels\\\"),u=s.insert(\\\"g\\\").attr(\\\"class\\\",\\\"nodes\\\");e.nodes().forEach(function(f){const p=e.node(f);if(n!==void 0){const g=JSON.parse(JSON.stringify(n.clusterData));B.info(\\\"Setting data for cluster XXX (\\\",f,\\\") \\\",g,n),e.setNode(n.id,g),e.parent(f)||(B.trace(\\\"Setting parent\\\",f,n.id),e.setParent(f,n.id,g))}if(B.info(\\\"(Insert) Node XXX\\\"+f+\\\": \\\"+JSON.stringify(e.node(f))),p&&p.clusterNode){B.info(\\\"Cluster identified\\\",f,p.width,e.node(f));const g=Pm(u,p.graph,r,e.node(f)),b=g.elem;Qe(p,b),p.diff=g.diff||0,B.info(\\\"Node bounds (abc123)\\\",f,p,p.width,p.x,p.y),$B(b,p),B.warn(\\\"Recursive render complete \\\",b,p)}else e.children(f).length>0?(B.info(\\\"Cluster - the non recursive path XXX\\\",f,p.id,p,e),B.info(Po(p.id,e)),Te[p.id]={id:Po(p.id,e),node:p}):(B.info(\\\"Node - the non recursive path\\\",f,p.id,p),jB(u,e.node(f),i))}),e.edges().forEach(function(f){const p=e.edge(f.v,f.w,f.name);B.info(\\\"Edge \\\"+f.v+\\\" -> \\\"+f.w+\\\": \\\"+JSON.stringify(f)),B.info(\\\"Edge \\\"+f.v+\\\" -> \\\"+f.w+\\\": \\\",f,\\\" \\\",JSON.stringify(e.edge(f))),B.info(\\\"Fix\\\",Te,\\\"ids:\\\",f.v,f.w,\\\"Translateing: \\\",Te[f.v],Te[f.w]),tI(l,p)}),e.edges().forEach(function(f){B.info(\\\"Edge \\\"+f.v+\\\" -> \\\"+f.w+\\\": \\\"+JSON.stringify(f))}),B.info(\\\"#############################################\\\"),B.info(\\\"### Layout ###\\\"),B.info(\\\"#############################################\\\"),B.info(e),Ea(e),B.info(\\\"Graph after layout:\\\",yi(e));let d=0;return wB(e).forEach(function(f){const p=e.node(f);B.info(\\\"Position \\\"+f+\\\": \\\"+JSON.stringify(e.node(f))),B.info(\\\"Position \\\"+f+\\\": (\\\"+p.x,\\\",\\\"+p.y,\\\") width: \\\",p.width,\\\" height: \\\",p.height),p&&p.clusterNode?Om(p):e.children(f).length>0?(ZB(a,p),Te[p.id].node=p):Om(p)}),e.edges().forEach(function(f){const p=e.edge(f);B.info(\\\"Edge \\\"+f.v+\\\" -> \\\"+f.w+\\\": \\\"+JSON.stringify(p),p);const g=iI(o,f,p,Te,r,e);eI(p,g)}),e.nodes().forEach(function(f){const p=e.node(f);B.info(f,p.type,p.diff),p.type===\\\"group\\\"&&(d=p.diff)}),{elem:s,diff:d}},v0=(t,e,r,n,i)=>{mB(t,r,n,i),XB(),JB(),QB(),xB(),B.warn(\\\"Graph at first:\\\",yi(e)),kB(e),B.warn(\\\"Graph after:\\\",yi(e)),Pm(t,e,n)},Ym=t=>he.sanitizeText(t,$());let Vm={dividerMargin:10,padding:5,textHeight:10};const sI=function(t,e,r,n){const i=Object.keys(t);B.info(\\\"keys:\\\",i),B.info(t),i.forEach(function(s){const a=t[s];let o=\\\"\\\";a.cssClasses.length>0&&(o=o+\\\" \\\"+a.cssClasses.join(\\\" \\\"));const l={labelStyle:\\\"\\\"};let u=a.text!==void 0?a.text:a.id,d=0,f=\\\"\\\";switch(a.type){case\\\"class\\\":f=\\\"class_box\\\";break;default:f=\\\"class_box\\\"}e.setNode(a.id,{labelStyle:l.labelStyle,shape:f,labelText:Ym(u),classData:a,rx:d,ry:d,class:o,style:l.style,id:a.id,domId:a.domId,tooltip:n.db.getTooltip(a.id)||\\\"\\\",haveCallback:a.haveCallback,link:a.link,width:a.type===\\\"group\\\"?500:void 0,type:a.type,padding:$().flowchart.padding}),B.info(\\\"setNode\\\",{labelStyle:l.labelStyle,shape:f,labelText:u,rx:d,ry:d,class:o,style:l.style,id:a.id,width:a.type===\\\"group\\\"?500:void 0,type:a.type,padding:$().flowchart.padding})})},aI=function(t,e,r,n){B.info(t),t.forEach(function(i,s){const a=i;let o=\\\"\\\";const l={labelStyle:\\\"\\\",style:\\\"\\\"};let u=a.text,d=0,f=\\\"note\\\";if(e.setNode(a.id,{labelStyle:l.labelStyle,shape:f,labelText:Ym(u),noteData:a,rx:d,ry:d,class:o,style:l.style,id:a.id,domId:a.id,tooltip:\\\"\\\",type:\\\"note\\\",padding:$().flowchart.padding}),B.info(\\\"setNode\\\",{labelStyle:l.labelStyle,shape:f,labelText:u,rx:d,ry:d,style:l.style,id:a.id,type:\\\"note\\\",padding:$().flowchart.padding}),!a.class||!(a.class in n))return;const p=r+s,g={};g.classes=\\\"relation\\\",g.pattern=\\\"dotted\\\",g.id=`edgeNote${p}`,g.arrowhead=\\\"none\\\",B.info(`Note edge: ${JSON.stringify(g)}, ${JSON.stringify(a)}`),g.startLabelRight=\\\"\\\",g.endLabelLeft=\\\"\\\",g.arrowTypeStart=\\\"none\\\",g.arrowTypeEnd=\\\"none\\\";let b=\\\"fill:none\\\",k=\\\"\\\";g.style=b,g.labelStyle=k,g.curve=bn(Vm.curve,Hr),e.setEdge(a.id,a.class,g,p)})},oI=function(t,e){const r=$().flowchart;let n=0;t.forEach(function(i){n++;const s={};s.classes=\\\"relation\\\",s.pattern=i.relation.lineType==1?\\\"dashed\\\":\\\"solid\\\",s.id=\\\"id\\\"+n,i.type===\\\"arrow_open\\\"?s.arrowhead=\\\"none\\\":s.arrowhead=\\\"normal\\\",B.info(s,i),s.startLabelRight=i.relationTitle1===\\\"none\\\"?\\\"\\\":i.relationTitle1,s.endLabelLeft=i.relationTitle2===\\\"none\\\"?\\\"\\\":i.relationTitle2,s.arrowTypeStart=Um(i.relation.type1),s.arrowTypeEnd=Um(i.relation.type2);let a=\\\"\\\",o=\\\"\\\";if(i.style!==void 0){const l=Vi(i.style);a=l.style,o=l.labelStyle}else a=\\\"fill:none\\\";s.style=a,s.labelStyle=o,i.interpolate!==void 0?s.curve=bn(i.interpolate,Hr):t.defaultInterpolate!==void 0?s.curve=bn(t.defaultInterpolate,Hr):s.curve=bn(r.curve,Hr),i.text=i.title,i.text===void 0?i.style!==void 0&&(s.arrowheadStyle=\\\"fill: #333\\\"):(s.arrowheadStyle=\\\"fill: #333\\\",s.labelpos=\\\"c\\\",$().flowchart.htmlLabels?(s.labelType=\\\"html\\\",s.label='\u003Cspan class=\\\"edgeLabel\\\">'+i.text+\\\"\u003C/span>\\\"):(s.labelType=\\\"text\\\",s.label=i.text.replace(he.lineBreakRegex,`\\n`),i.style===void 0&&(s.style=s.style||\\\"stroke: #333; stroke-width: 1.5px;fill:none\\\"),s.labelStyle=s.labelStyle.replace(\\\"color:\\\",\\\"fill:\\\"))),e.setEdge(i.id1,i.id2,s,n)})},lI=function(t){Object.keys(t).forEach(function(r){Vm[r]=t[r]})},cI=function(t,e,r,n){B.info(\\\"Drawing class - \\\",e);const i=$().flowchart,s=$().securityLevel;B.info(\\\"config:\\\",i);const a=i.nodeSpacing||50,o=i.rankSpacing||50,l=new sr({multigraph:!0,compound:!0}).setGraph({rankdir:n.db.getDirection(),nodesep:a,ranksep:o,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),u=n.db.getClasses(),d=n.db.getRelations(),f=n.db.getNotes();B.info(d),sI(u,l,e,n),oI(d,l),aI(f,l,d.length+1,u);let p;s===\\\"sandbox\\\"&&(p=St(\\\"#i\\\"+e));const g=St(s===\\\"sandbox\\\"?p.nodes()[0].contentDocument.body:\\\"body\\\"),b=g.select(`[id=\\\"${e}\\\"]`),k=g.select(\\\"#\\\"+e+\\\" g\\\");if(v0(k,l,[\\\"aggregation\\\",\\\"extension\\\",\\\"composition\\\",\\\"dependency\\\",\\\"lollipop\\\"],\\\"classDiagram\\\",e),ge.insertTitle(b,\\\"classTitleText\\\",i.titleTopMargin,n.db.getDiagramTitle()),Sc(l,b,i.diagramPadding,i.useMaxWidth),!i.htmlLabels){const T=s===\\\"sandbox\\\"?p.nodes()[0].contentDocument:document,L=T.querySelectorAll('[id=\\\"'+e+'\\\"] .edgeLabel .label');for(const E of L){const I=E.getBBox(),V=T.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"rect\\\");V.setAttribute(\\\"rx\\\",0),V.setAttribute(\\\"ry\\\",0),V.setAttribute(\\\"width\\\",I.width),V.setAttribute(\\\"height\\\",I.height),E.insertBefore(V,E.firstChild)}}};function Um(t){let e;switch(t){case 0:e=\\\"aggregation\\\";break;case 1:e=\\\"extension\\\";break;case 2:e=\\\"composition\\\";break;case 3:e=\\\"dependency\\\";break;case 4:e=\\\"lollipop\\\";break;default:e=\\\"none\\\"}return e}const uI={setConf:lI,draw:cI};var k0=function(){var t=function(N,D,w,v){for(w=w||{},v=N.length;v--;w[N[v]]=D);return w},e=[1,2],r=[1,5],n=[6,9,11,23,25,27,29,30,31,49],i=[1,17],s=[1,18],a=[1,19],o=[1,20],l=[1,21],u=[1,22],d=[1,25],f=[1,30],p=[1,31],g=[1,32],b=[1,33],k=[6,9,11,15,20,23,25,27,29,30,31,42,43,44,45,49],T=[1,45],L=[30,31,46,47],E=[4,6,9,11,23,25,27,29,30,31,49],I=[42,43,44,45],V=[22,37],H=[1,64],G={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,\\\":\\\":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyType:35,attributeComment:36,ATTRIBUTE_WORD:37,ATTRIBUTE_KEY:38,COMMENT:39,cardinality:40,relType:41,ZERO_OR_ONE:42,ZERO_OR_MORE:43,ONE_OR_MORE:44,ONLY_ONE:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,open_directive:49,type_directive:50,arg_directive:51,close_directive:52,$accept:0,$end:1},terminals_:{2:\\\"error\\\",4:\\\"ER_DIAGRAM\\\",6:\\\"EOF\\\",9:\\\"SPACE\\\",11:\\\"NEWLINE\\\",15:\\\":\\\",20:\\\"BLOCK_START\\\",22:\\\"BLOCK_STOP\\\",23:\\\"title\\\",24:\\\"title_value\\\",25:\\\"acc_title\\\",26:\\\"acc_title_value\\\",27:\\\"acc_descr\\\",28:\\\"acc_descr_value\\\",29:\\\"acc_descr_multiline_value\\\",30:\\\"ALPHANUM\\\",31:\\\"ENTITY_NAME\\\",37:\\\"ATTRIBUTE_WORD\\\",38:\\\"ATTRIBUTE_KEY\\\",39:\\\"COMMENT\\\",42:\\\"ZERO_OR_ONE\\\",43:\\\"ZERO_OR_MORE\\\",44:\\\"ONE_OR_MORE\\\",45:\\\"ONLY_ONE\\\",46:\\\"NON_IDENTIFYING\\\",47:\\\"IDENTIFYING\\\",48:\\\"WORD\\\",49:\\\"open_directive\\\",50:\\\"type_directive\\\",51:\\\"arg_directive\\\",52:\\\"close_directive\\\"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[36,1],[18,3],[40,1],[40,1],[40,1],[40,1],[41,1],[41,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(D,w,v,M,m,Q,x){var ct=Q.length-1;switch(m){case 1:break;case 3:this.$=[];break;case 4:Q[ct-1].push(Q[ct]),this.$=Q[ct-1];break;case 5:case 6:this.$=Q[ct];break;case 7:case 8:this.$=[];break;case 12:M.addEntity(Q[ct-4]),M.addEntity(Q[ct-2]),M.addRelationship(Q[ct-4],Q[ct],Q[ct-2],Q[ct-3]);break;case 13:M.addEntity(Q[ct-3]),M.addAttributes(Q[ct-3],Q[ct-1]);break;case 14:M.addEntity(Q[ct-2]);break;case 15:M.addEntity(Q[ct]);break;case 16:case 17:this.$=Q[ct].trim(),M.setAccTitle(this.$);break;case 18:case 19:this.$=Q[ct].trim(),M.setAccDescription(this.$);break;case 20:case 41:this.$=Q[ct];break;case 21:case 39:case 40:this.$=Q[ct].replace(/\\\"/g,\\\"\\\");break;case 22:this.$=[Q[ct]];break;case 23:Q[ct].push(Q[ct-1]),this.$=Q[ct];break;case 24:this.$={attributeType:Q[ct-1],attributeName:Q[ct]};break;case 25:this.$={attributeType:Q[ct-2],attributeName:Q[ct-1],attributeKeyType:Q[ct]};break;case 26:this.$={attributeType:Q[ct-2],attributeName:Q[ct-1],attributeComment:Q[ct]};break;case 27:this.$={attributeType:Q[ct-3],attributeName:Q[ct-2],attributeKeyType:Q[ct-1],attributeComment:Q[ct]};break;case 28:case 29:case 30:this.$=Q[ct];break;case 31:this.$=Q[ct].replace(/\\\"/g,\\\"\\\");break;case 32:this.$={cardA:Q[ct],relType:Q[ct-1],cardB:Q[ct-2]};break;case 33:this.$=M.Cardinality.ZERO_OR_ONE;break;case 34:this.$=M.Cardinality.ZERO_OR_MORE;break;case 35:this.$=M.Cardinality.ONE_OR_MORE;break;case 36:this.$=M.Cardinality.ONLY_ONE;break;case 37:this.$=M.Identification.NON_IDENTIFYING;break;case 38:this.$=M.Identification.IDENTIFYING;break;case 42:M.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 43:M.parseDirective(Q[ct],\\\"type_directive\\\");break;case 44:Q[ct]=Q[ct].trim().replace(/'/g,'\\\"'),M.parseDirective(Q[ct],\\\"arg_directive\\\");break;case 45:M.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"er\\\");break}},table:[{3:1,4:e,7:3,12:4,49:r},{1:[3]},t(n,[2,3],{5:6}),{3:7,4:e,7:3,12:4,49:r},{13:8,50:[1,9]},{50:[2,42]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:i,25:s,27:a,29:o,30:l,31:u,49:r},{1:[2,2]},{14:23,15:[1,24],52:d},t([15,52],[2,43]),t(n,[2,8],{1:[2,1]}),t(n,[2,4]),{7:15,10:26,12:4,17:16,23:i,25:s,27:a,29:o,30:l,31:u,49:r},t(n,[2,6]),t(n,[2,7]),t(n,[2,11]),t(n,[2,15],{18:27,40:29,20:[1,28],42:f,43:p,44:g,45:b}),{24:[1,34]},{26:[1,35]},{28:[1,36]},t(n,[2,19]),t(k,[2,20]),t(k,[2,21]),{11:[1,37]},{16:38,51:[1,39]},{11:[2,45]},t(n,[2,5]),{17:40,30:l,31:u},{21:41,22:[1,42],32:43,33:44,37:T},{41:46,46:[1,47],47:[1,48]},t(L,[2,33]),t(L,[2,34]),t(L,[2,35]),t(L,[2,36]),t(n,[2,16]),t(n,[2,17]),t(n,[2,18]),t(E,[2,9]),{14:49,52:d},{52:[2,44]},{15:[1,50]},{22:[1,51]},t(n,[2,14]),{21:52,22:[2,22],32:43,33:44,37:T},{34:53,37:[1,54]},{37:[2,28]},{40:55,42:f,43:p,44:g,45:b},t(I,[2,37]),t(I,[2,38]),{11:[1,56]},{19:57,30:[1,60],31:[1,59],48:[1,58]},t(n,[2,13]),{22:[2,23]},t(V,[2,24],{35:61,36:62,38:[1,63],39:H}),t([22,37,38,39],[2,29]),t([30,31],[2,32]),t(E,[2,10]),t(n,[2,12]),t(n,[2,39]),t(n,[2,40]),t(n,[2,41]),t(V,[2,25],{36:65,39:H}),t(V,[2,26]),t([22,37,39],[2,30]),t(V,[2,31]),t(V,[2,27])],defaultActions:{5:[2,42],7:[2,2],25:[2,45],39:[2,44],45:[2,28],52:[2,23]},parseError:function(D,w){if(w.recoverable)this.trace(D);else{var v=new Error(D);throw v.hash=w,v}},parse:function(D){var w=this,v=[0],M=[],m=[null],Q=[],x=this.table,ct=\\\"\\\",Dt=0,kt=0,j=2,ot=1,rt=Q.slice.call(arguments,1),nt=Object.create(this.lexer),ut={yy:{}};for(var _t in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_t)&&(ut.yy[_t]=this.yy[_t]);nt.setInput(D,ut.yy),ut.yy.lexer=nt,ut.yy.parser=this,typeof nt.yylloc>\\\"u\\\"&&(nt.yylloc={});var K=nt.yylloc;Q.push(K);var Ot=nt.options&&nt.options.ranges;typeof ut.yy.parseError==\\\"function\\\"?this.parseError=ut.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function P(){var et;return et=M.pop()||nt.lex()||ot,typeof et!=\\\"number\\\"&&(et instanceof Array&&(M=et,et=M.pop()),et=w.symbols_[et]||et),et}for(var z,X,F,O,A={},J,C,ht,U;;){if(X=v[v.length-1],this.defaultActions[X]?F=this.defaultActions[X]:((z===null||typeof z>\\\"u\\\")&&(z=P()),F=x[X]&&x[X][z]),typeof F>\\\"u\\\"||!F.length||!F[0]){var Yt=\\\"\\\";U=[];for(J in x[X])this.terminals_[J]&&J>j&&U.push(\\\"'\\\"+this.terminals_[J]+\\\"'\\\");nt.showPosition?Yt=\\\"Parse error on line \\\"+(Dt+1)+`:\\n`+nt.showPosition()+`\\nExpecting `+U.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[z]||z)+\\\"'\\\":Yt=\\\"Parse error on line \\\"+(Dt+1)+\\\": Unexpected \\\"+(z==ot?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[z]||z)+\\\"'\\\"),this.parseError(Yt,{text:nt.match,token:this.terminals_[z]||z,line:nt.yylineno,loc:K,expected:U})}if(F[0]instanceof Array&&F.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+X+\\\", token: \\\"+z);switch(F[0]){case 1:v.push(z),m.push(nt.yytext),Q.push(nt.yylloc),v.push(F[1]),z=null,kt=nt.yyleng,ct=nt.yytext,Dt=nt.yylineno,K=nt.yylloc;break;case 2:if(C=this.productions_[F[1]][1],A.$=m[m.length-C],A._$={first_line:Q[Q.length-(C||1)].first_line,last_line:Q[Q.length-1].last_line,first_column:Q[Q.length-(C||1)].first_column,last_column:Q[Q.length-1].last_column},Ot&&(A._$.range=[Q[Q.length-(C||1)].range[0],Q[Q.length-1].range[1]]),O=this.performAction.apply(A,[ct,kt,Dt,ut.yy,F[1],m,Q].concat(rt)),typeof O\u003C\\\"u\\\")return O;C&&(v=v.slice(0,-1*C*2),m=m.slice(0,-1*C),Q=Q.slice(0,-1*C)),v.push(this.productions_[F[1]][0]),m.push(A.$),Q.push(A._$),ht=x[v[v.length-2]][v[v.length-1]],v.push(ht);break;case 3:return!0}}return!0}},Y=function(){var N={EOF:1,parseError:function(w,v){if(this.yy.parser)this.yy.parser.parseError(w,v);else throw new Error(w)},setInput:function(D,w){return this.yy=w||this.yy||{},this._input=D,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var D=this._input[0];this.yytext+=D,this.yyleng++,this.offset++,this.match+=D,this.matched+=D;var w=D.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return w?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),D},unput:function(D){var w=D.length,v=D.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=D+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var M=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),v.length-1&&(this.yylineno-=v.length-1);var m=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:v?(v.length===M.length?this.yylloc.first_column:0)+M[M.length-v.length].length-v[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[m[0],m[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(D){this.unput(this.match.slice(D))},pastInput:function(){var D=this.matched.substr(0,this.matched.length-this.match.length);return(D.length>20?\\\"...\\\":\\\"\\\")+D.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var D=this.match;return D.length\u003C20&&(D+=this._input.substr(0,20-D.length)),(D.substr(0,20)+(D.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var D=this.pastInput(),w=new Array(D.length+1).join(\\\"-\\\");return D+this.upcomingInput()+`\\n`+w+\\\"^\\\"},test_match:function(D,w){var v,M,m;if(this.options.backtrack_lexer&&(m={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(m.yylloc.range=this.yylloc.range.slice(0))),M=D[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),M&&(this.yylineno+=M.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:M?M[M.length-1].length-M[M.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+D[0].length},this.yytext+=D[0],this.match+=D[0],this.matches=D,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(D[0].length),this.matched+=D[0],v=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),v)return v;if(this._backtrack){for(var Q in m)this[Q]=m[Q];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var D,w,v,M;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var m=this._currentRules(),Q=0;Q\u003Cm.length;Q++)if(v=this._input.match(this.rules[m[Q]]),v&&(!w||v[0].length>w[0].length)){if(w=v,M=Q,this.options.backtrack_lexer){if(D=this.test_match(v,m[Q]),D!==!1)return D;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(D=this.test_match(w,m[M]),D!==!1?D:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var w=this.next();return w||this.lex()},begin:function(w){this.conditionStack.push(w)},popState:function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:\\\"INITIAL\\\"},pushState:function(w){this.begin(w)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(w,v,M,m){switch(M){case 0:return this.begin(\\\"acc_title\\\"),25;case 1:return this.popState(),\\\"acc_title_value\\\";case 2:return this.begin(\\\"acc_descr\\\"),27;case 3:return this.popState(),\\\"acc_descr_value\\\";case 4:this.begin(\\\"acc_descr_multiline\\\");break;case 5:this.popState();break;case 6:return\\\"acc_descr_multiline_value\\\";case 7:return this.begin(\\\"open_directive\\\"),49;case 8:return this.begin(\\\"type_directive\\\"),50;case 9:return this.popState(),this.begin(\\\"arg_directive\\\"),15;case 10:return this.popState(),this.popState(),52;case 11:return 51;case 12:break;case 13:break;case 14:return 11;case 15:break;case 16:return 9;case 17:return 31;case 18:return 48;case 19:return 4;case 20:return this.begin(\\\"block\\\"),20;case 21:break;case 22:return 38;case 23:return 37;case 24:return 37;case 25:return 39;case 26:break;case 27:return this.popState(),22;case 28:return v.yytext[0];case 29:return 42;case 30:return 44;case 31:return 44;case 32:return 44;case 33:return 42;case 34:return 42;case 35:return 43;case 36:return 43;case 37:return 43;case 38:return 43;case 39:return 43;case 40:return 44;case 41:return 43;case 42:return 44;case 43:return 45;case 44:return 45;case 45:return 45;case 46:return 45;case 47:return 42;case 48:return 43;case 49:return 44;case 50:return 46;case 51:return 47;case 52:return 47;case 53:return 46;case 54:return 46;case 55:return 46;case 56:return 30;case 57:return v.yytext[0];case 58:return 6}},rules:[/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:%(?!\\\\{)[^\\\\n]*)/i,/^(?:[^\\\\}]%%[^\\\\n]*)/i,/^(?:[\\\\n]+)/i,/^(?:\\\\s+)/i,/^(?:[\\\\s]+)/i,/^(?:\\\"[^\\\"%\\\\r\\\\n\\\\v\\\\b\\\\\\\\]+\\\")/i,/^(?:\\\"[^\\\"]*\\\")/i,/^(?:erDiagram\\\\b)/i,/^(?:\\\\{)/i,/^(?:\\\\s+)/i,/^(?:\\\\b((?:PK)|(?:FK))\\\\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[A-Za-z][A-Za-z0-9\\\\-_\\\\[\\\\]]*)/i,/^(?:\\\"[^\\\"]*\\\")/i,/^(?:[\\\\n]+)/i,/^(?:\\\\})/i,/^(?:.)/i,/^(?:one or zero\\\\b)/i,/^(?:one or more\\\\b)/i,/^(?:one or many\\\\b)/i,/^(?:1\\\\+)/i,/^(?:\\\\|o\\\\b)/i,/^(?:zero or one\\\\b)/i,/^(?:zero or more\\\\b)/i,/^(?:zero or many\\\\b)/i,/^(?:0\\\\+)/i,/^(?:\\\\}o\\\\b)/i,/^(?:many\\\\(0\\\\))/i,/^(?:many\\\\(1\\\\))/i,/^(?:many\\\\b)/i,/^(?:\\\\}\\\\|)/i,/^(?:one\\\\b)/i,/^(?:only one\\\\b)/i,/^(?:1\\\\b)/i,/^(?:\\\\|\\\\|)/i,/^(?:o\\\\|)/i,/^(?:o\\\\{)/i,/^(?:\\\\|\\\\{)/i,/^(?:\\\\.\\\\.)/i,/^(?:--)/i,/^(?:to\\\\b)/i,/^(?:optionally to\\\\b)/i,/^(?:\\\\.-)/i,/^(?:-\\\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[21,22,23,24,25,26,27,28],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,19,20,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],inclusive:!0}}};return N}();G.lexer=Y;function W(){this.yy={}}return W.prototype=G,G.Parser=W,new W}();k0.parser=k0;const hI=k0,dI=t=>t.match(/^\\\\s*erDiagram/)!==null;let Vo={},w0=[];const fI={ZERO_OR_ONE:\\\"ZERO_OR_ONE\\\",ZERO_OR_MORE:\\\"ZERO_OR_MORE\\\",ONE_OR_MORE:\\\"ONE_OR_MORE\\\",ONLY_ONE:\\\"ONLY_ONE\\\"},pI={NON_IDENTIFYING:\\\"NON_IDENTIFYING\\\",IDENTIFYING:\\\"IDENTIFYING\\\"},gI=function(t,e,r){ze.parseDirective(this,t,e,r)},zm=function(t){return Vo[t]===void 0&&(Vo[t]={attributes:[]},B.info(\\\"Added new entity :\\\",t)),Vo[t]},yI={Cardinality:fI,Identification:pI,parseDirective:gI,getConfig:()=>$().er,addEntity:zm,addAttributes:function(t,e){let r=zm(t),n;for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),B.debug(\\\"Added attribute \\\",e[n].attributeName)},getEntities:()=>Vo,addRelationship:function(t,e,r,n){let i={entityA:t,roleA:e,entityB:r,relSpec:n};w0.push(i),B.debug(\\\"Added new relationship :\\\",i)},getRelationships:()=>w0,clear:function(){Vo={},w0=[],vn()},setAccTitle:nn,getAccTitle:kn,setAccDescription:wn,getAccDescription:Tn,setDiagramTitle:hi,getDiagramTitle:di},bi={ONLY_ONE_START:\\\"ONLY_ONE_START\\\",ONLY_ONE_END:\\\"ONLY_ONE_END\\\",ZERO_OR_ONE_START:\\\"ZERO_OR_ONE_START\\\",ZERO_OR_ONE_END:\\\"ZERO_OR_ONE_END\\\",ONE_OR_MORE_START:\\\"ONE_OR_MORE_START\\\",ONE_OR_MORE_END:\\\"ONE_OR_MORE_END\\\",ZERO_OR_MORE_START:\\\"ZERO_OR_MORE_START\\\",ZERO_OR_MORE_END:\\\"ZERO_OR_MORE_END\\\"},_i={ERMarkers:bi,insertMarkers:function(t,e){let r;t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ONLY_ONE_START).attr(\\\"refX\\\",0).attr(\\\"refY\\\",9).attr(\\\"markerWidth\\\",18).attr(\\\"markerHeight\\\",18).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M9,0 L9,18 M15,0 L15,18\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ONLY_ONE_END).attr(\\\"refX\\\",18).attr(\\\"refY\\\",9).attr(\\\"markerWidth\\\",18).attr(\\\"markerHeight\\\",18).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M3,0 L3,18 M9,0 L9,18\\\"),r=t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ZERO_OR_ONE_START).attr(\\\"refX\\\",0).attr(\\\"refY\\\",9).attr(\\\"markerWidth\\\",30).attr(\\\"markerHeight\\\",18).attr(\\\"orient\\\",\\\"auto\\\"),r.append(\\\"circle\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"white\\\").attr(\\\"cx\\\",21).attr(\\\"cy\\\",9).attr(\\\"r\\\",6),r.append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M9,0 L9,18\\\"),r=t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ZERO_OR_ONE_END).attr(\\\"refX\\\",30).attr(\\\"refY\\\",9).attr(\\\"markerWidth\\\",30).attr(\\\"markerHeight\\\",18).attr(\\\"orient\\\",\\\"auto\\\"),r.append(\\\"circle\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"white\\\").attr(\\\"cx\\\",9).attr(\\\"cy\\\",9).attr(\\\"r\\\",6),r.append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M21,0 L21,18\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ONE_OR_MORE_START).attr(\\\"refX\\\",18).attr(\\\"refY\\\",18).attr(\\\"markerWidth\\\",45).attr(\\\"markerHeight\\\",36).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\\\"),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ONE_OR_MORE_END).attr(\\\"refX\\\",27).attr(\\\"refY\\\",18).attr(\\\"markerWidth\\\",45).attr(\\\"markerHeight\\\",36).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\\\"),r=t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ZERO_OR_MORE_START).attr(\\\"refX\\\",18).attr(\\\"refY\\\",18).attr(\\\"markerWidth\\\",57).attr(\\\"markerHeight\\\",36).attr(\\\"orient\\\",\\\"auto\\\"),r.append(\\\"circle\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"white\\\").attr(\\\"cx\\\",48).attr(\\\"cy\\\",18).attr(\\\"r\\\",6),r.append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M0,18 Q18,0 36,18 Q18,36 0,18\\\"),r=t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",bi.ZERO_OR_MORE_END).attr(\\\"refX\\\",39).attr(\\\"refY\\\",18).attr(\\\"markerWidth\\\",57).attr(\\\"markerHeight\\\",36).attr(\\\"orient\\\",\\\"auto\\\"),r.append(\\\"circle\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"white\\\").attr(\\\"cx\\\",9).attr(\\\"cy\\\",18).attr(\\\"r\\\",6),r.append(\\\"path\\\").attr(\\\"stroke\\\",e.stroke).attr(\\\"fill\\\",\\\"none\\\").attr(\\\"d\\\",\\\"M21,18 Q39,0 57,18 Q39,36 21,18\\\")}};let yu;const mI=new Uint8Array(16);function bI(){if(!yu&&(yu=typeof crypto\u003C\\\"u\\\"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!yu))throw new Error(\\\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\\\");return yu(mI)}const _r=[];for(let t=0;t\u003C256;++t)_r.push((t+256).toString(16).slice(1));function _I(t,e=0){return(_r[t[e+0]]+_r[t[e+1]]+_r[t[e+2]]+_r[t[e+3]]+\\\"-\\\"+_r[t[e+4]]+_r[t[e+5]]+\\\"-\\\"+_r[t[e+6]]+_r[t[e+7]]+\\\"-\\\"+_r[t[e+8]]+_r[t[e+9]]+\\\"-\\\"+_r[t[e+10]]+_r[t[e+11]]+_r[t[e+12]]+_r[t[e+13]]+_r[t[e+14]]+_r[t[e+15]]).toLowerCase()}const Wm={randomUUID:typeof crypto\u003C\\\"u\\\"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function xI(t,e,r){if(Wm.randomUUID&&!e&&!t)return Wm.randomUUID();t=t||{};const n=t.random||(t.rng||bI)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){r=r||0;for(let i=0;i\u003C16;++i)e[r+i]=n[i];return e}return _I(n)}const vI=/[^\\\\dA-Za-z](\\\\W)*/g;let ur={},Uo=new Map;const kI=function(t){const e=Object.keys(t);for(const r of e)ur[r]=t[r]},wI=(t,e,r)=>{const n=ur.entityPadding/3,i=ur.entityPadding/3,s=ur.fontSize*.85,a=e.node().getBBox(),o=[];let l=!1,u=!1,d=0,f=0,p=0,g=0,b=a.height+n*2,k=1;r.forEach(I=>{I.attributeKeyType!==void 0&&(l=!0),I.attributeComment!==void 0&&(u=!0)}),r.forEach(I=>{const V=`${e.node().id}-attr-${k}`;let H=0;const G=Oi(I.attributeType),Y=t.append(\\\"text\\\").classed(\\\"er entityLabel\\\",!0).attr(\\\"id\\\",`${V}-type`).attr(\\\"x\\\",0).attr(\\\"y\\\",0).style(\\\"dominant-baseline\\\",\\\"middle\\\").style(\\\"text-anchor\\\",\\\"left\\\").style(\\\"font-family\\\",$().fontFamily).style(\\\"font-size\\\",s+\\\"px\\\").text(G),W=t.append(\\\"text\\\").classed(\\\"er entityLabel\\\",!0).attr(\\\"id\\\",`${V}-name`).attr(\\\"x\\\",0).attr(\\\"y\\\",0).style(\\\"dominant-baseline\\\",\\\"middle\\\").style(\\\"text-anchor\\\",\\\"left\\\").style(\\\"font-family\\\",$().fontFamily).style(\\\"font-size\\\",s+\\\"px\\\").text(I.attributeName),N={};N.tn=Y,N.nn=W;const D=Y.node().getBBox(),w=W.node().getBBox();if(d=Math.max(d,D.width),f=Math.max(f,w.width),H=Math.max(D.height,w.height),l){const v=t.append(\\\"text\\\").classed(\\\"er entityLabel\\\",!0).attr(\\\"id\\\",`${V}-key`).attr(\\\"x\\\",0).attr(\\\"y\\\",0).style(\\\"dominant-baseline\\\",\\\"middle\\\").style(\\\"text-anchor\\\",\\\"left\\\").style(\\\"font-family\\\",$().fontFamily).style(\\\"font-size\\\",s+\\\"px\\\").text(I.attributeKeyType||\\\"\\\");N.kn=v;const M=v.node().getBBox();p=Math.max(p,M.width),H=Math.max(H,M.height)}if(u){const v=t.append(\\\"text\\\").classed(\\\"er entityLabel\\\",!0).attr(\\\"id\\\",`${V}-comment`).attr(\\\"x\\\",0).attr(\\\"y\\\",0).style(\\\"dominant-baseline\\\",\\\"middle\\\").style(\\\"text-anchor\\\",\\\"left\\\").style(\\\"font-family\\\",$().fontFamily).style(\\\"font-size\\\",s+\\\"px\\\").text(I.attributeComment||\\\"\\\");N.cn=v;const M=v.node().getBBox();g=Math.max(g,M.width),H=Math.max(H,M.height)}N.height=H,o.push(N),b+=H+n*2,k+=1});let T=4;l&&(T+=2),u&&(T+=2);const L=d+f+p+g,E={width:Math.max(ur.minEntityWidth,Math.max(a.width+ur.entityPadding*2,L+i*T)),height:r.length>0?b:Math.max(ur.minEntityHeight,a.height+ur.entityPadding*2)};if(r.length>0){const I=Math.max(0,(E.width-L-i*T)/(T/2));e.attr(\\\"transform\\\",\\\"translate(\\\"+E.width/2+\\\",\\\"+(n+a.height/2)+\\\")\\\");let V=a.height+n*2,H=\\\"attributeBoxOdd\\\";o.forEach(G=>{const Y=V+n+G.height/2;G.tn.attr(\\\"transform\\\",\\\"translate(\\\"+i+\\\",\\\"+Y+\\\")\\\");const W=t.insert(\\\"rect\\\",\\\"#\\\"+G.tn.node().id).classed(`er ${H}`,!0).attr(\\\"x\\\",0).attr(\\\"y\\\",V).attr(\\\"width\\\",d+i*2+I).attr(\\\"height\\\",G.height+n*2),N=parseFloat(W.attr(\\\"x\\\"))+parseFloat(W.attr(\\\"width\\\"));G.nn.attr(\\\"transform\\\",\\\"translate(\\\"+(N+i)+\\\",\\\"+Y+\\\")\\\");const D=t.insert(\\\"rect\\\",\\\"#\\\"+G.nn.node().id).classed(`er ${H}`,!0).attr(\\\"x\\\",N).attr(\\\"y\\\",V).attr(\\\"width\\\",f+i*2+I).attr(\\\"height\\\",G.height+n*2);let w=parseFloat(D.attr(\\\"x\\\"))+parseFloat(D.attr(\\\"width\\\"));if(l){G.kn.attr(\\\"transform\\\",\\\"translate(\\\"+(w+i)+\\\",\\\"+Y+\\\")\\\");const v=t.insert(\\\"rect\\\",\\\"#\\\"+G.kn.node().id).classed(`er ${H}`,!0).attr(\\\"x\\\",w).attr(\\\"y\\\",V).attr(\\\"width\\\",p+i*2+I).attr(\\\"height\\\",G.height+n*2);w=parseFloat(v.attr(\\\"x\\\"))+parseFloat(v.attr(\\\"width\\\"))}u&&(G.cn.attr(\\\"transform\\\",\\\"translate(\\\"+(w+i)+\\\",\\\"+Y+\\\")\\\"),t.insert(\\\"rect\\\",\\\"#\\\"+G.cn.node().id).classed(`er ${H}`,\\\"true\\\").attr(\\\"x\\\",w).attr(\\\"y\\\",V).attr(\\\"width\\\",g+i*2+I).attr(\\\"height\\\",G.height+n*2)),V+=G.height+n*2,H=H===\\\"attributeBoxOdd\\\"?\\\"attributeBoxEven\\\":\\\"attributeBoxOdd\\\"})}else E.height=Math.max(ur.minEntityHeight,b),e.attr(\\\"transform\\\",\\\"translate(\\\"+E.width/2+\\\",\\\"+E.height/2+\\\")\\\");return E},TI=function(t,e,r){const n=Object.keys(e);let i;return n.forEach(function(s){const a=LI(s,\\\"entity\\\");Uo.set(s,a);const o=t.append(\\\"g\\\").attr(\\\"id\\\",a);i=i===void 0?a:i;const l=\\\"text-\\\"+a,u=o.append(\\\"text\\\").classed(\\\"er entityLabel\\\",!0).attr(\\\"id\\\",l).attr(\\\"x\\\",0).attr(\\\"y\\\",0).style(\\\"dominant-baseline\\\",\\\"middle\\\").style(\\\"text-anchor\\\",\\\"middle\\\").style(\\\"font-family\\\",$().fontFamily).style(\\\"font-size\\\",ur.fontSize+\\\"px\\\").text(s),{width:d,height:f}=wI(o,u,e[s].attributes),g=o.insert(\\\"rect\\\",\\\"#\\\"+l).classed(\\\"er entityBox\\\",!0).attr(\\\"x\\\",0).attr(\\\"y\\\",0).attr(\\\"width\\\",d).attr(\\\"height\\\",f).node().getBBox();r.setNode(a,{width:g.width,height:g.height,shape:\\\"rect\\\",id:a})}),i},EI=function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&t.select(\\\"#\\\"+r).attr(\\\"transform\\\",\\\"translate(\\\"+(e.node(r).x-e.node(r).width/2)+\\\",\\\"+(e.node(r).y-e.node(r).height/2)+\\\" )\\\")})},Hm=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\\\\s/g,\\\"\\\")},CI=function(t,e){return t.forEach(function(r){e.setEdge(Uo.get(r.entityA),Uo.get(r.entityB),{relationship:r},Hm(r))}),t};let Gm=0;const SI=function(t,e,r,n,i){Gm++;const s=r.edge(Uo.get(e.entityA),Uo.get(e.entityB),Hm(e)),a=Js().x(function(b){return b.x}).y(function(b){return b.y}).curve(ta),o=t.insert(\\\"path\\\",\\\"#\\\"+n).classed(\\\"er relationshipLine\\\",!0).attr(\\\"d\\\",a(s.points)).style(\\\"stroke\\\",ur.stroke).style(\\\"fill\\\",\\\"none\\\");e.relSpec.relType===i.db.Identification.NON_IDENTIFYING&&o.attr(\\\"stroke-dasharray\\\",\\\"8,8\\\");let l=\\\"\\\";switch(ur.arrowMarkerAbsolute&&(l=window.location.protocol+\\\"//\\\"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\\\\(/g,\\\"\\\\\\\\(\\\"),l=l.replace(/\\\\)/g,\\\"\\\\\\\\)\\\")),e.relSpec.cardA){case i.db.Cardinality.ZERO_OR_ONE:o.attr(\\\"marker-end\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ZERO_OR_ONE_END+\\\")\\\");break;case i.db.Cardinality.ZERO_OR_MORE:o.attr(\\\"marker-end\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ZERO_OR_MORE_END+\\\")\\\");break;case i.db.Cardinality.ONE_OR_MORE:o.attr(\\\"marker-end\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ONE_OR_MORE_END+\\\")\\\");break;case i.db.Cardinality.ONLY_ONE:o.attr(\\\"marker-end\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ONLY_ONE_END+\\\")\\\");break}switch(e.relSpec.cardB){case i.db.Cardinality.ZERO_OR_ONE:o.attr(\\\"marker-start\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ZERO_OR_ONE_START+\\\")\\\");break;case i.db.Cardinality.ZERO_OR_MORE:o.attr(\\\"marker-start\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ZERO_OR_MORE_START+\\\")\\\");break;case i.db.Cardinality.ONE_OR_MORE:o.attr(\\\"marker-start\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ONE_OR_MORE_START+\\\")\\\");break;case i.db.Cardinality.ONLY_ONE:o.attr(\\\"marker-start\\\",\\\"url(\\\"+l+\\\"#\\\"+_i.ERMarkers.ONLY_ONE_START+\\\")\\\");break}const u=o.node().getTotalLength(),d=o.node().getPointAtLength(u*.5),f=\\\"rel\\\"+Gm,g=t.append(\\\"text\\\").classed(\\\"er relationshipLabel\\\",!0).attr(\\\"id\\\",f).attr(\\\"x\\\",d.x).attr(\\\"y\\\",d.y).style(\\\"text-anchor\\\",\\\"middle\\\").style(\\\"dominant-baseline\\\",\\\"middle\\\").style(\\\"font-family\\\",$().fontFamily).style(\\\"font-size\\\",ur.fontSize+\\\"px\\\").text(e.roleA).node().getBBox();t.insert(\\\"rect\\\",\\\"#\\\"+f).classed(\\\"er relationshipLabelBox\\\",!0).attr(\\\"x\\\",d.x-g.width/2).attr(\\\"y\\\",d.y-g.height/2).attr(\\\"width\\\",g.width).attr(\\\"height\\\",g.height)},AI=function(t,e,r,n){ur=$().er,B.info(\\\"Drawing ER diagram\\\");const i=$().securityLevel;let s;i===\\\"sandbox\\\"&&(s=St(\\\"#i\\\"+e));const o=St(i===\\\"sandbox\\\"?s.nodes()[0].contentDocument.body:\\\"body\\\").select(`[id='${e}']`);_i.insertMarkers(o,ur);let l;l=new sr({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:ur.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const u=TI(o,n.db.getEntities(),l),d=CI(n.db.getRelationships(),l);Ea(l),EI(o,l),d.forEach(function(k){SI(o,k,l,u,n)});const f=ur.diagramPadding;ge.insertTitle(o,\\\"entityTitleText\\\",ur.titleTopMargin,n.db.getDiagramTitle());const p=o.node().getBBox(),g=p.width+f*2,b=p.height+f*2;xn(o,b,g,ur.useMaxWidth),o.attr(\\\"viewBox\\\",`${p.x-f} ${p.y-f} ${g} ${b}`)};function LI(t=\\\"\\\",e=\\\"\\\"){const r=t.replace(vI,\\\"\\\");return`${qm(e)}${qm(r)}${xI()}`}function qm(t=\\\"\\\"){return t.length>0?`${t}-`:\\\"\\\"}const DI={setConf:kI,draw:AI};var T0=function(){var t=function(zr,qt,te,oe){for(te=te||{},oe=zr.length;oe--;te[zr[oe]]=qt);return te},e=[1,9],r=[1,7],n=[1,6],i=[1,8],s=[1,20,21,22,23,38,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],a=[2,10],o=[1,20],l=[1,21],u=[1,22],d=[1,23],f=[1,30],p=[1,32],g=[1,33],b=[1,34],k=[1,62],T=[1,48],L=[1,52],E=[1,36],I=[1,37],V=[1,38],H=[1,39],G=[1,40],Y=[1,56],W=[1,63],N=[1,51],D=[1,53],w=[1,55],v=[1,59],M=[1,60],m=[1,41],Q=[1,42],x=[1,43],ct=[1,44],Dt=[1,61],kt=[1,50],j=[1,54],ot=[1,57],rt=[1,58],nt=[1,49],ut=[1,66],_t=[1,71],K=[1,20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],Ot=[1,75],P=[1,74],z=[1,76],X=[20,21,23,81,82],F=[1,99],O=[1,104],A=[1,107],J=[1,108],C=[1,101],ht=[1,106],U=[1,109],Yt=[1,102],et=[1,114],Mt=[1,113],Tt=[1,103],gt=[1,105],Et=[1,110],wt=[1,111],pt=[1,112],st=[1,115],le=[20,21,22,23,81,82],Xt=[20,21,22,23,53,81,82],jt=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],Kt=[20,21,23],Gt=[20,21,23,52,66,67,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],Ee=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],Ht=[52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],Vt=[1,149],Ft=[1,157],xt=[1,158],ft=[1,159],Lt=[1,160],bt=[1,144],Ut=[1,145],at=[1,141],ie=[1,152],dt=[1,153],ee=[1,154],fe=[1,155],be=[1,156],_e=[1,161],ke=[1,162],$t=[1,147],se=[1,150],ye=[1,146],Jt=[1,143],Nn=[20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],Xr=[1,165],De=[20,21,22,23,26,52,66,67,91,105,106,109,111,112,122,123,124,125,126,127],ae=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,86,87,88,89,90,91,92,95,105,106,109,111,112,113,114,122,123,124,125,126,127],Be=[12,21,22,24],Re=[22,106],Pe=[1,250],Ye=[1,245],Ie=[1,246],$e=[1,254],ar=[1,251],zt=[1,248],Z=[1,247],At=[1,249],Nt=[1,252],pe=[1,253],Me=[1,255],Le=[1,273],We=[20,21,23,106],ve=[20,21,22,23,66,67,86,102,105,106,109,110,111,112,113],Ne={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,\\\":\\\":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,\\\"(-\\\":59,\\\"-)\\\":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,keywords:85,STYLE:86,LINKSTYLE:87,CLASSDEF:88,CLASS:89,CLICK:90,DOWN:91,UP:92,textNoTags:93,textNoTagsToken:94,DEFAULT:95,stylesOpt:96,alphaNum:97,CALLBACKNAME:98,CALLBACKARGS:99,HREF:100,LINK_TARGET:101,HEX:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,MINUS:109,UNIT:110,BRKT:111,DOT:112,PCT:113,TAGSTART:114,alphaNumToken:115,idStringToken:116,alphaNumStatement:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,PUNCTUATION:122,UNICODE_TEXT:123,PLUS:124,EQUALS:125,MULT:126,UNDERSCORE:127,graphCodeTokens:128,ARROW_CROSS:129,ARROW_POINT:130,ARROW_CIRCLE:131,ARROW_OPEN:132,QUOTE:133,$accept:0,$end:1},terminals_:{2:\\\"error\\\",10:\\\":\\\",12:\\\"open_directive\\\",13:\\\"type_directive\\\",14:\\\"arg_directive\\\",15:\\\"close_directive\\\",20:\\\"SEMI\\\",21:\\\"NEWLINE\\\",22:\\\"SPACE\\\",23:\\\"EOF\\\",24:\\\"GRAPH\\\",25:\\\"NODIR\\\",26:\\\"DIR\\\",38:\\\"subgraph\\\",40:\\\"SQS\\\",41:\\\"SQE\\\",42:\\\"end\\\",44:\\\"acc_title\\\",45:\\\"acc_title_value\\\",46:\\\"acc_descr\\\",47:\\\"acc_descr_value\\\",48:\\\"acc_descr_multiline_value\\\",52:\\\"AMP\\\",53:\\\"STYLE_SEPARATOR\\\",55:\\\"DOUBLECIRCLESTART\\\",56:\\\"DOUBLECIRCLEEND\\\",57:\\\"PS\\\",58:\\\"PE\\\",59:\\\"(-\\\",60:\\\"-)\\\",61:\\\"STADIUMSTART\\\",62:\\\"STADIUMEND\\\",63:\\\"SUBROUTINESTART\\\",64:\\\"SUBROUTINEEND\\\",65:\\\"VERTEX_WITH_PROPS_START\\\",66:\\\"ALPHA\\\",67:\\\"COLON\\\",68:\\\"PIPE\\\",69:\\\"CYLINDERSTART\\\",70:\\\"CYLINDEREND\\\",71:\\\"DIAMOND_START\\\",72:\\\"DIAMOND_STOP\\\",73:\\\"TAGEND\\\",74:\\\"TRAPSTART\\\",75:\\\"TRAPEND\\\",76:\\\"INVTRAPSTART\\\",77:\\\"INVTRAPEND\\\",80:\\\"TESTSTR\\\",81:\\\"START_LINK\\\",82:\\\"LINK\\\",84:\\\"STR\\\",86:\\\"STYLE\\\",87:\\\"LINKSTYLE\\\",88:\\\"CLASSDEF\\\",89:\\\"CLASS\\\",90:\\\"CLICK\\\",91:\\\"DOWN\\\",92:\\\"UP\\\",95:\\\"DEFAULT\\\",98:\\\"CALLBACKNAME\\\",99:\\\"CALLBACKARGS\\\",100:\\\"HREF\\\",101:\\\"LINK_TARGET\\\",102:\\\"HEX\\\",104:\\\"INTERPOLATE\\\",105:\\\"NUM\\\",106:\\\"COMMA\\\",109:\\\"MINUS\\\",110:\\\"UNIT\\\",111:\\\"BRKT\\\",112:\\\"DOT\\\",113:\\\"PCT\\\",114:\\\"TAGSTART\\\",118:\\\"direction_tb\\\",119:\\\"direction_bt\\\",120:\\\"direction_rl\\\",121:\\\"direction_lr\\\",122:\\\"PUNCTUATION\\\",123:\\\"UNICODE_TEXT\\\",124:\\\"PLUS\\\",125:\\\"EQUALS\\\",126:\\\"MULT\\\",127:\\\"UNDERSCORE\\\",129:\\\"ARROW_CROSS\\\",130:\\\"ARROW_POINT\\\",131:\\\"ARROW_CIRCLE\\\",132:\\\"ARROW_OPEN\\\",133:\\\"QUOTE\\\"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[93,1],[93,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[103,1],[103,3],[96,1],[96,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[94,1],[94,1],[94,1],[94,1],[54,1],[54,2],[97,1],[97,2],[117,1],[117,1],[117,1],[117,1],[43,1],[43,1],[43,1],[43,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1]],performAction:function(qt,te,oe,Rt,Ve,q,Is){var tt=q.length-1;switch(Ve){case 5:Rt.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 6:Rt.parseDirective(q[tt],\\\"type_directive\\\");break;case 7:q[tt]=q[tt].trim().replace(/'/g,'\\\"'),Rt.parseDirective(q[tt],\\\"arg_directive\\\");break;case 8:Rt.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"flowchart\\\");break;case 10:this.$=[];break;case 11:(!Array.isArray(q[tt])||q[tt].length>0)&&q[tt-1].push(q[tt]),this.$=q[tt-1];break;case 12:case 82:case 84:case 96:case 152:case 154:case 155:this.$=q[tt];break;case 19:Rt.setDirection(\\\"TB\\\"),this.$=\\\"TB\\\";break;case 20:Rt.setDirection(q[tt-1]),this.$=q[tt-1];break;case 35:this.$=q[tt-1].nodes;break;case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 41:this.$=Rt.addSubGraph(q[tt-6],q[tt-1],q[tt-4]);break;case 42:this.$=Rt.addSubGraph(q[tt-3],q[tt-1],q[tt-3]);break;case 43:this.$=Rt.addSubGraph(void 0,q[tt-1],void 0);break;case 45:this.$=q[tt].trim(),Rt.setAccTitle(this.$);break;case 46:case 47:this.$=q[tt].trim(),Rt.setAccDescription(this.$);break;case 51:Rt.addLink(q[tt-2].stmt,q[tt],q[tt-1]),this.$={stmt:q[tt],nodes:q[tt].concat(q[tt-2].nodes)};break;case 52:Rt.addLink(q[tt-3].stmt,q[tt-1],q[tt-2]),this.$={stmt:q[tt-1],nodes:q[tt-1].concat(q[tt-3].nodes)};break;case 53:this.$={stmt:q[tt-1],nodes:q[tt-1]};break;case 54:this.$={stmt:q[tt],nodes:q[tt]};break;case 55:this.$=[q[tt]];break;case 56:this.$=q[tt-4].concat(q[tt]);break;case 57:this.$=[q[tt-2]],Rt.setClass(q[tt-2],q[tt]);break;case 58:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"square\\\");break;case 59:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"doublecircle\\\");break;case 60:this.$=q[tt-5],Rt.addVertex(q[tt-5],q[tt-2],\\\"circle\\\");break;case 61:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"ellipse\\\");break;case 62:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"stadium\\\");break;case 63:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"subroutine\\\");break;case 64:this.$=q[tt-7],Rt.addVertex(q[tt-7],q[tt-1],\\\"rect\\\",void 0,void 0,void 0,Object.fromEntries([[q[tt-5],q[tt-3]]]));break;case 65:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"cylinder\\\");break;case 66:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"round\\\");break;case 67:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"diamond\\\");break;case 68:this.$=q[tt-5],Rt.addVertex(q[tt-5],q[tt-2],\\\"hexagon\\\");break;case 69:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"odd\\\");break;case 70:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"trapezoid\\\");break;case 71:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"inv_trapezoid\\\");break;case 72:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"lean_right\\\");break;case 73:this.$=q[tt-3],Rt.addVertex(q[tt-3],q[tt-1],\\\"lean_left\\\");break;case 74:this.$=q[tt],Rt.addVertex(q[tt]);break;case 75:q[tt-1].text=q[tt],this.$=q[tt-1];break;case 76:case 77:q[tt-2].text=q[tt-1],this.$=q[tt-2];break;case 78:this.$=q[tt];break;case 79:var Sr=Rt.destructLink(q[tt],q[tt-2]);this.$={type:Sr.type,stroke:Sr.stroke,length:Sr.length,text:q[tt-1]};break;case 80:var Sr=Rt.destructLink(q[tt]);this.$={type:Sr.type,stroke:Sr.stroke,length:Sr.length};break;case 81:this.$=q[tt-1];break;case 83:case 97:case 153:this.$=q[tt-1]+\\\"\\\"+q[tt];break;case 98:case 99:this.$=q[tt-4],Rt.addClass(q[tt-2],q[tt]);break;case 100:this.$=q[tt-4],Rt.setClass(q[tt-2],q[tt]);break;case 101:case 109:this.$=q[tt-1],Rt.setClickEvent(q[tt-1],q[tt]);break;case 102:case 110:this.$=q[tt-3],Rt.setClickEvent(q[tt-3],q[tt-2]),Rt.setTooltip(q[tt-3],q[tt]);break;case 103:this.$=q[tt-2],Rt.setClickEvent(q[tt-2],q[tt-1],q[tt]);break;case 104:this.$=q[tt-4],Rt.setClickEvent(q[tt-4],q[tt-3],q[tt-2]),Rt.setTooltip(q[tt-4],q[tt]);break;case 105:case 111:this.$=q[tt-1],Rt.setLink(q[tt-1],q[tt]);break;case 106:case 112:this.$=q[tt-3],Rt.setLink(q[tt-3],q[tt-2]),Rt.setTooltip(q[tt-3],q[tt]);break;case 107:case 113:this.$=q[tt-3],Rt.setLink(q[tt-3],q[tt-2],q[tt]);break;case 108:case 114:this.$=q[tt-5],Rt.setLink(q[tt-5],q[tt-4],q[tt]),Rt.setTooltip(q[tt-5],q[tt-2]);break;case 115:this.$=q[tt-4],Rt.addVertex(q[tt-2],void 0,void 0,q[tt]);break;case 116:case 118:this.$=q[tt-4],Rt.updateLink(q[tt-2],q[tt]);break;case 117:this.$=q[tt-4],Rt.updateLink([q[tt-2]],q[tt]);break;case 119:this.$=q[tt-8],Rt.updateLinkInterpolate([q[tt-6]],q[tt-2]),Rt.updateLink([q[tt-6]],q[tt]);break;case 120:this.$=q[tt-8],Rt.updateLinkInterpolate(q[tt-6],q[tt-2]),Rt.updateLink(q[tt-6],q[tt]);break;case 121:this.$=q[tt-6],Rt.updateLinkInterpolate([q[tt-4]],q[tt]);break;case 122:this.$=q[tt-6],Rt.updateLinkInterpolate(q[tt-4],q[tt]);break;case 123:case 125:this.$=[q[tt]];break;case 124:case 126:q[tt-2].push(q[tt]),this.$=q[tt-2];break;case 128:this.$=q[tt-1]+q[tt];break;case 150:this.$=q[tt];break;case 151:this.$=q[tt-1]+\\\"\\\"+q[tt];break;case 156:this.$=\\\"v\\\";break;case 157:this.$=\\\"-\\\";break;case 158:this.$={stmt:\\\"dir\\\",value:\\\"TB\\\"};break;case 159:this.$={stmt:\\\"dir\\\",value:\\\"BT\\\"};break;case 160:this.$={stmt:\\\"dir\\\",value:\\\"RL\\\"};break;case 161:this.$={stmt:\\\"dir\\\",value:\\\"LR\\\"};break}},table:[{3:1,4:2,5:3,6:5,12:e,16:4,21:r,22:n,24:i},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:e,16:4,21:r,22:n,24:i},t(s,a,{17:11}),{7:12,13:[1,13]},{16:14,21:r,22:n,24:i},{16:15,21:r,22:n,24:i},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:o,21:l,22:u,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:f,43:31,44:p,46:g,48:b,50:35,51:45,52:k,54:46,66:T,67:L,86:E,87:I,88:V,89:H,90:G,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,116:47,118:m,119:Q,120:x,121:ct,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt},{8:64,10:[1,65],15:ut},t([10,15],[2,6]),t(s,[2,17]),t(s,[2,18]),t(s,[2,19]),{20:[1,68],21:[1,69],22:_t,27:67,30:70},t(K,[2,11]),t(K,[2,12]),t(K,[2,13]),t(K,[2,14]),t(K,[2,15]),t(K,[2,16]),{9:72,20:Ot,21:P,23:z,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:Ot,21:P,23:z},{9:81,20:Ot,21:P,23:z},{9:82,20:Ot,21:P,23:z},{9:83,20:Ot,21:P,23:z},{9:84,20:Ot,21:P,23:z},{9:86,20:Ot,21:P,22:[1,85],23:z},t(K,[2,44]),{45:[1,87]},{47:[1,88]},t(K,[2,47]),t(X,[2,54],{30:89,22:_t}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:F,52:O,66:A,67:J,84:[1,97],91:C,97:96,98:[1,94],100:[1,95],105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:98,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(K,[2,158]),t(K,[2,159]),t(K,[2,160]),t(K,[2,161]),t(le,[2,55],{53:[1,116]}),t(Xt,[2,74],{116:129,40:[1,117],52:k,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:T,67:L,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],91:Y,95:W,105:N,106:D,109:w,111:v,112:M,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt}),t(jt,[2,150]),t(jt,[2,175]),t(jt,[2,176]),t(jt,[2,177]),t(jt,[2,178]),t(jt,[2,179]),t(jt,[2,180]),t(jt,[2,181]),t(jt,[2,182]),t(jt,[2,183]),t(jt,[2,184]),t(jt,[2,185]),t(jt,[2,186]),t(jt,[2,187]),t(jt,[2,188]),t(jt,[2,189]),t(jt,[2,190]),{9:130,20:Ot,21:P,23:z},{11:131,14:[1,132]},t(Kt,[2,8]),t(s,[2,20]),t(s,[2,26]),t(s,[2,27]),{21:[1,133]},t(Gt,[2,34],{30:134,22:_t}),t(K,[2,35]),{50:135,51:45,52:k,54:46,66:T,67:L,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,116:47,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt},t(Ee,[2,48]),t(Ee,[2,49]),t(Ee,[2,50]),t(Ht,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:Vt,24:Ft,26:xt,38:ft,39:139,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t([52,66,67,68,80,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,80]),t(K,[2,36]),t(K,[2,37]),t(K,[2,38]),t(K,[2,39]),t(K,[2,40]),{22:Vt,24:Ft,26:xt,38:ft,39:163,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Nn,a,{17:164}),t(K,[2,45]),t(K,[2,46]),t(X,[2,53],{52:Xr}),{26:F,52:O,66:A,67:J,91:C,97:166,102:[1,167],105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:98,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{95:[1,168],103:169,105:[1,170]},{26:F,52:O,66:A,67:J,91:C,95:[1,171],97:172,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:98,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{26:F,52:O,66:A,67:J,91:C,97:173,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:98,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Kt,[2,101],{22:[1,174],99:[1,175]}),t(Kt,[2,105],{22:[1,176]}),t(Kt,[2,109],{115:100,117:178,22:[1,177],26:F,52:O,66:A,67:J,91:C,105:ht,106:U,109:Yt,111:et,112:Mt,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st}),t(Kt,[2,111],{22:[1,179]}),t(De,[2,152]),t(De,[2,154]),t(De,[2,155]),t(De,[2,156]),t(De,[2,157]),t(ae,[2,162]),t(ae,[2,163]),t(ae,[2,164]),t(ae,[2,165]),t(ae,[2,166]),t(ae,[2,167]),t(ae,[2,168]),t(ae,[2,169]),t(ae,[2,170]),t(ae,[2,171]),t(ae,[2,172]),t(ae,[2,173]),t(ae,[2,174]),{52:k,54:180,66:T,67:L,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,116:47,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt},{22:Vt,24:Ft,26:xt,38:ft,39:181,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:182,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:184,42:Lt,52:O,57:[1,183],66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:185,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:186,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:187,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{66:[1,188]},{22:Vt,24:Ft,26:xt,38:ft,39:189,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:190,42:Lt,52:O,66:A,67:J,71:[1,191],73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:192,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:193,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:194,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(jt,[2,151]),t(Be,[2,3]),{8:195,15:ut},{15:[2,7]},t(s,[2,28]),t(Gt,[2,33]),t(X,[2,51],{30:196,22:_t}),t(Ht,[2,75],{22:[1,197]}),{22:[1,198]},{22:Vt,24:Ft,26:xt,38:ft,39:199,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,82:[1,200],83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(ae,[2,82]),t(ae,[2,84]),t(ae,[2,140]),t(ae,[2,141]),t(ae,[2,142]),t(ae,[2,143]),t(ae,[2,144]),t(ae,[2,145]),t(ae,[2,146]),t(ae,[2,147]),t(ae,[2,148]),t(ae,[2,149]),t(ae,[2,85]),t(ae,[2,86]),t(ae,[2,87]),t(ae,[2,88]),t(ae,[2,89]),t(ae,[2,90]),t(ae,[2,91]),t(ae,[2,92]),t(ae,[2,93]),t(ae,[2,94]),t(ae,[2,95]),{9:203,20:Ot,21:P,22:Vt,23:z,24:Ft,26:xt,38:ft,40:[1,202],42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{18:18,19:19,20:o,21:l,22:u,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:f,42:[1,204],43:31,44:p,46:g,48:b,50:35,51:45,52:k,54:46,66:T,67:L,86:E,87:I,88:V,89:H,90:G,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,116:47,118:m,119:Q,120:x,121:ct,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt},{22:_t,30:205},{22:[1,206],26:F,52:O,66:A,67:J,91:C,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:178,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:[1,207]},{22:[1,208]},{22:[1,209],106:[1,210]},t(Re,[2,123]),{22:[1,211]},{22:[1,212],26:F,52:O,66:A,67:J,91:C,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:178,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:[1,213],26:F,52:O,66:A,67:J,91:C,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:178,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{84:[1,214]},t(Kt,[2,103],{22:[1,215]}),{84:[1,216],101:[1,217]},{84:[1,218]},t(De,[2,153]),{84:[1,219],101:[1,220]},t(le,[2,57],{116:129,52:k,66:T,67:L,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt}),{22:Vt,24:Ft,26:xt,38:ft,41:[1,221],42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,56:[1,222],66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:223,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,58:[1,224],66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,60:[1,225],66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,62:[1,226],66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,64:[1,227],66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{67:[1,228]},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,66:A,67:J,70:[1,229],73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,66:A,67:J,72:[1,230],73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,39:231,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,41:[1,232],42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,66:A,67:J,73:bt,75:[1,233],77:[1,234],81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,66:A,67:J,73:bt,75:[1,236],77:[1,235],81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{9:237,20:Ot,21:P,23:z},t(X,[2,52],{52:Xr}),t(Ht,[2,77]),t(Ht,[2,76]),{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,66:A,67:J,68:[1,238],73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Ht,[2,79]),t(ae,[2,83]),{22:Vt,24:Ft,26:xt,38:ft,39:239,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Nn,a,{17:240}),t(K,[2,43]),{51:241,52:k,54:46,66:T,67:L,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,116:47,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt},{22:Pe,66:Ye,67:Ie,86:$e,96:242,102:ar,105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},{22:Pe,66:Ye,67:Ie,86:$e,96:256,102:ar,105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},{22:Pe,66:Ye,67:Ie,86:$e,96:257,102:ar,104:[1,258],105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},{22:Pe,66:Ye,67:Ie,86:$e,96:259,102:ar,104:[1,260],105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},{105:[1,261]},{22:Pe,66:Ye,67:Ie,86:$e,96:262,102:ar,105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},{22:Pe,66:Ye,67:Ie,86:$e,96:263,102:ar,105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},{26:F,52:O,66:A,67:J,91:C,97:264,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:98,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Kt,[2,102]),{84:[1,265]},t(Kt,[2,106],{22:[1,266]}),t(Kt,[2,107]),t(Kt,[2,110]),t(Kt,[2,112],{22:[1,267]}),t(Kt,[2,113]),t(Xt,[2,58]),t(Xt,[2,59]),{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,58:[1,268],66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Xt,[2,66]),t(Xt,[2,61]),t(Xt,[2,62]),t(Xt,[2,63]),{66:[1,269]},t(Xt,[2,65]),t(Xt,[2,67]),{22:Vt,24:Ft,26:xt,38:ft,42:Lt,52:O,66:A,67:J,72:[1,270],73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Xt,[2,69]),t(Xt,[2,70]),t(Xt,[2,72]),t(Xt,[2,71]),t(Xt,[2,73]),t(Be,[2,4]),t([22,52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,81]),{22:Vt,24:Ft,26:xt,38:ft,41:[1,271],42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{18:18,19:19,20:o,21:l,22:u,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:f,42:[1,272],43:31,44:p,46:g,48:b,50:35,51:45,52:k,54:46,66:T,67:L,86:E,87:I,88:V,89:H,90:G,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,116:47,118:m,119:Q,120:x,121:ct,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt},t(le,[2,56]),t(Kt,[2,115],{106:Le}),t(We,[2,125],{108:274,22:Pe,66:Ye,67:Ie,86:$e,102:ar,105:zt,109:Z,110:At,111:Nt,112:pe,113:Me}),t(ve,[2,127]),t(ve,[2,129]),t(ve,[2,130]),t(ve,[2,131]),t(ve,[2,132]),t(ve,[2,133]),t(ve,[2,134]),t(ve,[2,135]),t(ve,[2,136]),t(ve,[2,137]),t(ve,[2,138]),t(ve,[2,139]),t(Kt,[2,116],{106:Le}),t(Kt,[2,117],{106:Le}),{22:[1,275]},t(Kt,[2,118],{106:Le}),{22:[1,276]},t(Re,[2,124]),t(Kt,[2,98],{106:Le}),t(Kt,[2,99],{106:Le}),t(Kt,[2,100],{115:100,117:178,26:F,52:O,66:A,67:J,91:C,105:ht,106:U,109:Yt,111:et,112:Mt,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st}),t(Kt,[2,104]),{101:[1,277]},{101:[1,278]},{58:[1,279]},{68:[1,280]},{72:[1,281]},{9:282,20:Ot,21:P,23:z},t(K,[2,42]),{22:Pe,66:Ye,67:Ie,86:$e,102:ar,105:zt,107:283,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},t(ve,[2,128]),{26:F,52:O,66:A,67:J,91:C,97:284,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:98,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{26:F,52:O,66:A,67:J,91:C,97:285,105:ht,106:U,109:Yt,111:et,112:Mt,115:100,117:98,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Kt,[2,108]),t(Kt,[2,114]),t(Xt,[2,60]),{22:Vt,24:Ft,26:xt,38:ft,39:286,42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:140,84:at,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},t(Xt,[2,68]),t(Nn,a,{17:287}),t(We,[2,126],{108:274,22:Pe,66:Ye,67:Ie,86:$e,102:ar,105:zt,109:Z,110:At,111:Nt,112:pe,113:Me}),t(Kt,[2,121],{115:100,117:178,22:[1,288],26:F,52:O,66:A,67:J,91:C,105:ht,106:U,109:Yt,111:et,112:Mt,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st}),t(Kt,[2,122],{115:100,117:178,22:[1,289],26:F,52:O,66:A,67:J,91:C,105:ht,106:U,109:Yt,111:et,112:Mt,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st}),{22:Vt,24:Ft,26:xt,38:ft,41:[1,290],42:Lt,52:O,66:A,67:J,73:bt,81:Ut,83:201,85:151,86:ie,87:dt,88:ee,89:fe,90:be,91:_e,92:ke,94:142,95:$t,105:ht,106:U,109:se,111:et,112:Mt,113:ye,114:Jt,115:148,122:Tt,123:gt,124:Et,125:wt,126:pt,127:st},{18:18,19:19,20:o,21:l,22:u,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:f,42:[1,291],43:31,44:p,46:g,48:b,50:35,51:45,52:k,54:46,66:T,67:L,86:E,87:I,88:V,89:H,90:G,91:Y,95:W,105:N,106:D,109:w,111:v,112:M,116:47,118:m,119:Q,120:x,121:ct,122:Dt,123:kt,124:j,125:ot,126:rt,127:nt},{22:Pe,66:Ye,67:Ie,86:$e,96:292,102:ar,105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},{22:Pe,66:Ye,67:Ie,86:$e,96:293,102:ar,105:zt,107:243,108:244,109:Z,110:At,111:Nt,112:pe,113:Me},t(Xt,[2,64]),t(K,[2,41]),t(Kt,[2,119],{106:Le}),t(Kt,[2,120],{106:Le})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(qt,te){if(te.recoverable)this.trace(qt);else{var oe=new Error(qt);throw oe.hash=te,oe}},parse:function(qt){var te=this,oe=[0],Rt=[],Ve=[null],q=[],Is=this.table,tt=\\\"\\\",Sr=0,Wu=0,Rd=2,Hu=1,Gu=q.slice.call(arguments,1),or=Object.create(this.lexer),Zn={yy:{}};for(var Qn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Qn)&&(Zn.yy[Qn]=this.yy[Qn]);or.setInput(qt,Zn.yy),Zn.yy.lexer=or,Zn.yy.parser=this,typeof or.yylloc>\\\"u\\\"&&(or.yylloc={});var Os=or.yylloc;q.push(Os);var ll=or.options&&or.options.ranges;typeof Zn.yy.parseError==\\\"function\\\"?this.parseError=Zn.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function qu(){var Zr;return Zr=Rt.pop()||or.lex()||Hu,typeof Zr!=\\\"number\\\"&&(Zr instanceof Array&&(Rt=Zr,Zr=Rt.pop()),Zr=te.symbols_[Zr]||Zr),Zr}for(var xr,Se,Or,Ai,Bn={},Li,Kr,cl,Pa;;){if(Se=oe[oe.length-1],this.defaultActions[Se]?Or=this.defaultActions[Se]:((xr===null||typeof xr>\\\"u\\\")&&(xr=qu()),Or=Is[Se]&&Is[Se][xr]),typeof Or>\\\"u\\\"||!Or.length||!Or[0]){var Rs=\\\"\\\";Pa=[];for(Li in Is[Se])this.terminals_[Li]&&Li>Rd&&Pa.push(\\\"'\\\"+this.terminals_[Li]+\\\"'\\\");or.showPosition?Rs=\\\"Parse error on line \\\"+(Sr+1)+`:\\n`+or.showPosition()+`\\nExpecting `+Pa.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[xr]||xr)+\\\"'\\\":Rs=\\\"Parse error on line \\\"+(Sr+1)+\\\": Unexpected \\\"+(xr==Hu?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[xr]||xr)+\\\"'\\\"),this.parseError(Rs,{text:or.match,token:this.terminals_[xr]||xr,line:or.yylineno,loc:Os,expected:Pa})}if(Or[0]instanceof Array&&Or.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+Se+\\\", token: \\\"+xr);switch(Or[0]){case 1:oe.push(xr),Ve.push(or.yytext),q.push(or.yylloc),oe.push(Or[1]),xr=null,Wu=or.yyleng,tt=or.yytext,Sr=or.yylineno,Os=or.yylloc;break;case 2:if(Kr=this.productions_[Or[1]][1],Bn.$=Ve[Ve.length-Kr],Bn._$={first_line:q[q.length-(Kr||1)].first_line,last_line:q[q.length-1].last_line,first_column:q[q.length-(Kr||1)].first_column,last_column:q[q.length-1].last_column},ll&&(Bn._$.range=[q[q.length-(Kr||1)].range[0],q[q.length-1].range[1]]),Ai=this.performAction.apply(Bn,[tt,Wu,Sr,Zn.yy,Or[1],Ve,q].concat(Gu)),typeof Ai\u003C\\\"u\\\")return Ai;Kr&&(oe=oe.slice(0,-1*Kr*2),Ve=Ve.slice(0,-1*Kr),q=q.slice(0,-1*Kr)),oe.push(this.productions_[Or[1]][0]),Ve.push(Bn.$),q.push(Bn._$),cl=Is[oe[oe.length-2]][oe[oe.length-1]],oe.push(cl);break;case 3:return!0}}return!0}},Xi=function(){var zr={EOF:1,parseError:function(te,oe){if(this.yy.parser)this.yy.parser.parseError(te,oe);else throw new Error(te)},setInput:function(qt,te){return this.yy=te||this.yy||{},this._input=qt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var qt=this._input[0];this.yytext+=qt,this.yyleng++,this.offset++,this.match+=qt,this.matched+=qt;var te=qt.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return te?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),qt},unput:function(qt){var te=qt.length,oe=qt.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=qt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-te),this.offset-=te;var Rt=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),oe.length-1&&(this.yylineno-=oe.length-1);var Ve=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:oe?(oe.length===Rt.length?this.yylloc.first_column:0)+Rt[Rt.length-oe.length].length-oe[0].length:this.yylloc.first_column-te},this.options.ranges&&(this.yylloc.range=[Ve[0],Ve[0]+this.yyleng-te]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(qt){this.unput(this.match.slice(qt))},pastInput:function(){var qt=this.matched.substr(0,this.matched.length-this.match.length);return(qt.length>20?\\\"...\\\":\\\"\\\")+qt.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var qt=this.match;return qt.length\u003C20&&(qt+=this._input.substr(0,20-qt.length)),(qt.substr(0,20)+(qt.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var qt=this.pastInput(),te=new Array(qt.length+1).join(\\\"-\\\");return qt+this.upcomingInput()+`\\n`+te+\\\"^\\\"},test_match:function(qt,te){var oe,Rt,Ve;if(this.options.backtrack_lexer&&(Ve={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ve.yylloc.range=this.yylloc.range.slice(0))),Rt=qt[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),Rt&&(this.yylineno+=Rt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Rt?Rt[Rt.length-1].length-Rt[Rt.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+qt[0].length},this.yytext+=qt[0],this.match+=qt[0],this.matches=qt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(qt[0].length),this.matched+=qt[0],oe=this.performAction.call(this,this.yy,this,te,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),oe)return oe;if(this._backtrack){for(var q in Ve)this[q]=Ve[q];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var qt,te,oe,Rt;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var Ve=this._currentRules(),q=0;q\u003CVe.length;q++)if(oe=this._input.match(this.rules[Ve[q]]),oe&&(!te||oe[0].length>te[0].length)){if(te=oe,Rt=q,this.options.backtrack_lexer){if(qt=this.test_match(oe,Ve[q]),qt!==!1)return qt;if(this._backtrack){te=!1;continue}else return!1}else if(!this.options.flex)break}return te?(qt=this.test_match(te,Ve[Rt]),qt!==!1?qt:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var te=this.next();return te||this.lex()},begin:function(te){this.conditionStack.push(te)},popState:function(){var te=this.conditionStack.length-1;return te>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(te){return te=this.conditionStack.length-1-Math.abs(te||0),te>=0?this.conditionStack[te]:\\\"INITIAL\\\"},pushState:function(te){this.begin(te)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(te,oe,Rt,Ve){switch(Rt){case 0:return this.begin(\\\"open_directive\\\"),12;case 1:return this.begin(\\\"type_directive\\\"),13;case 2:return this.popState(),this.begin(\\\"arg_directive\\\"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:break;case 6:break;case 7:return this.begin(\\\"acc_title\\\"),44;case 8:return this.popState(),\\\"acc_title_value\\\";case 9:return this.begin(\\\"acc_descr\\\"),46;case 10:return this.popState(),\\\"acc_descr_value\\\";case 11:this.begin(\\\"acc_descr_multiline\\\");break;case 12:this.popState();break;case 13:return\\\"acc_descr_multiline_value\\\";case 14:this.begin(\\\"string\\\");break;case 15:this.popState();break;case 16:return\\\"STR\\\";case 17:return 86;case 18:return 95;case 19:return 87;case 20:return 104;case 21:return 88;case 22:return 89;case 23:this.begin(\\\"href\\\");break;case 24:this.popState();break;case 25:return 100;case 26:this.begin(\\\"callbackname\\\");break;case 27:this.popState();break;case 28:this.popState(),this.begin(\\\"callbackargs\\\");break;case 29:return 98;case 30:this.popState();break;case 31:return 99;case 32:this.begin(\\\"click\\\");break;case 33:this.popState();break;case 34:return 90;case 35:return te.lex.firstGraph()&&this.begin(\\\"dir\\\"),24;case 36:return te.lex.firstGraph()&&this.begin(\\\"dir\\\"),24;case 37:return 38;case 38:return 42;case 39:return 101;case 40:return 101;case 41:return 101;case 42:return 101;case 43:return this.popState(),25;case 44:return this.popState(),26;case 45:return this.popState(),26;case 46:return this.popState(),26;case 47:return this.popState(),26;case 48:return this.popState(),26;case 49:return this.popState(),26;case 50:return this.popState(),26;case 51:return this.popState(),26;case 52:return this.popState(),26;case 53:return this.popState(),26;case 54:return 118;case 55:return 119;case 56:return 120;case 57:return 121;case 58:return 105;case 59:return 111;case 60:return 53;case 61:return 67;case 62:return 52;case 63:return 20;case 64:return 106;case 65:return 126;case 66:return 82;case 67:return 82;case 68:return 82;case 69:return 81;case 70:return 81;case 71:return 81;case 72:return 59;case 73:return 60;case 74:return 61;case 75:return 62;case 76:return 63;case 77:return 64;case 78:return 65;case 79:return 69;case 80:return 70;case 81:return 55;case 82:return 56;case 83:return 109;case 84:return 112;case 85:return 127;case 86:return 124;case 87:return 113;case 88:return 125;case 89:return 125;case 90:return 114;case 91:return 73;case 92:return 92;case 93:return\\\"SEP\\\";case 94:return 91;case 95:return 66;case 96:return 75;case 97:return 74;case 98:return 77;case 99:return 76;case 100:return 122;case 101:return 123;case 102:return 68;case 103:return 57;case 104:return 58;case 105:return 40;case 106:return 41;case 107:return 71;case 108:return 72;case 109:return 133;case 110:return 21;case 111:return 22;case 112:return 23}},rules:[/^(?:%%\\\\{)/,/^(?:((?:(?!\\\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\\\}%%)/,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/,/^(?:%%(?!\\\\{)[^\\\\n]*)/,/^(?:[^\\\\}]%%[^\\\\n]*)/,/^(?:accTitle\\\\s*:\\\\s*)/,/^(?:(?!\\\\n||)*[^\\\\n]*)/,/^(?:accDescr\\\\s*:\\\\s*)/,/^(?:(?!\\\\n||)*[^\\\\n]*)/,/^(?:accDescr\\\\s*\\\\{\\\\s*)/,/^(?:[\\\\}])/,/^(?:[^\\\\}]*)/,/^(?:[\\\"])/,/^(?:[\\\"])/,/^(?:[^\\\"]*)/,/^(?:style\\\\b)/,/^(?:default\\\\b)/,/^(?:linkStyle\\\\b)/,/^(?:interpolate\\\\b)/,/^(?:classDef\\\\b)/,/^(?:class\\\\b)/,/^(?:href[\\\\s]+[\\\"])/,/^(?:[\\\"])/,/^(?:[^\\\"]*)/,/^(?:call[\\\\s]+)/,/^(?:\\\\([\\\\s]*\\\\))/,/^(?:\\\\()/,/^(?:[^(]*)/,/^(?:\\\\))/,/^(?:[^)]*)/,/^(?:click[\\\\s]+)/,/^(?:[\\\\s\\\\n])/,/^(?:[^\\\\s\\\\n]*)/,/^(?:graph\\\\b)/,/^(?:flowchart\\\\b)/,/^(?:subgraph\\\\b)/,/^(?:end\\\\b\\\\s*)/,/^(?:_self\\\\b)/,/^(?:_blank\\\\b)/,/^(?:_parent\\\\b)/,/^(?:_top\\\\b)/,/^(?:(\\\\r?\\\\n)*\\\\s*\\\\n)/,/^(?:\\\\s*LR\\\\b)/,/^(?:\\\\s*RL\\\\b)/,/^(?:\\\\s*TB\\\\b)/,/^(?:\\\\s*BT\\\\b)/,/^(?:\\\\s*TD\\\\b)/,/^(?:\\\\s*BR\\\\b)/,/^(?:\\\\s*\u003C)/,/^(?:\\\\s*>)/,/^(?:\\\\s*\\\\^)/,/^(?:\\\\s*v\\\\b)/,/^(?:.*direction\\\\s+TB[^\\\\n]*)/,/^(?:.*direction\\\\s+BT[^\\\\n]*)/,/^(?:.*direction\\\\s+RL[^\\\\n]*)/,/^(?:.*direction\\\\s+LR[^\\\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\\\*)/,/^(?:\\\\s*[xo\u003C]?--+[-xo>]\\\\s*)/,/^(?:\\\\s*[xo\u003C]?==+[=xo>]\\\\s*)/,/^(?:\\\\s*[xo\u003C]?-?\\\\.+-[xo>]?\\\\s*)/,/^(?:\\\\s*[xo\u003C]?--\\\\s*)/,/^(?:\\\\s*[xo\u003C]?==\\\\s*)/,/^(?:\\\\s*[xo\u003C]?-\\\\.\\\\s*)/,/^(?:\\\\(-)/,/^(?:-\\\\))/,/^(?:\\\\(\\\\[)/,/^(?:\\\\]\\\\))/,/^(?:\\\\[\\\\[)/,/^(?:\\\\]\\\\])/,/^(?:\\\\[\\\\|)/,/^(?:\\\\[\\\\()/,/^(?:\\\\)\\\\])/,/^(?:\\\\(\\\\(\\\\()/,/^(?:\\\\)\\\\)\\\\))/,/^(?:-)/,/^(?:\\\\.)/,/^(?:[\\\\_])/,/^(?:\\\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\u003C)/,/^(?:>)/,/^(?:\\\\^)/,/^(?:\\\\\\\\\\\\|)/,/^(?:v\\\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\\\\\\\])/,/^(?:\\\\[\\\\/)/,/^(?:\\\\/\\\\])/,/^(?:\\\\[\\\\\\\\)/,/^(?:[!\\\"#$%&'*+,-.`?\\\\\\\\_/])/,/^(?:[\\\\u00AA\\\\u00B5\\\\u00BA\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6]|[\\\\u00F8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377]|[\\\\u037A-\\\\u037D\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5]|[\\\\u03F7-\\\\u0481\\\\u048A-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA]|[\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE]|[\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA]|[\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0]|[\\\\u08A2-\\\\u08AC\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977]|[\\\\u0979-\\\\u097F\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2]|[\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A]|[\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39]|[\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8]|[\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C]|[\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C]|[\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99]|[\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0]|[\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C33\\\\u0C35-\\\\u0C39\\\\u0C3D]|[\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3]|[\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10]|[\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1]|[\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81]|[\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3]|[\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6]|[\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A]|[\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081]|[\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D]|[\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0]|[\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310]|[\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C]|[\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711]|[\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7]|[\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191C]|[\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16]|[\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF]|[\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC]|[\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D]|[\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D]|[\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3]|[\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F]|[\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128]|[\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2183\\\\u2184]|[\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3]|[\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6]|[\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE]|[\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005\\\\u3006\\\\u3031-\\\\u3035\\\\u303B\\\\u303C]|[\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D]|[\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC]|[\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B]|[\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA697\\\\uA6A0-\\\\uA6E5\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788]|[\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA793\\\\uA7A0-\\\\uA7AA\\\\uA7F8-\\\\uA801\\\\uA803-\\\\uA805]|[\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB]|[\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uAA00-\\\\uAA28]|[\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA80-\\\\uAAAF\\\\uAAB1\\\\uAAB5]|[\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4]|[\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E]|[\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D]|[\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36]|[\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D]|[\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC]|[\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF]|[\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC])/,/^(?:\\\\|)/,/^(?:\\\\()/,/^(?:\\\\))/,/^(?:\\\\[)/,/^(?:\\\\])/,/^(?:\\\\{)/,/^(?:\\\\})/,/^(?:\\\")/,/^(?:(\\\\r?\\\\n)+)/,/^(?:\\\\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[30,31],inclusive:!1},callbackname:{rules:[27,28,29],inclusive:!1},href:{rules:[24,25],inclusive:!1},click:{rules:[33,34],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[43,44,45,46,47,48,49,50,51,52,53],inclusive:!1},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,5,6,7,9,11,14,17,18,19,20,21,22,23,26,32,35,36,37,38,39,40,41,42,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],inclusive:!0}}};return zr}();Ne.lexer=Xi;function Ki(){this.yy={}}return Ki.prototype=Ne,Ne.Parser=Ki,new Ki}();T0.parser=T0;const jm=T0,MI=(t,e)=>{var r;return((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)===\\\"dagre-wrapper\\\"?!1:t.match(/^\\\\s*graph/)!==null},NI=(t,e)=>{var r;return((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)===\\\"dagre-wrapper\\\"&&t.match(/^\\\\s*graph/)!==null?!0:t.match(/^\\\\s*flowchart/)!==null},BI=\\\"flowchart-\\\";let $m=0,E0=$(),Ue={},Ds=[],Sa={},xi=[],mu={},C0={},bu=0,S0=!0,Gn,_u,xu=[];const vu=t=>he.sanitizeText(t,E0),II=function(t,e,r){ze.parseDirective(this,t,e,r)},ku=function(t){const e=Object.keys(Ue);for(const r of e)if(Ue[r].id===t)return Ue[r].domId;return t},OI=function(t,e,r,n,i,s,a={}){let o,l=t;l!==void 0&&l.trim().length!==0&&(Ue[l]===void 0&&(Ue[l]={id:l,domId:BI+l+\\\"-\\\"+$m,styles:[],classes:[]}),$m++,e!==void 0?(E0=$(),o=vu(e.trim()),o[0]==='\\\"'&&o[o.length-1]==='\\\"'&&(o=o.substring(1,o.length-1)),Ue[l].text=o):Ue[l].text===void 0&&(Ue[l].text=t),r!==void 0&&(Ue[l].type=r),n!=null&&n.forEach(function(u){Ue[l].styles.push(u)}),i!=null&&i.forEach(function(u){Ue[l].classes.push(u)}),s!==void 0&&(Ue[l].dir=s),Ue[l].props===void 0?Ue[l].props=a:a!==void 0&&Object.assign(Ue[l].props,a))},RI=function(t,e,r,n){const a={start:t,end:e,type:void 0,text:\\\"\\\"};n=r.text,n!==void 0&&(a.text=vu(n.trim()),a.text[0]==='\\\"'&&a.text[a.text.length-1]==='\\\"'&&(a.text=a.text.substring(1,a.text.length-1))),r!==void 0&&(a.type=r.type,a.stroke=r.stroke,a.length=r.length),Ds.push(a)},FI=function(t,e,r,n){let i,s;for(i=0;i\u003Ct.length;i++)for(s=0;s\u003Ce.length;s++)RI(t[i],e[s],r,n)},PI=function(t,e){t.forEach(function(r){r===\\\"default\\\"?Ds.defaultInterpolate=e:Ds[r].interpolate=e})},YI=function(t,e){t.forEach(function(r){r===\\\"default\\\"?Ds.defaultStyle=e:(ge.isSubstringInArray(\\\"fill\\\",e)===-1&&e.push(\\\"fill:none\\\"),Ds[r].style=e)})},VI=function(t,e){Sa[t]===void 0&&(Sa[t]={id:t,styles:[],textStyles:[]}),e!=null&&e.forEach(function(r){if(r.match(\\\"color\\\")){const i=r.replace(\\\"fill\\\",\\\"bgFill\\\").replace(\\\"color\\\",\\\"fill\\\");Sa[t].textStyles.push(i)}Sa[t].styles.push(r)})},UI=function(t){Gn=t,Gn.match(/.*\u003C/)&&(Gn=\\\"RL\\\"),Gn.match(/.*\\\\^/)&&(Gn=\\\"BT\\\"),Gn.match(/.*>/)&&(Gn=\\\"LR\\\"),Gn.match(/.*v/)&&(Gn=\\\"TB\\\")},A0=function(t,e){t.split(\\\",\\\").forEach(function(r){let n=r;Ue[n]!==void 0&&Ue[n].classes.push(e),mu[n]!==void 0&&mu[n].classes.push(e)})},zI=function(t,e){t.split(\\\",\\\").forEach(function(r){e!==void 0&&(C0[_u===\\\"gen-1\\\"?ku(r):r]=vu(e))})},WI=function(t,e,r){let n=ku(t);if($().securityLevel!==\\\"loose\\\"||e===void 0)return;let i=[];if(typeof r==\\\"string\\\"){i=r.split(/,(?=(?:(?:[^\\\"]*\\\"){2})*[^\\\"]*$)/);for(let s=0;s\u003Ci.length;s++){let a=i[s].trim();a.charAt(0)==='\\\"'&&a.charAt(a.length-1)==='\\\"'&&(a=a.substr(1,a.length-2)),i[s]=a}}i.length===0&&i.push(t),Ue[t]!==void 0&&(Ue[t].haveCallback=!0,xu.push(function(){const s=document.querySelector(`[id=\\\"${n}\\\"]`);s!==null&&s.addEventListener(\\\"click\\\",function(){ge.runFunc(e,...i)},!1)}))},HI=function(t,e,r){t.split(\\\",\\\").forEach(function(n){Ue[n]!==void 0&&(Ue[n].link=ge.formatUrl(e,E0),Ue[n].linkTarget=r)}),A0(t,\\\"clickable\\\")},GI=function(t){return C0[t]},qI=function(t,e,r){t.split(\\\",\\\").forEach(function(n){WI(n,e,r)}),A0(t,\\\"clickable\\\")},jI=function(t){xu.forEach(function(e){e(t)})},$I=function(){return Gn.trim()},XI=function(){return Ue},KI=function(){return Ds},ZI=function(){return Sa},Xm=function(t){let e=St(\\\".mermaidTooltip\\\");(e._groups||e)[0][0]===null&&(e=St(\\\"body\\\").append(\\\"div\\\").attr(\\\"class\\\",\\\"mermaidTooltip\\\").style(\\\"opacity\\\",0)),St(t).select(\\\"svg\\\").selectAll(\\\"g.node\\\").on(\\\"mouseover\\\",function(){const i=St(this);if(i.attr(\\\"title\\\")===null)return;const a=this.getBoundingClientRect();e.transition().duration(200).style(\\\"opacity\\\",\\\".9\\\"),e.text(i.attr(\\\"title\\\")).style(\\\"left\\\",window.scrollX+a.left+(a.right-a.left)/2+\\\"px\\\").style(\\\"top\\\",window.scrollY+a.top-14+document.body.scrollTop+\\\"px\\\"),e.html(e.html().replace(/<br\\\\/>/g,\\\"\u003Cbr/>\\\")),i.classed(\\\"hover\\\",!0)}).on(\\\"mouseout\\\",function(){e.transition().duration(500).style(\\\"opacity\\\",0),St(this).classed(\\\"hover\\\",!1)})};xu.push(Xm);const QI=function(t=\\\"gen-1\\\"){Ue={},Sa={},Ds=[],xu=[Xm],xi=[],mu={},bu=0,C0=[],S0=!0,_u=t,vn()},JI=t=>{_u=t||\\\"gen-1\\\"},tO=function(){return\\\"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\\\"},eO=function(t,e,r){let n=t.trim(),i=r;t===r&&r.match(/\\\\s/)&&(n=void 0);function s(d){const f={boolean:{},number:{},string:{}},p=[];let g;return{nodeList:d.filter(function(k){const T=typeof k;return k.stmt&&k.stmt===\\\"dir\\\"?(g=k.value,!1):k.trim()===\\\"\\\"?!1:T in f?f[T].hasOwnProperty(k)?!1:f[T][k]=!0:p.includes(k)?!1:p.push(k)}),dir:g}}let a=[];const{nodeList:o,dir:l}=s(a.concat.apply(a,e));if(a=o,_u===\\\"gen-1\\\")for(let d=0;d\u003Ca.length;d++)a[d]=ku(a[d]);n=n||\\\"subGraph\\\"+bu,i=i||\\\"\\\",i=vu(i),bu=bu+1;const u={id:n,nodes:a,title:i.trim(),classes:[],dir:l};return B.info(\\\"Adding\\\",u.id,u.nodes,u.dir),u.nodes=Jm(u,xi).nodes,xi.push(u),mu[n]=u,n},rO=function(t){for(const[e,r]of xi.entries())if(r.id===t)return e;return-1};let zo=-1;const Km=[],Zm=function(t,e){const r=xi[e].nodes;if(zo=zo+1,zo>2e3)return;if(Km[zo]=e,xi[e].id===t)return{result:!0,count:0};let n=0,i=1;for(;n\u003Cr.length;){const s=rO(r[n]);if(s>=0){const a=Zm(t,s);if(a.result)return{result:!0,count:i+a.count};i=i+a.count}n=n+1}return{result:!1,count:i}},nO=function(t){return Km[t]},iO=function(){zo=-1,xi.length>0&&Zm(\\\"none\\\",xi.length-1)},sO=function(){return xi},aO=()=>S0?(S0=!1,!0):!1,oO=t=>{let e=t.trim(),r=\\\"arrow_open\\\";switch(e[0]){case\\\"\u003C\\\":r=\\\"arrow_point\\\",e=e.slice(1);break;case\\\"x\\\":r=\\\"arrow_cross\\\",e=e.slice(1);break;case\\\"o\\\":r=\\\"arrow_circle\\\",e=e.slice(1);break}let n=\\\"normal\\\";return e.includes(\\\"=\\\")&&(n=\\\"thick\\\"),e.includes(\\\".\\\")&&(n=\\\"dotted\\\"),{type:r,stroke:n}},lO=(t,e)=>{const r=e.length;let n=0;for(let i=0;i\u003Cr;++i)e[i]===t&&++n;return n},cO=t=>{const e=t.trim();let r=e.slice(0,-1),n=\\\"arrow_open\\\";switch(e.slice(-1)){case\\\"x\\\":n=\\\"arrow_cross\\\",e[0]===\\\"x\\\"&&(n=\\\"double_\\\"+n,r=r.slice(1));break;case\\\">\\\":n=\\\"arrow_point\\\",e[0]===\\\"\u003C\\\"&&(n=\\\"double_\\\"+n,r=r.slice(1));break;case\\\"o\\\":n=\\\"arrow_circle\\\",e[0]===\\\"o\\\"&&(n=\\\"double_\\\"+n,r=r.slice(1));break}let i=\\\"normal\\\",s=r.length-1;r[0]===\\\"=\\\"&&(i=\\\"thick\\\");let a=lO(\\\".\\\",r);return a&&(i=\\\"dotted\\\",s=a),{type:n,stroke:i,length:s}},uO=(t,e)=>{const r=cO(t);let n;if(e){if(n=oO(e),n.stroke!==r.stroke)return{type:\\\"INVALID\\\",stroke:\\\"INVALID\\\"};if(n.type===\\\"arrow_open\\\")n.type=r.type;else{if(n.type!==r.type)return{type:\\\"INVALID\\\",stroke:\\\"INVALID\\\"};n.type=\\\"double_\\\"+n.type}return n.type===\\\"double_arrow\\\"&&(n.type=\\\"double_arrow_point\\\"),n.length=r.length,n}return r},Qm=(t,e)=>{let r=!1;return t.forEach(n=>{n.nodes.indexOf(e)>=0&&(r=!0)}),r},Jm=(t,e)=>{const r=[];return t.nodes.forEach((n,i)=>{Qm(e,n)||r.push(t.nodes[i])}),{nodes:r}},vi={parseDirective:II,defaultConfig:()=>ha.flowchart,setAccTitle:nn,getAccTitle:kn,getAccDescription:Tn,setAccDescription:wn,addVertex:OI,lookUpDomId:ku,addLink:FI,updateLinkInterpolate:PI,updateLink:YI,addClass:VI,setDirection:UI,setClass:A0,setTooltip:zI,getTooltip:GI,setClickEvent:qI,setLink:HI,bindFunctions:jI,getDirection:$I,getVertices:XI,getEdges:KI,getClasses:ZI,clear:QI,setGen:JI,defaultStyle:tO,addSubGraph:eO,getDepthFirstPos:nO,indexNodes:iO,getSubGraphs:sO,destructLink:uO,lex:{firstGraph:aO},exists:Qm,makeUniq:Jm,setDiagramTitle:hi,getDiagramTitle:di};function t3(t,e){return!!t.children(e).length}function e3(t){return L0(t.v)+\\\":\\\"+L0(t.w)+\\\":\\\"+L0(t.name)}var hO=/:/g;function L0(t){return t?String(t).replace(hO,\\\"\\\\\\\\:\\\"):\\\"\\\"}function qn(t,e){e&&t.attr(\\\"style\\\",e)}function r3(t,e,r){e&&t.attr(\\\"class\\\",e).attr(\\\"class\\\",r+\\\" \\\"+t.attr(\\\"class\\\"))}function Dn(t,e){var r=e.graph();if(oy(r)){var n=r.transition;if(aa(n))return n(t)}return t}var D0={normal:fO,vee:pO,undirected:gO};function dO(t){D0=t}function fO(t,e,r,n){var i=t.append(\\\"marker\\\").attr(\\\"id\\\",e).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",9).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"strokeWidth\\\").attr(\\\"markerWidth\\\",8).attr(\\\"markerHeight\\\",6).attr(\\\"orient\\\",\\\"auto\\\"),s=i.append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 0 L 10 5 L 0 10 z\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\");qn(s,r[n+\\\"Style\\\"]),r[n+\\\"Class\\\"]&&s.attr(\\\"class\\\",r[n+\\\"Class\\\"])}function pO(t,e,r,n){var i=t.append(\\\"marker\\\").attr(\\\"id\\\",e).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",9).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"strokeWidth\\\").attr(\\\"markerWidth\\\",8).attr(\\\"markerHeight\\\",6).attr(\\\"orient\\\",\\\"auto\\\"),s=i.append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 0 L 10 5 L 0 10 L 4 5 z\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\");qn(s,r[n+\\\"Style\\\"]),r[n+\\\"Class\\\"]&&s.attr(\\\"class\\\",r[n+\\\"Class\\\"])}function gO(t,e,r,n){var i=t.append(\\\"marker\\\").attr(\\\"id\\\",e).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",9).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"strokeWidth\\\").attr(\\\"markerWidth\\\",8).attr(\\\"markerHeight\\\",6).attr(\\\"orient\\\",\\\"auto\\\"),s=i.append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 5 L 10 5\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\");qn(s,r[n+\\\"Style\\\"]),r[n+\\\"Class\\\"]&&s.attr(\\\"class\\\",r[n+\\\"Class\\\"])}function M0(t,e){var r=t.append(\\\"foreignObject\\\").attr(\\\"width\\\",\\\"100000\\\"),n=r.append(\\\"xhtml:div\\\");n.attr(\\\"xmlns\\\",\\\"http://www.w3.org/1999/xhtml\\\");var i=e.label;switch(typeof i){case\\\"function\\\":n.insert(i);break;case\\\"object\\\":n.insert(function(){return i});break;default:n.html(i)}qn(n,e.labelStyle),n.style(\\\"display\\\",\\\"inline-block\\\"),n.style(\\\"white-space\\\",\\\"nowrap\\\");var s=n.node().getBoundingClientRect();return r.attr(\\\"width\\\",s.width).attr(\\\"height\\\",s.height),r}function yO(t,e){var r=t;return r.node().appendChild(e.label),qn(r,e.labelStyle),r}function mO(t,e){for(var r=t.append(\\\"text\\\"),n=bO(e.label).split(`\\n`),i=0;i\u003Cn.length;i++)r.append(\\\"tspan\\\").attr(\\\"xml:space\\\",\\\"preserve\\\").attr(\\\"dy\\\",\\\"1em\\\").attr(\\\"x\\\",\\\"1\\\").text(n[i]);return qn(r,e.labelStyle),r}function bO(t){for(var e=\\\"\\\",r=!1,n,i=0;i\u003Ct.length;++i)if(n=t[i],r){switch(n){case\\\"n\\\":e+=`\\n`;break;default:e+=n}r=!1}else n===\\\"\\\\\\\\\\\"?r=!0:e+=n;return e}function N0(t,e,r){var n=e.label,i=t.append(\\\"g\\\");e.labelType===\\\"svg\\\"?yO(i,e):typeof n!=\\\"string\\\"||e.labelType===\\\"html\\\"?M0(i,e):mO(i,e);var s=i.node().getBBox(),a;switch(r){case\\\"top\\\":a=-e.height/2;break;case\\\"bottom\\\":a=e.height/2-s.height;break;default:a=-s.height/2}return i.attr(\\\"transform\\\",\\\"translate(\\\"+-s.width/2+\\\",\\\"+a+\\\")\\\"),i}var B0=function(t,e){var r=e.nodes().filter(function(s){return t3(e,s)}),n=t.selectAll(\\\"g.cluster\\\").data(r,function(s){return s});Dn(n.exit(),e).style(\\\"opacity\\\",0).remove();var i=n.enter().append(\\\"g\\\").attr(\\\"class\\\",\\\"cluster\\\").attr(\\\"id\\\",function(s){var a=e.node(s);return a.id}).style(\\\"opacity\\\",0).each(function(s){var a=e.node(s),o=St(this);St(this).append(\\\"rect\\\");var l=o.append(\\\"g\\\").attr(\\\"class\\\",\\\"label\\\");N0(l,a,a.clusterLabelPos)});return n=n.merge(i),n=Dn(n,e).style(\\\"opacity\\\",1),n.selectAll(\\\"rect\\\").each(function(s){var a=e.node(s),o=St(this);qn(o,a.style)}),n};function _O(t){B0=t}let I0=function(t,e){var r=t.selectAll(\\\"g.edgeLabel\\\").data(e.edges(),function(i){return e3(i)}).classed(\\\"update\\\",!0);r.exit().remove(),r.enter().append(\\\"g\\\").classed(\\\"edgeLabel\\\",!0).style(\\\"opacity\\\",0),r=t.selectAll(\\\"g.edgeLabel\\\"),r.each(function(i){var s=St(this);s.select(\\\".label\\\").remove();var a=e.edge(i),o=N0(s,e.edge(i),0).classed(\\\"label\\\",!0),l=o.node().getBBox();a.labelId&&o.attr(\\\"id\\\",a.labelId),me(a,\\\"width\\\")||(a.width=l.width),me(a,\\\"height\\\")||(a.height=l.height)});var n;return r.exit?n=r.exit():n=r.selectAll(null),Dn(n,e).style(\\\"opacity\\\",0).remove(),r};function xO(t){I0=t}function n3(t,e){return t.intersect(e)}var O0=function(t,e,r){var n=t.selectAll(\\\"g.edgePath\\\").data(e.edges(),function(a){return e3(a)}).classed(\\\"update\\\",!0),i=EO(n,e);CO(n,e);var s=n.merge!==void 0?n.merge(i):n;return Dn(s,e).style(\\\"opacity\\\",1),s.each(function(a){var o=St(this),l=e.edge(a);l.elem=this,l.id&&o.attr(\\\"id\\\",l.id),r3(o,l.class,(o.classed(\\\"update\\\")?\\\"update \\\":\\\"\\\")+\\\"edgePath\\\")}),s.selectAll(\\\"path.path\\\").each(function(a){var o=e.edge(a);o.arrowheadId=ou(\\\"arrowhead\\\");var l=St(this).attr(\\\"marker-end\\\",function(){return\\\"url(\\\"+kO(location.href,o.arrowheadId)+\\\")\\\"}).style(\\\"fill\\\",\\\"none\\\");Dn(l,e).attr(\\\"d\\\",function(u){return wO(e,u)}),qn(l,o.style)}),s.selectAll(\\\"defs *\\\").remove(),s.selectAll(\\\"defs\\\").each(function(a){var o=e.edge(a),l=r[o.arrowhead];l(St(this),o.arrowheadId,o,\\\"arrowhead\\\")}),s};function vO(t){O0=t}function kO(t,e){var r=t.split(\\\"#\\\")[0];return r+\\\"#\\\"+e}function wO(t,e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),s=r.points.slice(1,r.points.length-1);return s.unshift(n3(n,s[0])),s.push(n3(i,s[s.length-1])),i3(r,s)}function i3(t,e){var r=(Js||S6.line)().x(function(n){return n.x}).y(function(n){return n.y});return(r.curve||r.interpolate)(t.curve),r(e)}function TO(t){var e=t.getBBox(),r=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2);return{x:r.e,y:r.f}}function EO(t,e){var r=t.enter().append(\\\"g\\\").attr(\\\"class\\\",\\\"edgePath\\\").style(\\\"opacity\\\",0);return r.append(\\\"path\\\").attr(\\\"class\\\",\\\"path\\\").attr(\\\"d\\\",function(n){var i=e.edge(n),s=e.node(n.v).elem,a=Ss(i.points.length).map(function(){return TO(s)});return i3(i,a)}),r.append(\\\"defs\\\"),r}function CO(t,e){var r=t.exit();Dn(r,e).style(\\\"opacity\\\",0).remove()}var R0=function(t,e,r){var n=e.nodes().filter(function(a){return!t3(e,a)}),i=t.selectAll(\\\"g.node\\\").data(n,function(a){return a}).classed(\\\"update\\\",!0);i.exit().remove(),i.enter().append(\\\"g\\\").attr(\\\"class\\\",\\\"node\\\").style(\\\"opacity\\\",0),i=t.selectAll(\\\"g.node\\\"),i.each(function(a){var o=e.node(a),l=St(this);r3(l,o.class,(l.classed(\\\"update\\\")?\\\"update \\\":\\\"\\\")+\\\"node\\\"),l.select(\\\"g.label\\\").remove();var u=l.append(\\\"g\\\").attr(\\\"class\\\",\\\"label\\\"),d=N0(u,o),f=r[o.shape],p=No(d.node().getBBox(),\\\"width\\\",\\\"height\\\");o.elem=this,o.id&&l.attr(\\\"id\\\",o.id),o.labelId&&u.attr(\\\"id\\\",o.labelId),me(o,\\\"width\\\")&&(p.width=o.width),me(o,\\\"height\\\")&&(p.height=o.height),p.width+=o.paddingLeft+o.paddingRight,p.height+=o.paddingTop+o.paddingBottom,u.attr(\\\"transform\\\",\\\"translate(\\\"+(o.paddingLeft-o.paddingRight)/2+\\\",\\\"+(o.paddingTop-o.paddingBottom)/2+\\\")\\\");var g=St(this);g.select(\\\".label-container\\\").remove();var b=f(g,p,o).classed(\\\"label-container\\\",!0);qn(b,o.style);var k=b.node().getBBox();o.width=k.width,o.height=k.height});var s;return i.exit?s=i.exit():s=i.selectAll(null),Dn(s,e).style(\\\"opacity\\\",0).remove(),i};function SO(t){R0=t}function AO(t,e){var r=t.filter(function(){return!St(this).classed(\\\"update\\\")});function n(i){var s=e.node(i);return\\\"translate(\\\"+s.x+\\\",\\\"+s.y+\\\")\\\"}r.attr(\\\"transform\\\",n),Dn(t,e).style(\\\"opacity\\\",1).attr(\\\"transform\\\",n),Dn(r.selectAll(\\\"rect\\\"),e).attr(\\\"width\\\",function(i){return e.node(i).width}).attr(\\\"height\\\",function(i){return e.node(i).height}).attr(\\\"x\\\",function(i){var s=e.node(i);return-s.width/2}).attr(\\\"y\\\",function(i){var s=e.node(i);return-s.height/2})}function LO(t,e){var r=t.filter(function(){return!St(this).classed(\\\"update\\\")});function n(i){var s=e.edge(i);return me(s,\\\"x\\\")?\\\"translate(\\\"+s.x+\\\",\\\"+s.y+\\\")\\\":\\\"\\\"}r.attr(\\\"transform\\\",n),Dn(t,e).style(\\\"opacity\\\",1).attr(\\\"transform\\\",n)}function DO(t,e){var r=t.filter(function(){return!St(this).classed(\\\"update\\\")});function n(i){var s=e.node(i);return\\\"translate(\\\"+s.x+\\\",\\\"+s.y+\\\")\\\"}r.attr(\\\"transform\\\",n),Dn(t,e).style(\\\"opacity\\\",1).attr(\\\"transform\\\",n)}function s3(t,e,r,n){var i=t.x,s=t.y,a=i-n.x,o=s-n.y,l=Math.sqrt(e*e*o*o+r*r*a*a),u=Math.abs(e*r*a/l);n.x\u003Ci&&(u=-u);var d=Math.abs(e*r*o/l);return n.y\u003Cs&&(d=-d),{x:i+u,y:s+d}}function MO(t,e,r){return s3(t,e,e,r)}function NO(t,e,r,n){var i,s,a,o,l,u,d,f,p,g,b,k,T,L,E;if(i=e.y-t.y,a=t.x-e.x,l=e.x*t.y-t.x*e.y,p=i*r.x+a*r.y+l,g=i*n.x+a*n.y+l,!(p!==0&&g!==0&&a3(p,g))&&(s=n.y-r.y,o=r.x-n.x,u=n.x*r.y-r.x*n.y,d=s*t.x+o*t.y+u,f=s*e.x+o*e.y+u,!(d!==0&&f!==0&&a3(d,f))&&(b=i*o-s*a,b!==0)))return k=Math.abs(b/2),T=a*u-o*l,L=T\u003C0?(T-k)/b:(T+k)/b,T=s*l-i*u,E=T\u003C0?(T-k)/b:(T+k)/b,{x:L,y:E}}function a3(t,e){return t*e>0}function jn(t,e,r){var n=t.x,i=t.y,s=[],a=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;e.forEach(function(b){a=Math.min(a,b.x),o=Math.min(o,b.y)});for(var l=n-t.width/2-a,u=i-t.height/2-o,d=0;d\u003Ce.length;d++){var f=e[d],p=e[d\u003Ce.length-1?d+1:0],g=NO(t,r,{x:l+f.x,y:u+f.y},{x:l+p.x,y:u+p.y});g&&s.push(g)}return s.length?(s.length>1&&s.sort(function(b,k){var T=b.x-r.x,L=b.y-r.y,E=Math.sqrt(T*T+L*L),I=k.x-r.x,V=k.y-r.y,H=Math.sqrt(I*I+V*V);return E\u003CH?-1:E===H?0:1}),s[0]):(console.log(\\\"NO INTERSECTION FOUND, RETURN NODE CENTER\\\",t),t)}function F0(t,e){var r=t.x,n=t.y,i=e.x-r,s=e.y-n,a=t.width/2,o=t.height/2,l,u;return Math.abs(s)*a>Math.abs(i)*o?(s\u003C0&&(o=-o),l=s===0?0:o*i/s,u=o):(i\u003C0&&(a=-a),l=a,u=i===0?0:a*s/i),{x:r+l,y:n+u}}var P0={rect:IO,ellipse:OO,circle:RO,diamond:FO};function BO(t){P0=t}function IO(t,e,r){var n=t.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"rx\\\",r.rx).attr(\\\"ry\\\",r.ry).attr(\\\"x\\\",-e.width/2).attr(\\\"y\\\",-e.height/2).attr(\\\"width\\\",e.width).attr(\\\"height\\\",e.height);return r.intersect=function(i){return F0(r,i)},n}function OO(t,e,r){var n=e.width/2,i=e.height/2,s=t.insert(\\\"ellipse\\\",\\\":first-child\\\").attr(\\\"x\\\",-e.width/2).attr(\\\"y\\\",-e.height/2).attr(\\\"rx\\\",n).attr(\\\"ry\\\",i);return r.intersect=function(a){return s3(r,n,i,a)},s}function RO(t,e,r){var n=Math.max(e.width,e.height)/2,i=t.insert(\\\"circle\\\",\\\":first-child\\\").attr(\\\"x\\\",-e.width/2).attr(\\\"y\\\",-e.height/2).attr(\\\"r\\\",n);return r.intersect=function(s){return MO(r,n,s)},i}function FO(t,e,r){var n=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,s=[{x:0,y:-i},{x:-n,y:0},{x:0,y:i},{x:n,y:0}],a=t.insert(\\\"polygon\\\",\\\":first-child\\\").attr(\\\"points\\\",s.map(function(o){return o.x+\\\",\\\"+o.y}).join(\\\" \\\"));return r.intersect=function(o){return jn(r,s,o)},a}function PO(){var t=function(e,r){UO(r);var n=Wo(e,\\\"output\\\"),i=Wo(n,\\\"clusters\\\"),s=Wo(n,\\\"edgePaths\\\"),a=I0(Wo(n,\\\"edgeLabels\\\"),r),o=R0(Wo(n,\\\"nodes\\\"),r,P0);Ea(r),DO(o,r),LO(a,r),O0(s,r,D0);var l=B0(i,r);AO(l,r),zO(r)};return t.createNodes=function(e){return arguments.length?(SO(e),t):R0},t.createClusters=function(e){return arguments.length?(_O(e),t):B0},t.createEdgeLabels=function(e){return arguments.length?(xO(e),t):I0},t.createEdgePaths=function(e){return arguments.length?(vO(e),t):O0},t.shapes=function(e){return arguments.length?(BO(e),t):P0},t.arrows=function(e){return arguments.length?(dO(e),t):D0},t}var YO={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:\\\"rect\\\"},VO={arrowhead:\\\"normal\\\",curve:Hr};function UO(t){t.nodes().forEach(function(e){var r=t.node(e);!me(r,\\\"label\\\")&&!t.children(e).length&&(r.label=e),me(r,\\\"paddingX\\\")&&ka(r,{paddingLeft:r.paddingX,paddingRight:r.paddingX}),me(r,\\\"paddingY\\\")&&ka(r,{paddingTop:r.paddingY,paddingBottom:r.paddingY}),me(r,\\\"padding\\\")&&ka(r,{paddingLeft:r.padding,paddingRight:r.padding,paddingTop:r.padding,paddingBottom:r.padding}),ka(r,YO),vt([\\\"paddingLeft\\\",\\\"paddingRight\\\",\\\"paddingTop\\\",\\\"paddingBottom\\\"],function(n){r[n]=Number(r[n])}),me(r,\\\"width\\\")&&(r._prevWidth=r.width),me(r,\\\"height\\\")&&(r._prevHeight=r.height)}),t.edges().forEach(function(e){var r=t.edge(e);me(r,\\\"label\\\")||(r.label=\\\"\\\"),ka(r,VO)})}function zO(t){vt(t.nodes(),function(e){var r=t.node(e);me(r,\\\"_prevWidth\\\")?r.width=r._prevWidth:delete r.width,me(r,\\\"_prevHeight\\\")?r.height=r._prevHeight:delete r.height,delete r._prevWidth,delete r._prevHeight})}function Wo(t,e){var r=t.select(\\\"g.\\\"+e);return r.empty()&&(r=t.append(\\\"g\\\").attr(\\\"class\\\",e)),r}function o3(t,e,r){const n=e.width,i=e.height,s=(n+i)*.9,a=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}],o=ki(t,s,s,a);return r.intersect=function(l){return jn(r,a,l)},o}function l3(t,e,r){const i=e.height,s=i/4,a=e.width+2*s,o=[{x:s,y:0},{x:a-s,y:0},{x:a,y:-i/2},{x:a-s,y:-i},{x:s,y:-i},{x:0,y:-i/2}],l=ki(t,a,i,o);return r.intersect=function(u){return jn(r,o,u)},l}function c3(t,e,r){const n=e.width,i=e.height,s=[{x:-i/2,y:0},{x:n,y:0},{x:n,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}],a=ki(t,n,i,s);return r.intersect=function(o){return jn(r,s,o)},a}function u3(t,e,r){const n=e.width,i=e.height,s=[{x:-2*i/6,y:0},{x:n-i/6,y:0},{x:n+2*i/6,y:-i},{x:i/6,y:-i}],a=ki(t,n,i,s);return r.intersect=function(o){return jn(r,s,o)},a}function h3(t,e,r){const n=e.width,i=e.height,s=[{x:2*i/6,y:0},{x:n+i/6,y:0},{x:n-2*i/6,y:-i},{x:-i/6,y:-i}],a=ki(t,n,i,s);return r.intersect=function(o){return jn(r,s,o)},a}function d3(t,e,r){const n=e.width,i=e.height,s=[{x:-2*i/6,y:0},{x:n+2*i/6,y:0},{x:n-i/6,y:-i},{x:i/6,y:-i}],a=ki(t,n,i,s);return r.intersect=function(o){return jn(r,s,o)},a}function f3(t,e,r){const n=e.width,i=e.height,s=[{x:i/6,y:0},{x:n-i/6,y:0},{x:n+2*i/6,y:-i},{x:-2*i/6,y:-i}],a=ki(t,n,i,s);return r.intersect=function(o){return jn(r,s,o)},a}function p3(t,e,r){const n=e.width,i=e.height,s=[{x:0,y:0},{x:n+i/2,y:0},{x:n,y:-i/2},{x:n+i/2,y:-i},{x:0,y:-i}],a=ki(t,n,i,s);return r.intersect=function(o){return jn(r,s,o)},a}function g3(t,e,r){const n=e.height,i=e.width+n/4,s=t.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"rx\\\",n/2).attr(\\\"ry\\\",n/2).attr(\\\"x\\\",-i/2).attr(\\\"y\\\",-n/2).attr(\\\"width\\\",i).attr(\\\"height\\\",n);return r.intersect=function(a){return F0(r,a)},s}function y3(t,e,r){const n=e.width,i=e.height,s=[{x:0,y:0},{x:n,y:0},{x:n,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:n+8,y:0},{x:n+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],a=ki(t,n,i,s);return r.intersect=function(o){return jn(r,s,o)},a}function m3(t,e,r){const n=e.width,i=n/2,s=i/(2.5+n/50),a=e.height+s,o=\\\"M 0,\\\"+s+\\\" a \\\"+i+\\\",\\\"+s+\\\" 0,0,0 \\\"+n+\\\" 0 a \\\"+i+\\\",\\\"+s+\\\" 0,0,0 \\\"+-n+\\\" 0 l 0,\\\"+a+\\\" a \\\"+i+\\\",\\\"+s+\\\" 0,0,0 \\\"+n+\\\" 0 l 0,\\\"+-a,l=t.attr(\\\"label-offset-y\\\",s).insert(\\\"path\\\",\\\":first-child\\\").attr(\\\"d\\\",o).attr(\\\"transform\\\",\\\"translate(\\\"+-n/2+\\\",\\\"+-(a/2+s)+\\\")\\\");return r.intersect=function(u){const d=F0(r,u),f=d.x-r.x;if(i!=0&&(Math.abs(f)\u003Cr.width/2||Math.abs(f)==r.width/2&&Math.abs(d.y-r.y)>r.height/2-s)){let p=s*s*(1-f*f/(i*i));p!=0&&(p=Math.sqrt(p)),p=s-p,u.y-r.y>0&&(p=-p),d.y+=p}return d},l}function WO(t){t.shapes().question=o3,t.shapes().hexagon=l3,t.shapes().stadium=g3,t.shapes().subroutine=y3,t.shapes().cylinder=m3,t.shapes().rect_left_inv_arrow=c3,t.shapes().lean_right=u3,t.shapes().lean_left=h3,t.shapes().trapezoid=d3,t.shapes().inv_trapezoid=f3,t.shapes().rect_right_inv_arrow=p3}function HO(t){t({question:o3}),t({hexagon:l3}),t({stadium:g3}),t({subroutine:y3}),t({cylinder:m3}),t({rect_left_inv_arrow:c3}),t({lean_right:u3}),t({lean_left:h3}),t({trapezoid:d3}),t({inv_trapezoid:f3}),t({rect_right_inv_arrow:p3})}function ki(t,e,r,n){return t.insert(\\\"polygon\\\",\\\":first-child\\\").attr(\\\"points\\\",n.map(function(i){return i.x+\\\",\\\"+i.y}).join(\\\" \\\")).attr(\\\"transform\\\",\\\"translate(\\\"+-e/2+\\\",\\\"+r/2+\\\")\\\")}const GO={addToRender:WO,addToRenderV2:HO},b3={},qO=function(t){const e=Object.keys(t);for(const r of e)b3[r]=t[r]},_3=function(t,e,r,n,i,s){const a=n?n.select(`[id=\\\"${r}\\\"]`):St(`[id=\\\"${r}\\\"]`),o=i||document;Object.keys(t).forEach(function(u){const d=t[u];let f=\\\"default\\\";d.classes.length>0&&(f=d.classes.join(\\\" \\\"));const p=Vi(d.styles);let g=d.text!==void 0?d.text:d.id,b;if(pr($().flowchart.htmlLabels)){const L={label:g.replace(/fa[blrs]?:fa-[\\\\w-]+/g,E=>`\u003Ci class='${E.replace(\\\":\\\",\\\" \\\")}'>\u003C/i>`)};b=M0(a,L).node(),b.parentNode.removeChild(b)}else{const L=o.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"text\\\");L.setAttribute(\\\"style\\\",p.labelStyle.replace(\\\"color:\\\",\\\"fill:\\\"));const E=g.split(he.lineBreakRegex);for(const I of E){const V=o.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"tspan\\\");V.setAttributeNS(\\\"http://www.w3.org/XML/1998/namespace\\\",\\\"xml:space\\\",\\\"preserve\\\"),V.setAttribute(\\\"dy\\\",\\\"1em\\\"),V.setAttribute(\\\"x\\\",\\\"1\\\"),V.textContent=I,L.appendChild(V)}b=L}let k=0,T=\\\"\\\";switch(d.type){case\\\"round\\\":k=5,T=\\\"rect\\\";break;case\\\"square\\\":T=\\\"rect\\\";break;case\\\"diamond\\\":T=\\\"question\\\";break;case\\\"hexagon\\\":T=\\\"hexagon\\\";break;case\\\"odd\\\":T=\\\"rect_left_inv_arrow\\\";break;case\\\"lean_right\\\":T=\\\"lean_right\\\";break;case\\\"lean_left\\\":T=\\\"lean_left\\\";break;case\\\"trapezoid\\\":T=\\\"trapezoid\\\";break;case\\\"inv_trapezoid\\\":T=\\\"inv_trapezoid\\\";break;case\\\"odd_right\\\":T=\\\"rect_left_inv_arrow\\\";break;case\\\"circle\\\":T=\\\"circle\\\";break;case\\\"ellipse\\\":T=\\\"ellipse\\\";break;case\\\"stadium\\\":T=\\\"stadium\\\";break;case\\\"subroutine\\\":T=\\\"subroutine\\\";break;case\\\"cylinder\\\":T=\\\"cylinder\\\";break;case\\\"group\\\":T=\\\"rect\\\";break;default:T=\\\"rect\\\"}B.warn(\\\"Adding node\\\",d.id,d.domId),e.setNode(s.db.lookUpDomId(d.id),{labelType:\\\"svg\\\",labelStyle:p.labelStyle,shape:T,label:b,rx:k,ry:k,class:f,style:p.style,id:s.db.lookUpDomId(d.id)})})},x3=function(t,e,r){let n=0,i,s;if(t.defaultStyle!==void 0){const a=Vi(t.defaultStyle);i=a.style,s=a.labelStyle}t.forEach(function(a){n++;var o=\\\"L-\\\"+a.start+\\\"-\\\"+a.end,l=\\\"LS-\\\"+a.start,u=\\\"LE-\\\"+a.end;const d={};a.type===\\\"arrow_open\\\"?d.arrowhead=\\\"none\\\":d.arrowhead=\\\"normal\\\";let f=\\\"\\\",p=\\\"\\\";if(a.style!==void 0){const g=Vi(a.style);f=g.style,p=g.labelStyle}else switch(a.stroke){case\\\"normal\\\":f=\\\"fill:none\\\",i!==void 0&&(f=i),s!==void 0&&(p=s);break;case\\\"dotted\\\":f=\\\"fill:none;stroke-width:2px;stroke-dasharray:3;\\\";break;case\\\"thick\\\":f=\\\" stroke-width: 3.5px;fill:none\\\";break}d.style=f,d.labelStyle=p,a.interpolate!==void 0?d.curve=bn(a.interpolate,Hr):t.defaultInterpolate!==void 0?d.curve=bn(t.defaultInterpolate,Hr):d.curve=bn(b3.curve,Hr),a.text===void 0?a.style!==void 0&&(d.arrowheadStyle=\\\"fill: #333\\\"):(d.arrowheadStyle=\\\"fill: #333\\\",d.labelpos=\\\"c\\\",pr($().flowchart.htmlLabels)?(d.labelType=\\\"html\\\",d.label=`\u003Cspan id=\\\"L-${o}\\\" class=\\\"edgeLabel L-${l}' L-${u}\\\" style=\\\"${d.labelStyle}\\\">${a.text.replace(/fa[blrs]?:fa-[\\\\w-]+/g,g=>`\u003Ci class='${g.replace(\\\":\\\",\\\" \\\")}'>\u003C/i>`)}\u003C/span>`):(d.labelType=\\\"text\\\",d.label=a.text.replace(he.lineBreakRegex,`\\n`),a.style===void 0&&(d.style=d.style||\\\"stroke: #333; stroke-width: 1.5px;fill:none\\\"),d.labelStyle=d.labelStyle.replace(\\\"color:\\\",\\\"fill:\\\"))),d.id=o,d.class=l+\\\" \\\"+u,d.minlen=a.length||1,e.setEdge(r.db.lookUpDomId(a.start),r.db.lookUpDomId(a.end),d,n)})},jO={setConf:qO,addVertices:_3,addEdges:x3,getClasses:function(t,e){B.info(\\\"Extracting classes\\\"),e.db.clear();try{return e.parse(t),e.db.getClasses()}catch(r){return B.error(r),{}}},draw:function(t,e,r,n){B.info(\\\"Drawing flowchart\\\"),n.db.clear();const{securityLevel:i,flowchart:s}=$();let a;i===\\\"sandbox\\\"&&(a=St(\\\"#i\\\"+e));const o=St(i===\\\"sandbox\\\"?a.nodes()[0].contentDocument.body:\\\"body\\\"),l=i===\\\"sandbox\\\"?a.nodes()[0].contentDocument:document;try{n.parser.parse(t)}catch{B.debug(\\\"Parsing failed\\\")}let u=n.db.getDirection();u===void 0&&(u=\\\"TD\\\");const d=s.nodeSpacing||50,f=s.rankSpacing||50,p=new sr({multigraph:!0,compound:!0}).setGraph({rankdir:u,nodesep:d,ranksep:f,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let g;const b=n.db.getSubGraphs();for(let G=b.length-1;G>=0;G--)g=b[G],n.db.addVertex(g.id,g.title,\\\"group\\\",void 0,g.classes);const k=n.db.getVertices();B.warn(\\\"Get vertices\\\",k);const T=n.db.getEdges();let L=0;for(L=b.length-1;L>=0;L--){g=b[L],hh(\\\"cluster\\\").append(\\\"text\\\");for(let G=0;G\u003Cg.nodes.length;G++)B.warn(\\\"Setting subgraph\\\",g.nodes[G],n.db.lookUpDomId(g.nodes[G]),n.db.lookUpDomId(g.id)),p.setParent(n.db.lookUpDomId(g.nodes[G]),n.db.lookUpDomId(g.id))}_3(k,p,e,o,l,n),x3(T,p,n);const E=new PO;GO.addToRender(E),E.arrows().none=function(Y,W,N,D){const v=Y.append(\\\"marker\\\").attr(\\\"id\\\",W).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",9).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"strokeWidth\\\").attr(\\\"markerWidth\\\",8).attr(\\\"markerHeight\\\",6).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 0 L 0 0 L 0 0 z\\\");qn(v,N[D+\\\"Style\\\"])},E.arrows().normal=function(Y,W){Y.append(\\\"marker\\\").attr(\\\"id\\\",W).attr(\\\"viewBox\\\",\\\"0 0 10 10\\\").attr(\\\"refX\\\",9).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"strokeWidth\\\").attr(\\\"markerWidth\\\",8).attr(\\\"markerHeight\\\",6).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 0 L 10 5 L 0 10 z\\\").attr(\\\"class\\\",\\\"arrowheadPath\\\").style(\\\"stroke-width\\\",1).style(\\\"stroke-dasharray\\\",\\\"1,0\\\")};const I=o.select(`[id=\\\"${e}\\\"]`),V=o.select(\\\"#\\\"+e+\\\" g\\\");for(E(V,p),V.selectAll(\\\"g.node\\\").attr(\\\"title\\\",function(){return n.db.getTooltip(this.id)}),n.db.indexNodes(\\\"subGraph\\\"+L),L=0;L\u003Cb.length;L++)if(g=b[L],g.title!==\\\"undefined\\\"){const G=l.querySelectorAll(\\\"#\\\"+e+' [id=\\\"'+n.db.lookUpDomId(g.id)+'\\\"] rect'),Y=l.querySelectorAll(\\\"#\\\"+e+' [id=\\\"'+n.db.lookUpDomId(g.id)+'\\\"]'),W=G[0].x.baseVal.value,N=G[0].y.baseVal.value,D=G[0].width.baseVal.value,v=St(Y[0]).select(\\\".label\\\");v.attr(\\\"transform\\\",`translate(${W+D/2}, ${N+14})`),v.attr(\\\"id\\\",e+\\\"Text\\\");for(let M=0;M\u003Cg.classes.length;M++)Y[0].classList.add(g.classes[M])}if(!s.htmlLabels){const G=l.querySelectorAll('[id=\\\"'+e+'\\\"] .edgeLabel .label');for(const Y of G){const W=Y.getBBox(),N=l.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"rect\\\");N.setAttribute(\\\"rx\\\",0),N.setAttribute(\\\"ry\\\",0),N.setAttribute(\\\"width\\\",W.width),N.setAttribute(\\\"height\\\",W.height),Y.insertBefore(N,Y.firstChild)}}Sc(p,I,s.diagramPadding,s.useMaxWidth),Object.keys(k).forEach(function(G){const Y=k[G];if(Y.link){const W=o.select(\\\"#\\\"+e+' [id=\\\"'+n.db.lookUpDomId(G)+'\\\"]');if(W){const N=l.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"a\\\");N.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"class\\\",Y.classes.join(\\\" \\\")),N.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"href\\\",Y.link),N.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"rel\\\",\\\"noopener\\\"),i===\\\"sandbox\\\"?N.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"target\\\",\\\"_top\\\"):Y.linkTarget&&N.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"target\\\",Y.linkTarget);const D=W.insert(function(){return N},\\\":first-child\\\"),w=W.select(\\\".label-container\\\");w&&D.append(function(){return w.node()});const v=W.select(\\\".label\\\");v&&D.append(function(){return v.node()})}}})}},v3={},$O=function(t){const e=Object.keys(t);for(const r of e)v3[r]=t[r]},k3=function(t,e,r,n,i,s){const a=n.select(`[id=\\\"${r}\\\"]`);Object.keys(t).forEach(function(l){const u=t[l];let d=\\\"default\\\";u.classes.length>0&&(d=u.classes.join(\\\" \\\"));const f=Vi(u.styles);let p=u.text!==void 0?u.text:u.id,g;if(pr($().flowchart.htmlLabels)){const T={label:p.replace(/fa[blrs]?:fa-[\\\\w-]+/g,L=>`\u003Ci class='${L.replace(\\\":\\\",\\\" \\\")}'>\u003C/i>`)};g=M0(a,T).node(),g.parentNode.removeChild(g)}else{const T=i.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"text\\\");T.setAttribute(\\\"style\\\",f.labelStyle.replace(\\\"color:\\\",\\\"fill:\\\"));const L=p.split(he.lineBreakRegex);for(const E of L){const I=i.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"tspan\\\");I.setAttributeNS(\\\"http://www.w3.org/XML/1998/namespace\\\",\\\"xml:space\\\",\\\"preserve\\\"),I.setAttribute(\\\"dy\\\",\\\"1em\\\"),I.setAttribute(\\\"x\\\",\\\"1\\\"),I.textContent=E,T.appendChild(I)}g=T}let b=0,k=\\\"\\\";switch(u.type){case\\\"round\\\":b=5,k=\\\"rect\\\";break;case\\\"square\\\":k=\\\"rect\\\";break;case\\\"diamond\\\":k=\\\"question\\\";break;case\\\"hexagon\\\":k=\\\"hexagon\\\";break;case\\\"odd\\\":k=\\\"rect_left_inv_arrow\\\";break;case\\\"lean_right\\\":k=\\\"lean_right\\\";break;case\\\"lean_left\\\":k=\\\"lean_left\\\";break;case\\\"trapezoid\\\":k=\\\"trapezoid\\\";break;case\\\"inv_trapezoid\\\":k=\\\"inv_trapezoid\\\";break;case\\\"odd_right\\\":k=\\\"rect_left_inv_arrow\\\";break;case\\\"circle\\\":k=\\\"circle\\\";break;case\\\"ellipse\\\":k=\\\"ellipse\\\";break;case\\\"stadium\\\":k=\\\"stadium\\\";break;case\\\"subroutine\\\":k=\\\"subroutine\\\";break;case\\\"cylinder\\\":k=\\\"cylinder\\\";break;case\\\"group\\\":k=\\\"rect\\\";break;case\\\"doublecircle\\\":k=\\\"doublecircle\\\";break;default:k=\\\"rect\\\"}e.setNode(u.id,{labelStyle:f.labelStyle,shape:k,labelText:p,rx:b,ry:b,class:d,style:f.style,id:u.id,link:u.link,linkTarget:u.linkTarget,tooltip:s.db.getTooltip(u.id)||\\\"\\\",domId:s.db.lookUpDomId(u.id),haveCallback:u.haveCallback,width:u.type===\\\"group\\\"?500:void 0,dir:u.dir,type:u.type,props:u.props,padding:$().flowchart.padding}),B.info(\\\"setNode\\\",{labelStyle:f.labelStyle,shape:k,labelText:p,rx:b,ry:b,class:d,style:f.style,id:u.id,domId:s.db.lookUpDomId(u.id),width:u.type===\\\"group\\\"?500:void 0,type:u.type,dir:u.dir,props:u.props,padding:$().flowchart.padding})})},w3=function(t,e,r){B.info(\\\"abc78 edges = \\\",t);let n=0,i={},s,a;if(t.defaultStyle!==void 0){const o=Vi(t.defaultStyle);s=o.style,a=o.labelStyle}t.forEach(function(o){n++;var l=\\\"L-\\\"+o.start+\\\"-\\\"+o.end;i[l]===void 0?(i[l]=0,B.info(\\\"abc78 new entry\\\",l,i[l])):(i[l]++,B.info(\\\"abc78 new entry\\\",l,i[l]));let u=l+\\\"-\\\"+i[l];B.info(\\\"abc78 new link id to be used is\\\",l,u,i[l]);var d=\\\"LS-\\\"+o.start,f=\\\"LE-\\\"+o.end;const p={style:\\\"\\\",labelStyle:\\\"\\\"};switch(p.minlen=o.length||1,o.type===\\\"arrow_open\\\"?p.arrowhead=\\\"none\\\":p.arrowhead=\\\"normal\\\",p.arrowTypeStart=\\\"arrow_open\\\",p.arrowTypeEnd=\\\"arrow_open\\\",o.type){case\\\"double_arrow_cross\\\":p.arrowTypeStart=\\\"arrow_cross\\\";case\\\"arrow_cross\\\":p.arrowTypeEnd=\\\"arrow_cross\\\";break;case\\\"double_arrow_point\\\":p.arrowTypeStart=\\\"arrow_point\\\";case\\\"arrow_point\\\":p.arrowTypeEnd=\\\"arrow_point\\\";break;case\\\"double_arrow_circle\\\":p.arrowTypeStart=\\\"arrow_circle\\\";case\\\"arrow_circle\\\":p.arrowTypeEnd=\\\"arrow_circle\\\";break}let g=\\\"\\\",b=\\\"\\\";switch(o.stroke){case\\\"normal\\\":g=\\\"fill:none;\\\",s!==void 0&&(g=s),a!==void 0&&(b=a),p.thickness=\\\"normal\\\",p.pattern=\\\"solid\\\";break;case\\\"dotted\\\":p.thickness=\\\"normal\\\",p.pattern=\\\"dotted\\\",p.style=\\\"fill:none;stroke-width:2px;stroke-dasharray:3;\\\";break;case\\\"thick\\\":p.thickness=\\\"thick\\\",p.pattern=\\\"solid\\\",p.style=\\\"stroke-width: 3.5px;fill:none;\\\";break}if(o.style!==void 0){const k=Vi(o.style);g=k.style,b=k.labelStyle}p.style=p.style+=g,p.labelStyle=p.labelStyle+=b,o.interpolate!==void 0?p.curve=bn(o.interpolate,Hr):t.defaultInterpolate!==void 0?p.curve=bn(t.defaultInterpolate,Hr):p.curve=bn(v3.curve,Hr),o.text===void 0?o.style!==void 0&&(p.arrowheadStyle=\\\"fill: #333\\\"):(p.arrowheadStyle=\\\"fill: #333\\\",p.labelpos=\\\"c\\\"),p.labelType=\\\"text\\\",p.label=o.text.replace(he.lineBreakRegex,`\\n`),o.style===void 0&&(p.style=p.style||\\\"stroke: #333; stroke-width: 1.5px;fill:none;\\\"),p.labelStyle=p.labelStyle.replace(\\\"color:\\\",\\\"fill:\\\"),p.id=u,p.classes=\\\"flowchart-link \\\"+d+\\\" \\\"+f,e.setEdge(o.start,o.end,p,n)})},Y0={setConf:$O,addVertices:k3,addEdges:w3,getClasses:function(t,e){B.info(\\\"Extracting classes\\\"),e.db.clear();try{return e.parse(t),e.db.getClasses()}catch{return}},draw:function(t,e,r,n){B.info(\\\"Drawing flowchart\\\"),n.db.clear(),vi.setGen(\\\"gen-2\\\"),n.parser.parse(t);let i=n.db.getDirection();i===void 0&&(i=\\\"TD\\\");const{securityLevel:s,flowchart:a}=$(),o=a.nodeSpacing||50,l=a.rankSpacing||50;let u;s===\\\"sandbox\\\"&&(u=St(\\\"#i\\\"+e));const d=St(s===\\\"sandbox\\\"?u.nodes()[0].contentDocument.body:\\\"body\\\"),f=s===\\\"sandbox\\\"?u.nodes()[0].contentDocument:document,p=new sr({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:o,ranksep:l,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let g;const b=n.db.getSubGraphs();B.info(\\\"Subgraphs - \\\",b);for(let H=b.length-1;H>=0;H--)g=b[H],B.info(\\\"Subgraph - \\\",g),n.db.addVertex(g.id,g.title,\\\"group\\\",void 0,g.classes,g.dir);const k=n.db.getVertices(),T=n.db.getEdges();B.info(T);let L=0;for(L=b.length-1;L>=0;L--){g=b[L],hh(\\\"cluster\\\").append(\\\"text\\\");for(let H=0;H\u003Cg.nodes.length;H++)B.info(\\\"Setting up subgraphs\\\",g.nodes[H],g.id),p.setParent(g.nodes[H],g.id)}k3(k,p,e,d,f,n),w3(T,p);const E=d.select(`[id=\\\"${e}\\\"]`),I=d.select(\\\"#\\\"+e+\\\" g\\\");if(v0(I,p,[\\\"point\\\",\\\"circle\\\",\\\"cross\\\"],\\\"flowchart\\\",e),ge.insertTitle(E,\\\"flowchartTitleText\\\",a.titleTopMargin,n.db.getDiagramTitle()),Sc(p,E,a.diagramPadding,a.useMaxWidth),n.db.indexNodes(\\\"subGraph\\\"+L),!a.htmlLabels){const H=f.querySelectorAll('[id=\\\"'+e+'\\\"] .edgeLabel .label');for(const G of H){const Y=G.getBBox(),W=f.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"rect\\\");W.setAttribute(\\\"rx\\\",0),W.setAttribute(\\\"ry\\\",0),W.setAttribute(\\\"width\\\",Y.width),W.setAttribute(\\\"height\\\",Y.height),G.insertBefore(W,G.firstChild)}}Object.keys(k).forEach(function(H){const G=k[H];if(G.link){const Y=St(\\\"#\\\"+e+' [id=\\\"'+H+'\\\"]');if(Y){const W=f.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"a\\\");W.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"class\\\",G.classes.join(\\\" \\\")),W.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"href\\\",G.link),W.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"rel\\\",\\\"noopener\\\"),s===\\\"sandbox\\\"?W.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"target\\\",\\\"_top\\\"):G.linkTarget&&W.setAttributeNS(\\\"http://www.w3.org/2000/svg\\\",\\\"target\\\",G.linkTarget);const N=Y.insert(function(){return W},\\\":first-child\\\"),D=Y.select(\\\".label-container\\\");D&&N.append(function(){return D.node()});const w=Y.select(\\\".label\\\");w&&N.append(function(){return w.node()})}}})}};var V0=function(){var t=function(W,N,D,w){for(D=D||{},w=W.length;w--;D[W[w]]=N);return D},e=[1,3],r=[1,5],n=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],i=[1,15],s=[1,16],a=[1,17],o=[1,18],l=[1,19],u=[1,20],d=[1,21],f=[1,22],p=[1,23],g=[1,24],b=[1,25],k=[1,26],T=[1,27],L=[1,29],E=[1,31],I=[1,34],V=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],H={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,tickInterval:16,excludes:17,includes:18,todayMarker:19,title:20,acc_title:21,acc_title_value:22,acc_descr:23,acc_descr_value:24,acc_descr_multiline_value:25,section:26,clickStatement:27,taskTxt:28,taskData:29,openDirective:30,typeDirective:31,closeDirective:32,\\\":\\\":33,argDirective:34,click:35,callbackname:36,callbackargs:37,href:38,clickStatementDebug:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:\\\"error\\\",5:\\\"gantt\\\",7:\\\"EOF\\\",9:\\\"SPACE\\\",11:\\\"NL\\\",12:\\\"dateFormat\\\",13:\\\"inclusiveEndDates\\\",14:\\\"topAxis\\\",15:\\\"axisFormat\\\",16:\\\"tickInterval\\\",17:\\\"excludes\\\",18:\\\"includes\\\",19:\\\"todayMarker\\\",20:\\\"title\\\",21:\\\"acc_title\\\",22:\\\"acc_title_value\\\",23:\\\"acc_descr\\\",24:\\\"acc_descr_value\\\",25:\\\"acc_descr_multiline_value\\\",26:\\\"section\\\",28:\\\"taskTxt\\\",29:\\\"taskData\\\",33:\\\":\\\",35:\\\"click\\\",36:\\\"callbackname\\\",37:\\\"callbackargs\\\",38:\\\"href\\\",40:\\\"open_directive\\\",41:\\\"type_directive\\\",42:\\\"arg_directive\\\",43:\\\"close_directive\\\"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[27,2],[27,3],[27,3],[27,4],[27,3],[27,4],[27,2],[39,2],[39,3],[39,3],[39,4],[39,3],[39,4],[39,2],[30,1],[31,1],[34,1],[32,1]],performAction:function(N,D,w,v,M,m,Q){var x=m.length-1;switch(M){case 2:return m[x-1];case 3:this.$=[];break;case 4:m[x-1].push(m[x]),this.$=m[x-1];break;case 5:case 6:this.$=m[x];break;case 7:case 8:this.$=[];break;case 9:v.setDateFormat(m[x].substr(11)),this.$=m[x].substr(11);break;case 10:v.enableInclusiveEndDates(),this.$=m[x].substr(18);break;case 11:v.TopAxis(),this.$=m[x].substr(8);break;case 12:v.setAxisFormat(m[x].substr(11)),this.$=m[x].substr(11);break;case 13:v.setTickInterval(m[x].substr(13)),this.$=m[x].substr(13);break;case 14:v.setExcludes(m[x].substr(9)),this.$=m[x].substr(9);break;case 15:v.setIncludes(m[x].substr(9)),this.$=m[x].substr(9);break;case 16:v.setTodayMarker(m[x].substr(12)),this.$=m[x].substr(12);break;case 17:v.setDiagramTitle(m[x].substr(6)),this.$=m[x].substr(6);break;case 18:this.$=m[x].trim(),v.setAccTitle(this.$);break;case 19:case 20:this.$=m[x].trim(),v.setAccDescription(this.$);break;case 21:v.addSection(m[x].substr(8)),this.$=m[x].substr(8);break;case 23:v.addTask(m[x-1],m[x]),this.$=\\\"task\\\";break;case 27:this.$=m[x-1],v.setClickEvent(m[x-1],m[x],null);break;case 28:this.$=m[x-2],v.setClickEvent(m[x-2],m[x-1],m[x]);break;case 29:this.$=m[x-2],v.setClickEvent(m[x-2],m[x-1],null),v.setLink(m[x-2],m[x]);break;case 30:this.$=m[x-3],v.setClickEvent(m[x-3],m[x-2],m[x-1]),v.setLink(m[x-3],m[x]);break;case 31:this.$=m[x-2],v.setClickEvent(m[x-2],m[x],null),v.setLink(m[x-2],m[x-1]);break;case 32:this.$=m[x-3],v.setClickEvent(m[x-3],m[x-1],m[x]),v.setLink(m[x-3],m[x-2]);break;case 33:this.$=m[x-1],v.setLink(m[x-1],m[x]);break;case 34:case 40:this.$=m[x-1]+\\\" \\\"+m[x];break;case 35:case 36:case 38:this.$=m[x-2]+\\\" \\\"+m[x-1]+\\\" \\\"+m[x];break;case 37:case 39:this.$=m[x-3]+\\\" \\\"+m[x-2]+\\\" \\\"+m[x-1]+\\\" \\\"+m[x];break;case 41:v.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 42:v.parseDirective(m[x],\\\"type_directive\\\");break;case 43:m[x]=m[x].trim().replace(/'/g,'\\\"'),v.parseDirective(m[x],\\\"arg_directive\\\");break;case 44:v.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"gantt\\\");break}},table:[{3:1,4:2,5:e,30:4,40:r},{1:[3]},{3:6,4:2,5:e,30:4,40:r},t(n,[2,3],{6:7}),{31:8,41:[1,9]},{41:[2,41]},{1:[2,1]},{4:30,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:s,14:a,15:o,16:l,17:u,18:d,19:f,20:p,21:g,23:b,25:k,26:T,27:28,28:L,30:4,35:E,40:r},{32:32,33:[1,33],43:I},t([33,43],[2,42]),t(n,[2,8],{1:[2,2]}),t(n,[2,4]),{4:30,10:35,12:i,13:s,14:a,15:o,16:l,17:u,18:d,19:f,20:p,21:g,23:b,25:k,26:T,27:28,28:L,30:4,35:E,40:r},t(n,[2,6]),t(n,[2,7]),t(n,[2,9]),t(n,[2,10]),t(n,[2,11]),t(n,[2,12]),t(n,[2,13]),t(n,[2,14]),t(n,[2,15]),t(n,[2,16]),t(n,[2,17]),{22:[1,36]},{24:[1,37]},t(n,[2,20]),t(n,[2,21]),t(n,[2,22]),{29:[1,38]},t(n,[2,24]),{36:[1,39],38:[1,40]},{11:[1,41]},{34:42,42:[1,43]},{11:[2,44]},t(n,[2,5]),t(n,[2,18]),t(n,[2,19]),t(n,[2,23]),t(n,[2,27],{37:[1,44],38:[1,45]}),t(n,[2,33],{36:[1,46]}),t(V,[2,25]),{32:47,43:I},{43:[2,43]},t(n,[2,28],{38:[1,48]}),t(n,[2,29]),t(n,[2,31],{37:[1,49]}),{11:[1,50]},t(n,[2,30]),t(n,[2,32]),t(V,[2,26])],defaultActions:{5:[2,41],6:[2,1],34:[2,44],43:[2,43]},parseError:function(N,D){if(D.recoverable)this.trace(N);else{var w=new Error(N);throw w.hash=D,w}},parse:function(N){var D=this,w=[0],v=[],M=[null],m=[],Q=this.table,x=\\\"\\\",ct=0,Dt=0,kt=2,j=1,ot=m.slice.call(arguments,1),rt=Object.create(this.lexer),nt={yy:{}};for(var ut in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ut)&&(nt.yy[ut]=this.yy[ut]);rt.setInput(N,nt.yy),nt.yy.lexer=rt,nt.yy.parser=this,typeof rt.yylloc>\\\"u\\\"&&(rt.yylloc={});var _t=rt.yylloc;m.push(_t);var K=rt.options&&rt.options.ranges;typeof nt.yy.parseError==\\\"function\\\"?this.parseError=nt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var Yt;return Yt=v.pop()||rt.lex()||j,typeof Yt!=\\\"number\\\"&&(Yt instanceof Array&&(v=Yt,Yt=v.pop()),Yt=D.symbols_[Yt]||Yt),Yt}for(var P,z,X,F,O={},A,J,C,ht;;){if(z=w[w.length-1],this.defaultActions[z]?X=this.defaultActions[z]:((P===null||typeof P>\\\"u\\\")&&(P=Ot()),X=Q[z]&&Q[z][P]),typeof X>\\\"u\\\"||!X.length||!X[0]){var U=\\\"\\\";ht=[];for(A in Q[z])this.terminals_[A]&&A>kt&&ht.push(\\\"'\\\"+this.terminals_[A]+\\\"'\\\");rt.showPosition?U=\\\"Parse error on line \\\"+(ct+1)+`:\\n`+rt.showPosition()+`\\nExpecting `+ht.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[P]||P)+\\\"'\\\":U=\\\"Parse error on line \\\"+(ct+1)+\\\": Unexpected \\\"+(P==j?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[P]||P)+\\\"'\\\"),this.parseError(U,{text:rt.match,token:this.terminals_[P]||P,line:rt.yylineno,loc:_t,expected:ht})}if(X[0]instanceof Array&&X.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+z+\\\", token: \\\"+P);switch(X[0]){case 1:w.push(P),M.push(rt.yytext),m.push(rt.yylloc),w.push(X[1]),P=null,Dt=rt.yyleng,x=rt.yytext,ct=rt.yylineno,_t=rt.yylloc;break;case 2:if(J=this.productions_[X[1]][1],O.$=M[M.length-J],O._$={first_line:m[m.length-(J||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(J||1)].first_column,last_column:m[m.length-1].last_column},K&&(O._$.range=[m[m.length-(J||1)].range[0],m[m.length-1].range[1]]),F=this.performAction.apply(O,[x,Dt,ct,nt.yy,X[1],M,m].concat(ot)),typeof F\u003C\\\"u\\\")return F;J&&(w=w.slice(0,-1*J*2),M=M.slice(0,-1*J),m=m.slice(0,-1*J)),w.push(this.productions_[X[1]][0]),M.push(O.$),m.push(O._$),C=Q[w[w.length-2]][w[w.length-1]],w.push(C);break;case 3:return!0}}return!0}},G=function(){var W={EOF:1,parseError:function(D,w){if(this.yy.parser)this.yy.parser.parseError(D,w);else throw new Error(D)},setInput:function(N,D){return this.yy=D||this.yy||{},this._input=N,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var N=this._input[0];this.yytext+=N,this.yyleng++,this.offset++,this.match+=N,this.matched+=N;var D=N.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return D?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),N},unput:function(N){var D=N.length,w=N.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=N+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-D),this.offset-=D;var v=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),w.length-1&&(this.yylineno-=w.length-1);var M=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:w?(w.length===v.length?this.yylloc.first_column:0)+v[v.length-w.length].length-w[0].length:this.yylloc.first_column-D},this.options.ranges&&(this.yylloc.range=[M[0],M[0]+this.yyleng-D]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(N){this.unput(this.match.slice(N))},pastInput:function(){var N=this.matched.substr(0,this.matched.length-this.match.length);return(N.length>20?\\\"...\\\":\\\"\\\")+N.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var N=this.match;return N.length\u003C20&&(N+=this._input.substr(0,20-N.length)),(N.substr(0,20)+(N.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var N=this.pastInput(),D=new Array(N.length+1).join(\\\"-\\\");return N+this.upcomingInput()+`\\n`+D+\\\"^\\\"},test_match:function(N,D){var w,v,M;if(this.options.backtrack_lexer&&(M={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(M.yylloc.range=this.yylloc.range.slice(0))),v=N[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+N[0].length},this.yytext+=N[0],this.match+=N[0],this.matches=N,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(N[0].length),this.matched+=N[0],w=this.performAction.call(this,this.yy,this,D,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),w)return w;if(this._backtrack){for(var m in M)this[m]=M[m];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var N,D,w,v;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var M=this._currentRules(),m=0;m\u003CM.length;m++)if(w=this._input.match(this.rules[M[m]]),w&&(!D||w[0].length>D[0].length)){if(D=w,v=m,this.options.backtrack_lexer){if(N=this.test_match(w,M[m]),N!==!1)return N;if(this._backtrack){D=!1;continue}else return!1}else if(!this.options.flex)break}return D?(N=this.test_match(D,M[v]),N!==!1?N:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var D=this.next();return D||this.lex()},begin:function(D){this.conditionStack.push(D)},popState:function(){var D=this.conditionStack.length-1;return D>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(D){return D=this.conditionStack.length-1-Math.abs(D||0),D>=0?this.conditionStack[D]:\\\"INITIAL\\\"},pushState:function(D){this.begin(D)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(D,w,v,M){switch(v){case 0:return this.begin(\\\"open_directive\\\"),40;case 1:return this.begin(\\\"type_directive\\\"),41;case 2:return this.popState(),this.begin(\\\"arg_directive\\\"),33;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:return this.begin(\\\"acc_title\\\"),21;case 6:return this.popState(),\\\"acc_title_value\\\";case 7:return this.begin(\\\"acc_descr\\\"),23;case 8:return this.popState(),\\\"acc_descr_value\\\";case 9:this.begin(\\\"acc_descr_multiline\\\");break;case 10:this.popState();break;case 11:return\\\"acc_descr_multiline_value\\\";case 12:break;case 13:break;case 14:break;case 15:return 11;case 16:break;case 17:break;case 18:break;case 19:this.begin(\\\"href\\\");break;case 20:this.popState();break;case 21:return 38;case 22:this.begin(\\\"callbackname\\\");break;case 23:this.popState();break;case 24:this.popState(),this.begin(\\\"callbackargs\\\");break;case 25:return 36;case 26:this.popState();break;case 27:return 37;case 28:this.begin(\\\"click\\\");break;case 29:this.popState();break;case 30:return 35;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 16;case 37:return 18;case 38:return 17;case 39:return 19;case 40:return\\\"date\\\";case 41:return 20;case 42:return\\\"accDescription\\\";case 43:return 26;case 44:return 28;case 45:return 29;case 46:return 33;case 47:return 7;case 48:return\\\"INVALID\\\"}},rules:[/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:%%(?!\\\\{)*[^\\\\n]*)/i,/^(?:[^\\\\}]%%*[^\\\\n]*)/i,/^(?:%%*[^\\\\n]*[\\\\n]*)/i,/^(?:[\\\\n]+)/i,/^(?:\\\\s+)/i,/^(?:#[^\\\\n]*)/i,/^(?:%[^\\\\n]*)/i,/^(?:href[\\\\s]+[\\\"])/i,/^(?:[\\\"])/i,/^(?:[^\\\"]*)/i,/^(?:call[\\\\s]+)/i,/^(?:\\\\([\\\\s]*\\\\))/i,/^(?:\\\\()/i,/^(?:[^(]*)/i,/^(?:\\\\))/i,/^(?:[^)]*)/i,/^(?:click[\\\\s]+)/i,/^(?:[\\\\s\\\\n])/i,/^(?:[^\\\\s\\\\n]*)/i,/^(?:gantt\\\\b)/i,/^(?:dateFormat\\\\s[^#\\\\n;]+)/i,/^(?:inclusiveEndDates\\\\b)/i,/^(?:topAxis\\\\b)/i,/^(?:axisFormat\\\\s[^#\\\\n;]+)/i,/^(?:tickInterval\\\\s[^#\\\\n;]+)/i,/^(?:includes\\\\s[^#\\\\n;]+)/i,/^(?:excludes\\\\s[^#\\\\n;]+)/i,/^(?:todayMarker\\\\s[^\\\\n;]+)/i,/^(?:\\\\d\\\\d\\\\d\\\\d-\\\\d\\\\d-\\\\d\\\\d\\\\b)/i,/^(?:title\\\\s[^#\\\\n;]+)/i,/^(?:accDescription\\\\s[^#\\\\n;]+)/i,/^(?:section\\\\s[^#:\\\\n;]+)/i,/^(?:[^#:\\\\n;]+)/i,/^(?::[^#\\\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};return W}();H.lexer=G;function Y(){this.yy={}}return Y.prototype=H,H.Parser=Y,new Y}();V0.parser=V0;const XO=V0,KO=t=>t.match(/^\\\\s*gantt/)!==null;let $n=\\\"\\\",U0=\\\"\\\",z0,W0=\\\"\\\",Ho=[],Go=[],H0={},G0=[],wu=[],Aa=\\\"\\\";const T3=[\\\"active\\\",\\\"done\\\",\\\"crit\\\",\\\"milestone\\\"];let q0=[],qo=!1,j0=!1,$0=0;const ZO=function(t,e,r){ze.parseDirective(this,t,e,r)},QO=function(){G0=[],wu=[],Aa=\\\"\\\",q0=[],Tu=0,K0=void 0,Eu=void 0,hr=[],$n=\\\"\\\",U0=\\\"\\\",z0=void 0,W0=\\\"\\\",Ho=[],Go=[],qo=!1,j0=!1,$0=0,H0={},vn()},JO=function(t){U0=t},tR=function(){return U0},eR=function(t){z0=t},rR=function(){return z0},nR=function(t){W0=t},iR=function(){return W0},sR=function(t){$n=t},aR=function(){qo=!0},oR=function(){return qo},lR=function(){j0=!0},cR=function(){return j0},uR=function(){return $n},hR=function(t){Ho=t.toLowerCase().split(/[\\\\s,]+/)},dR=function(){return Ho},fR=function(t){Go=t.toLowerCase().split(/[\\\\s,]+/)},pR=function(){return Go},gR=function(){return H0},yR=function(t){Aa=t,G0.push(t)},mR=function(){return G0},bR=function(){let t=D3();const e=10;let r=0;for(;!t&&r\u003Ce;)t=D3(),r++;return wu=hr,wu},E3=function(t,e,r,n){return n.includes(t.format(e.trim()))?!1:t.isoWeekday()>=6&&r.includes(\\\"weekends\\\")||r.includes(t.format(\\\"dddd\\\").toLowerCase())?!0:r.includes(t.format(e.trim()))},C3=function(t,e,r,n){if(!r.length||t.manualEndTime)return;let i=cn(t.startTime,e,!0);i.add(1,\\\"d\\\");let s=cn(t.endTime,e,!0),a=_R(i,s,e,r,n);t.endTime=s.toDate(),t.renderEndTime=a},_R=function(t,e,r,n,i){let s=!1,a=null;for(;t\u003C=e;)s||(a=e.toDate()),s=E3(t,r,n,i),s&&e.add(1,\\\"d\\\"),t.add(1,\\\"d\\\");return a},X0=function(t,e,r){r=r.trim();const i=/^after\\\\s+([\\\\d\\\\w- ]+)/.exec(r.trim());if(i!==null){let a=null;if(i[1].split(\\\" \\\").forEach(function(o){let l=Da(o);l!==void 0&&(a?l.endTime>a.endTime&&(a=l):a=l)}),a)return a.endTime;{const o=new Date;return o.setHours(0,0,0,0),o}}let s=cn(r,e.trim(),!0);if(s.isValid())return s.toDate();{B.debug(\\\"Invalid date:\\\"+r),B.debug(\\\"With date format:\\\"+e.trim());const a=new Date(r);if(a===void 0||isNaN(a.getTime()))throw new Error(\\\"Invalid date:\\\"+r);return a}},S3=function(t){const e=/^(\\\\d+(?:\\\\.\\\\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?cn.duration(Number.parseFloat(e[1]),e[2]):cn.duration.invalid()},A3=function(t,e,r,n=!1){r=r.trim();let i=cn(r,e.trim(),!0);if(i.isValid())return n&&i.add(1,\\\"d\\\"),i.toDate();const s=cn(t),a=S3(r);return a.isValid()&&s.add(a),s.toDate()};let Tu=0;const La=function(t){return t===void 0?(Tu=Tu+1,\\\"task\\\"+Tu):t},xR=function(t,e){let r;e.substr(0,1)===\\\":\\\"?r=e.substr(1,e.length):r=e;const n=r.split(\\\",\\\"),i={};B3(n,i,T3);for(let a=0;a\u003Cn.length;a++)n[a]=n[a].trim();let s=\\\"\\\";switch(n.length){case 1:i.id=La(),i.startTime=t.endTime,s=n[0];break;case 2:i.id=La(),i.startTime=X0(void 0,$n,n[0]),s=n[1];break;case 3:i.id=La(n[0]),i.startTime=X0(void 0,$n,n[1]),s=n[2];break}return s&&(i.endTime=A3(i.startTime,$n,s,qo),i.manualEndTime=cn(s,\\\"YYYY-MM-DD\\\",!0).isValid(),C3(i,$n,Go,Ho)),i},vR=function(t,e){let r;e.substr(0,1)===\\\":\\\"?r=e.substr(1,e.length):r=e;const n=r.split(\\\",\\\"),i={};B3(n,i,T3);for(let s=0;s\u003Cn.length;s++)n[s]=n[s].trim();switch(n.length){case 1:i.id=La(),i.startTime={type:\\\"prevTaskEnd\\\",id:t},i.endTime={data:n[0]};break;case 2:i.id=La(),i.startTime={type:\\\"getStartDate\\\",startData:n[0]},i.endTime={data:n[1]};break;case 3:i.id=La(n[0]),i.startTime={type:\\\"getStartDate\\\",startData:n[1]},i.endTime={data:n[2]};break}return i};let K0,Eu,hr=[];const L3={},kR=function(t,e){const r={section:Aa,type:Aa,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},n=vR(Eu,e);r.raw.startTime=n.startTime,r.raw.endTime=n.endTime,r.id=n.id,r.prevTaskId=Eu,r.active=n.active,r.done=n.done,r.crit=n.crit,r.milestone=n.milestone,r.order=$0,$0++;const i=hr.push(r);Eu=r.id,L3[r.id]=i-1},Da=function(t){const e=L3[t];return hr[e]},wR=function(t,e){const r={section:Aa,type:Aa,description:t,task:t,classes:[]},n=xR(K0,e);r.startTime=n.startTime,r.endTime=n.endTime,r.id=n.id,r.active=n.active,r.done=n.done,r.crit=n.crit,r.milestone=n.milestone,K0=r,wu.push(r)},D3=function(){const t=function(r){const n=hr[r];let i=\\\"\\\";switch(hr[r].raw.startTime.type){case\\\"prevTaskEnd\\\":{const s=Da(n.prevTaskId);n.startTime=s.endTime;break}case\\\"getStartDate\\\":i=X0(void 0,$n,hr[r].raw.startTime.startData),i&&(hr[r].startTime=i);break}return hr[r].startTime&&(hr[r].endTime=A3(hr[r].startTime,$n,hr[r].raw.endTime.data,qo),hr[r].endTime&&(hr[r].processed=!0,hr[r].manualEndTime=cn(hr[r].raw.endTime.data,\\\"YYYY-MM-DD\\\",!0).isValid(),C3(hr[r],$n,Go,Ho))),hr[r].processed};let e=!0;for(const[r,n]of hr.entries())t(r),e=e&&n.processed;return e},TR=function(t,e){let r=e;$().securityLevel!==\\\"loose\\\"&&(r=ti(e)),t.split(\\\",\\\").forEach(function(n){Da(n)!==void 0&&(N3(n,()=>{window.open(r,\\\"_self\\\")}),H0[n]=r)}),M3(t,\\\"clickable\\\")},M3=function(t,e){t.split(\\\",\\\").forEach(function(r){let n=Da(r);n!==void 0&&n.classes.push(e)})},ER=function(t,e,r){if($().securityLevel!==\\\"loose\\\"||e===void 0)return;let n=[];if(typeof r==\\\"string\\\"){n=r.split(/,(?=(?:(?:[^\\\"]*\\\"){2})*[^\\\"]*$)/);for(let s=0;s\u003Cn.length;s++){let a=n[s].trim();a.charAt(0)==='\\\"'&&a.charAt(a.length-1)==='\\\"'&&(a=a.substr(1,a.length-2)),n[s]=a}}n.length===0&&n.push(t),Da(t)!==void 0&&N3(t,()=>{ge.runFunc(e,...n)})},N3=function(t,e){q0.push(function(){const r=document.querySelector(`[id=\\\"${t}\\\"]`);r!==null&&r.addEventListener(\\\"click\\\",function(){e()})},function(){const r=document.querySelector(`[id=\\\"${t}-text\\\"]`);r!==null&&r.addEventListener(\\\"click\\\",function(){e()})})},Z0={parseDirective:ZO,getConfig:()=>$().gantt,clear:QO,setDateFormat:sR,getDateFormat:uR,enableInclusiveEndDates:aR,endDatesAreInclusive:oR,enableTopAxis:lR,topAxisEnabled:cR,setAxisFormat:JO,getAxisFormat:tR,setTickInterval:eR,getTickInterval:rR,setTodayMarker:nR,getTodayMarker:iR,setAccTitle:nn,getAccTitle:kn,setDiagramTitle:hi,getDiagramTitle:di,setAccDescription:wn,getAccDescription:Tn,addSection:yR,getSections:mR,getTasks:bR,addTask:kR,findTaskById:Da,addTaskOrg:wR,setIncludes:hR,getIncludes:dR,setExcludes:fR,getExcludes:pR,setClickEvent:function(t,e,r){t.split(\\\",\\\").forEach(function(n){ER(n,e,r)}),M3(t,\\\"clickable\\\")},setLink:TR,getLinks:gR,bindFunctions:function(t){q0.forEach(function(e){e(t)})},parseDuration:S3,isInvalidDate:E3};function B3(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){const s=\\\"^\\\\\\\\s*\\\"+i+\\\"\\\\\\\\s*$\\\",a=new RegExp(s);t[0].match(a)&&(e[i]=!0,t.shift(1),n=!0)})}const CR=function(){B.debug(\\\"Something is calling, setConf, remove the call\\\")};let wi;const SR={setConf:CR,draw:function(t,e,r,n){const i=$().gantt,s=$().securityLevel;let a;s===\\\"sandbox\\\"&&(a=St(\\\"#i\\\"+e));const o=St(s===\\\"sandbox\\\"?a.nodes()[0].contentDocument.body:\\\"body\\\"),l=s===\\\"sandbox\\\"?a.nodes()[0].contentDocument:document,u=l.getElementById(e);wi=u.parentElement.offsetWidth,wi===void 0&&(wi=1200),i.useWidth!==void 0&&(wi=i.useWidth);const d=n.db.getTasks(),f=d.length*(i.barHeight+i.barGap)+2*i.topPadding;u.setAttribute(\\\"viewBox\\\",\\\"0 0 \\\"+wi+\\\" \\\"+f);const p=o.select(`[id=\\\"${e}\\\"]`),g=hk().domain([Wb(d,function(D){return D.startTime}),zb(d,function(D){return D.endTime})]).rangeRound([0,wi-i.leftPadding-i.rightPadding]);let b=[];for(const D of d)b.push(D.type);const k=b;b=Y(b);function T(D,w){const v=D.startTime,M=w.startTime;let m=0;return v>M?m=1:v\u003CM&&(m=-1),m}d.sort(T),L(d,wi,f),xn(p,f,wi,i.useMaxWidth),p.append(\\\"text\\\").text(n.db.getDiagramTitle()).attr(\\\"x\\\",wi/2).attr(\\\"y\\\",i.titleTopMargin).attr(\\\"class\\\",\\\"titleText\\\");function L(D,w,v){const M=i.barHeight,m=M+i.barGap,Q=i.topPadding,x=i.leftPadding,ct=n2().domain([0,b.length]).range([\\\"#00B9FA\\\",\\\"#F95002\\\"]).interpolate(ux);I(m,Q,x,w,v,D,n.db.getExcludes(),n.db.getIncludes()),V(x,Q,w,v),E(D,m,Q,x,M,ct,w),H(m,Q),G(x,Q,w,v)}function E(D,w,v,M,m,Q,x){p.append(\\\"g\\\").selectAll(\\\"rect\\\").data(D).enter().append(\\\"rect\\\").attr(\\\"x\\\",0).attr(\\\"y\\\",function(j,ot){return ot=j.order,ot*w+v-2}).attr(\\\"width\\\",function(){return x-i.rightPadding/2}).attr(\\\"height\\\",w).attr(\\\"class\\\",function(j){for(const[ot,rt]of b.entries())if(j.type===rt)return\\\"section section\\\"+ot%i.numberSectionStyles;return\\\"section section0\\\"});const ct=p.append(\\\"g\\\").selectAll(\\\"rect\\\").data(D).enter(),Dt=n.db.getLinks();if(ct.append(\\\"rect\\\").attr(\\\"id\\\",function(j){return j.id}).attr(\\\"rx\\\",3).attr(\\\"ry\\\",3).attr(\\\"x\\\",function(j){return j.milestone?g(j.startTime)+M+.5*(g(j.endTime)-g(j.startTime))-.5*m:g(j.startTime)+M}).attr(\\\"y\\\",function(j,ot){return ot=j.order,ot*w+v}).attr(\\\"width\\\",function(j){return j.milestone?m:g(j.renderEndTime||j.endTime)-g(j.startTime)}).attr(\\\"height\\\",m).attr(\\\"transform-origin\\\",function(j,ot){return ot=j.order,(g(j.startTime)+M+.5*(g(j.endTime)-g(j.startTime))).toString()+\\\"px \\\"+(ot*w+v+.5*m).toString()+\\\"px\\\"}).attr(\\\"class\\\",function(j){const ot=\\\"task\\\";let rt=\\\"\\\";j.classes.length>0&&(rt=j.classes.join(\\\" \\\"));let nt=0;for(const[_t,K]of b.entries())j.type===K&&(nt=_t%i.numberSectionStyles);let ut=\\\"\\\";return j.active?j.crit?ut+=\\\" activeCrit\\\":ut=\\\" active\\\":j.done?j.crit?ut=\\\" doneCrit\\\":ut=\\\" done\\\":j.crit&&(ut+=\\\" crit\\\"),ut.length===0&&(ut=\\\" task\\\"),j.milestone&&(ut=\\\" milestone \\\"+ut),ut+=nt,ut+=\\\" \\\"+rt,ot+ut}),ct.append(\\\"text\\\").attr(\\\"id\\\",function(j){return j.id+\\\"-text\\\"}).text(function(j){return j.task}).attr(\\\"font-size\\\",i.fontSize).attr(\\\"x\\\",function(j){let ot=g(j.startTime),rt=g(j.renderEndTime||j.endTime);j.milestone&&(ot+=.5*(g(j.endTime)-g(j.startTime))-.5*m),j.milestone&&(rt=ot+m);const nt=this.getBBox().width;return nt>rt-ot?rt+nt+1.5*i.leftPadding>x?ot+M-5:rt+M+5:(rt-ot)/2+ot+M}).attr(\\\"y\\\",function(j,ot){return ot=j.order,ot*w+i.barHeight/2+(i.fontSize/2-2)+v}).attr(\\\"text-height\\\",m).attr(\\\"class\\\",function(j){const ot=g(j.startTime);let rt=g(j.endTime);j.milestone&&(rt=ot+m);const nt=this.getBBox().width;let ut=\\\"\\\";j.classes.length>0&&(ut=j.classes.join(\\\" \\\"));let _t=0;for(const[Ot,P]of b.entries())j.type===P&&(_t=Ot%i.numberSectionStyles);let K=\\\"\\\";return j.active&&(j.crit?K=\\\"activeCritText\\\"+_t:K=\\\"activeText\\\"+_t),j.done?j.crit?K=K+\\\" doneCritText\\\"+_t:K=K+\\\" doneText\\\"+_t:j.crit&&(K=K+\\\" critText\\\"+_t),j.milestone&&(K+=\\\" milestoneText\\\"),nt>rt-ot?rt+nt+1.5*i.leftPadding>x?ut+\\\" taskTextOutsideLeft taskTextOutside\\\"+_t+\\\" \\\"+K:ut+\\\" taskTextOutsideRight taskTextOutside\\\"+_t+\\\" \\\"+K+\\\" width-\\\"+nt:ut+\\\" taskText taskText\\\"+_t+\\\" \\\"+K+\\\" width-\\\"+nt}),$().securityLevel===\\\"sandbox\\\"){let j;j=St(\\\"#i\\\"+e);const ot=j.nodes()[0].contentDocument;ct.filter(function(rt){return Dt[rt.id]!==void 0}).each(function(rt){var nt=ot.querySelector(\\\"#\\\"+rt.id),ut=ot.querySelector(\\\"#\\\"+rt.id+\\\"-text\\\");const _t=nt.parentNode;var K=ot.createElement(\\\"a\\\");K.setAttribute(\\\"xlink:href\\\",Dt[rt.id]),K.setAttribute(\\\"target\\\",\\\"_top\\\"),_t.appendChild(K),K.appendChild(nt),K.appendChild(ut)})}}function I(D,w,v,M,m,Q,x,ct){const Dt=Q.reduce((_t,{startTime:K})=>_t?Math.min(_t,K):K,0),kt=Q.reduce((_t,{endTime:K})=>_t?Math.max(_t,K):K,0),j=n.db.getDateFormat();if(!Dt||!kt)return;const ot=[];let rt=null,nt=cn(Dt);for(;nt.valueOf()\u003C=kt;)n.db.isInvalidDate(nt,j,x,ct)?rt?rt.end=nt.clone():rt={start:nt.clone(),end:nt.clone()}:rt&&(ot.push(rt),rt=null),nt.add(1,\\\"d\\\");p.append(\\\"g\\\").selectAll(\\\"rect\\\").data(ot).enter().append(\\\"rect\\\").attr(\\\"id\\\",function(_t){return\\\"exclude-\\\"+_t.start.format(\\\"YYYY-MM-DD\\\")}).attr(\\\"x\\\",function(_t){return g(_t.start)+v}).attr(\\\"y\\\",i.gridLineStartPadding).attr(\\\"width\\\",function(_t){const K=_t.end.clone().add(1,\\\"day\\\");return g(K)-g(_t.start)}).attr(\\\"height\\\",m-w-i.gridLineStartPadding).attr(\\\"transform-origin\\\",function(_t,K){return(g(_t.start)+v+.5*(g(_t.end)-g(_t.start))).toString()+\\\"px \\\"+(K*D+.5*m).toString()+\\\"px\\\"}).attr(\\\"class\\\",\\\"exclude-range\\\")}function V(D,w,v,M){let m=Zb(g).tickSize(-M+w+i.gridLineStartPadding).tickFormat(Ul(n.db.getAxisFormat()||i.axisFormat||\\\"%Y-%m-%d\\\"));const x=/^([1-9]\\\\d*)(minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(x!==null){const ct=x[1];switch(x[2]){case\\\"minute\\\":m.ticks(Rl.every(ct));break;case\\\"hour\\\":m.ticks(Fl.every(ct));break;case\\\"day\\\":m.ticks(qs.every(ct));break;case\\\"week\\\":m.ticks(js.every(ct));break;case\\\"month\\\":m.ticks(Yl.every(ct));break}}if(p.append(\\\"g\\\").attr(\\\"class\\\",\\\"grid\\\").attr(\\\"transform\\\",\\\"translate(\\\"+D+\\\", \\\"+(M-50)+\\\")\\\").call(m).selectAll(\\\"text\\\").style(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"fill\\\",\\\"#000\\\").attr(\\\"stroke\\\",\\\"none\\\").attr(\\\"font-size\\\",10).attr(\\\"dy\\\",\\\"1em\\\"),n.db.topAxisEnabled()||i.topAxis){let ct=Kb(g).tickSize(-M+w+i.gridLineStartPadding).tickFormat(Ul(n.db.getAxisFormat()||i.axisFormat||\\\"%Y-%m-%d\\\"));if(x!==null){const Dt=x[1];switch(x[2]){case\\\"minute\\\":ct.ticks(Rl.every(Dt));break;case\\\"hour\\\":ct.ticks(Fl.every(Dt));break;case\\\"day\\\":ct.ticks(qs.every(Dt));break;case\\\"week\\\":ct.ticks(js.every(Dt));break;case\\\"month\\\":ct.ticks(Yl.every(Dt));break}}p.append(\\\"g\\\").attr(\\\"class\\\",\\\"grid\\\").attr(\\\"transform\\\",\\\"translate(\\\"+D+\\\", \\\"+w+\\\")\\\").call(ct).selectAll(\\\"text\\\").style(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"fill\\\",\\\"#000\\\").attr(\\\"stroke\\\",\\\"none\\\").attr(\\\"font-size\\\",10)}}function H(D,w){const v=[];let M=0;for(const[m,Q]of b.entries())v[m]=[Q,N(Q,k)];p.append(\\\"g\\\").selectAll(\\\"text\\\").data(v).enter().append(function(m){const Q=m[0].split(he.lineBreakRegex),x=-(Q.length-1)/2,ct=l.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"text\\\");ct.setAttribute(\\\"dy\\\",x+\\\"em\\\");for(const[Dt,kt]of Q.entries()){const j=l.createElementNS(\\\"http://www.w3.org/2000/svg\\\",\\\"tspan\\\");j.setAttribute(\\\"alignment-baseline\\\",\\\"central\\\"),j.setAttribute(\\\"x\\\",\\\"10\\\"),Dt>0&&j.setAttribute(\\\"dy\\\",\\\"1em\\\"),j.textContent=kt,ct.appendChild(j)}return ct}).attr(\\\"x\\\",10).attr(\\\"y\\\",function(m,Q){if(Q>0)for(let x=0;x\u003CQ;x++)return M+=v[Q-1][1],m[1]*D/2+M*D+w;else return m[1]*D/2+w}).attr(\\\"font-size\\\",i.sectionFontSize).attr(\\\"font-size\\\",i.sectionFontSize).attr(\\\"class\\\",function(m){for(const[Q,x]of b.entries())if(m[0]===x)return\\\"sectionTitle sectionTitle\\\"+Q%i.numberSectionStyles;return\\\"sectionTitle\\\"})}function G(D,w,v,M){const m=n.db.getTodayMarker();if(m===\\\"off\\\")return;const Q=p.append(\\\"g\\\").attr(\\\"class\\\",\\\"today\\\"),x=new Date,ct=Q.append(\\\"line\\\");ct.attr(\\\"x1\\\",g(x)+D).attr(\\\"x2\\\",g(x)+D).attr(\\\"y1\\\",i.titleTopMargin).attr(\\\"y2\\\",M-i.titleTopMargin).attr(\\\"class\\\",\\\"today\\\"),m!==\\\"\\\"&&ct.attr(\\\"style\\\",m.replace(/,/g,\\\";\\\"))}function Y(D){const w={},v=[];for(let M=0,m=D.length;M\u003Cm;++M)Object.prototype.hasOwnProperty.call(w,D[M])||(w[D[M]]=!0,v.push(D[M]));return v}function W(D){let w=D.length;const v={};for(;w;)v[D[--w]]=(v[D[w]]||0)+1;return v}function N(D,w){return W(w)[D]||0}}};var Q0=function(){var t=function(s,a,o,l){for(o=o||{},l=s.length;l--;o[s[l]]=a);return o},e=[6,9,10],r={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:\\\"error\\\",4:\\\"info\\\",6:\\\"EOF\\\",9:\\\"NL\\\",10:\\\"showInfo\\\"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(a,o,l,u,d,f,p){switch(f.length-1,d){case 1:return u;case 4:break;case 6:u.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(a,o){if(o.recoverable)this.trace(a);else{var l=new Error(a);throw l.hash=o,l}},parse:function(a){var o=this,l=[0],u=[],d=[null],f=[],p=this.table,g=\\\"\\\",b=0,k=0,T=2,L=1,E=f.slice.call(arguments,1),I=Object.create(this.lexer),V={yy:{}};for(var H in this.yy)Object.prototype.hasOwnProperty.call(this.yy,H)&&(V.yy[H]=this.yy[H]);I.setInput(a,V.yy),V.yy.lexer=I,V.yy.parser=this,typeof I.yylloc>\\\"u\\\"&&(I.yylloc={});var G=I.yylloc;f.push(G);var Y=I.options&&I.options.ranges;typeof V.yy.parseError==\\\"function\\\"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function W(){var kt;return kt=u.pop()||I.lex()||L,typeof kt!=\\\"number\\\"&&(kt instanceof Array&&(u=kt,kt=u.pop()),kt=o.symbols_[kt]||kt),kt}for(var N,D,w,v,M={},m,Q,x,ct;;){if(D=l[l.length-1],this.defaultActions[D]?w=this.defaultActions[D]:((N===null||typeof N>\\\"u\\\")&&(N=W()),w=p[D]&&p[D][N]),typeof w>\\\"u\\\"||!w.length||!w[0]){var Dt=\\\"\\\";ct=[];for(m in p[D])this.terminals_[m]&&m>T&&ct.push(\\\"'\\\"+this.terminals_[m]+\\\"'\\\");I.showPosition?Dt=\\\"Parse error on line \\\"+(b+1)+`:\\n`+I.showPosition()+`\\nExpecting `+ct.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[N]||N)+\\\"'\\\":Dt=\\\"Parse error on line \\\"+(b+1)+\\\": Unexpected \\\"+(N==L?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[N]||N)+\\\"'\\\"),this.parseError(Dt,{text:I.match,token:this.terminals_[N]||N,line:I.yylineno,loc:G,expected:ct})}if(w[0]instanceof Array&&w.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+D+\\\", token: \\\"+N);switch(w[0]){case 1:l.push(N),d.push(I.yytext),f.push(I.yylloc),l.push(w[1]),N=null,k=I.yyleng,g=I.yytext,b=I.yylineno,G=I.yylloc;break;case 2:if(Q=this.productions_[w[1]][1],M.$=d[d.length-Q],M._$={first_line:f[f.length-(Q||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(Q||1)].first_column,last_column:f[f.length-1].last_column},Y&&(M._$.range=[f[f.length-(Q||1)].range[0],f[f.length-1].range[1]]),v=this.performAction.apply(M,[g,k,b,V.yy,w[1],d,f].concat(E)),typeof v\u003C\\\"u\\\")return v;Q&&(l=l.slice(0,-1*Q*2),d=d.slice(0,-1*Q),f=f.slice(0,-1*Q)),l.push(this.productions_[w[1]][0]),d.push(M.$),f.push(M._$),x=p[l[l.length-2]][l[l.length-1]],l.push(x);break;case 3:return!0}}return!0}},n=function(){var s={EOF:1,parseError:function(o,l){if(this.yy.parser)this.yy.parser.parseError(o,l);else throw new Error(o)},setInput:function(a,o){return this.yy=o||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var o=a.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var o=a.length,l=a.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var u=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var d=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===u.length?this.yylloc.first_column:0)+u[u.length-l.length].length-l[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?\\\"...\\\":\\\"\\\")+a.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var a=this.match;return a.length\u003C20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var a=this.pastInput(),o=new Array(a.length+1).join(\\\"-\\\");return a+this.upcomingInput()+`\\n`+o+\\\"^\\\"},test_match:function(a,o){var l,u,d;if(this.options.backtrack_lexer&&(d={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(d.yylloc.range=this.yylloc.range.slice(0))),u=a[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),u&&(this.yylineno+=u.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:u?u[u.length-1].length-u[u.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],l=this.performAction.call(this,this.yy,this,o,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var f in d)this[f]=d[f];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,o,l,u;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var d=this._currentRules(),f=0;f\u003Cd.length;f++)if(l=this._input.match(this.rules[d[f]]),l&&(!o||l[0].length>o[0].length)){if(o=l,u=f,this.options.backtrack_lexer){if(a=this.test_match(l,d[f]),a!==!1)return a;if(this._backtrack){o=!1;continue}else return!1}else if(!this.options.flex)break}return o?(a=this.test_match(o,d[u]),a!==!1?a:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var o=this.next();return o||this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:\\\"INITIAL\\\"},pushState:function(o){this.begin(o)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(o,l,u,d){switch(u){case 0:return 4;case 1:return 9;case 2:return\\\"space\\\";case 3:return 10;case 4:return 6;case 5:return\\\"TXT\\\"}},rules:[/^(?:info\\\\b)/i,/^(?:[\\\\s\\\\n\\\\r]+)/i,/^(?:[\\\\s]+)/i,/^(?:showInfo\\\\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return s}();r.lexer=n;function i(){this.yy={}}return i.prototype=r,r.Parser=i,new i}();Q0.parser=Q0;const AR=Q0;var I3=\\\"\\\",O3=!1;const LR={setMessage:t=>{B.debug(\\\"Setting message to: \\\"+t),I3=t},getMessage:()=>I3,setInfo:t=>{O3=t},getInfo:()=>O3,clear:vn},DR={draw:(t,e,r)=>{try{B.debug(`Rendering info diagram\\n`+t);const n=$().securityLevel;let i;n===\\\"sandbox\\\"&&(i=St(\\\"#i\\\"+e));const a=St(n===\\\"sandbox\\\"?i.nodes()[0].contentDocument.body:\\\"body\\\").select(\\\"#\\\"+e);a.append(\\\"g\\\").append(\\\"text\\\").attr(\\\"x\\\",100).attr(\\\"y\\\",40).attr(\\\"class\\\",\\\"version\\\").attr(\\\"font-size\\\",\\\"32px\\\").style(\\\"text-anchor\\\",\\\"middle\\\").text(\\\"v \\\"+r),a.attr(\\\"height\\\",100),a.attr(\\\"width\\\",400)}catch(n){B.error(\\\"Error while rendering info diagram\\\"),B.error(n.message)}}},MR=t=>t.match(/^\\\\s*info/)!==null;var J0=function(){var t=function(G,Y,W,N){for(W=W||{},N=G.length;N--;W[G[N]]=Y);return W},e=[1,4],r=[1,5],n=[1,6],i=[1,7],s=[1,9],a=[1,11,13,15,17,19,20,26,27,28,29],o=[2,5],l=[1,6,11,13,15,17,19,20,26,27,28,29],u=[26,27,28],d=[2,8],f=[1,18],p=[1,19],g=[1,20],b=[1,21],k=[1,22],T=[1,23],L=[1,28],E=[6,26,27,28,29],I={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,openDirective:21,typeDirective:22,closeDirective:23,\\\":\\\":24,argDirective:25,NEWLINE:26,\\\";\\\":27,EOF:28,open_directive:29,type_directive:30,arg_directive:31,close_directive:32,$accept:0,$end:1},terminals_:{2:\\\"error\\\",6:\\\"PIE\\\",8:\\\"showData\\\",11:\\\"txt\\\",12:\\\"value\\\",13:\\\"title\\\",14:\\\"title_value\\\",15:\\\"acc_title\\\",16:\\\"acc_title_value\\\",17:\\\"acc_descr\\\",18:\\\"acc_descr_value\\\",19:\\\"acc_descr_multiline_value\\\",20:\\\"section\\\",24:\\\":\\\",26:\\\"NEWLINE\\\",27:\\\";\\\",28:\\\"EOF\\\",29:\\\"open_directive\\\",30:\\\"type_directive\\\",31:\\\"arg_directive\\\",32:\\\"close_directive\\\"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],performAction:function(Y,W,N,D,w,v,M){var m=v.length-1;switch(w){case 4:D.setShowData(!0);break;case 7:this.$=v[m-1];break;case 9:D.addSection(v[m-1],D.cleanupValue(v[m]));break;case 10:this.$=v[m].trim(),D.setDiagramTitle(this.$);break;case 11:this.$=v[m].trim(),D.setAccTitle(this.$);break;case 12:case 13:this.$=v[m].trim(),D.setAccDescription(this.$);break;case 14:D.addSection(v[m].substr(8)),this.$=v[m].substr(8);break;case 21:D.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 22:D.parseDirective(v[m],\\\"type_directive\\\");break;case 23:v[m]=v[m].trim().replace(/'/g,'\\\"'),D.parseDirective(v[m],\\\"arg_directive\\\");break;case 24:D.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"pie\\\");break}},table:[{3:1,4:2,5:3,6:e,21:8,26:r,27:n,28:i,29:s},{1:[3]},{3:10,4:2,5:3,6:e,21:8,26:r,27:n,28:i,29:s},{3:11,4:2,5:3,6:e,21:8,26:r,27:n,28:i,29:s},t(a,o,{7:12,8:[1,13]}),t(l,[2,18]),t(l,[2,19]),t(l,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},t(u,d,{21:8,9:16,10:17,5:24,1:[2,3],11:f,13:p,15:g,17:b,19:k,20:T,29:s}),t(a,o,{7:25}),{23:26,24:[1,27],32:L},t([24,32],[2,22]),t(a,[2,6]),{4:29,26:r,27:n,28:i},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},t(u,[2,13]),t(u,[2,14]),t(u,[2,15]),t(u,d,{21:8,9:16,10:17,5:24,1:[2,4],11:f,13:p,15:g,17:b,19:k,20:T,29:s}),t(E,[2,16]),{25:34,31:[1,35]},t(E,[2,24]),t(a,[2,7]),t(u,[2,9]),t(u,[2,10]),t(u,[2,11]),t(u,[2,12]),{23:36,32:L},{32:[2,23]},t(E,[2,17])],defaultActions:{9:[2,21],10:[2,1],11:[2,2],35:[2,23]},parseError:function(Y,W){if(W.recoverable)this.trace(Y);else{var N=new Error(Y);throw N.hash=W,N}},parse:function(Y){var W=this,N=[0],D=[],w=[null],v=[],M=this.table,m=\\\"\\\",Q=0,x=0,ct=2,Dt=1,kt=v.slice.call(arguments,1),j=Object.create(this.lexer),ot={yy:{}};for(var rt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,rt)&&(ot.yy[rt]=this.yy[rt]);j.setInput(Y,ot.yy),ot.yy.lexer=j,ot.yy.parser=this,typeof j.yylloc>\\\"u\\\"&&(j.yylloc={});var nt=j.yylloc;v.push(nt);var ut=j.options&&j.options.ranges;typeof ot.yy.parseError==\\\"function\\\"?this.parseError=ot.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _t(){var ht;return ht=D.pop()||j.lex()||Dt,typeof ht!=\\\"number\\\"&&(ht instanceof Array&&(D=ht,ht=D.pop()),ht=W.symbols_[ht]||ht),ht}for(var K,Ot,P,z,X={},F,O,A,J;;){if(Ot=N[N.length-1],this.defaultActions[Ot]?P=this.defaultActions[Ot]:((K===null||typeof K>\\\"u\\\")&&(K=_t()),P=M[Ot]&&M[Ot][K]),typeof P>\\\"u\\\"||!P.length||!P[0]){var C=\\\"\\\";J=[];for(F in M[Ot])this.terminals_[F]&&F>ct&&J.push(\\\"'\\\"+this.terminals_[F]+\\\"'\\\");j.showPosition?C=\\\"Parse error on line \\\"+(Q+1)+`:\\n`+j.showPosition()+`\\nExpecting `+J.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[K]||K)+\\\"'\\\":C=\\\"Parse error on line \\\"+(Q+1)+\\\": Unexpected \\\"+(K==Dt?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[K]||K)+\\\"'\\\"),this.parseError(C,{text:j.match,token:this.terminals_[K]||K,line:j.yylineno,loc:nt,expected:J})}if(P[0]instanceof Array&&P.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+Ot+\\\", token: \\\"+K);switch(P[0]){case 1:N.push(K),w.push(j.yytext),v.push(j.yylloc),N.push(P[1]),K=null,x=j.yyleng,m=j.yytext,Q=j.yylineno,nt=j.yylloc;break;case 2:if(O=this.productions_[P[1]][1],X.$=w[w.length-O],X._$={first_line:v[v.length-(O||1)].first_line,last_line:v[v.length-1].last_line,first_column:v[v.length-(O||1)].first_column,last_column:v[v.length-1].last_column},ut&&(X._$.range=[v[v.length-(O||1)].range[0],v[v.length-1].range[1]]),z=this.performAction.apply(X,[m,x,Q,ot.yy,P[1],w,v].concat(kt)),typeof z\u003C\\\"u\\\")return z;O&&(N=N.slice(0,-1*O*2),w=w.slice(0,-1*O),v=v.slice(0,-1*O)),N.push(this.productions_[P[1]][0]),w.push(X.$),v.push(X._$),A=M[N[N.length-2]][N[N.length-1]],N.push(A);break;case 3:return!0}}return!0}},V=function(){var G={EOF:1,parseError:function(W,N){if(this.yy.parser)this.yy.parser.parseError(W,N);else throw new Error(W)},setInput:function(Y,W){return this.yy=W||this.yy||{},this._input=Y,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Y=this._input[0];this.yytext+=Y,this.yyleng++,this.offset++,this.match+=Y,this.matched+=Y;var W=Y.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return W?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Y},unput:function(Y){var W=Y.length,N=Y.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=Y+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-W),this.offset-=W;var D=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var w=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===D.length?this.yylloc.first_column:0)+D[D.length-N.length].length-N[0].length:this.yylloc.first_column-W},this.options.ranges&&(this.yylloc.range=[w[0],w[0]+this.yyleng-W]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(Y){this.unput(this.match.slice(Y))},pastInput:function(){var Y=this.matched.substr(0,this.matched.length-this.match.length);return(Y.length>20?\\\"...\\\":\\\"\\\")+Y.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var Y=this.match;return Y.length\u003C20&&(Y+=this._input.substr(0,20-Y.length)),(Y.substr(0,20)+(Y.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var Y=this.pastInput(),W=new Array(Y.length+1).join(\\\"-\\\");return Y+this.upcomingInput()+`\\n`+W+\\\"^\\\"},test_match:function(Y,W){var N,D,w;if(this.options.backtrack_lexer&&(w={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(w.yylloc.range=this.yylloc.range.slice(0))),D=Y[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),D&&(this.yylineno+=D.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:D?D[D.length-1].length-D[D.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+Y[0].length},this.yytext+=Y[0],this.match+=Y[0],this.matches=Y,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Y[0].length),this.matched+=Y[0],N=this.performAction.call(this,this.yy,this,W,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var v in w)this[v]=w[v];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Y,W,N,D;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var w=this._currentRules(),v=0;v\u003Cw.length;v++)if(N=this._input.match(this.rules[w[v]]),N&&(!W||N[0].length>W[0].length)){if(W=N,D=v,this.options.backtrack_lexer){if(Y=this.test_match(N,w[v]),Y!==!1)return Y;if(this._backtrack){W=!1;continue}else return!1}else if(!this.options.flex)break}return W?(Y=this.test_match(W,w[D]),Y!==!1?Y:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var W=this.next();return W||this.lex()},begin:function(W){this.conditionStack.push(W)},popState:function(){var W=this.conditionStack.length-1;return W>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(W){return W=this.conditionStack.length-1-Math.abs(W||0),W>=0?this.conditionStack[W]:\\\"INITIAL\\\"},pushState:function(W){this.begin(W)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(W,N,D,w){switch(D){case 0:return this.begin(\\\"open_directive\\\"),29;case 1:return this.begin(\\\"type_directive\\\"),30;case 2:return this.popState(),this.begin(\\\"arg_directive\\\"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:break;case 6:break;case 7:return 26;case 8:break;case 9:break;case 10:return this.begin(\\\"title\\\"),13;case 11:return this.popState(),\\\"title_value\\\";case 12:return this.begin(\\\"acc_title\\\"),15;case 13:return this.popState(),\\\"acc_title_value\\\";case 14:return this.begin(\\\"acc_descr\\\"),17;case 15:return this.popState(),\\\"acc_descr_value\\\";case 16:this.begin(\\\"acc_descr_multiline\\\");break;case 17:this.popState();break;case 18:return\\\"acc_descr_multiline_value\\\";case 19:this.begin(\\\"string\\\");break;case 20:this.popState();break;case 21:return\\\"txt\\\";case 22:return 6;case 23:return 8;case 24:return\\\"value\\\";case 25:return 28}},rules:[/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:%%(?!\\\\{)[^\\\\n]*)/i,/^(?:[^\\\\}]%%[^\\\\n]*)/i,/^(?:[\\\\n\\\\r]+)/i,/^(?:%%[^\\\\n]*)/i,/^(?:[\\\\s]+)/i,/^(?:title\\\\b)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:[\\\"])/i,/^(?:[\\\"])/i,/^(?:[^\\\"]*)/i,/^(?:pie\\\\b)/i,/^(?:showData\\\\b)/i,/^(?::[\\\\s]*[\\\\d]+(?:\\\\.[\\\\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}};return G}();I.lexer=V;function H(){this.yy={}}return H.prototype=I,I.Parser=H,new H}();J0.parser=J0;const NR=J0,BR=t=>t.match(/^\\\\s*pie/)!==null||t.match(/^\\\\s*bar/)!==null;let Cu={},td=!1;const IR={parseDirective:function(t,e,r){ze.parseDirective(this,t,e,r)},getConfig:()=>$().pie,addSection:function(t,e){t=he.sanitizeText(t,$()),Cu[t]===void 0&&(Cu[t]=e,B.debug(\\\"Added new section :\\\",t))},getSections:()=>Cu,cleanupValue:function(t){return t.substring(0,1)===\\\":\\\"&&(t=t.substring(1).trim()),Number(t.trim())},clear:function(){Cu={},td=!1,vn()},setAccTitle:nn,getAccTitle:kn,setDiagramTitle:hi,getDiagramTitle:di,setShowData:function(t){td=t},getShowData:function(){return td},getAccDescription:Tn,setAccDescription:wn};let Ti=$(),Ei;const jo=450,OR={draw:(t,e,r,n)=>{try{Ti=$(),B.debug(`Rendering info diagram\\n`+t);const E=$().securityLevel;let I;E===\\\"sandbox\\\"&&(I=St(\\\"#i\\\"+e));const V=St(E===\\\"sandbox\\\"?I.nodes()[0].contentDocument.body:\\\"body\\\"),H=E===\\\"sandbox\\\"?I.nodes()[0].contentDocument:document;n.db.clear(),n.parser.parse(t),B.debug(\\\"Parsed info diagram\\\");const G=H.getElementById(e);Ei=G.parentElement.offsetWidth,Ei===void 0&&(Ei=1200),Ti.useWidth!==void 0&&(Ei=Ti.useWidth),Ti.pie.useWidth!==void 0&&(Ei=Ti.pie.useWidth);const Y=V.select(\\\"#\\\"+e);xn(Y,jo,Ei,Ti.pie.useMaxWidth),G.setAttribute(\\\"viewBox\\\",\\\"0 0 \\\"+Ei+\\\" \\\"+jo);var i=40,s=18,a=4,o=Math.min(Ei,jo)/2-i,l=Y.append(\\\"g\\\").attr(\\\"transform\\\",\\\"translate(\\\"+Ei/2+\\\",\\\"+jo/2+\\\")\\\"),u=n.db.getSections(),d=0;Object.keys(u).forEach(function(N){d+=u[N]});const W=Ti.themeVariables;var f=[W.pie1,W.pie2,W.pie3,W.pie4,W.pie5,W.pie6,W.pie7,W.pie8,W.pie9,W.pie10,W.pie11,W.pie12],p=Jf().range(f),g=Object.entries(u).map(function(N,D){return{order:D,name:N[0],value:N[1]}}),b=Tk().value(function(N){return N.value}).sort(function(N,D){return N.order-D.order}),k=b(g),T=jh().innerRadius(0).outerRadius(o);l.selectAll(\\\"mySlices\\\").data(k).enter().append(\\\"path\\\").attr(\\\"d\\\",T).attr(\\\"fill\\\",function(N){return p(N.data.name)}).attr(\\\"class\\\",\\\"pieCircle\\\"),l.selectAll(\\\"mySlices\\\").data(k).enter().append(\\\"text\\\").text(function(N){return(N.data.value/d*100).toFixed(0)+\\\"%\\\"}).attr(\\\"transform\\\",function(N){return\\\"translate(\\\"+T.centroid(N)+\\\")\\\"}).style(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"class\\\",\\\"slice\\\"),l.append(\\\"text\\\").text(n.db.getDiagramTitle()).attr(\\\"x\\\",0).attr(\\\"y\\\",-(jo-50)/2).attr(\\\"class\\\",\\\"pieTitleText\\\");var L=l.selectAll(\\\".legend\\\").data(p.domain()).enter().append(\\\"g\\\").attr(\\\"class\\\",\\\"legend\\\").attr(\\\"transform\\\",function(N,D){const w=s+a,v=w*p.domain().length/2,M=12*s,m=D*w-v;return\\\"translate(\\\"+M+\\\",\\\"+m+\\\")\\\"});L.append(\\\"rect\\\").attr(\\\"width\\\",s).attr(\\\"height\\\",s).style(\\\"fill\\\",p).style(\\\"stroke\\\",p),L.data(k).append(\\\"text\\\").attr(\\\"x\\\",s+a).attr(\\\"y\\\",s-a).text(function(N){return n.db.getShowData()||Ti.showData||Ti.pie.showData?N.data.name+\\\" [\\\"+N.data.value+\\\"]\\\":N.data.name})}catch(E){B.error(\\\"Error while rendering info diagram\\\"),B.error(E)}}};var ed=function(){var t=function(Ot,P,z,X){for(z=z||{},X=Ot.length;X--;z[Ot[X]]=P);return z},e=[1,3],r=[1,5],n=[1,6],i=[1,7],s=[1,8],a=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],o=[1,22],l=[2,13],u=[1,26],d=[1,27],f=[1,28],p=[1,29],g=[1,30],b=[1,31],k=[1,24],T=[1,32],L=[1,33],E=[1,36],I=[71,72],V=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],H=[1,56],G=[1,57],Y=[1,58],W=[1,59],N=[1,60],D=[1,61],w=[1,62],v=[62,63],M=[1,74],m=[1,70],Q=[1,71],x=[1,72],ct=[1,73],Dt=[1,75],kt=[1,79],j=[1,80],ot=[1,77],rt=[1,78],nt=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],ut={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,\\\":\\\":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:\\\"error\\\",5:\\\"NEWLINE\\\",6:\\\"RD\\\",8:\\\"EOF\\\",12:\\\":\\\",14:\\\"acc_title\\\",15:\\\"acc_title_value\\\",16:\\\"acc_descr\\\",17:\\\"acc_descr_value\\\",18:\\\"acc_descr_multiline_value\\\",19:\\\"open_directive\\\",20:\\\"type_directive\\\",21:\\\"arg_directive\\\",22:\\\"close_directive\\\",28:\\\"STRUCT_START\\\",30:\\\"ID\\\",31:\\\"COLONSEP\\\",33:\\\"TEXT\\\",35:\\\"RISK\\\",37:\\\"VERIFYMTHD\\\",39:\\\"STRUCT_STOP\\\",40:\\\"REQUIREMENT\\\",41:\\\"FUNCTIONAL_REQUIREMENT\\\",42:\\\"INTERFACE_REQUIREMENT\\\",43:\\\"PERFORMANCE_REQUIREMENT\\\",44:\\\"PHYSICAL_REQUIREMENT\\\",45:\\\"DESIGN_CONSTRAINT\\\",46:\\\"LOW_RISK\\\",47:\\\"MED_RISK\\\",48:\\\"HIGH_RISK\\\",49:\\\"VERIFY_ANALYSIS\\\",50:\\\"VERIFY_DEMONSTRATION\\\",51:\\\"VERIFY_INSPECTION\\\",52:\\\"VERIFY_TEST\\\",53:\\\"ELEMENT\\\",56:\\\"TYPE\\\",58:\\\"DOCREF\\\",60:\\\"END_ARROW_L\\\",62:\\\"LINE\\\",63:\\\"END_ARROW_R\\\",64:\\\"CONTAINS\\\",65:\\\"COPIES\\\",66:\\\"DERIVES\\\",67:\\\"SATISFIES\\\",68:\\\"VERIFIES\\\",69:\\\"REFINES\\\",70:\\\"TRACES\\\",71:\\\"unqString\\\",72:\\\"qString\\\"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(P,z,X,F,O,A,J){var C=A.length-1;switch(O){case 6:this.$=A[C].trim(),F.setAccTitle(this.$);break;case 7:case 8:this.$=A[C].trim(),F.setAccDescription(this.$);break;case 9:F.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 10:F.parseDirective(A[C],\\\"type_directive\\\");break;case 11:A[C]=A[C].trim().replace(/'/g,'\\\"'),F.parseDirective(A[C],\\\"arg_directive\\\");break;case 12:F.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"pie\\\");break;case 13:this.$=[];break;case 19:F.addRequirement(A[C-3],A[C-4]);break;case 20:F.setNewReqId(A[C-2]);break;case 21:F.setNewReqText(A[C-2]);break;case 22:F.setNewReqRisk(A[C-2]);break;case 23:F.setNewReqVerifyMethod(A[C-2]);break;case 26:this.$=F.RequirementType.REQUIREMENT;break;case 27:this.$=F.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=F.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=F.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=F.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=F.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=F.RiskLevel.LOW_RISK;break;case 33:this.$=F.RiskLevel.MED_RISK;break;case 34:this.$=F.RiskLevel.HIGH_RISK;break;case 35:this.$=F.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=F.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=F.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=F.VerifyType.VERIFY_TEST;break;case 39:F.addElement(A[C-3]);break;case 40:F.setNewElementType(A[C-2]);break;case 41:F.setNewElementDocRef(A[C-2]);break;case 44:F.addRelationship(A[C-2],A[C],A[C-4]);break;case 45:F.addRelationship(A[C-2],A[C-4],A[C]);break;case 46:this.$=F.Relationships.CONTAINS;break;case 47:this.$=F.Relationships.COPIES;break;case 48:this.$=F.Relationships.DERIVES;break;case 49:this.$=F.Relationships.SATISFIES;break;case 50:this.$=F.Relationships.VERIFIES;break;case 51:this.$=F.Relationships.REFINES;break;case 52:this.$=F.Relationships.TRACES;break}},table:[{3:1,4:2,6:e,9:4,14:r,16:n,18:i,19:s},{1:[3]},{3:10,4:2,5:[1,9],6:e,9:4,14:r,16:n,18:i,19:s},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},t(a,[2,8]),{20:[2,9]},{3:16,4:2,6:e,9:4,14:r,16:n,18:i,19:s},{1:[2,2]},{4:21,5:o,7:17,8:l,9:4,14:r,16:n,18:i,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:d,42:f,43:p,44:g,45:b,53:k,71:T,72:L},{11:34,12:[1,35],22:E},t([12,22],[2,10]),t(a,[2,6]),t(a,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:o,7:38,8:l,9:4,14:r,16:n,18:i,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:d,42:f,43:p,44:g,45:b,53:k,71:T,72:L},{4:21,5:o,7:39,8:l,9:4,14:r,16:n,18:i,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:d,42:f,43:p,44:g,45:b,53:k,71:T,72:L},{4:21,5:o,7:40,8:l,9:4,14:r,16:n,18:i,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:d,42:f,43:p,44:g,45:b,53:k,71:T,72:L},{4:21,5:o,7:41,8:l,9:4,14:r,16:n,18:i,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:d,42:f,43:p,44:g,45:b,53:k,71:T,72:L},{4:21,5:o,7:42,8:l,9:4,14:r,16:n,18:i,19:s,23:18,24:19,25:20,26:23,32:25,40:u,41:d,42:f,43:p,44:g,45:b,53:k,71:T,72:L},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},t(I,[2,26]),t(I,[2,27]),t(I,[2,28]),t(I,[2,29]),t(I,[2,30]),t(I,[2,31]),t(V,[2,55]),t(V,[2,56]),t(a,[2,4]),{13:51,21:[1,52]},t(a,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:H,65:G,66:Y,67:W,68:N,69:D,70:w},{61:63,64:H,65:G,66:Y,67:W,68:N,69:D,70:w},{11:64,22:E},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},t(v,[2,46]),t(v,[2,47]),t(v,[2,48]),t(v,[2,49]),t(v,[2,50]),t(v,[2,51]),t(v,[2,52]),{63:[1,68]},t(a,[2,5]),{5:M,29:69,30:m,33:Q,35:x,37:ct,39:Dt},{5:kt,39:j,55:76,56:ot,58:rt},{32:81,71:T,72:L},{32:82,71:T,72:L},t(nt,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:M,29:87,30:m,33:Q,35:x,37:ct,39:Dt},t(nt,[2,25]),t(nt,[2,39]),{31:[1,88]},{31:[1,89]},{5:kt,39:j,55:90,56:ot,58:rt},t(nt,[2,43]),t(nt,[2,44]),t(nt,[2,45]),{32:91,71:T,72:L},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},t(nt,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},t(nt,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:M,29:116,30:m,33:Q,35:x,37:ct,39:Dt},{5:M,29:117,30:m,33:Q,35:x,37:ct,39:Dt},{5:M,29:118,30:m,33:Q,35:x,37:ct,39:Dt},{5:M,29:119,30:m,33:Q,35:x,37:ct,39:Dt},{5:kt,39:j,55:120,56:ot,58:rt},{5:kt,39:j,55:121,56:ot,58:rt},t(nt,[2,20]),t(nt,[2,21]),t(nt,[2,22]),t(nt,[2,23]),t(nt,[2,40]),t(nt,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(P,z){if(z.recoverable)this.trace(P);else{var X=new Error(P);throw X.hash=z,X}},parse:function(P){var z=this,X=[0],F=[],O=[null],A=[],J=this.table,C=\\\"\\\",ht=0,U=0,Yt=2,et=1,Mt=A.slice.call(arguments,1),Tt=Object.create(this.lexer),gt={yy:{}};for(var Et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Et)&&(gt.yy[Et]=this.yy[Et]);Tt.setInput(P,gt.yy),gt.yy.lexer=Tt,gt.yy.parser=this,typeof Tt.yylloc>\\\"u\\\"&&(Tt.yylloc={});var wt=Tt.yylloc;A.push(wt);var pt=Tt.options&&Tt.options.ranges;typeof gt.yy.parseError==\\\"function\\\"?this.parseError=gt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function st(){var ft;return ft=F.pop()||Tt.lex()||et,typeof ft!=\\\"number\\\"&&(ft instanceof Array&&(F=ft,ft=F.pop()),ft=z.symbols_[ft]||ft),ft}for(var le,Xt,jt,Kt,Gt={},Ee,Ht,Vt,Ft;;){if(Xt=X[X.length-1],this.defaultActions[Xt]?jt=this.defaultActions[Xt]:((le===null||typeof le>\\\"u\\\")&&(le=st()),jt=J[Xt]&&J[Xt][le]),typeof jt>\\\"u\\\"||!jt.length||!jt[0]){var xt=\\\"\\\";Ft=[];for(Ee in J[Xt])this.terminals_[Ee]&&Ee>Yt&&Ft.push(\\\"'\\\"+this.terminals_[Ee]+\\\"'\\\");Tt.showPosition?xt=\\\"Parse error on line \\\"+(ht+1)+`:\\n`+Tt.showPosition()+`\\nExpecting `+Ft.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[le]||le)+\\\"'\\\":xt=\\\"Parse error on line \\\"+(ht+1)+\\\": Unexpected \\\"+(le==et?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[le]||le)+\\\"'\\\"),this.parseError(xt,{text:Tt.match,token:this.terminals_[le]||le,line:Tt.yylineno,loc:wt,expected:Ft})}if(jt[0]instanceof Array&&jt.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+Xt+\\\", token: \\\"+le);switch(jt[0]){case 1:X.push(le),O.push(Tt.yytext),A.push(Tt.yylloc),X.push(jt[1]),le=null,U=Tt.yyleng,C=Tt.yytext,ht=Tt.yylineno,wt=Tt.yylloc;break;case 2:if(Ht=this.productions_[jt[1]][1],Gt.$=O[O.length-Ht],Gt._$={first_line:A[A.length-(Ht||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(Ht||1)].first_column,last_column:A[A.length-1].last_column},pt&&(Gt._$.range=[A[A.length-(Ht||1)].range[0],A[A.length-1].range[1]]),Kt=this.performAction.apply(Gt,[C,U,ht,gt.yy,jt[1],O,A].concat(Mt)),typeof Kt\u003C\\\"u\\\")return Kt;Ht&&(X=X.slice(0,-1*Ht*2),O=O.slice(0,-1*Ht),A=A.slice(0,-1*Ht)),X.push(this.productions_[jt[1]][0]),O.push(Gt.$),A.push(Gt._$),Vt=J[X[X.length-2]][X[X.length-1]],X.push(Vt);break;case 3:return!0}}return!0}},_t=function(){var Ot={EOF:1,parseError:function(z,X){if(this.yy.parser)this.yy.parser.parseError(z,X);else throw new Error(z)},setInput:function(P,z){return this.yy=z||this.yy||{},this._input=P,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var P=this._input[0];this.yytext+=P,this.yyleng++,this.offset++,this.match+=P,this.matched+=P;var z=P.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),P},unput:function(P){var z=P.length,X=P.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=P+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-z),this.offset-=z;var F=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),X.length-1&&(this.yylineno-=X.length-1);var O=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:X?(X.length===F.length?this.yylloc.first_column:0)+F[F.length-X.length].length-X[0].length:this.yylloc.first_column-z},this.options.ranges&&(this.yylloc.range=[O[0],O[0]+this.yyleng-z]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(P){this.unput(this.match.slice(P))},pastInput:function(){var P=this.matched.substr(0,this.matched.length-this.match.length);return(P.length>20?\\\"...\\\":\\\"\\\")+P.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var P=this.match;return P.length\u003C20&&(P+=this._input.substr(0,20-P.length)),(P.substr(0,20)+(P.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var P=this.pastInput(),z=new Array(P.length+1).join(\\\"-\\\");return P+this.upcomingInput()+`\\n`+z+\\\"^\\\"},test_match:function(P,z){var X,F,O;if(this.options.backtrack_lexer&&(O={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(O.yylloc.range=this.yylloc.range.slice(0))),F=P[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),F&&(this.yylineno+=F.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:F?F[F.length-1].length-F[F.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+P[0].length},this.yytext+=P[0],this.match+=P[0],this.matches=P,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(P[0].length),this.matched+=P[0],X=this.performAction.call(this,this.yy,this,z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),X)return X;if(this._backtrack){for(var A in O)this[A]=O[A];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var P,z,X,F;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var O=this._currentRules(),A=0;A\u003CO.length;A++)if(X=this._input.match(this.rules[O[A]]),X&&(!z||X[0].length>z[0].length)){if(z=X,F=A,this.options.backtrack_lexer){if(P=this.test_match(X,O[A]),P!==!1)return P;if(this._backtrack){z=!1;continue}else return!1}else if(!this.options.flex)break}return z?(P=this.test_match(z,O[F]),P!==!1?P:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var z=this.next();return z||this.lex()},begin:function(z){this.conditionStack.push(z)},popState:function(){var z=this.conditionStack.length-1;return z>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(z){return z=this.conditionStack.length-1-Math.abs(z||0),z>=0?this.conditionStack[z]:\\\"INITIAL\\\"},pushState:function(z){this.begin(z)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(z,X,F,O){switch(F){case 0:return this.begin(\\\"open_directive\\\"),19;case 1:return this.begin(\\\"type_directive\\\"),20;case 2:return this.popState(),this.begin(\\\"arg_directive\\\"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return\\\"title\\\";case 6:return this.begin(\\\"acc_title\\\"),14;case 7:return this.popState(),\\\"acc_title_value\\\";case 8:return this.begin(\\\"acc_descr\\\"),16;case 9:return this.popState(),\\\"acc_descr_value\\\";case 10:this.begin(\\\"acc_descr_multiline\\\");break;case 11:this.popState();break;case 12:return\\\"acc_descr_multiline_value\\\";case 13:return 5;case 14:break;case 15:break;case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin(\\\"string\\\");break;case 53:this.popState();break;case 54:return\\\"qString\\\";case 55:return X.yytext=X.yytext.trim(),71}},rules:[/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:title\\\\s[^#\\\\n;]+)/i,/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:(\\\\r?\\\\n)+)/i,/^(?:\\\\s+)/i,/^(?:#[^\\\\n]*)/i,/^(?:%[^\\\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\\\b)/i,/^(?:\\\\{)/i,/^(?:\\\\})/i,/^(?::)/i,/^(?:id\\\\b)/i,/^(?:text\\\\b)/i,/^(?:risk\\\\b)/i,/^(?:verifyMethod\\\\b)/i,/^(?:requirement\\\\b)/i,/^(?:functionalRequirement\\\\b)/i,/^(?:interfaceRequirement\\\\b)/i,/^(?:performanceRequirement\\\\b)/i,/^(?:physicalRequirement\\\\b)/i,/^(?:designConstraint\\\\b)/i,/^(?:low\\\\b)/i,/^(?:medium\\\\b)/i,/^(?:high\\\\b)/i,/^(?:analysis\\\\b)/i,/^(?:demonstration\\\\b)/i,/^(?:inspection\\\\b)/i,/^(?:test\\\\b)/i,/^(?:element\\\\b)/i,/^(?:contains\\\\b)/i,/^(?:copies\\\\b)/i,/^(?:derives\\\\b)/i,/^(?:satisfies\\\\b)/i,/^(?:verifies\\\\b)/i,/^(?:refines\\\\b)/i,/^(?:traces\\\\b)/i,/^(?:type\\\\b)/i,/^(?:docref\\\\b)/i,/^(?:\u003C-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\\\"])/i,/^(?:[\\\"])/i,/^(?:[^\\\"]*)/i,/^(?:[\\\\w][^\\\\r\\\\n\\\\{\\\\\u003C\\\\>\\\\-\\\\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}};return Ot}();ut.lexer=_t;function K(){this.yy={}}return K.prototype=ut,ut.Parser=K,new K}();ed.parser=ed;const RR=ed,FR=t=>t.match(/^\\\\s*requirement(Diagram)?/)!==null;let rd=[],Ur={},$o={},qi={},Xo={};const PR={RequirementType:{REQUIREMENT:\\\"Requirement\\\",FUNCTIONAL_REQUIREMENT:\\\"Functional Requirement\\\",INTERFACE_REQUIREMENT:\\\"Interface Requirement\\\",PERFORMANCE_REQUIREMENT:\\\"Performance Requirement\\\",PHYSICAL_REQUIREMENT:\\\"Physical Requirement\\\",DESIGN_CONSTRAINT:\\\"Design Constraint\\\"},RiskLevel:{LOW_RISK:\\\"Low\\\",MED_RISK:\\\"Medium\\\",HIGH_RISK:\\\"High\\\"},VerifyType:{VERIFY_ANALYSIS:\\\"Analysis\\\",VERIFY_DEMONSTRATION:\\\"Demonstration\\\",VERIFY_INSPECTION:\\\"Inspection\\\",VERIFY_TEST:\\\"Test\\\"},Relationships:{CONTAINS:\\\"contains\\\",COPIES:\\\"copies\\\",DERIVES:\\\"derives\\\",SATISFIES:\\\"satisfies\\\",VERIFIES:\\\"verifies\\\",REFINES:\\\"refines\\\",TRACES:\\\"traces\\\"},parseDirective:function(t,e,r){ze.parseDirective(this,t,e,r)},getConfig:()=>$().req,addRequirement:(t,e)=>($o[t]===void 0&&($o[t]={name:t,type:e,id:Ur.id,text:Ur.text,risk:Ur.risk,verifyMethod:Ur.verifyMethod}),Ur={},$o[t]),getRequirements:()=>$o,setNewReqId:t=>{Ur!==void 0&&(Ur.id=t)},setNewReqText:t=>{Ur!==void 0&&(Ur.text=t)},setNewReqRisk:t=>{Ur!==void 0&&(Ur.risk=t)},setNewReqVerifyMethod:t=>{Ur!==void 0&&(Ur.verifyMethod=t)},setAccTitle:nn,getAccTitle:kn,setAccDescription:wn,getAccDescription:Tn,addElement:t=>(Xo[t]===void 0&&(Xo[t]={name:t,type:qi.type,docRef:qi.docRef},B.info(\\\"Added new requirement: \\\",t)),qi={},Xo[t]),getElements:()=>Xo,setNewElementType:t=>{qi!==void 0&&(qi.type=t)},setNewElementDocRef:t=>{qi!==void 0&&(qi.docRef=t)},addRelationship:(t,e,r)=>{rd.push({type:t,src:e,dst:r})},getRelationships:()=>rd,clear:()=>{rd=[],Ur={},$o={},qi={},Xo={},vn()}},nd={CONTAINS:\\\"contains\\\",ARROW:\\\"arrow\\\"},R3={ReqMarkers:nd,insertLineEndings:(t,e)=>{let r=t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",nd.CONTAINS+\\\"_line_ending\\\").attr(\\\"refX\\\",0).attr(\\\"refY\\\",e.line_height/2).attr(\\\"markerWidth\\\",e.line_height).attr(\\\"markerHeight\\\",e.line_height).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"g\\\");r.append(\\\"circle\\\").attr(\\\"cx\\\",e.line_height/2).attr(\\\"cy\\\",e.line_height/2).attr(\\\"r\\\",e.line_height/2).attr(\\\"fill\\\",\\\"none\\\"),r.append(\\\"line\\\").attr(\\\"x1\\\",0).attr(\\\"x2\\\",e.line_height).attr(\\\"y1\\\",e.line_height/2).attr(\\\"y2\\\",e.line_height/2).attr(\\\"stroke-width\\\",1),r.append(\\\"line\\\").attr(\\\"y1\\\",0).attr(\\\"y2\\\",e.line_height).attr(\\\"x1\\\",e.line_height/2).attr(\\\"x2\\\",e.line_height/2).attr(\\\"stroke-width\\\",1),t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",nd.ARROW+\\\"_line_ending\\\").attr(\\\"refX\\\",e.line_height).attr(\\\"refY\\\",.5*e.line_height).attr(\\\"markerWidth\\\",e.line_height).attr(\\\"markerHeight\\\",e.line_height).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",`M0,0\\n L${e.line_height},${e.line_height/2}\\n M${e.line_height},${e.line_height/2}\\n L0,${e.line_height}`).attr(\\\"stroke-width\\\",1)}};let qe={},F3=0;const P3=(t,e)=>t.insert(\\\"rect\\\",\\\"#\\\"+e).attr(\\\"class\\\",\\\"req reqBox\\\").attr(\\\"x\\\",0).attr(\\\"y\\\",0).attr(\\\"width\\\",qe.rect_min_width+\\\"px\\\").attr(\\\"height\\\",qe.rect_min_height+\\\"px\\\"),Y3=(t,e,r)=>{let n=qe.rect_min_width/2,i=t.append(\\\"text\\\").attr(\\\"class\\\",\\\"req reqLabel reqTitle\\\").attr(\\\"id\\\",e).attr(\\\"x\\\",n).attr(\\\"y\\\",qe.rect_padding).attr(\\\"dominant-baseline\\\",\\\"hanging\\\"),s=0;r.forEach(u=>{s==0?i.append(\\\"tspan\\\").attr(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"x\\\",qe.rect_min_width/2).attr(\\\"dy\\\",0).text(u):i.append(\\\"tspan\\\").attr(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"x\\\",qe.rect_min_width/2).attr(\\\"dy\\\",qe.line_height*.75).text(u),s++});let a=1.5*qe.rect_padding,o=s*qe.line_height*.75,l=a+o;return t.append(\\\"line\\\").attr(\\\"class\\\",\\\"req-title-line\\\").attr(\\\"x1\\\",\\\"0\\\").attr(\\\"x2\\\",qe.rect_min_width).attr(\\\"y1\\\",l).attr(\\\"y2\\\",l),{titleNode:i,y:l}},V3=(t,e,r,n)=>{let i=t.append(\\\"text\\\").attr(\\\"class\\\",\\\"req reqLabel\\\").attr(\\\"id\\\",e).attr(\\\"x\\\",qe.rect_padding).attr(\\\"y\\\",n).attr(\\\"dominant-baseline\\\",\\\"hanging\\\"),s=0;const a=30;let o=[];return r.forEach(l=>{let u=l.length;for(;u>a&&s\u003C3;){let d=l.substring(0,a);l=l.substring(a,l.length),u=l.length,o[o.length]=d,s++}if(s==3){let d=o[o.length-1];o[o.length-1]=d.substring(0,d.length-4)+\\\"...\\\"}else o[o.length]=l;s=0}),o.forEach(l=>{i.append(\\\"tspan\\\").attr(\\\"x\\\",qe.rect_padding).attr(\\\"dy\\\",qe.line_height).text(l)}),i},YR=(t,e,r,n)=>{const i=e.node().getTotalLength(),s=e.node().getPointAtLength(i*.5),a=\\\"rel\\\"+F3;F3++;const l=t.append(\\\"text\\\").attr(\\\"class\\\",\\\"req relationshipLabel\\\").attr(\\\"id\\\",a).attr(\\\"x\\\",s.x).attr(\\\"y\\\",s.y).attr(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"dominant-baseline\\\",\\\"middle\\\").text(n).node().getBBox();t.insert(\\\"rect\\\",\\\"#\\\"+a).attr(\\\"class\\\",\\\"req reqLabelBox\\\").attr(\\\"x\\\",s.x-l.width/2).attr(\\\"y\\\",s.y-l.height/2).attr(\\\"width\\\",l.width).attr(\\\"height\\\",l.height).attr(\\\"fill\\\",\\\"white\\\").attr(\\\"fill-opacity\\\",\\\"85%\\\")},VR=function(t,e,r,n,i){const s=r.edge(Ma(e.src),Ma(e.dst)),a=Js().x(function(l){return l.x}).y(function(l){return l.y}),o=t.insert(\\\"path\\\",\\\"#\\\"+n).attr(\\\"class\\\",\\\"er relationshipLine\\\").attr(\\\"d\\\",a(s.points)).attr(\\\"fill\\\",\\\"none\\\");e.type==i.db.Relationships.CONTAINS?o.attr(\\\"marker-start\\\",\\\"url(\\\"+he.getUrl(qe.arrowMarkerAbsolute)+\\\"#\\\"+e.type+\\\"_line_ending)\\\"):(o.attr(\\\"stroke-dasharray\\\",\\\"10,7\\\"),o.attr(\\\"marker-end\\\",\\\"url(\\\"+he.getUrl(qe.arrowMarkerAbsolute)+\\\"#\\\"+R3.ReqMarkers.ARROW+\\\"_line_ending)\\\")),YR(t,o,qe,`\u003C\u003C${e.type}>>`)},UR=(t,e,r)=>{Object.keys(t).forEach(n=>{let i=t[n];n=Ma(n),B.info(\\\"Added new requirement: \\\",n);const s=r.append(\\\"g\\\").attr(\\\"id\\\",n),a=\\\"req-\\\"+n,o=P3(s,a);let l=Y3(s,n+\\\"_title\\\",[`\u003C\u003C${i.type}>>`,`${i.name}`]);V3(s,n+\\\"_body\\\",[`Id: ${i.id}`,`Text: ${i.text}`,`Risk: ${i.risk}`,`Verification: ${i.verifyMethod}`],l.y);const u=o.node().getBBox();e.setNode(n,{width:u.width,height:u.height,shape:\\\"rect\\\",id:n})})},zR=(t,e,r)=>{Object.keys(t).forEach(n=>{let i=t[n];const s=Ma(n),a=r.append(\\\"g\\\").attr(\\\"id\\\",s),o=\\\"element-\\\"+s,l=P3(a,o);let u=Y3(a,o+\\\"_title\\\",[\\\"\u003C\u003CElement>>\\\",`${n}`]);V3(a,o+\\\"_body\\\",[`Type: ${i.type||\\\"Not Specified\\\"}`,`Doc Ref: ${i.docRef||\\\"None\\\"}`],u.y);const d=l.node().getBBox();e.setNode(s,{width:d.width,height:d.height,shape:\\\"rect\\\",id:s})})},WR=(t,e)=>(t.forEach(function(r){let n=Ma(r.src),i=Ma(r.dst);e.setEdge(n,i,{relationship:r})}),t),HR=function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&(t.select(\\\"#\\\"+r),t.select(\\\"#\\\"+r).attr(\\\"transform\\\",\\\"translate(\\\"+(e.node(r).x-e.node(r).width/2)+\\\",\\\"+(e.node(r).y-e.node(r).height/2)+\\\" )\\\"))})},Ma=t=>t.replace(/\\\\s/g,\\\"\\\").replace(/\\\\./g,\\\"_\\\"),GR={draw:(t,e,r,n)=>{qe=$().requirement,n.db.clear(),n.parser.parse(t);const i=qe.securityLevel;let s;i===\\\"sandbox\\\"&&(s=St(\\\"#i\\\"+e));const o=St(i===\\\"sandbox\\\"?s.nodes()[0].contentDocument.body:\\\"body\\\").select(`[id='${e}']`);R3.insertLineEndings(o,qe);const l=new sr({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:qe.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let u=n.db.getRequirements(),d=n.db.getElements(),f=n.db.getRelationships();UR(u,l,o),zR(d,l,o),WR(f,l),Ea(l),HR(o,l),f.forEach(function(T){VR(o,T,l,e,n)});const p=qe.rect_padding,g=o.node().getBBox(),b=g.width+p*2,k=g.height+p*2;xn(o,k,b,qe.useMaxWidth),o.attr(\\\"viewBox\\\",`${g.x-p} ${g.y-p} ${b} ${k}`)}};var id=function(){var t=function(Ot,P,z,X){for(z=z||{},X=Ot.length;X--;z[Ot[X]]=P);return z},e=[1,2],r=[1,3],n=[1,5],i=[1,7],s=[2,5],a=[1,15],o=[1,17],l=[1,18],u=[1,19],d=[1,21],f=[1,22],p=[1,23],g=[1,29],b=[1,30],k=[1,31],T=[1,32],L=[1,33],E=[1,34],I=[1,35],V=[1,36],H=[1,37],G=[1,38],Y=[1,39],W=[1,40],N=[1,43],D=[1,44],w=[1,45],v=[1,46],M=[1,47],m=[1,48],Q=[1,51],x=[1,4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,50,51,52,53,58,59,60,61,69,79],ct=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,53,58,59,60,61,69,79],Dt=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,52,53,58,59,60,61,69,79],kt=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,51,53,58,59,60,61,69,79],j=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,50,53,58,59,60,61,69,79],ot=[67,68,69],rt=[1,121],nt=[1,4,5,7,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,50,51,52,53,58,59,60,61,69,79],ut={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,openDirective:11,typeDirective:12,closeDirective:13,\\\":\\\":14,argDirective:15,participant:16,actor:17,AS:18,restOfLine:19,participant_actor:20,signal:21,autonumber:22,NUM:23,off:24,activate:25,deactivate:26,note_statement:27,links_statement:28,link_statement:29,properties_statement:30,details_statement:31,title:32,legacy_title:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,loop:39,end:40,rect:41,opt:42,alt:43,else_sections:44,par:45,par_sections:46,critical:47,option_sections:48,break:49,option:50,and:51,else:52,note:53,placement:54,text2:55,over:56,actor_pair:57,links:58,link:59,properties:60,details:61,spaceList:62,\\\",\\\":63,left_of:64,right_of:65,signaltype:66,\\\"+\\\":67,\\\"-\\\":68,ACTOR:69,SOLID_OPEN_ARROW:70,DOTTED_OPEN_ARROW:71,SOLID_ARROW:72,DOTTED_ARROW:73,SOLID_CROSS:74,DOTTED_CROSS:75,SOLID_POINT:76,DOTTED_POINT:77,TXT:78,open_directive:79,type_directive:80,arg_directive:81,close_directive:82,$accept:0,$end:1},terminals_:{2:\\\"error\\\",4:\\\"SPACE\\\",5:\\\"NEWLINE\\\",7:\\\"SD\\\",14:\\\":\\\",16:\\\"participant\\\",18:\\\"AS\\\",19:\\\"restOfLine\\\",20:\\\"participant_actor\\\",22:\\\"autonumber\\\",23:\\\"NUM\\\",24:\\\"off\\\",25:\\\"activate\\\",26:\\\"deactivate\\\",32:\\\"title\\\",33:\\\"legacy_title\\\",34:\\\"acc_title\\\",35:\\\"acc_title_value\\\",36:\\\"acc_descr\\\",37:\\\"acc_descr_value\\\",38:\\\"acc_descr_multiline_value\\\",39:\\\"loop\\\",40:\\\"end\\\",41:\\\"rect\\\",42:\\\"opt\\\",43:\\\"alt\\\",45:\\\"par\\\",47:\\\"critical\\\",49:\\\"break\\\",50:\\\"option\\\",51:\\\"and\\\",52:\\\"else\\\",53:\\\"note\\\",56:\\\"over\\\",58:\\\"links\\\",59:\\\"link\\\",60:\\\"properties\\\",61:\\\"details\\\",63:\\\",\\\",64:\\\"left_of\\\",65:\\\"right_of\\\",67:\\\"+\\\",68:\\\"-\\\",69:\\\"ACTOR\\\",70:\\\"SOLID_OPEN_ARROW\\\",71:\\\"DOTTED_OPEN_ARROW\\\",72:\\\"SOLID_ARROW\\\",73:\\\"DOTTED_ARROW\\\",74:\\\"SOLID_CROSS\\\",75:\\\"DOTTED_CROSS\\\",76:\\\"SOLID_POINT\\\",77:\\\"DOTTED_POINT\\\",78:\\\"TXT\\\",79:\\\"open_directive\\\",80:\\\"type_directive\\\",81:\\\"arg_directive\\\",82:\\\"close_directive\\\"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[48,1],[48,4],[46,1],[46,4],[44,1],[44,4],[27,4],[27,4],[28,3],[29,3],[30,3],[31,3],[62,2],[62,1],[57,3],[57,1],[54,1],[54,1],[21,5],[21,5],[21,4],[17,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[55,1],[11,1],[12,1],[15,1],[13,1]],performAction:function(P,z,X,F,O,A,J){var C=A.length-1;switch(O){case 4:return F.apply(A[C]),A[C];case 5:this.$=[];break;case 6:A[C-1].push(A[C]),this.$=A[C-1];break;case 7:case 8:this.$=A[C];break;case 9:this.$=[];break;case 12:A[C-3].type=\\\"addParticipant\\\",A[C-3].description=F.parseMessage(A[C-1]),this.$=A[C-3];break;case 13:A[C-1].type=\\\"addParticipant\\\",this.$=A[C-1];break;case 14:A[C-3].type=\\\"addActor\\\",A[C-3].description=F.parseMessage(A[C-1]),this.$=A[C-3];break;case 15:A[C-1].type=\\\"addActor\\\",this.$=A[C-1];break;case 17:this.$={type:\\\"sequenceIndex\\\",sequenceIndex:Number(A[C-2]),sequenceIndexStep:Number(A[C-1]),sequenceVisible:!0,signalType:F.LINETYPE.AUTONUMBER};break;case 18:this.$={type:\\\"sequenceIndex\\\",sequenceIndex:Number(A[C-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:F.LINETYPE.AUTONUMBER};break;case 19:this.$={type:\\\"sequenceIndex\\\",sequenceVisible:!1,signalType:F.LINETYPE.AUTONUMBER};break;case 20:this.$={type:\\\"sequenceIndex\\\",sequenceVisible:!0,signalType:F.LINETYPE.AUTONUMBER};break;case 21:this.$={type:\\\"activeStart\\\",signalType:F.LINETYPE.ACTIVE_START,actor:A[C-1]};break;case 22:this.$={type:\\\"activeEnd\\\",signalType:F.LINETYPE.ACTIVE_END,actor:A[C-1]};break;case 28:F.setDiagramTitle(A[C].substring(6)),this.$=A[C].substring(6);break;case 29:F.setDiagramTitle(A[C].substring(7)),this.$=A[C].substring(7);break;case 30:this.$=A[C].trim(),F.setAccTitle(this.$);break;case 31:case 32:this.$=A[C].trim(),F.setAccDescription(this.$);break;case 33:A[C-1].unshift({type:\\\"loopStart\\\",loopText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.LOOP_START}),A[C-1].push({type:\\\"loopEnd\\\",loopText:A[C-2],signalType:F.LINETYPE.LOOP_END}),this.$=A[C-1];break;case 34:A[C-1].unshift({type:\\\"rectStart\\\",color:F.parseMessage(A[C-2]),signalType:F.LINETYPE.RECT_START}),A[C-1].push({type:\\\"rectEnd\\\",color:F.parseMessage(A[C-2]),signalType:F.LINETYPE.RECT_END}),this.$=A[C-1];break;case 35:A[C-1].unshift({type:\\\"optStart\\\",optText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.OPT_START}),A[C-1].push({type:\\\"optEnd\\\",optText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.OPT_END}),this.$=A[C-1];break;case 36:A[C-1].unshift({type:\\\"altStart\\\",altText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.ALT_START}),A[C-1].push({type:\\\"altEnd\\\",signalType:F.LINETYPE.ALT_END}),this.$=A[C-1];break;case 37:A[C-1].unshift({type:\\\"parStart\\\",parText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.PAR_START}),A[C-1].push({type:\\\"parEnd\\\",signalType:F.LINETYPE.PAR_END}),this.$=A[C-1];break;case 38:A[C-1].unshift({type:\\\"criticalStart\\\",criticalText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.CRITICAL_START}),A[C-1].push({type:\\\"criticalEnd\\\",signalType:F.LINETYPE.CRITICAL_END}),this.$=A[C-1];break;case 39:A[C-1].unshift({type:\\\"breakStart\\\",breakText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.BREAK_START}),A[C-1].push({type:\\\"breakEnd\\\",optText:F.parseMessage(A[C-2]),signalType:F.LINETYPE.BREAK_END}),this.$=A[C-1];break;case 42:this.$=A[C-3].concat([{type:\\\"option\\\",optionText:F.parseMessage(A[C-1]),signalType:F.LINETYPE.CRITICAL_OPTION},A[C]]);break;case 44:this.$=A[C-3].concat([{type:\\\"and\\\",parText:F.parseMessage(A[C-1]),signalType:F.LINETYPE.PAR_AND},A[C]]);break;case 46:this.$=A[C-3].concat([{type:\\\"else\\\",altText:F.parseMessage(A[C-1]),signalType:F.LINETYPE.ALT_ELSE},A[C]]);break;case 47:this.$=[A[C-1],{type:\\\"addNote\\\",placement:A[C-2],actor:A[C-1].actor,text:A[C]}];break;case 48:A[C-2]=[].concat(A[C-1],A[C-1]).slice(0,2),A[C-2][0]=A[C-2][0].actor,A[C-2][1]=A[C-2][1].actor,this.$=[A[C-1],{type:\\\"addNote\\\",placement:F.PLACEMENT.OVER,actor:A[C-2].slice(0,2),text:A[C]}];break;case 49:this.$=[A[C-1],{type:\\\"addLinks\\\",actor:A[C-1].actor,text:A[C]}];break;case 50:this.$=[A[C-1],{type:\\\"addALink\\\",actor:A[C-1].actor,text:A[C]}];break;case 51:this.$=[A[C-1],{type:\\\"addProperties\\\",actor:A[C-1].actor,text:A[C]}];break;case 52:this.$=[A[C-1],{type:\\\"addDetails\\\",actor:A[C-1].actor,text:A[C]}];break;case 55:this.$=[A[C-2],A[C]];break;case 56:this.$=A[C];break;case 57:this.$=F.PLACEMENT.LEFTOF;break;case 58:this.$=F.PLACEMENT.RIGHTOF;break;case 59:this.$=[A[C-4],A[C-1],{type:\\\"addMessage\\\",from:A[C-4].actor,to:A[C-1].actor,signalType:A[C-3],msg:A[C]},{type:\\\"activeStart\\\",signalType:F.LINETYPE.ACTIVE_START,actor:A[C-1]}];break;case 60:this.$=[A[C-4],A[C-1],{type:\\\"addMessage\\\",from:A[C-4].actor,to:A[C-1].actor,signalType:A[C-3],msg:A[C]},{type:\\\"activeEnd\\\",signalType:F.LINETYPE.ACTIVE_END,actor:A[C-4]}];break;case 61:this.$=[A[C-3],A[C-1],{type:\\\"addMessage\\\",from:A[C-3].actor,to:A[C-1].actor,signalType:A[C-2],msg:A[C]}];break;case 62:this.$={type:\\\"addParticipant\\\",actor:A[C]};break;case 63:this.$=F.LINETYPE.SOLID_OPEN;break;case 64:this.$=F.LINETYPE.DOTTED_OPEN;break;case 65:this.$=F.LINETYPE.SOLID;break;case 66:this.$=F.LINETYPE.DOTTED;break;case 67:this.$=F.LINETYPE.SOLID_CROSS;break;case 68:this.$=F.LINETYPE.DOTTED_CROSS;break;case 69:this.$=F.LINETYPE.SOLID_POINT;break;case 70:this.$=F.LINETYPE.DOTTED_POINT;break;case 71:this.$=F.parseMessage(A[C].trim().substring(1));break;case 72:F.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 73:F.parseDirective(A[C],\\\"type_directive\\\");break;case 74:A[C]=A[C].trim().replace(/'/g,'\\\"'),F.parseDirective(A[C],\\\"arg_directive\\\");break;case 75:F.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"sequence\\\");break}},table:[{3:1,4:e,5:r,6:4,7:n,11:6,79:i},{1:[3]},{3:8,4:e,5:r,6:4,7:n,11:6,79:i},{3:9,4:e,5:r,6:4,7:n,11:6,79:i},{3:10,4:e,5:r,6:4,7:n,11:6,79:i},t([1,4,5,16,20,22,25,26,32,33,34,36,38,39,41,42,43,45,47,49,53,58,59,60,61,69,79],s,{8:11}),{12:12,80:[1,13]},{80:[2,72]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,41:I,42:V,43:H,45:G,47:Y,49:W,53:N,58:D,59:w,60:v,61:M,69:m,79:i},{13:49,14:[1,50],82:Q},t([14,82],[2,73]),t(x,[2,6]),{6:41,10:52,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,41:I,42:V,43:H,45:G,47:Y,49:W,53:N,58:D,59:w,60:v,61:M,69:m,79:i},t(x,[2,8]),t(x,[2,9]),{17:53,69:m},{17:54,69:m},{5:[1,55]},{5:[1,58],23:[1,56],24:[1,57]},{17:59,69:m},{17:60,69:m},{5:[1,61]},{5:[1,62]},{5:[1,63]},{5:[1,64]},{5:[1,65]},t(x,[2,28]),t(x,[2,29]),{35:[1,66]},{37:[1,67]},t(x,[2,32]),{19:[1,68]},{19:[1,69]},{19:[1,70]},{19:[1,71]},{19:[1,72]},{19:[1,73]},{19:[1,74]},t(x,[2,40]),{66:75,70:[1,76],71:[1,77],72:[1,78],73:[1,79],74:[1,80],75:[1,81],76:[1,82],77:[1,83]},{54:84,56:[1,85],64:[1,86],65:[1,87]},{17:88,69:m},{17:89,69:m},{17:90,69:m},{17:91,69:m},t([5,18,63,70,71,72,73,74,75,76,77,78],[2,62]),{5:[1,92]},{15:93,81:[1,94]},{5:[2,75]},t(x,[2,7]),{5:[1,96],18:[1,95]},{5:[1,98],18:[1,97]},t(x,[2,16]),{5:[1,100],23:[1,99]},{5:[1,101]},t(x,[2,20]),{5:[1,102]},{5:[1,103]},t(x,[2,23]),t(x,[2,24]),t(x,[2,25]),t(x,[2,26]),t(x,[2,27]),t(x,[2,30]),t(x,[2,31]),t(ct,s,{8:104}),t(ct,s,{8:105}),t(ct,s,{8:106}),t(Dt,s,{44:107,8:108}),t(kt,s,{46:109,8:110}),t(j,s,{48:111,8:112}),t(ct,s,{8:113}),{17:116,67:[1,114],68:[1,115],69:m},t(ot,[2,63]),t(ot,[2,64]),t(ot,[2,65]),t(ot,[2,66]),t(ot,[2,67]),t(ot,[2,68]),t(ot,[2,69]),t(ot,[2,70]),{17:117,69:m},{17:119,57:118,69:m},{69:[2,57]},{69:[2,58]},{55:120,78:rt},{55:122,78:rt},{55:123,78:rt},{55:124,78:rt},t(nt,[2,10]),{13:125,82:Q},{82:[2,74]},{19:[1,126]},t(x,[2,13]),{19:[1,127]},t(x,[2,15]),{5:[1,128]},t(x,[2,18]),t(x,[2,19]),t(x,[2,21]),t(x,[2,22]),{4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,40:[1,129],41:I,42:V,43:H,45:G,47:Y,49:W,53:N,58:D,59:w,60:v,61:M,69:m,79:i},{4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,40:[1,130],41:I,42:V,43:H,45:G,47:Y,49:W,53:N,58:D,59:w,60:v,61:M,69:m,79:i},{4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,40:[1,131],41:I,42:V,43:H,45:G,47:Y,49:W,53:N,58:D,59:w,60:v,61:M,69:m,79:i},{40:[1,132]},{4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,40:[2,45],41:I,42:V,43:H,45:G,47:Y,49:W,52:[1,133],53:N,58:D,59:w,60:v,61:M,69:m,79:i},{40:[1,134]},{4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,40:[2,43],41:I,42:V,43:H,45:G,47:Y,49:W,51:[1,135],53:N,58:D,59:w,60:v,61:M,69:m,79:i},{40:[1,136]},{4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,40:[2,41],41:I,42:V,43:H,45:G,47:Y,49:W,50:[1,137],53:N,58:D,59:w,60:v,61:M,69:m,79:i},{4:a,5:o,6:41,9:14,10:16,11:6,16:l,17:42,20:u,21:20,22:d,25:f,26:p,27:24,28:25,29:26,30:27,31:28,32:g,33:b,34:k,36:T,38:L,39:E,40:[1,138],41:I,42:V,43:H,45:G,47:Y,49:W,53:N,58:D,59:w,60:v,61:M,69:m,79:i},{17:139,69:m},{17:140,69:m},{55:141,78:rt},{55:142,78:rt},{55:143,78:rt},{63:[1,144],78:[2,56]},{5:[2,49]},{5:[2,71]},{5:[2,50]},{5:[2,51]},{5:[2,52]},{5:[1,145]},{5:[1,146]},{5:[1,147]},t(x,[2,17]),t(x,[2,33]),t(x,[2,34]),t(x,[2,35]),t(x,[2,36]),{19:[1,148]},t(x,[2,37]),{19:[1,149]},t(x,[2,38]),{19:[1,150]},t(x,[2,39]),{55:151,78:rt},{55:152,78:rt},{5:[2,61]},{5:[2,47]},{5:[2,48]},{17:153,69:m},t(nt,[2,11]),t(x,[2,12]),t(x,[2,14]),t(Dt,s,{8:108,44:154}),t(kt,s,{8:110,46:155}),t(j,s,{8:112,48:156}),{5:[2,59]},{5:[2,60]},{78:[2,55]},{40:[2,46]},{40:[2,44]},{40:[2,42]}],defaultActions:{7:[2,72],8:[2,1],9:[2,2],10:[2,3],51:[2,75],86:[2,57],87:[2,58],94:[2,74],120:[2,49],121:[2,71],122:[2,50],123:[2,51],124:[2,52],141:[2,61],142:[2,47],143:[2,48],151:[2,59],152:[2,60],153:[2,55],154:[2,46],155:[2,44],156:[2,42]},parseError:function(P,z){if(z.recoverable)this.trace(P);else{var X=new Error(P);throw X.hash=z,X}},parse:function(P){var z=this,X=[0],F=[],O=[null],A=[],J=this.table,C=\\\"\\\",ht=0,U=0,Yt=2,et=1,Mt=A.slice.call(arguments,1),Tt=Object.create(this.lexer),gt={yy:{}};for(var Et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Et)&&(gt.yy[Et]=this.yy[Et]);Tt.setInput(P,gt.yy),gt.yy.lexer=Tt,gt.yy.parser=this,typeof Tt.yylloc>\\\"u\\\"&&(Tt.yylloc={});var wt=Tt.yylloc;A.push(wt);var pt=Tt.options&&Tt.options.ranges;typeof gt.yy.parseError==\\\"function\\\"?this.parseError=gt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function st(){var ft;return ft=F.pop()||Tt.lex()||et,typeof ft!=\\\"number\\\"&&(ft instanceof Array&&(F=ft,ft=F.pop()),ft=z.symbols_[ft]||ft),ft}for(var le,Xt,jt,Kt,Gt={},Ee,Ht,Vt,Ft;;){if(Xt=X[X.length-1],this.defaultActions[Xt]?jt=this.defaultActions[Xt]:((le===null||typeof le>\\\"u\\\")&&(le=st()),jt=J[Xt]&&J[Xt][le]),typeof jt>\\\"u\\\"||!jt.length||!jt[0]){var xt=\\\"\\\";Ft=[];for(Ee in J[Xt])this.terminals_[Ee]&&Ee>Yt&&Ft.push(\\\"'\\\"+this.terminals_[Ee]+\\\"'\\\");Tt.showPosition?xt=\\\"Parse error on line \\\"+(ht+1)+`:\\n`+Tt.showPosition()+`\\nExpecting `+Ft.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[le]||le)+\\\"'\\\":xt=\\\"Parse error on line \\\"+(ht+1)+\\\": Unexpected \\\"+(le==et?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[le]||le)+\\\"'\\\"),this.parseError(xt,{text:Tt.match,token:this.terminals_[le]||le,line:Tt.yylineno,loc:wt,expected:Ft})}if(jt[0]instanceof Array&&jt.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+Xt+\\\", token: \\\"+le);switch(jt[0]){case 1:X.push(le),O.push(Tt.yytext),A.push(Tt.yylloc),X.push(jt[1]),le=null,U=Tt.yyleng,C=Tt.yytext,ht=Tt.yylineno,wt=Tt.yylloc;break;case 2:if(Ht=this.productions_[jt[1]][1],Gt.$=O[O.length-Ht],Gt._$={first_line:A[A.length-(Ht||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(Ht||1)].first_column,last_column:A[A.length-1].last_column},pt&&(Gt._$.range=[A[A.length-(Ht||1)].range[0],A[A.length-1].range[1]]),Kt=this.performAction.apply(Gt,[C,U,ht,gt.yy,jt[1],O,A].concat(Mt)),typeof Kt\u003C\\\"u\\\")return Kt;Ht&&(X=X.slice(0,-1*Ht*2),O=O.slice(0,-1*Ht),A=A.slice(0,-1*Ht)),X.push(this.productions_[jt[1]][0]),O.push(Gt.$),A.push(Gt._$),Vt=J[X[X.length-2]][X[X.length-1]],X.push(Vt);break;case 3:return!0}}return!0}},_t=function(){var Ot={EOF:1,parseError:function(z,X){if(this.yy.parser)this.yy.parser.parseError(z,X);else throw new Error(z)},setInput:function(P,z){return this.yy=z||this.yy||{},this._input=P,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var P=this._input[0];this.yytext+=P,this.yyleng++,this.offset++,this.match+=P,this.matched+=P;var z=P.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),P},unput:function(P){var z=P.length,X=P.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=P+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-z),this.offset-=z;var F=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),X.length-1&&(this.yylineno-=X.length-1);var O=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:X?(X.length===F.length?this.yylloc.first_column:0)+F[F.length-X.length].length-X[0].length:this.yylloc.first_column-z},this.options.ranges&&(this.yylloc.range=[O[0],O[0]+this.yyleng-z]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(P){this.unput(this.match.slice(P))},pastInput:function(){var P=this.matched.substr(0,this.matched.length-this.match.length);return(P.length>20?\\\"...\\\":\\\"\\\")+P.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var P=this.match;return P.length\u003C20&&(P+=this._input.substr(0,20-P.length)),(P.substr(0,20)+(P.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var P=this.pastInput(),z=new Array(P.length+1).join(\\\"-\\\");return P+this.upcomingInput()+`\\n`+z+\\\"^\\\"},test_match:function(P,z){var X,F,O;if(this.options.backtrack_lexer&&(O={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(O.yylloc.range=this.yylloc.range.slice(0))),F=P[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),F&&(this.yylineno+=F.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:F?F[F.length-1].length-F[F.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+P[0].length},this.yytext+=P[0],this.match+=P[0],this.matches=P,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(P[0].length),this.matched+=P[0],X=this.performAction.call(this,this.yy,this,z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),X)return X;if(this._backtrack){for(var A in O)this[A]=O[A];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var P,z,X,F;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var O=this._currentRules(),A=0;A\u003CO.length;A++)if(X=this._input.match(this.rules[O[A]]),X&&(!z||X[0].length>z[0].length)){if(z=X,F=A,this.options.backtrack_lexer){if(P=this.test_match(X,O[A]),P!==!1)return P;if(this._backtrack){z=!1;continue}else return!1}else if(!this.options.flex)break}return z?(P=this.test_match(z,O[F]),P!==!1?P:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var z=this.next();return z||this.lex()},begin:function(z){this.conditionStack.push(z)},popState:function(){var z=this.conditionStack.length-1;return z>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(z){return z=this.conditionStack.length-1-Math.abs(z||0),z>=0?this.conditionStack[z]:\\\"INITIAL\\\"},pushState:function(z){this.begin(z)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(z,X,F,O){switch(F){case 0:return this.begin(\\\"open_directive\\\"),79;case 1:return this.begin(\\\"type_directive\\\"),80;case 2:return this.popState(),this.begin(\\\"arg_directive\\\"),14;case 3:return this.popState(),this.popState(),82;case 4:return 81;case 5:return 5;case 6:break;case 7:break;case 8:break;case 9:break;case 10:break;case 11:return 23;case 12:return this.begin(\\\"ID\\\"),16;case 13:return this.begin(\\\"ID\\\"),20;case 14:return X.yytext=X.yytext.trim(),this.begin(\\\"ALIAS\\\"),69;case 15:return this.popState(),this.popState(),this.begin(\\\"LINE\\\"),18;case 16:return this.popState(),this.popState(),5;case 17:return this.begin(\\\"LINE\\\"),39;case 18:return this.begin(\\\"LINE\\\"),41;case 19:return this.begin(\\\"LINE\\\"),42;case 20:return this.begin(\\\"LINE\\\"),43;case 21:return this.begin(\\\"LINE\\\"),52;case 22:return this.begin(\\\"LINE\\\"),45;case 23:return this.begin(\\\"LINE\\\"),51;case 24:return this.begin(\\\"LINE\\\"),47;case 25:return this.begin(\\\"LINE\\\"),50;case 26:return this.begin(\\\"LINE\\\"),49;case 27:return this.popState(),19;case 28:return 40;case 29:return 64;case 30:return 65;case 31:return 58;case 32:return 59;case 33:return 60;case 34:return 61;case 35:return 56;case 36:return 53;case 37:return this.begin(\\\"ID\\\"),25;case 38:return this.begin(\\\"ID\\\"),26;case 39:return 32;case 40:return 33;case 41:return this.begin(\\\"acc_title\\\"),34;case 42:return this.popState(),\\\"acc_title_value\\\";case 43:return this.begin(\\\"acc_descr\\\"),36;case 44:return this.popState(),\\\"acc_descr_value\\\";case 45:this.begin(\\\"acc_descr_multiline\\\");break;case 46:this.popState();break;case 47:return\\\"acc_descr_multiline_value\\\";case 48:return 7;case 49:return 22;case 50:return 24;case 51:return 63;case 52:return 5;case 53:return X.yytext=X.yytext.trim(),69;case 54:return 72;case 55:return 73;case 56:return 70;case 57:return 71;case 58:return 74;case 59:return 75;case 60:return 76;case 61:return 77;case 62:return 78;case 63:return 67;case 64:return 68;case 65:return 5;case 66:return\\\"INVALID\\\"}},rules:[/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:[\\\\n]+)/i,/^(?:\\\\s+)/i,/^(?:((?!\\\\n)\\\\s)+)/i,/^(?:#[^\\\\n]*)/i,/^(?:%(?!\\\\{)[^\\\\n]*)/i,/^(?:[^\\\\}]%%[^\\\\n]*)/i,/^(?:[0-9]+(?=[ \\\\n]+))/i,/^(?:participant\\\\b)/i,/^(?:actor\\\\b)/i,/^(?:[^\\\\->:\\\\n,;]+?([\\\\-]*[^\\\\->:\\\\n,;]+?)*?(?=((?!\\\\n)\\\\s)+as(?!\\\\n)\\\\s|[#\\\\n;]|$))/i,/^(?:as\\\\b)/i,/^(?:(?:))/i,/^(?:loop\\\\b)/i,/^(?:rect\\\\b)/i,/^(?:opt\\\\b)/i,/^(?:alt\\\\b)/i,/^(?:else\\\\b)/i,/^(?:par\\\\b)/i,/^(?:and\\\\b)/i,/^(?:critical\\\\b)/i,/^(?:option\\\\b)/i,/^(?:break\\\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\\\n;]*)/i,/^(?:end\\\\b)/i,/^(?:left of\\\\b)/i,/^(?:right of\\\\b)/i,/^(?:links\\\\b)/i,/^(?:link\\\\b)/i,/^(?:properties\\\\b)/i,/^(?:details\\\\b)/i,/^(?:over\\\\b)/i,/^(?:note\\\\b)/i,/^(?:activate\\\\b)/i,/^(?:deactivate\\\\b)/i,/^(?:title\\\\s[^#\\\\n;]+)/i,/^(?:title:\\\\s[^#\\\\n;]+)/i,/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:sequenceDiagram\\\\b)/i,/^(?:autonumber\\\\b)/i,/^(?:off\\\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\\\+\\\\->:\\\\n,;]+((?!(-x|--x|-\\\\)|--\\\\)))[\\\\-]*[^\\\\+\\\\->:\\\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\\\)])/i,/^(?:--[\\\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\\\n;]+)/i,/^(?:\\\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[46,47],inclusive:!1},acc_descr:{rules:[44],inclusive:!1},acc_title:{rules:[42],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,14],inclusive:!1},ALIAS:{rules:[7,8,15,16],inclusive:!1},LINE:{rules:[7,8,27],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,45,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66],inclusive:!0}}};return Ot}();ut.lexer=_t;function K(){this.yy={}}return K.prototype=ut,ut.Parser=K,new K}();id.parser=id;const qR=id,jR=t=>t.match(/^\\\\s*sequenceDiagram/)!==null;let Ko,ji={},Mn=[],Su=!1,sd;const $R=function(t,e,r){ze.parseDirective(this,t,e,r)},ad=function(t,e,r,n){const i=ji[t];i&&e===i.name&&r==null||((r==null||r.text==null)&&(r={text:e,wrap:null,type:n}),(n==null||r.text==null)&&(r={text:e,wrap:null,type:n}),ji[t]={name:e,description:r.text,wrap:r.wrap===void 0&&Na()||!!r.wrap,prevActor:Ko,links:{},properties:{},actorCnt:null,rectData:null,type:n||\\\"participant\\\"},Ko&&ji[Ko]&&(ji[Ko].nextActor=t),Ko=t)},XR=t=>{let e,r=0;for(e=0;e\u003CMn.length;e++)Mn[e].type===Qo.ACTIVE_START&&Mn[e].from.actor===t&&r++,Mn[e].type===Qo.ACTIVE_END&&Mn[e].from.actor===t&&r--;return r},KR=function(t,e,r,n){Mn.push({from:t,to:e,message:r.text,wrap:r.wrap===void 0&&Na()||!!r.wrap,answer:n})},Je=function(t,e,r={text:void 0,wrap:void 0},n){if(n===Qo.ACTIVE_END&&XR(t.actor)\u003C1){let s=new Error(\\\"Trying to inactivate an inactive participant (\\\"+t.actor+\\\")\\\");throw s.hash={text:\\\"->>-\\\",token:\\\"->>-\\\",line:\\\"1\\\",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:[\\\"'ACTIVE_PARTICIPANT'\\\"]},s}return Mn.push({from:t,to:e,message:r.text,wrap:r.wrap===void 0&&Na()||!!r.wrap,type:n}),!0},ZR=function(){return Mn},QR=function(){return ji},Zo=function(t){return ji[t]},JR=function(){return Object.keys(ji)},tF=function(){Su=!0},eF=function(){Su=!1},rF=()=>Su,nF=function(t){sd=t},Na=()=>sd!==void 0?sd:$().sequence.wrap,iF=function(){ji={},Mn=[],Su=!1,vn()},sF=function(t){const e=t.trim(),r={text:e.replace(/^:?(?:no)?wrap:/,\\\"\\\").trim(),wrap:e.match(/^:?wrap:/)!==null?!0:e.match(/^:?nowrap:/)!==null?!1:void 0};return B.debug(\\\"parseMessage:\\\",r),r},Qo={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31},aF={FILLED:0,OPEN:1},oF={LEFTOF:0,RIGHTOF:1,OVER:2},U3=function(t,e,r){r.text,r.wrap===void 0&&Na()||r.wrap;const n=[].concat(t,t);Mn.push({from:n[0],to:n[1],message:r.text,wrap:r.wrap===void 0&&Na()||!!r.wrap,type:Qo.NOTE,placement:e})},z3=function(t,e){const r=Zo(t);try{let n=yn(e.text,$());n=n.replace(/&/g,\\\"&\\\"),n=n.replace(/=/g,\\\"=\\\");const i=JSON.parse(n);od(r,i)}catch(n){B.error(\\\"error while parsing actor link text\\\",n)}},lF=function(t,e){const r=Zo(t);try{const a={};let o=yn(e.text,$());var n=o.indexOf(\\\"@\\\");o=o.replace(/&/g,\\\"&\\\"),o=o.replace(/=/g,\\\"=\\\");var i=o.slice(0,n-1).trim(),s=o.slice(n+1).trim();a[i]=s,od(r,a)}catch(a){B.error(\\\"error while parsing actor link text\\\",a)}};function od(t,e){if(t.links==null)t.links=e;else for(let r in e)t.links[r]=e[r]}const W3=function(t,e){const r=Zo(t);try{let n=yn(e.text,$());const i=JSON.parse(n);H3(r,i)}catch(n){B.error(\\\"error while parsing actor properties text\\\",n)}};function H3(t,e){if(t.properties==null)t.properties=e;else for(let r in e)t.properties[r]=e[r]}const G3=function(t,e){const r=Zo(t),n=document.getElementById(e.text);try{const i=n.innerHTML,s=JSON.parse(i);s.properties&&H3(r,s.properties),s.links&&od(r,s.links)}catch(i){B.error(\\\"error while parsing actor details text\\\",i)}},cF=function(t,e){if(t!==void 0&&t.properties!==void 0)return t.properties[e]},q3=function(t){if(Array.isArray(t))t.forEach(function(e){q3(e)});else switch(t.type){case\\\"sequenceIndex\\\":Mn.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case\\\"addParticipant\\\":ad(t.actor,t.actor,t.description,\\\"participant\\\");break;case\\\"addActor\\\":ad(t.actor,t.actor,t.description,\\\"actor\\\");break;case\\\"activeStart\\\":Je(t.actor,void 0,void 0,t.signalType);break;case\\\"activeEnd\\\":Je(t.actor,void 0,void 0,t.signalType);break;case\\\"addNote\\\":U3(t.actor,t.placement,t.text);break;case\\\"addLinks\\\":z3(t.actor,t.text);break;case\\\"addALink\\\":lF(t.actor,t.text);break;case\\\"addProperties\\\":W3(t.actor,t.text);break;case\\\"addDetails\\\":G3(t.actor,t.text);break;case\\\"addMessage\\\":Je(t.from,t.to,t.msg,t.signalType);break;case\\\"loopStart\\\":Je(void 0,void 0,t.loopText,t.signalType);break;case\\\"loopEnd\\\":Je(void 0,void 0,void 0,t.signalType);break;case\\\"rectStart\\\":Je(void 0,void 0,t.color,t.signalType);break;case\\\"rectEnd\\\":Je(void 0,void 0,void 0,t.signalType);break;case\\\"optStart\\\":Je(void 0,void 0,t.optText,t.signalType);break;case\\\"optEnd\\\":Je(void 0,void 0,void 0,t.signalType);break;case\\\"altStart\\\":Je(void 0,void 0,t.altText,t.signalType);break;case\\\"else\\\":Je(void 0,void 0,t.altText,t.signalType);break;case\\\"altEnd\\\":Je(void 0,void 0,void 0,t.signalType);break;case\\\"setAccTitle\\\":nn(t.text);break;case\\\"parStart\\\":Je(void 0,void 0,t.parText,t.signalType);break;case\\\"and\\\":Je(void 0,void 0,t.parText,t.signalType);break;case\\\"parEnd\\\":Je(void 0,void 0,void 0,t.signalType);break;case\\\"criticalStart\\\":Je(void 0,void 0,t.criticalText,t.signalType);break;case\\\"option\\\":Je(void 0,void 0,t.optionText,t.signalType);break;case\\\"criticalEnd\\\":Je(void 0,void 0,void 0,t.signalType);break;case\\\"breakStart\\\":Je(void 0,void 0,t.breakText,t.signalType);break;case\\\"breakEnd\\\":Je(void 0,void 0,void 0,t.signalType);break}},j3={addActor:ad,addMessage:KR,addSignal:Je,addLinks:z3,addDetails:G3,addProperties:W3,autoWrap:Na,setWrap:nF,enableSequenceNumbers:tF,disableSequenceNumbers:eF,showSequenceNumbers:rF,getMessages:ZR,getActors:QR,getActor:Zo,getActorKeys:JR,getActorProperty:cF,getAccTitle:kn,getDiagramTitle:di,setDiagramTitle:hi,parseDirective:$R,getConfig:()=>$().sequence,clear:iF,parseMessage:sF,LINETYPE:Qo,ARROWTYPE:aF,PLACEMENT:oF,addNote:U3,setAccTitle:nn,apply:q3,setAccDescription:wn,getAccDescription:Tn};let ld=[];const uF=t=>{ld.push(t)},$3=()=>{ld.forEach(t=>{t()}),ld=[]},Au=function(t,e){const r=t.append(\\\"rect\\\");return r.attr(\\\"x\\\",e.x),r.attr(\\\"y\\\",e.y),r.attr(\\\"fill\\\",e.fill),r.attr(\\\"stroke\\\",e.stroke),r.attr(\\\"width\\\",e.width),r.attr(\\\"height\\\",e.height),r.attr(\\\"rx\\\",e.rx),r.attr(\\\"ry\\\",e.ry),e.class!==void 0&&r.attr(\\\"class\\\",e.class),r},X3=(t,e)=>{uF(()=>{const r=document.querySelectorAll(t);r.length!==0&&(r[0].addEventListener(\\\"mouseover\\\",function(){pF(\\\"actor\\\"+e+\\\"_popup\\\")}),r[0].addEventListener(\\\"mouseout\\\",function(){gF(\\\"actor\\\"+e+\\\"_popup\\\")}))})},hF=function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};const s=e.links,a=e.actorCnt,o=e.rectData;var l=\\\"none\\\";i&&(l=\\\"block !important\\\");const u=t.append(\\\"g\\\");u.attr(\\\"id\\\",\\\"actor\\\"+a+\\\"_popup\\\"),u.attr(\\\"class\\\",\\\"actorPopupMenu\\\"),u.attr(\\\"display\\\",l),X3(\\\"#actor\\\"+a+\\\"_popup\\\",a);var d=\\\"\\\";o.class!==void 0&&(d=\\\" \\\"+o.class);let f=o.width>r?o.width:r;const p=u.append(\\\"rect\\\");if(p.attr(\\\"class\\\",\\\"actorPopupMenuPanel\\\"+d),p.attr(\\\"x\\\",o.x),p.attr(\\\"y\\\",o.height),p.attr(\\\"fill\\\",o.fill),p.attr(\\\"stroke\\\",o.stroke),p.attr(\\\"width\\\",f),p.attr(\\\"height\\\",o.height),p.attr(\\\"rx\\\",o.rx),p.attr(\\\"ry\\\",o.ry),s!=null){var g=20;for(let T in s){var b=u.append(\\\"a\\\"),k=ti(s[T]);b.attr(\\\"xlink:href\\\",k),b.attr(\\\"target\\\",\\\"_blank\\\"),DF(n)(T,b,o.x+10,o.height+g,f,20,{class:\\\"actor\\\"},n),g+=30}}return p.attr(\\\"height\\\",g),{height:o.height+g,width:f}},K3=function(t,e,r,n){const i=t.append(\\\"image\\\");i.attr(\\\"x\\\",e),i.attr(\\\"y\\\",r);var s=ti(n);i.attr(\\\"xlink:href\\\",s)},Z3=function(t,e,r,n){const i=t.append(\\\"use\\\");i.attr(\\\"x\\\",e),i.attr(\\\"y\\\",r);var s=ti(n);i.attr(\\\"xlink:href\\\",\\\"#\\\"+s)},dF=function(t){return\\\"var pu = document.getElementById('\\\"+t+\\\"'); if (pu != null) { pu.style.display = 'block'; }\\\"},fF=function(t){return\\\"var pu = document.getElementById('\\\"+t+\\\"'); if (pu != null) { pu.style.display = 'none'; }\\\"},pF=function(t){var e=document.getElementById(t);e!=null&&(e.style.display=\\\"block\\\")},gF=function(t){var e=document.getElementById(t);e!=null&&(e.style.display=\\\"none\\\")},Ba=function(t,e){let r=0,n=0;const i=e.text.split(he.lineBreakRegex);let s=[],a=0,o=()=>e.y;if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case\\\"top\\\":case\\\"start\\\":o=()=>Math.round(e.y+e.textMargin);break;case\\\"middle\\\":case\\\"center\\\":o=()=>Math.round(e.y+(r+n+e.textMargin)/2);break;case\\\"bottom\\\":case\\\"end\\\":o=()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin);break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)switch(e.anchor){case\\\"left\\\":case\\\"start\\\":e.x=Math.round(e.x+e.textMargin),e.anchor=\\\"start\\\",e.dominantBaseline=\\\"middle\\\",e.alignmentBaseline=\\\"middle\\\";break;case\\\"middle\\\":case\\\"center\\\":e.x=Math.round(e.x+e.width/2),e.anchor=\\\"middle\\\",e.dominantBaseline=\\\"middle\\\",e.alignmentBaseline=\\\"middle\\\";break;case\\\"right\\\":case\\\"end\\\":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor=\\\"end\\\",e.dominantBaseline=\\\"middle\\\",e.alignmentBaseline=\\\"middle\\\";break}for(let[l,u]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&e.fontSize!==void 0&&(a=l*e.fontSize);const d=t.append(\\\"text\\\");if(d.attr(\\\"x\\\",e.x),d.attr(\\\"y\\\",o()),e.anchor!==void 0&&d.attr(\\\"text-anchor\\\",e.anchor).attr(\\\"dominant-baseline\\\",e.dominantBaseline).attr(\\\"alignment-baseline\\\",e.alignmentBaseline),e.fontFamily!==void 0&&d.style(\\\"font-family\\\",e.fontFamily),e.fontSize!==void 0&&d.style(\\\"font-size\\\",e.fontSize),e.fontWeight!==void 0&&d.style(\\\"font-weight\\\",e.fontWeight),e.fill!==void 0&&d.attr(\\\"fill\\\",e.fill),e.class!==void 0&&d.attr(\\\"class\\\",e.class),e.dy!==void 0?d.attr(\\\"dy\\\",e.dy):a!==0&&d.attr(\\\"dy\\\",a),e.tspan){const f=d.append(\\\"tspan\\\");f.attr(\\\"x\\\",e.x),e.fill!==void 0&&f.attr(\\\"fill\\\",e.fill),f.text(u)}else d.text(u);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(d._groups||d)[0][0].getBBox().height,r=n),s.push(d)}return s},Q3=function(t,e){function r(i,s,a,o,l){return i+\\\",\\\"+s+\\\" \\\"+(i+a)+\\\",\\\"+s+\\\" \\\"+(i+a)+\\\",\\\"+(s+o-l)+\\\" \\\"+(i+a-l*1.2)+\\\",\\\"+(s+o)+\\\" \\\"+i+\\\",\\\"+(s+o)}const n=t.append(\\\"polygon\\\");return n.attr(\\\"points\\\",r(e.x,e.y,e.width,e.height,7)),n.attr(\\\"class\\\",\\\"labelBox\\\"),e.y=e.y+e.height/2,Ba(t,e),n};let Xn=-1;const J3=(t,e)=>{!t.selectAll||t.selectAll(\\\".actor-line\\\").attr(\\\"class\\\",\\\"200\\\").attr(\\\"y2\\\",e-55)},yF=function(t,e,r){const n=e.x+e.width/2,i=t.append(\\\"g\\\");var s=i;e.y===0&&(Xn++,s.append(\\\"line\\\").attr(\\\"id\\\",\\\"actor\\\"+Xn).attr(\\\"x1\\\",n).attr(\\\"y1\\\",5).attr(\\\"x2\\\",n).attr(\\\"y2\\\",2e3).attr(\\\"class\\\",\\\"actor-line\\\").attr(\\\"stroke-width\\\",\\\"0.5px\\\").attr(\\\"stroke\\\",\\\"#999\\\"),s=i.append(\\\"g\\\"),e.actorCnt=Xn,e.links!=null&&(s.attr(\\\"id\\\",\\\"root-\\\"+Xn),X3(\\\"#root-\\\"+Xn,Xn)));const a=Lu();var o=\\\"actor\\\";e.properties!=null&&e.properties.class?o=e.properties.class:a.fill=\\\"#eaeaea\\\",a.x=e.x,a.y=e.y,a.width=e.width,a.height=e.height,a.class=o,a.rx=3,a.ry=3;const l=Au(s,a);if(e.rectData=a,e.properties!=null&&e.properties.icon){const d=e.properties.icon.trim();d.charAt(0)===\\\"@\\\"?Z3(s,a.x+a.width-20,a.y+10,d.substr(1)):K3(s,a.x+a.width-20,a.y+10,d)}t4(r)(e.description,s,a.x,a.y,a.width,a.height,{class:\\\"actor\\\"},r);let u=e.height;if(l.node){const d=l.node().getBBox();e.height=d.height,u=d.height}return u},mF=function(t,e,r){const n=e.x+e.width/2;e.y===0&&(Xn++,t.append(\\\"line\\\").attr(\\\"id\\\",\\\"actor\\\"+Xn).attr(\\\"x1\\\",n).attr(\\\"y1\\\",80).attr(\\\"x2\\\",n).attr(\\\"y2\\\",2e3).attr(\\\"class\\\",\\\"actor-line\\\").attr(\\\"stroke-width\\\",\\\"0.5px\\\").attr(\\\"stroke\\\",\\\"#999\\\"));const i=t.append(\\\"g\\\");i.attr(\\\"class\\\",\\\"actor-man\\\");const s=Lu();s.x=e.x,s.y=e.y,s.fill=\\\"#eaeaea\\\",s.width=e.width,s.height=e.height,s.class=\\\"actor\\\",s.rx=3,s.ry=3,i.append(\\\"line\\\").attr(\\\"id\\\",\\\"actor-man-torso\\\"+Xn).attr(\\\"x1\\\",n).attr(\\\"y1\\\",e.y+25).attr(\\\"x2\\\",n).attr(\\\"y2\\\",e.y+45),i.append(\\\"line\\\").attr(\\\"id\\\",\\\"actor-man-arms\\\"+Xn).attr(\\\"x1\\\",n-18).attr(\\\"y1\\\",e.y+33).attr(\\\"x2\\\",n+18).attr(\\\"y2\\\",e.y+33),i.append(\\\"line\\\").attr(\\\"x1\\\",n-18).attr(\\\"y1\\\",e.y+60).attr(\\\"x2\\\",n).attr(\\\"y2\\\",e.y+45),i.append(\\\"line\\\").attr(\\\"x1\\\",n).attr(\\\"y1\\\",e.y+45).attr(\\\"x2\\\",n+16).attr(\\\"y2\\\",e.y+60);const a=i.append(\\\"circle\\\");a.attr(\\\"cx\\\",e.x+e.width/2),a.attr(\\\"cy\\\",e.y+10),a.attr(\\\"r\\\",15),a.attr(\\\"width\\\",e.width),a.attr(\\\"height\\\",e.height);const o=i.node().getBBox();return e.height=o.height,t4(r)(e.description,i,s.x,s.y+35,s.width,s.height,{class:\\\"actor\\\"},r),e.height},bF=function(t,e,r){switch(e.type){case\\\"actor\\\":return mF(t,e,r);case\\\"participant\\\":return yF(t,e,r)}},_F=function(t){return t.append(\\\"g\\\")},xF=function(t,e,r,n,i){const s=Lu(),a=e.anchored;s.x=e.startx,s.y=e.starty,s.class=\\\"activation\\\"+i%3,s.width=e.stopx-e.startx,s.height=r-e.starty,Au(a,s)},vF=function(t,e,r,n){const{boxMargin:i,boxTextMargin:s,labelBoxHeight:a,labelBoxWidth:o,messageFontFamily:l,messageFontSize:u,messageFontWeight:d}=n,f=t.append(\\\"g\\\"),p=function(k,T,L,E){return f.append(\\\"line\\\").attr(\\\"x1\\\",k).attr(\\\"y1\\\",T).attr(\\\"x2\\\",L).attr(\\\"y2\\\",E).attr(\\\"class\\\",\\\"loopLine\\\")};p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(k){p(e.startx,k.y,e.stopx,k.y).style(\\\"stroke-dasharray\\\",\\\"3, 3\\\")});let g=cd();g.text=r,g.x=e.startx,g.y=e.starty,g.fontFamily=l,g.fontSize=u,g.fontWeight=d,g.anchor=\\\"middle\\\",g.valign=\\\"middle\\\",g.tspan=!1,g.width=o||50,g.height=a||20,g.textMargin=s,g.class=\\\"labelText\\\",Q3(f,g),g=cd(),g.text=e.title,g.x=e.startx+o/2+(e.stopx-e.startx)/2,g.y=e.starty+i+s,g.anchor=\\\"middle\\\",g.valign=\\\"middle\\\",g.textMargin=s,g.class=\\\"loopText\\\",g.fontFamily=l,g.fontSize=u,g.fontWeight=d,g.wrap=!0;let b=Ba(f,g);return e.sectionTitles!==void 0&&e.sectionTitles.forEach(function(k,T){if(k.message){g.text=k.message,g.x=e.startx+(e.stopx-e.startx)/2,g.y=e.sections[T].y+i+s,g.class=\\\"loopText\\\",g.anchor=\\\"middle\\\",g.valign=\\\"middle\\\",g.tspan=!1,g.fontFamily=l,g.fontSize=u,g.fontWeight=d,g.wrap=e.wrap,b=Ba(f,g);let L=Math.round(b.map(E=>(E._groups||E)[0][0].getBBox().height).reduce((E,I)=>E+I));e.sections[T].height+=L-(i+s)}}),e.height=Math.round(e.stopy-e.starty),f},kF=function(t,e){Au(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:\\\"rect\\\"}).lower()},wF=function(t){t.append(\\\"defs\\\").append(\\\"symbol\\\").attr(\\\"id\\\",\\\"database\\\").attr(\\\"fill-rule\\\",\\\"evenodd\\\").attr(\\\"clip-rule\\\",\\\"evenodd\\\").append(\\\"path\\\").attr(\\\"transform\\\",\\\"scale(.5)\\\").attr(\\\"d\\\",\\\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\\\")},TF=function(t){t.append(\\\"defs\\\").append(\\\"symbol\\\").attr(\\\"id\\\",\\\"computer\\\").attr(\\\"width\\\",\\\"24\\\").attr(\\\"height\\\",\\\"24\\\").append(\\\"path\\\").attr(\\\"transform\\\",\\\"scale(.5)\\\").attr(\\\"d\\\",\\\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\\\")},EF=function(t){t.append(\\\"defs\\\").append(\\\"symbol\\\").attr(\\\"id\\\",\\\"clock\\\").attr(\\\"width\\\",\\\"24\\\").attr(\\\"height\\\",\\\"24\\\").append(\\\"path\\\").attr(\\\"transform\\\",\\\"scale(.5)\\\").attr(\\\"d\\\",\\\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\\\")},CF=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"arrowhead\\\").attr(\\\"refX\\\",9).attr(\\\"refY\\\",5).attr(\\\"markerUnits\\\",\\\"userSpaceOnUse\\\").attr(\\\"markerWidth\\\",12).attr(\\\"markerHeight\\\",12).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0 0 L 10 5 L 0 10 z\\\")},SF=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"filled-head\\\").attr(\\\"refX\\\",18).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 18,7 L9,13 L14,7 L9,1 Z\\\")},AF=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"sequencenumber\\\").attr(\\\"refX\\\",15).attr(\\\"refY\\\",15).attr(\\\"markerWidth\\\",60).attr(\\\"markerHeight\\\",40).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"circle\\\").attr(\\\"cx\\\",15).attr(\\\"cy\\\",15).attr(\\\"r\\\",6)},LF=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"crosshead\\\").attr(\\\"markerWidth\\\",15).attr(\\\"markerHeight\\\",8).attr(\\\"orient\\\",\\\"auto\\\").attr(\\\"refX\\\",4).attr(\\\"refY\\\",5).append(\\\"path\\\").attr(\\\"fill\\\",\\\"none\\\").attr(\\\"stroke\\\",\\\"#000000\\\").style(\\\"stroke-dasharray\\\",\\\"0, 0\\\").attr(\\\"stroke-width\\\",\\\"1pt\\\").attr(\\\"d\\\",\\\"M 1,2 L 6,7 M 6,2 L 1,7\\\")},cd=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:\\\"#666\\\",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},Lu=function(){return{x:0,y:0,fill:\\\"#EDF2AE\\\",stroke:\\\"#666\\\",width:100,anchor:\\\"start\\\",height:100,rx:0,ry:0}},t4=function(){function t(i,s,a,o,l,u,d){const f=s.append(\\\"text\\\").attr(\\\"x\\\",a+l/2).attr(\\\"y\\\",o+u/2+5).style(\\\"text-anchor\\\",\\\"middle\\\").text(i);n(f,d)}function e(i,s,a,o,l,u,d,f){const{actorFontSize:p,actorFontFamily:g,actorFontWeight:b}=f;let k=p&&p.replace?p.replace(\\\"px\\\",\\\"\\\"):p;const T=i.split(he.lineBreakRegex);for(let L=0;L\u003CT.length;L++){const E=L*k-k*(T.length-1)/2,I=s.append(\\\"text\\\").attr(\\\"x\\\",a+l/2).attr(\\\"y\\\",o).style(\\\"text-anchor\\\",\\\"middle\\\").style(\\\"font-size\\\",p).style(\\\"font-weight\\\",b).style(\\\"font-family\\\",g);I.append(\\\"tspan\\\").attr(\\\"x\\\",a+l/2).attr(\\\"dy\\\",E).text(T[L]),I.attr(\\\"y\\\",o+u/2).attr(\\\"dominant-baseline\\\",\\\"central\\\").attr(\\\"alignment-baseline\\\",\\\"central\\\"),n(I,d)}}function r(i,s,a,o,l,u,d,f){const p=s.append(\\\"switch\\\"),b=p.append(\\\"foreignObject\\\").attr(\\\"x\\\",a).attr(\\\"y\\\",o).attr(\\\"width\\\",l).attr(\\\"height\\\",u).append(\\\"xhtml:div\\\").style(\\\"display\\\",\\\"table\\\").style(\\\"height\\\",\\\"100%\\\").style(\\\"width\\\",\\\"100%\\\");b.append(\\\"div\\\").style(\\\"display\\\",\\\"table-cell\\\").style(\\\"text-align\\\",\\\"center\\\").style(\\\"vertical-align\\\",\\\"middle\\\").text(i),e(i,p,a,o,l,u,d,f),n(b,d)}function n(i,s){for(const a in s)s.hasOwnProperty(a)&&i.attr(a,s[a])}return function(i){return i.textPlacement===\\\"fo\\\"?r:i.textPlacement===\\\"old\\\"?t:e}}(),DF=function(){function t(i,s,a,o,l,u,d){const f=s.append(\\\"text\\\").attr(\\\"x\\\",a).attr(\\\"y\\\",o).style(\\\"text-anchor\\\",\\\"start\\\").text(i);n(f,d)}function e(i,s,a,o,l,u,d,f){const{actorFontSize:p,actorFontFamily:g,actorFontWeight:b}=f,k=i.split(he.lineBreakRegex);for(let T=0;T\u003Ck.length;T++){const L=T*p-p*(k.length-1)/2,E=s.append(\\\"text\\\").attr(\\\"x\\\",a).attr(\\\"y\\\",o).style(\\\"text-anchor\\\",\\\"start\\\").style(\\\"font-size\\\",p).style(\\\"font-weight\\\",b).style(\\\"font-family\\\",g);E.append(\\\"tspan\\\").attr(\\\"x\\\",a).attr(\\\"dy\\\",L).text(k[T]),E.attr(\\\"y\\\",o+u/2).attr(\\\"dominant-baseline\\\",\\\"central\\\").attr(\\\"alignment-baseline\\\",\\\"central\\\"),n(E,d)}}function r(i,s,a,o,l,u,d,f){const p=s.append(\\\"switch\\\"),b=p.append(\\\"foreignObject\\\").attr(\\\"x\\\",a).attr(\\\"y\\\",o).attr(\\\"width\\\",l).attr(\\\"height\\\",u).append(\\\"xhtml:div\\\").style(\\\"display\\\",\\\"table\\\").style(\\\"height\\\",\\\"100%\\\").style(\\\"width\\\",\\\"100%\\\");b.append(\\\"div\\\").style(\\\"display\\\",\\\"table-cell\\\").style(\\\"text-align\\\",\\\"center\\\").style(\\\"vertical-align\\\",\\\"middle\\\").text(i),e(i,p,a,o,l,u,d,f),n(b,d)}function n(i,s){for(const a in s)s.hasOwnProperty(a)&&i.attr(a,s[a])}return function(i){return i.textPlacement===\\\"fo\\\"?r:i.textPlacement===\\\"old\\\"?t:e}}(),je={drawRect:Au,drawText:Ba,drawLabel:Q3,drawActor:bF,drawPopup:hF,drawImage:K3,drawEmbeddedImage:Z3,anchorElement:_F,drawActivation:xF,drawLoop:vF,drawBackgroundRect:kF,insertArrowHead:CF,insertArrowFilledHead:SF,insertSequenceNumber:AF,insertArrowCrossHead:LF,insertDatabaseIcon:wF,insertComputerIcon:TF,insertClockIcon:EF,getTextObj:cd,getNoteRect:Lu,popupMenu:dF,popdownMenu:fF,fixLifeLineHeights:J3,sanitizeUrl:ti};let lt={};const Bt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},clear:function(){this.actors=[],this.loops=[],this.messages=[],this.notes=[]},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,r4($())},updateVal:function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},updateBounds:function(t,e,r,n){const i=this;let s=0;function a(o){return function(u){s++;const d=i.sequenceItems.length-s+1;i.updateVal(u,\\\"starty\\\",e-d*lt.boxMargin,Math.min),i.updateVal(u,\\\"stopy\\\",n+d*lt.boxMargin,Math.max),i.updateVal(Bt.data,\\\"startx\\\",t-d*lt.boxMargin,Math.min),i.updateVal(Bt.data,\\\"stopx\\\",r+d*lt.boxMargin,Math.max),o!==\\\"activation\\\"&&(i.updateVal(u,\\\"startx\\\",t-d*lt.boxMargin,Math.min),i.updateVal(u,\\\"stopx\\\",r+d*lt.boxMargin,Math.max),i.updateVal(Bt.data,\\\"starty\\\",e-d*lt.boxMargin,Math.min),i.updateVal(Bt.data,\\\"stopy\\\",n+d*lt.boxMargin,Math.max))}}this.sequenceItems.forEach(a()),this.activations.forEach(a(\\\"activation\\\"))},insert:function(t,e,r,n){const i=Math.min(t,r),s=Math.max(t,r),a=Math.min(e,n),o=Math.max(e,n);this.updateVal(Bt.data,\\\"startx\\\",i,Math.min),this.updateVal(Bt.data,\\\"starty\\\",a,Math.min),this.updateVal(Bt.data,\\\"stopx\\\",s,Math.max),this.updateVal(Bt.data,\\\"stopy\\\",o,Math.max),this.updateBounds(i,a,s,o)},newActivation:function(t,e,r){const n=r[t.from.actor],i=Du(t.from.actor).length||0,s=n.x+n.width/2+(i-1)*lt.activationWidth/2;this.activations.push({startx:s,starty:this.verticalPos+2,stopx:s+lt.activationWidth,stopy:void 0,actor:t.from.actor,anchored:je.anchorElement(e)})},endActivation:function(t){const e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:Bt.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},MF=function(t,e){Bt.bumpVerticalPos(lt.boxMargin),e.height=lt.boxMargin,e.starty=Bt.getVerticalPos();const r=je.getNoteRect();r.x=e.startx,r.y=e.starty,r.width=e.width||lt.width,r.class=\\\"note\\\";const n=t.append(\\\"g\\\"),i=je.drawRect(n,r),s=je.getTextObj();s.x=e.startx,s.y=e.starty,s.width=r.width,s.dy=\\\"1em\\\",s.text=e.message,s.class=\\\"noteText\\\",s.fontFamily=lt.noteFontFamily,s.fontSize=lt.noteFontSize,s.fontWeight=lt.noteFontWeight,s.anchor=lt.noteAlign,s.textMargin=lt.noteMargin,s.valign=\\\"center\\\";const a=Ba(n,s),o=Math.round(a.map(l=>(l._groups||l)[0][0].getBBox().height).reduce((l,u)=>l+u));i.attr(\\\"height\\\",o+2*lt.noteMargin),e.height+=o+2*lt.noteMargin,Bt.bumpVerticalPos(o+2*lt.noteMargin),e.stopy=e.starty+o+2*lt.noteMargin,e.stopx=e.startx+r.width,Bt.insert(e.startx,e.starty,e.stopx,e.stopy),Bt.models.addNote(e)},Ia=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),Oa=t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),ud=t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight});function NF(t,e){Bt.bumpVerticalPos(10);const{startx:r,stopx:n,message:i}=e,s=he.splitBreaks(i).length,a=ge.calculateTextDimensions(i,Ia(lt)),o=a.height/s;e.height+=o,Bt.bumpVerticalPos(o);let l,u=a.height-10;const d=a.width;if(r===n){l=Bt.getVerticalPos()+u,lt.rightAngles||(u+=lt.boxMargin,l=Bt.getVerticalPos()+u),u+=30;const f=Math.max(d/2,lt.width/2);Bt.insert(r-f,Bt.getVerticalPos()-10+u,n+f,Bt.getVerticalPos()+30+u)}else u+=lt.boxMargin,l=Bt.getVerticalPos()+u,Bt.insert(r,l-10,n,l);return Bt.bumpVerticalPos(u),e.height+=u,e.stopy=e.starty+e.height,Bt.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),l}const BF=function(t,e,r,n){const{startx:i,stopx:s,starty:a,message:o,type:l,sequenceIndex:u,sequenceVisible:d}=e,f=ge.calculateTextDimensions(o,Ia(lt)),p=je.getTextObj();p.x=i,p.y=a+10,p.width=s-i,p.class=\\\"messageText\\\",p.dy=\\\"1em\\\",p.text=o,p.fontFamily=lt.messageFontFamily,p.fontSize=lt.messageFontSize,p.fontWeight=lt.messageFontWeight,p.anchor=lt.messageAlign,p.valign=\\\"center\\\",p.textMargin=lt.wrapPadding,p.tspan=!1,Ba(t,p);const g=f.width;let b;i===s?lt.rightAngles?b=t.append(\\\"path\\\").attr(\\\"d\\\",`M ${i},${r} H ${i+Math.max(lt.width/2,g/2)} V ${r+25} H ${i}`):b=t.append(\\\"path\\\").attr(\\\"d\\\",\\\"M \\\"+i+\\\",\\\"+r+\\\" C \\\"+(i+60)+\\\",\\\"+(r-10)+\\\" \\\"+(i+60)+\\\",\\\"+(r+30)+\\\" \\\"+i+\\\",\\\"+(r+20)):(b=t.append(\\\"line\\\"),b.attr(\\\"x1\\\",i),b.attr(\\\"y1\\\",r),b.attr(\\\"x2\\\",s),b.attr(\\\"y2\\\",r)),l===n.db.LINETYPE.DOTTED||l===n.db.LINETYPE.DOTTED_CROSS||l===n.db.LINETYPE.DOTTED_POINT||l===n.db.LINETYPE.DOTTED_OPEN?(b.style(\\\"stroke-dasharray\\\",\\\"3, 3\\\"),b.attr(\\\"class\\\",\\\"messageLine1\\\")):b.attr(\\\"class\\\",\\\"messageLine0\\\");let k=\\\"\\\";lt.arrowMarkerAbsolute&&(k=window.location.protocol+\\\"//\\\"+window.location.host+window.location.pathname+window.location.search,k=k.replace(/\\\\(/g,\\\"\\\\\\\\(\\\"),k=k.replace(/\\\\)/g,\\\"\\\\\\\\)\\\")),b.attr(\\\"stroke-width\\\",2),b.attr(\\\"stroke\\\",\\\"none\\\"),b.style(\\\"fill\\\",\\\"none\\\"),(l===n.db.LINETYPE.SOLID||l===n.db.LINETYPE.DOTTED)&&b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#arrowhead)\\\"),(l===n.db.LINETYPE.SOLID_POINT||l===n.db.LINETYPE.DOTTED_POINT)&&b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#filled-head)\\\"),(l===n.db.LINETYPE.SOLID_CROSS||l===n.db.LINETYPE.DOTTED_CROSS)&&b.attr(\\\"marker-end\\\",\\\"url(\\\"+k+\\\"#crosshead)\\\"),(d||lt.showSequenceNumbers)&&(b.attr(\\\"marker-start\\\",\\\"url(\\\"+k+\\\"#sequencenumber)\\\"),t.append(\\\"text\\\").attr(\\\"x\\\",i).attr(\\\"y\\\",r+4).attr(\\\"font-family\\\",\\\"sans-serif\\\").attr(\\\"font-size\\\",\\\"12px\\\").attr(\\\"text-anchor\\\",\\\"middle\\\").attr(\\\"class\\\",\\\"sequenceNumber\\\").text(u))},hd=function(t,e,r,n,i,s){if(i.hideUnusedParticipants===!0){const u=new Set;s.forEach(d=>{u.add(d.from),u.add(d.to)}),r=r.filter(d=>u.has(d))}let a=0,o=0,l=0;for(const u of r){const d=e[u];d.width=d.width||lt.width,d.height=Math.max(d.height||lt.height,lt.height),d.margin=d.margin||lt.actorMargin,d.x=a+o,d.y=n;const f=je.drawActor(t,d,lt);l=Math.max(l,f),Bt.insert(d.x,n,d.x+d.width,d.height),a+=d.width,o+=d.margin,Bt.models.addActor(d)}Bt.bumpVerticalPos(l)},e4=function(t,e,r,n){let i=0,s=0;for(const a of r){const o=e[a],l=RF(o),u=je.drawPopup(t,o,l,lt,lt.forceMenus,n);u.height>i&&(i=u.height),u.width+o.x>s&&(s=u.width+o.x)}return{maxHeight:i,maxWidth:s}},r4=function(t){gr(lt,t),t.fontFamily&&(lt.actorFontFamily=lt.noteFontFamily=lt.messageFontFamily=t.fontFamily),t.fontSize&&(lt.actorFontSize=lt.noteFontSize=lt.messageFontSize=t.fontSize),t.fontWeight&&(lt.actorFontWeight=lt.noteFontWeight=lt.messageFontWeight=t.fontWeight)},Du=function(t){return Bt.activations.filter(function(e){return e.actor===t})},n4=function(t,e){const r=e[t],n=Du(t),i=n.reduce(function(a,o){return Math.min(a,o.startx)},r.x+r.width/2),s=n.reduce(function(a,o){return Math.max(a,o.stopx)},r.x+r.width/2);return[i,s]};function Kn(t,e,r,n,i){Bt.bumpVerticalPos(r);let s=n;if(e.id&&e.message&&t[e.id]){const a=t[e.id].width,o=Ia(lt);e.message=ge.wrapLabel(`[${e.message}]`,a-2*lt.wrapPadding,o),e.width=a,e.wrap=!0;const l=ge.calculateTextDimensions(e.message,o),u=Math.max(l.height,lt.labelBoxHeight);s=n+u,B.debug(`${u} - ${e.message}`)}i(e),Bt.bumpVerticalPos(s)}const IF=function(t,e,r,n){const{securityLevel:i,sequence:s}=$();lt=s;let a;i===\\\"sandbox\\\"&&(a=St(\\\"#i\\\"+e));const o=St(i===\\\"sandbox\\\"?a.nodes()[0].contentDocument.body:\\\"body\\\"),l=i===\\\"sandbox\\\"?a.nodes()[0].contentDocument:document;Bt.init(),B.debug(n.db);const u=i===\\\"sandbox\\\"?o.select(`[id=\\\"${e}\\\"]`):St(`[id=\\\"${e}\\\"]`),d=n.db.getActors(),f=n.db.getActorKeys(),p=n.db.getMessages(),g=n.db.getDiagramTitle(),b=OF(d,p,n);lt.height=FF(d,b),je.insertComputerIcon(u),je.insertDatabaseIcon(u),je.insertClockIcon(u),hd(u,d,f,0,lt,p);const k=VF(p,d,b,n);je.insertArrowHead(u),je.insertArrowCrossHead(u),je.insertArrowFilledHead(u),je.insertSequenceNumber(u);function T(v,M){const m=Bt.endActivation(v);m.starty+18>M&&(m.starty=M-6,M+=12),je.drawActivation(u,m,M,lt,Du(v.from.actor).length),Bt.insert(m.startx,M-10,m.stopx,M)}let L=1,E=1;const I=[];p.forEach(function(v){let M,m,Q;switch(v.type){case n.db.LINETYPE.NOTE:m=v.noteModel,MF(u,m);break;case n.db.LINETYPE.ACTIVE_START:Bt.newActivation(v,u,d);break;case n.db.LINETYPE.ACTIVE_END:T(v,Bt.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:Kn(k,v,lt.boxMargin,lt.boxMargin+lt.boxTextMargin,x=>Bt.newLoop(x));break;case n.db.LINETYPE.LOOP_END:M=Bt.endLoop(),je.drawLoop(u,M,\\\"loop\\\",lt),Bt.bumpVerticalPos(M.stopy-Bt.getVerticalPos()),Bt.models.addLoop(M);break;case n.db.LINETYPE.RECT_START:Kn(k,v,lt.boxMargin,lt.boxMargin,x=>Bt.newLoop(void 0,x.message));break;case n.db.LINETYPE.RECT_END:M=Bt.endLoop(),je.drawBackgroundRect(u,M),Bt.models.addLoop(M),Bt.bumpVerticalPos(M.stopy-Bt.getVerticalPos());break;case n.db.LINETYPE.OPT_START:Kn(k,v,lt.boxMargin,lt.boxMargin+lt.boxTextMargin,x=>Bt.newLoop(x));break;case n.db.LINETYPE.OPT_END:M=Bt.endLoop(),je.drawLoop(u,M,\\\"opt\\\",lt),Bt.bumpVerticalPos(M.stopy-Bt.getVerticalPos()),Bt.models.addLoop(M);break;case n.db.LINETYPE.ALT_START:Kn(k,v,lt.boxMargin,lt.boxMargin+lt.boxTextMargin,x=>Bt.newLoop(x));break;case n.db.LINETYPE.ALT_ELSE:Kn(k,v,lt.boxMargin+lt.boxTextMargin,lt.boxMargin,x=>Bt.addSectionToLoop(x));break;case n.db.LINETYPE.ALT_END:M=Bt.endLoop(),je.drawLoop(u,M,\\\"alt\\\",lt),Bt.bumpVerticalPos(M.stopy-Bt.getVerticalPos()),Bt.models.addLoop(M);break;case n.db.LINETYPE.PAR_START:Kn(k,v,lt.boxMargin,lt.boxMargin+lt.boxTextMargin,x=>Bt.newLoop(x));break;case n.db.LINETYPE.PAR_AND:Kn(k,v,lt.boxMargin+lt.boxTextMargin,lt.boxMargin,x=>Bt.addSectionToLoop(x));break;case n.db.LINETYPE.PAR_END:M=Bt.endLoop(),je.drawLoop(u,M,\\\"par\\\",lt),Bt.bumpVerticalPos(M.stopy-Bt.getVerticalPos()),Bt.models.addLoop(M);break;case n.db.LINETYPE.AUTONUMBER:L=v.message.start||L,E=v.message.step||E,v.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:Kn(k,v,lt.boxMargin,lt.boxMargin+lt.boxTextMargin,x=>Bt.newLoop(x));break;case n.db.LINETYPE.CRITICAL_OPTION:Kn(k,v,lt.boxMargin+lt.boxTextMargin,lt.boxMargin,x=>Bt.addSectionToLoop(x));break;case n.db.LINETYPE.CRITICAL_END:M=Bt.endLoop(),je.drawLoop(u,M,\\\"critical\\\",lt),Bt.bumpVerticalPos(M.stopy-Bt.getVerticalPos()),Bt.models.addLoop(M);break;case n.db.LINETYPE.BREAK_START:Kn(k,v,lt.boxMargin,lt.boxMargin+lt.boxTextMargin,x=>Bt.newLoop(x));break;case n.db.LINETYPE.BREAK_END:M=Bt.endLoop(),je.drawLoop(u,M,\\\"break\\\",lt),Bt.bumpVerticalPos(M.stopy-Bt.getVerticalPos()),Bt.models.addLoop(M);break;default:try{Q=v.msgModel,Q.starty=Bt.getVerticalPos(),Q.sequenceIndex=L,Q.sequenceVisible=n.db.showSequenceNumbers();const x=NF(u,Q);I.push({messageModel:Q,lineStartY:x}),Bt.models.addMessage(Q)}catch(x){B.error(\\\"error while drawing message\\\",x)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT].includes(v.type)&&(L=L+E)}),I.forEach(v=>BF(u,v.messageModel,v.lineStartY,n)),lt.mirrorActors&&(Bt.bumpVerticalPos(lt.boxMargin*2),hd(u,d,f,Bt.getVerticalPos(),lt,p),Bt.bumpVerticalPos(lt.boxMargin),J3(u,Bt.getVerticalPos()));const V=e4(u,d,f,l),{bounds:H}=Bt.getBounds();B.debug(\\\"For line height fix Querying: #\\\"+e+\\\" .actor-line\\\"),hh(\\\"#\\\"+e+\\\" .actor-line\\\").attr(\\\"y2\\\",H.stopy);let Y=H.stopy-H.starty;Y\u003CV.maxHeight&&(Y=V.maxHeight);let W=Y+2*lt.diagramMarginY;lt.mirrorActors&&(W=W-lt.boxMargin+lt.bottomMarginAdj);let N=H.stopx-H.startx;N\u003CV.maxWidth&&(N=V.maxWidth);const D=N+2*lt.diagramMarginX;g&&u.append(\\\"text\\\").text(g).attr(\\\"x\\\",(H.stopx-H.startx)/2-2*lt.diagramMarginX).attr(\\\"y\\\",-25),xn(u,W,D,lt.useMaxWidth);const w=g?40:0;u.attr(\\\"viewBox\\\",H.startx-lt.diagramMarginX+\\\" -\\\"+(lt.diagramMarginY+w)+\\\" \\\"+D+\\\" \\\"+(W+w)),B.debug(\\\"models:\\\",Bt.models)};function OF(t,e,r){const n={};return e.forEach(function(i){if(t[i.to]&&t[i.from]){const s=t[i.to];if(i.placement===r.db.PLACEMENT.LEFTOF&&!s.prevActor||i.placement===r.db.PLACEMENT.RIGHTOF&&!s.nextActor)return;const a=i.placement!==void 0,o=!a,l=a?Oa(lt):Ia(lt),u=i.wrap?ge.wrapLabel(i.message,lt.width-2*lt.wrapPadding,l):i.message,f=ge.calculateTextDimensions(u,l).width+2*lt.wrapPadding;o&&i.from===s.nextActor?n[i.to]=Math.max(n[i.to]||0,f):o&&i.from===s.prevActor?n[i.from]=Math.max(n[i.from]||0,f):o&&i.from===i.to?(n[i.from]=Math.max(n[i.from]||0,f/2),n[i.to]=Math.max(n[i.to]||0,f/2)):i.placement===r.db.PLACEMENT.RIGHTOF?n[i.from]=Math.max(n[i.from]||0,f):i.placement===r.db.PLACEMENT.LEFTOF?n[s.prevActor]=Math.max(n[s.prevActor]||0,f):i.placement===r.db.PLACEMENT.OVER&&(s.prevActor&&(n[s.prevActor]=Math.max(n[s.prevActor]||0,f/2)),s.nextActor&&(n[i.from]=Math.max(n[i.from]||0,f/2)))}}),B.debug(\\\"maxMessageWidthPerActor:\\\",n),n}const RF=function(t){let e=0;const r=ud(lt);for(const n in t.links){const s=ge.calculateTextDimensions(n,r).width+2*lt.wrapPadding+2*lt.boxMargin;e\u003Cs&&(e=s)}return e};function FF(t,e){let r=0;Object.keys(t).forEach(n=>{const i=t[n];i.wrap&&(i.description=ge.wrapLabel(i.description,lt.width-2*lt.wrapPadding,ud(lt)));const s=ge.calculateTextDimensions(i.description,ud(lt));i.width=i.wrap?lt.width:Math.max(lt.width,s.width+2*lt.wrapPadding),i.height=i.wrap?Math.max(s.height,lt.height):lt.height,r=Math.max(r,i.height)});for(const n in e){const i=t[n];if(!i)continue;const s=t[i.nextActor];if(!s)continue;const o=e[n]+lt.actorMargin-i.width/2-s.width/2;i.margin=Math.max(o,lt.actorMargin)}return Math.max(r,lt.height)}const PF=function(t,e,r){const n=e[t.from].x,i=e[t.to].x,s=t.wrap&&t.message;let a=ge.calculateTextDimensions(s?ge.wrapLabel(t.message,lt.width,Oa(lt)):t.message,Oa(lt));const o={width:s?lt.width:Math.max(lt.width,a.width+2*lt.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===r.db.PLACEMENT.RIGHTOF?(o.width=s?Math.max(lt.width,a.width):Math.max(e[t.from].width/2+e[t.to].width/2,a.width+2*lt.noteMargin),o.startx=n+(e[t.from].width+lt.actorMargin)/2):t.placement===r.db.PLACEMENT.LEFTOF?(o.width=Math.max(s?lt.width:e[t.from].width/2+e[t.to].width/2,a.width+2*lt.noteMargin),o.startx=n-o.width+(e[t.from].width-lt.actorMargin)/2):t.to===t.from?(a=ge.calculateTextDimensions(s?ge.wrapLabel(t.message,Math.max(lt.width,e[t.from].width),Oa(lt)):t.message,Oa(lt)),o.width=s?Math.max(lt.width,e[t.from].width):Math.max(e[t.from].width,lt.width,a.width+2*lt.noteMargin),o.startx=n+(e[t.from].width-o.width)/2):(o.width=Math.abs(n+e[t.from].width/2-(i+e[t.to].width/2))+lt.actorMargin,o.startx=n\u003Ci?n+e[t.from].width/2-lt.actorMargin/2:i+e[t.to].width/2-lt.actorMargin/2),s&&(o.message=ge.wrapLabel(t.message,o.width-2*lt.wrapPadding,Oa(lt))),B.debug(`NM:[${o.startx},${o.stopx},${o.starty},${o.stopy}:${o.width},${o.height}=${t.message}]`),o},YF=function(t,e,r){let n=!1;if([r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(n=!0),!n)return{};const i=n4(t.from,e),s=n4(t.to,e),a=i[0]\u003C=s[0]?1:0,o=i[0]\u003Cs[0]?0:1,l=[...i,...s],u=Math.abs(s[o]-i[a]);t.wrap&&t.message&&(t.message=ge.wrapLabel(t.message,Math.max(u+2*lt.wrapPadding,lt.width),Ia(lt)));const d=ge.calculateTextDimensions(t.message,Ia(lt));return{width:Math.max(t.wrap?0:d.width+2*lt.wrapPadding,u+2*lt.wrapPadding,lt.width),height:0,startx:i[a],stopx:s[o],starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,l),toBounds:Math.max.apply(null,l)}},VF=function(t,e,r,n){const i={},s=[];let a,o,l;return t.forEach(function(u){switch(u.id=ge.random({length:10}),u.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:s.push({id:u.id,msg:u.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:u.message&&(a=s.pop(),i[a.id]=a,i[u.id]=a,s.push(a));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:a=s.pop(),i[a.id]=a;break;case n.db.LINETYPE.ACTIVE_START:{const f=e[u.from?u.from.actor:u.to.actor],p=Du(u.from?u.from.actor:u.to.actor).length,g=f.x+f.width/2+(p-1)*lt.activationWidth/2,b={startx:g,stopx:g+lt.activationWidth,actor:u.from.actor,enabled:!0};Bt.activations.push(b)}break;case n.db.LINETYPE.ACTIVE_END:{const f=Bt.activations.map(p=>p.actor).lastIndexOf(u.from.actor);delete Bt.activations.splice(f,1)[0]}break}u.placement!==void 0?(o=PF(u,e,n),u.noteModel=o,s.forEach(f=>{a=f,a.from=Math.min(a.from,o.startx),a.to=Math.max(a.to,o.startx+o.width),a.width=Math.max(a.width,Math.abs(a.from-a.to))-lt.labelBoxWidth})):(l=YF(u,e,n),u.msgModel=l,l.startx&&l.stopx&&s.length>0&&s.forEach(f=>{if(a=f,l.startx===l.stopx){const p=e[u.from],g=e[u.to];a.from=Math.min(p.x-l.width/2,p.x-p.width/2,a.from),a.to=Math.max(g.x+l.width/2,g.x+p.width/2,a.to),a.width=Math.max(a.width,Math.abs(a.to-a.from))-lt.labelBoxWidth}else a.from=Math.min(l.startx,a.from),a.to=Math.max(l.stopx,a.to),a.width=Math.max(a.width,l.width)-lt.labelBoxWidth}))}),Bt.activations=[],B.debug(\\\"Loop type widths:\\\",i),i},i4={bounds:Bt,drawActors:hd,drawActorsPopup:e4,setConf:r4,draw:IF};var dd=function(){var t=function(j,ot,rt,nt){for(rt=rt||{},nt=j.length;nt--;rt[j[nt]]=ot);return rt},e=[1,2],r=[1,3],n=[1,5],i=[1,7],s=[2,5],a=[1,15],o=[1,17],l=[1,21],u=[1,22],d=[1,23],f=[1,24],p=[1,37],g=[1,25],b=[1,26],k=[1,27],T=[1,28],L=[1,29],E=[1,32],I=[1,33],V=[1,34],H=[1,35],G=[1,36],Y=[1,39],W=[1,40],N=[1,41],D=[1,42],w=[1,38],v=[1,45],M=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],m=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],Q=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],x=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],ct={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,\\\"-->\\\":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,\\\":\\\":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,\\\";\\\":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:\\\"error\\\",4:\\\"SPACE\\\",5:\\\"NL\\\",7:\\\"SD\\\",14:\\\"DESCR\\\",15:\\\"-->\\\",16:\\\"HIDE_EMPTY\\\",17:\\\"scale\\\",18:\\\"WIDTH\\\",19:\\\"COMPOSIT_STATE\\\",20:\\\"STRUCT_START\\\",21:\\\"STRUCT_STOP\\\",22:\\\"STATE_DESCR\\\",23:\\\"AS\\\",24:\\\"ID\\\",25:\\\"FORK\\\",26:\\\"JOIN\\\",27:\\\"CHOICE\\\",28:\\\"CONCURRENT\\\",29:\\\"note\\\",31:\\\"NOTE_TEXT\\\",33:\\\"acc_title\\\",34:\\\"acc_title_value\\\",35:\\\"acc_descr\\\",36:\\\"acc_descr_value\\\",37:\\\"acc_descr_multiline_value\\\",38:\\\"classDef\\\",39:\\\"CLASSDEF_ID\\\",40:\\\"CLASSDEF_STYLEOPTS\\\",41:\\\"DEFAULT\\\",42:\\\"class\\\",43:\\\"CLASSENTITY_IDS\\\",44:\\\"STYLECLASS\\\",48:\\\":\\\",50:\\\"direction_tb\\\",51:\\\"direction_bt\\\",52:\\\"direction_rl\\\",53:\\\"direction_lr\\\",55:\\\";\\\",56:\\\"EDGE_STATE\\\",57:\\\"STYLE_SEPARATOR\\\",58:\\\"left_of\\\",59:\\\"right_of\\\",60:\\\"open_directive\\\",61:\\\"type_directive\\\",62:\\\"arg_directive\\\",63:\\\"close_directive\\\"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(ot,rt,nt,ut,_t,K,Ot){var P=K.length-1;switch(_t){case 4:return ut.setRootDoc(K[P]),K[P];case 5:this.$=[];break;case 6:K[P]!=\\\"nl\\\"&&(K[P-1].push(K[P]),this.$=K[P-1]);break;case 7:case 8:this.$=K[P];break;case 9:this.$=\\\"nl\\\";break;case 12:this.$=K[P];break;case 13:const O=K[P-1];O.description=ut.trimColon(K[P]),this.$=O;break;case 14:this.$={stmt:\\\"relation\\\",state1:K[P-2],state2:K[P]};break;case 15:const A=ut.trimColon(K[P]);this.$={stmt:\\\"relation\\\",state1:K[P-3],state2:K[P-1],description:A};break;case 19:this.$={stmt:\\\"state\\\",id:K[P-3],type:\\\"default\\\",description:\\\"\\\",doc:K[P-1]};break;case 20:var z=K[P],X=K[P-2].trim();if(K[P].match(\\\":\\\")){var F=K[P].split(\\\":\\\");z=F[0],X=[X,F[1]]}this.$={stmt:\\\"state\\\",id:z,type:\\\"default\\\",description:X};break;case 21:this.$={stmt:\\\"state\\\",id:K[P-3],type:\\\"default\\\",description:K[P-5],doc:K[P-1]};break;case 22:this.$={stmt:\\\"state\\\",id:K[P],type:\\\"fork\\\"};break;case 23:this.$={stmt:\\\"state\\\",id:K[P],type:\\\"join\\\"};break;case 24:this.$={stmt:\\\"state\\\",id:K[P],type:\\\"choice\\\"};break;case 25:this.$={stmt:\\\"state\\\",id:ut.getDividerId(),type:\\\"divider\\\"};break;case 26:this.$={stmt:\\\"state\\\",id:K[P-1].trim(),note:{position:K[P-2].trim(),text:K[P].trim()}};break;case 30:this.$=K[P].trim(),ut.setAccTitle(this.$);break;case 31:case 32:this.$=K[P].trim(),ut.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:\\\"classDef\\\",id:K[P-1].trim(),classes:K[P].trim()};break;case 35:this.$={stmt:\\\"applyClass\\\",id:K[P-1].trim(),styleClass:K[P].trim()};break;case 38:ut.setDirection(\\\"TB\\\"),this.$={stmt:\\\"dir\\\",value:\\\"TB\\\"};break;case 39:ut.setDirection(\\\"BT\\\"),this.$={stmt:\\\"dir\\\",value:\\\"BT\\\"};break;case 40:ut.setDirection(\\\"RL\\\"),this.$={stmt:\\\"dir\\\",value:\\\"RL\\\"};break;case 41:ut.setDirection(\\\"LR\\\"),this.$={stmt:\\\"dir\\\",value:\\\"LR\\\"};break;case 44:case 45:this.$={stmt:\\\"state\\\",id:K[P].trim(),type:\\\"default\\\",description:\\\"\\\"};break;case 46:this.$={stmt:\\\"state\\\",id:K[P-2].trim(),classes:[K[P].trim()],type:\\\"default\\\",description:\\\"\\\"};break;case 47:this.$={stmt:\\\"state\\\",id:K[P-2].trim(),classes:[K[P].trim()],type:\\\"default\\\",description:\\\"\\\"};break;case 50:ut.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 51:ut.parseDirective(K[P],\\\"type_directive\\\");break;case 52:K[P]=K[P].trim().replace(/'/g,'\\\"'),ut.parseDirective(K[P],\\\"arg_directive\\\");break;case 53:ut.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"state\\\");break}},table:[{3:1,4:e,5:r,6:4,7:n,45:6,60:i},{1:[3]},{3:8,4:e,5:r,6:4,7:n,45:6,60:i},{3:9,4:e,5:r,6:4,7:n,45:6,60:i},{3:10,4:e,5:r,6:4,7:n,45:6,60:i},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],s,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:a,5:o,6:30,9:14,10:16,11:18,12:19,13:20,16:l,17:u,19:d,22:f,24:p,25:g,26:b,27:k,28:T,29:L,32:31,33:E,35:I,37:V,38:H,42:G,45:6,50:Y,51:W,52:N,53:D,56:w,60:i},{47:43,48:[1,44],63:v},t([48,63],[2,51]),t(M,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:l,17:u,19:d,22:f,24:p,25:g,26:b,27:k,28:T,29:L,32:31,33:E,35:I,37:V,38:H,42:G,45:6,50:Y,51:W,52:N,53:D,56:w,60:i},t(M,[2,8]),t(M,[2,9]),t(M,[2,10]),t(M,[2,11]),t(M,[2,12],{14:[1,47],15:[1,48]}),t(M,[2,16]),{18:[1,49]},t(M,[2,18],{20:[1,50]}),{23:[1,51]},t(M,[2,22]),t(M,[2,23]),t(M,[2,24]),t(M,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},t(M,[2,28]),t(M,[2,29]),{34:[1,56]},{36:[1,57]},t(M,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},t(m,[2,44],{57:[1,61]}),t(m,[2,45],{57:[1,62]}),t(M,[2,38]),t(M,[2,39]),t(M,[2,40]),t(M,[2,41]),t(Q,[2,36]),{49:63,62:[1,64]},t(Q,[2,53]),t(M,[2,7]),t(M,[2,13]),{13:65,24:p,56:w},t(M,[2,17]),t(x,s,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},t(M,[2,30]),t(M,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:v},{63:[2,52]},t(M,[2,14],{14:[1,76]}),{4:a,5:o,6:30,9:14,10:16,11:18,12:19,13:20,16:l,17:u,19:d,21:[1,77],22:f,24:p,25:g,26:b,27:k,28:T,29:L,32:31,33:E,35:I,37:V,38:H,42:G,45:6,50:Y,51:W,52:N,53:D,56:w,60:i},t(M,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},t(M,[2,33]),t(M,[2,34]),t(M,[2,35]),t(m,[2,46]),t(m,[2,47]),t(Q,[2,37]),t(M,[2,15]),t(M,[2,19]),t(x,s,{8:81}),t(M,[2,26]),t(M,[2,27]),{4:a,5:o,6:30,9:14,10:16,11:18,12:19,13:20,16:l,17:u,19:d,21:[1,82],22:f,24:p,25:g,26:b,27:k,28:T,29:L,32:31,33:E,35:I,37:V,38:H,42:G,45:6,50:Y,51:W,52:N,53:D,56:w,60:i},t(M,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(ot,rt){if(rt.recoverable)this.trace(ot);else{var nt=new Error(ot);throw nt.hash=rt,nt}},parse:function(ot){var rt=this,nt=[0],ut=[],_t=[null],K=[],Ot=this.table,P=\\\"\\\",z=0,X=0,F=2,O=1,A=K.slice.call(arguments,1),J=Object.create(this.lexer),C={yy:{}};for(var ht in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ht)&&(C.yy[ht]=this.yy[ht]);J.setInput(ot,C.yy),C.yy.lexer=J,C.yy.parser=this,typeof J.yylloc>\\\"u\\\"&&(J.yylloc={});var U=J.yylloc;K.push(U);var Yt=J.options&&J.options.ranges;typeof C.yy.parseError==\\\"function\\\"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function et(){var Kt;return Kt=ut.pop()||J.lex()||O,typeof Kt!=\\\"number\\\"&&(Kt instanceof Array&&(ut=Kt,Kt=ut.pop()),Kt=rt.symbols_[Kt]||Kt),Kt}for(var Mt,Tt,gt,Et,wt={},pt,st,le,Xt;;){if(Tt=nt[nt.length-1],this.defaultActions[Tt]?gt=this.defaultActions[Tt]:((Mt===null||typeof Mt>\\\"u\\\")&&(Mt=et()),gt=Ot[Tt]&&Ot[Tt][Mt]),typeof gt>\\\"u\\\"||!gt.length||!gt[0]){var jt=\\\"\\\";Xt=[];for(pt in Ot[Tt])this.terminals_[pt]&&pt>F&&Xt.push(\\\"'\\\"+this.terminals_[pt]+\\\"'\\\");J.showPosition?jt=\\\"Parse error on line \\\"+(z+1)+`:\\n`+J.showPosition()+`\\nExpecting `+Xt.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[Mt]||Mt)+\\\"'\\\":jt=\\\"Parse error on line \\\"+(z+1)+\\\": Unexpected \\\"+(Mt==O?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[Mt]||Mt)+\\\"'\\\"),this.parseError(jt,{text:J.match,token:this.terminals_[Mt]||Mt,line:J.yylineno,loc:U,expected:Xt})}if(gt[0]instanceof Array&>.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+Tt+\\\", token: \\\"+Mt);switch(gt[0]){case 1:nt.push(Mt),_t.push(J.yytext),K.push(J.yylloc),nt.push(gt[1]),Mt=null,X=J.yyleng,P=J.yytext,z=J.yylineno,U=J.yylloc;break;case 2:if(st=this.productions_[gt[1]][1],wt.$=_t[_t.length-st],wt._$={first_line:K[K.length-(st||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(st||1)].first_column,last_column:K[K.length-1].last_column},Yt&&(wt._$.range=[K[K.length-(st||1)].range[0],K[K.length-1].range[1]]),Et=this.performAction.apply(wt,[P,X,z,C.yy,gt[1],_t,K].concat(A)),typeof Et\u003C\\\"u\\\")return Et;st&&(nt=nt.slice(0,-1*st*2),_t=_t.slice(0,-1*st),K=K.slice(0,-1*st)),nt.push(this.productions_[gt[1]][0]),_t.push(wt.$),K.push(wt._$),le=Ot[nt[nt.length-2]][nt[nt.length-1]],nt.push(le);break;case 3:return!0}}return!0}},Dt=function(){var j={EOF:1,parseError:function(rt,nt){if(this.yy.parser)this.yy.parser.parseError(rt,nt);else throw new Error(rt)},setInput:function(ot,rt){return this.yy=rt||this.yy||{},this._input=ot,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ot=this._input[0];this.yytext+=ot,this.yyleng++,this.offset++,this.match+=ot,this.matched+=ot;var rt=ot.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return rt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ot},unput:function(ot){var rt=ot.length,nt=ot.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=ot+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-rt),this.offset-=rt;var ut=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),nt.length-1&&(this.yylineno-=nt.length-1);var _t=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:nt?(nt.length===ut.length?this.yylloc.first_column:0)+ut[ut.length-nt.length].length-nt[0].length:this.yylloc.first_column-rt},this.options.ranges&&(this.yylloc.range=[_t[0],_t[0]+this.yyleng-rt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(ot){this.unput(this.match.slice(ot))},pastInput:function(){var ot=this.matched.substr(0,this.matched.length-this.match.length);return(ot.length>20?\\\"...\\\":\\\"\\\")+ot.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var ot=this.match;return ot.length\u003C20&&(ot+=this._input.substr(0,20-ot.length)),(ot.substr(0,20)+(ot.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var ot=this.pastInput(),rt=new Array(ot.length+1).join(\\\"-\\\");return ot+this.upcomingInput()+`\\n`+rt+\\\"^\\\"},test_match:function(ot,rt){var nt,ut,_t;if(this.options.backtrack_lexer&&(_t={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_t.yylloc.range=this.yylloc.range.slice(0))),ut=ot[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),ut&&(this.yylineno+=ut.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ut?ut[ut.length-1].length-ut[ut.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+ot[0].length},this.yytext+=ot[0],this.match+=ot[0],this.matches=ot,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ot[0].length),this.matched+=ot[0],nt=this.performAction.call(this,this.yy,this,rt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),nt)return nt;if(this._backtrack){for(var K in _t)this[K]=_t[K];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ot,rt,nt,ut;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var _t=this._currentRules(),K=0;K\u003C_t.length;K++)if(nt=this._input.match(this.rules[_t[K]]),nt&&(!rt||nt[0].length>rt[0].length)){if(rt=nt,ut=K,this.options.backtrack_lexer){if(ot=this.test_match(nt,_t[K]),ot!==!1)return ot;if(this._backtrack){rt=!1;continue}else return!1}else if(!this.options.flex)break}return rt?(ot=this.test_match(rt,_t[ut]),ot!==!1?ot:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var rt=this.next();return rt||this.lex()},begin:function(rt){this.conditionStack.push(rt)},popState:function(){var rt=this.conditionStack.length-1;return rt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(rt){return rt=this.conditionStack.length-1-Math.abs(rt||0),rt>=0?this.conditionStack[rt]:\\\"INITIAL\\\"},pushState:function(rt){this.begin(rt)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(rt,nt,ut,_t){switch(ut){case 0:return 41;case 1:return 50;case 2:return 51;case 3:return 52;case 4:return 53;case 5:return this.begin(\\\"open_directive\\\"),60;case 6:return this.begin(\\\"type_directive\\\"),61;case 7:return this.popState(),this.begin(\\\"arg_directive\\\"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:break;case 11:break;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:break;case 17:return this.pushState(\\\"SCALE\\\"),17;case 18:return 18;case 19:this.popState();break;case 20:return this.begin(\\\"acc_title\\\"),33;case 21:return this.popState(),\\\"acc_title_value\\\";case 22:return this.begin(\\\"acc_descr\\\"),35;case 23:return this.popState(),\\\"acc_descr_value\\\";case 24:this.begin(\\\"acc_descr_multiline\\\");break;case 25:this.popState();break;case 26:return\\\"acc_descr_multiline_value\\\";case 27:return this.pushState(\\\"CLASSDEF\\\"),38;case 28:return this.popState(),this.pushState(\\\"CLASSDEFID\\\"),\\\"DEFAULT_CLASSDEF_ID\\\";case 29:return this.popState(),this.pushState(\\\"CLASSDEFID\\\"),39;case 30:return this.popState(),40;case 31:return this.pushState(\\\"CLASS\\\"),42;case 32:return this.popState(),this.pushState(\\\"CLASS_STYLE\\\"),43;case 33:return this.popState(),44;case 34:return this.pushState(\\\"SCALE\\\"),17;case 35:return 18;case 36:this.popState();break;case 37:this.pushState(\\\"STATE\\\");break;case 38:return this.popState(),nt.yytext=nt.yytext.slice(0,-8).trim(),25;case 39:return this.popState(),nt.yytext=nt.yytext.slice(0,-8).trim(),26;case 40:return this.popState(),nt.yytext=nt.yytext.slice(0,-10).trim(),27;case 41:return this.popState(),nt.yytext=nt.yytext.slice(0,-8).trim(),25;case 42:return this.popState(),nt.yytext=nt.yytext.slice(0,-8).trim(),26;case 43:return this.popState(),nt.yytext=nt.yytext.slice(0,-10).trim(),27;case 44:return 50;case 45:return 51;case 46:return 52;case 47:return 53;case 48:this.begin(\\\"STATE_STRING\\\");break;case 49:return this.popState(),this.pushState(\\\"STATE_ID\\\"),\\\"AS\\\";case 50:return this.popState(),\\\"ID\\\";case 51:this.popState();break;case 52:return\\\"STATE_DESCR\\\";case 53:return 19;case 54:this.popState();break;case 55:return this.popState(),this.pushState(\\\"struct\\\"),20;case 56:break;case 57:return this.popState(),21;case 58:break;case 59:return this.begin(\\\"NOTE\\\"),29;case 60:return this.popState(),this.pushState(\\\"NOTE_ID\\\"),58;case 61:return this.popState(),this.pushState(\\\"NOTE_ID\\\"),59;case 62:this.popState(),this.pushState(\\\"FLOATING_NOTE\\\");break;case 63:return this.popState(),this.pushState(\\\"FLOATING_NOTE_ID\\\"),\\\"AS\\\";case 64:break;case 65:return\\\"NOTE_TEXT\\\";case 66:return this.popState(),\\\"ID\\\";case 67:return this.popState(),this.pushState(\\\"NOTE_TEXT\\\"),24;case 68:return this.popState(),nt.yytext=nt.yytext.substr(2).trim(),31;case 69:return this.popState(),nt.yytext=nt.yytext.slice(0,-8).trim(),31;case 70:return 7;case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return nt.yytext=nt.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 79:return 5;case 80:return\\\"INVALID\\\"}},rules:[/^(?:default\\\\b)/i,/^(?:.*direction\\\\s+TB[^\\\\n]*)/i,/^(?:.*direction\\\\s+BT[^\\\\n]*)/i,/^(?:.*direction\\\\s+RL[^\\\\n]*)/i,/^(?:.*direction\\\\s+LR[^\\\\n]*)/i,/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:%%(?!\\\\{)[^\\\\n]*)/i,/^(?:[^\\\\}]%%[^\\\\n]*)/i,/^(?:[\\\\n]+)/i,/^(?:[\\\\s]+)/i,/^(?:((?!\\\\n)\\\\s)+)/i,/^(?:#[^\\\\n]*)/i,/^(?:%[^\\\\n]*)/i,/^(?:scale\\\\s+)/i,/^(?:\\\\d+)/i,/^(?:\\\\s+width\\\\b)/i,/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:classDef\\\\s+)/i,/^(?:DEFAULT\\\\s+)/i,/^(?:\\\\w+\\\\s+)/i,/^(?:[^\\\\n]*)/i,/^(?:class\\\\s+)/i,/^(?:(\\\\w+)+((,\\\\s*\\\\w+)*))/i,/^(?:[^\\\\n]*)/i,/^(?:scale\\\\s+)/i,/^(?:\\\\d+)/i,/^(?:\\\\s+width\\\\b)/i,/^(?:state\\\\s+)/i,/^(?:.*\u003C\u003Cfork>>)/i,/^(?:.*\u003C\u003Cjoin>>)/i,/^(?:.*\u003C\u003Cchoice>>)/i,/^(?:.*\\\\[\\\\[fork\\\\]\\\\])/i,/^(?:.*\\\\[\\\\[join\\\\]\\\\])/i,/^(?:.*\\\\[\\\\[choice\\\\]\\\\])/i,/^(?:.*direction\\\\s+TB[^\\\\n]*)/i,/^(?:.*direction\\\\s+BT[^\\\\n]*)/i,/^(?:.*direction\\\\s+RL[^\\\\n]*)/i,/^(?:.*direction\\\\s+LR[^\\\\n]*)/i,/^(?:[\\\"])/i,/^(?:\\\\s*as\\\\s+)/i,/^(?:[^\\\\n\\\\{]*)/i,/^(?:[\\\"])/i,/^(?:[^\\\"]*)/i,/^(?:[^\\\\n\\\\s\\\\{]+)/i,/^(?:\\\\n)/i,/^(?:\\\\{)/i,/^(?:%%(?!\\\\{)[^\\\\n]*)/i,/^(?:\\\\})/i,/^(?:[\\\\n])/i,/^(?:note\\\\s+)/i,/^(?:left of\\\\b)/i,/^(?:right of\\\\b)/i,/^(?:\\\")/i,/^(?:\\\\s*as\\\\s*)/i,/^(?:[\\\"])/i,/^(?:[^\\\"]*)/i,/^(?:[^\\\\n]*)/i,/^(?:\\\\s*[^:\\\\n\\\\s\\\\-]+)/i,/^(?:\\\\s*:[^:\\\\n;]+)/i,/^(?:[\\\\s\\\\S]*?end note\\\\b)/i,/^(?:stateDiagram\\\\s+)/i,/^(?:stateDiagram-v2\\\\s+)/i,/^(?:hide empty description\\\\b)/i,/^(?:\\\\[\\\\*\\\\])/i,/^(?:[^:\\\\n\\\\s\\\\-\\\\{]+)/i,/^(?:\\\\s*:[^:\\\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}};return j}();ct.lexer=Dt;function kt(){this.yy={}}return kt.prototype=ct,ct.Parser=kt,new kt}();dd.parser=dd;const s4=dd,UF=(t,e)=>{var r;return((r=e==null?void 0:e.state)==null?void 0:r.defaultRenderer)===\\\"dagre-wrapper\\\"?!1:t.match(/^\\\\s*stateDiagram/)!==null},zF=(t,e)=>{var r;return!!(t.match(/^\\\\s*stateDiagram-v2/)!==null||t.match(/^\\\\s*stateDiagram/)&&((r=e==null?void 0:e.state)==null?void 0:r.defaultRenderer)===\\\"dagre-wrapper\\\")},a4=\\\"LR\\\",WF=\\\"TB\\\",Mu=\\\"state\\\",fd=\\\"relation\\\",HF=\\\"classDef\\\",GF=\\\"applyClass\\\",Jo=\\\"default\\\",o4=\\\"divider\\\",pd=\\\"[*]\\\",l4=\\\"start\\\",c4=pd,u4=\\\"end\\\",h4=\\\"color\\\",d4=\\\"fill\\\",qF=\\\"bgFill\\\",jF=\\\",\\\";function f4(){return{}}let p4=a4,Nu=[],tl=f4();const g4=()=>({relations:[],states:{},documents:{}});let Bu={root:g4()},Cr=Bu.root,el=0,y4=0;const $F={LINE:0,DOTTED_LINE:1},XF={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},Iu=t=>JSON.parse(JSON.stringify(t)),KF=function(t,e,r){ze.parseDirective(this,t,e,r)},ZF=t=>{B.info(\\\"Setting root doc\\\",t),Nu=t},QF=()=>Nu,Ou=(t,e,r)=>{if(e.stmt===fd)Ou(t,e.state1,!0),Ou(t,e.state2,!1);else if(e.stmt===Mu&&e.id===\\\"[*]\\\"&&(e.id=r?t.id+\\\"_start\\\":t.id+\\\"_end\\\",e.start=r),e.doc){const n=[];let i=[],s;for(s=0;s\u003Ce.doc.length;s++)if(e.doc[s].type===o4){const a=Iu(e.doc[s]);a.doc=Iu(i),n.push(a),i=[]}else i.push(e.doc[s]);if(n.length>0&&i.length>0){const a={stmt:Mu,id:Rp(),type:\\\"divider\\\",doc:Iu(i)};n.push(Iu(a)),e.doc=n}e.doc.forEach(a=>Ou(e,a,!0))}},JF=()=>(Ou({id:\\\"root\\\"},{id:\\\"root\\\",doc:Nu},!0),{id:\\\"root\\\",doc:Nu}),tP=t=>{let e;t.doc?e=t.doc:e=t,B.info(e),m4(!0),B.info(\\\"Extract\\\",e),e.forEach(r=>{switch(r.stmt){case Mu:Ms(r.id,r.type,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles);break;case fd:b4(r.state1,r.state2,r.description);break;case HF:_4(r.id,r.classes);break;case GF:bd(r.id,r.styleClass);break}})},Ms=function(t,e=Jo,r=null,n=null,i=null,s=null,a=null,o=null){Cr.states[t]===void 0?(B.info(\\\"Adding state \\\",t,n),Cr.states[t]={id:t,descriptions:[],type:e,doc:r,note:i,classes:[],styles:[],textStyles:[]}):(Cr.states[t].doc||(Cr.states[t].doc=r),Cr.states[t].type||(Cr.states[t].type=e)),n&&(B.info(\\\"Setting state description\\\",t,n),typeof n==\\\"string\\\"&&md(t,n.trim()),typeof n==\\\"object\\\"&&n.forEach(l=>md(t,l.trim()))),i&&(Cr.states[t].note=i,Cr.states[t].note.text=he.sanitizeText(Cr.states[t].note.text,$())),s&&(B.info(\\\"Setting state classes\\\",t,s),(typeof s==\\\"string\\\"?[s]:s).forEach(u=>bd(t,u.trim()))),a&&(B.info(\\\"Setting state styles\\\",t,a),(typeof a==\\\"string\\\"?[a]:a).forEach(u=>uP(t,u.trim()))),o&&(B.info(\\\"Setting state styles\\\",t,a),(typeof o==\\\"string\\\"?[o]:o).forEach(u=>hP(t,u.trim())))},m4=function(t){Bu={root:g4()},Cr=Bu.root,el=0,tl=f4(),t||vn()},rl=function(t){return Cr.states[t]},eP=function(){return Cr.states},rP=function(){B.info(\\\"Documents = \\\",Bu)},nP=function(){return Cr.relations};function gd(t=\\\"\\\"){let e=t;return t===pd&&(el++,e=`${l4}${el}`),e}function yd(t=\\\"\\\",e=Jo){return t===pd?l4:e}function iP(t=\\\"\\\"){let e=t;return t===c4&&(el++,e=`${u4}${el}`),e}function sP(t=\\\"\\\",e=Jo){return t===c4?u4:e}function aP(t,e,r){let n=gd(t.id),i=yd(t.id,t.type),s=gd(e.id),a=yd(e.id,e.type);Ms(n,i,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),Ms(s,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),Cr.relations.push({id1:n,id2:s,relationTitle:he.sanitizeText(r,$())})}const b4=function(t,e,r){if(typeof t==\\\"object\\\")aP(t,e,r);else{const n=gd(t),i=yd(t),s=iP(e),a=sP(e);Ms(n,i),Ms(s,a),Cr.relations.push({id1:n,id2:s,title:he.sanitizeText(r,$())})}},md=function(t,e){const r=Cr.states[t],n=e.startsWith(\\\":\\\")?e.replace(\\\":\\\",\\\"\\\").trim():e;r.descriptions.push(he.sanitizeText(n,$()))},oP=function(t){return t.substring(0,1)===\\\":\\\"?t.substr(2).trim():t.trim()},lP=()=>(y4++,\\\"divider-id-\\\"+y4),_4=function(t,e=\\\"\\\"){tl[t]===void 0&&(tl[t]={id:t,styles:[],textStyles:[]});const r=tl[t];e!=null&&e.split(jF).forEach(n=>{const i=n.replace(/([^;]*);/,\\\"$1\\\").trim();if(n.match(h4)){const a=i.replace(d4,qF).replace(h4,d4);r.textStyles.push(a)}r.styles.push(i)})},cP=function(){return tl},bd=function(t,e){t.split(\\\",\\\").forEach(function(r){let n=rl(r);if(n===void 0){const i=r.trim();Ms(i),n=rl(i)}n.classes.push(e)})},uP=function(t,e){const r=rl(t);r!==void 0&&r.textStyles.push(e)},hP=function(t,e){const r=rl(t);r!==void 0&&r.textStyles.push(e)},Ci={parseDirective:KF,getConfig:()=>$().state,addState:Ms,clear:m4,getState:rl,getStates:eP,getRelations:nP,getClasses:cP,getDirection:()=>p4,addRelation:b4,getDividerId:lP,setDirection:t=>{p4=t},cleanupLabel:oP,lineType:$F,relationType:XF,logDocuments:rP,getRootDoc:QF,setRootDoc:ZF,getRootDocV2:JF,extract:tP,trimColon:t=>t&&t[0]===\\\":\\\"?t.substr(1).trim():t.trim(),getAccTitle:kn,setAccTitle:nn,getAccDescription:Tn,setAccDescription:wn,addStyleClass:_4,setCssClass:bd,addDescription:md,setDiagramTitle:hi,getDiagramTitle:di},_d={},dP=(t,e)=>{_d[t]=e},fP=t=>_d[t],x4=()=>Object.keys(_d),pP={get:fP,set:dP,keys:x4,size:()=>x4().length},gP=t=>t.append(\\\"circle\\\").attr(\\\"class\\\",\\\"start-state\\\").attr(\\\"r\\\",$().state.sizeUnit).attr(\\\"cx\\\",$().state.padding+$().state.sizeUnit).attr(\\\"cy\\\",$().state.padding+$().state.sizeUnit),yP=t=>t.append(\\\"line\\\").style(\\\"stroke\\\",\\\"grey\\\").style(\\\"stroke-dasharray\\\",\\\"3\\\").attr(\\\"x1\\\",$().state.textHeight).attr(\\\"class\\\",\\\"divider\\\").attr(\\\"x2\\\",$().state.textHeight*2).attr(\\\"y1\\\",0).attr(\\\"y2\\\",0),mP=(t,e)=>{const r=t.append(\\\"text\\\").attr(\\\"x\\\",2*$().state.padding).attr(\\\"y\\\",$().state.textHeight+2*$().state.padding).attr(\\\"font-size\\\",$().state.fontSize).attr(\\\"class\\\",\\\"state-title\\\").text(e.id),n=r.node().getBBox();return t.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"x\\\",$().state.padding).attr(\\\"y\\\",$().state.padding).attr(\\\"width\\\",n.width+2*$().state.padding).attr(\\\"height\\\",n.height+2*$().state.padding).attr(\\\"rx\\\",$().state.radius),r},bP=(t,e)=>{const r=function(p,g,b){const k=p.append(\\\"tspan\\\").attr(\\\"x\\\",2*$().state.padding).text(g);b||k.attr(\\\"dy\\\",$().state.textHeight)},i=t.append(\\\"text\\\").attr(\\\"x\\\",2*$().state.padding).attr(\\\"y\\\",$().state.textHeight+1.3*$().state.padding).attr(\\\"font-size\\\",$().state.fontSize).attr(\\\"class\\\",\\\"state-title\\\").text(e.descriptions[0]).node().getBBox(),s=i.height,a=t.append(\\\"text\\\").attr(\\\"x\\\",$().state.padding).attr(\\\"y\\\",s+$().state.padding*.4+$().state.dividerMargin+$().state.textHeight).attr(\\\"class\\\",\\\"state-description\\\");let o=!0,l=!0;e.descriptions.forEach(function(p){o||(r(a,p,l),l=!1),o=!1});const u=t.append(\\\"line\\\").attr(\\\"x1\\\",$().state.padding).attr(\\\"y1\\\",$().state.padding+s+$().state.dividerMargin/2).attr(\\\"y2\\\",$().state.padding+s+$().state.dividerMargin/2).attr(\\\"class\\\",\\\"descr-divider\\\"),d=a.node().getBBox(),f=Math.max(d.width,i.width);return u.attr(\\\"x2\\\",f+3*$().state.padding),t.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"x\\\",$().state.padding).attr(\\\"y\\\",$().state.padding).attr(\\\"width\\\",f+2*$().state.padding).attr(\\\"height\\\",d.height+s+2*$().state.padding).attr(\\\"rx\\\",$().state.radius),t},_P=(t,e,r)=>{const n=$().state.padding,i=2*$().state.padding,s=t.node().getBBox(),a=s.width,o=s.x,l=t.append(\\\"text\\\").attr(\\\"x\\\",0).attr(\\\"y\\\",$().state.titleShift).attr(\\\"font-size\\\",$().state.fontSize).attr(\\\"class\\\",\\\"state-title\\\").text(e.id),d=l.node().getBBox().width+i;let f=Math.max(d,a);f===a&&(f=f+i);let p;const g=t.node().getBBox();e.doc,p=o-n,d>a&&(p=(a-f)/2+n),Math.abs(o-g.x)\u003Cn&&d>a&&(p=o-(d-a)/2);const b=1-$().state.textHeight;return t.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"x\\\",p).attr(\\\"y\\\",b).attr(\\\"class\\\",r?\\\"alt-composit\\\":\\\"composit\\\").attr(\\\"width\\\",f).attr(\\\"height\\\",g.height+$().state.textHeight+$().state.titleShift+1).attr(\\\"rx\\\",\\\"0\\\"),l.attr(\\\"x\\\",p+n),d\u003C=a&&l.attr(\\\"x\\\",o+(f-i)/2-d/2+n),t.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"x\\\",p).attr(\\\"y\\\",$().state.titleShift-$().state.textHeight-$().state.padding).attr(\\\"width\\\",f).attr(\\\"height\\\",$().state.textHeight*3).attr(\\\"rx\\\",$().state.radius),t.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"x\\\",p).attr(\\\"y\\\",$().state.titleShift-$().state.textHeight-$().state.padding).attr(\\\"width\\\",f).attr(\\\"height\\\",g.height+3+2*$().state.textHeight).attr(\\\"rx\\\",$().state.radius),t},xP=t=>(t.append(\\\"circle\\\").attr(\\\"class\\\",\\\"end-state-outer\\\").attr(\\\"r\\\",$().state.sizeUnit+$().state.miniPadding).attr(\\\"cx\\\",$().state.padding+$().state.sizeUnit+$().state.miniPadding).attr(\\\"cy\\\",$().state.padding+$().state.sizeUnit+$().state.miniPadding),t.append(\\\"circle\\\").attr(\\\"class\\\",\\\"end-state-inner\\\").attr(\\\"r\\\",$().state.sizeUnit).attr(\\\"cx\\\",$().state.padding+$().state.sizeUnit+2).attr(\\\"cy\\\",$().state.padding+$().state.sizeUnit+2)),vP=(t,e)=>{let r=$().state.forkWidth,n=$().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append(\\\"rect\\\").style(\\\"stroke\\\",\\\"black\\\").style(\\\"fill\\\",\\\"black\\\").attr(\\\"width\\\",r).attr(\\\"height\\\",n).attr(\\\"x\\\",$().state.padding).attr(\\\"y\\\",$().state.padding)},kP=(t,e,r,n)=>{let i=0;const s=n.append(\\\"text\\\");s.style(\\\"text-anchor\\\",\\\"start\\\"),s.attr(\\\"class\\\",\\\"noteText\\\");let a=t.replace(/\\\\r\\\\n/g,\\\"\u003Cbr/>\\\");a=a.replace(/\\\\n/g,\\\"\u003Cbr/>\\\");const o=a.split(he.lineBreakRegex);let l=1.25*$().state.noteMargin;for(const u of o){const d=u.trim();if(d.length>0){const f=s.append(\\\"tspan\\\");if(f.text(d),l===0){const p=f.node().getBBox();l+=p.height}i+=l,f.attr(\\\"x\\\",e+$().state.noteMargin),f.attr(\\\"y\\\",r+i+1.25*$().state.noteMargin)}}return{textWidth:s.node().getBBox().width,textHeight:i}},wP=(t,e)=>{e.attr(\\\"class\\\",\\\"state-note\\\");const r=e.append(\\\"rect\\\").attr(\\\"x\\\",0).attr(\\\"y\\\",$().state.padding),n=e.append(\\\"g\\\"),{textWidth:i,textHeight:s}=kP(t,0,0,n);return r.attr(\\\"height\\\",s+2*$().state.noteMargin),r.attr(\\\"width\\\",i+$().state.noteMargin*2),r},v4=function(t,e){const r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append(\\\"g\\\").attr(\\\"id\\\",r).attr(\\\"class\\\",\\\"stateGroup\\\");e.type===\\\"start\\\"&&gP(i),e.type===\\\"end\\\"&&xP(i),(e.type===\\\"fork\\\"||e.type===\\\"join\\\")&&vP(i,e),e.type===\\\"note\\\"&&wP(e.note.text,i),e.type===\\\"divider\\\"&&yP(i),e.type===\\\"default\\\"&&e.descriptions.length===0&&mP(i,e),e.type===\\\"default\\\"&&e.descriptions.length>0&&bP(i,e);const s=i.node().getBBox();return n.width=s.width+2*$().state.padding,n.height=s.height+2*$().state.padding,pP.set(r,n),n};let k4=0;const TP=function(t,e,r){const n=function(l){switch(l){case Ci.relationType.AGGREGATION:return\\\"aggregation\\\";case Ci.relationType.EXTENSION:return\\\"extension\\\";case Ci.relationType.COMPOSITION:return\\\"composition\\\";case Ci.relationType.DEPENDENCY:return\\\"dependency\\\"}};e.points=e.points.filter(l=>!Number.isNaN(l.y));const i=e.points,s=Js().x(function(l){return l.x}).y(function(l){return l.y}).curve(ta),a=t.append(\\\"path\\\").attr(\\\"d\\\",s(i)).attr(\\\"id\\\",\\\"edge\\\"+k4).attr(\\\"class\\\",\\\"transition\\\");let o=\\\"\\\";if($().state.arrowMarkerAbsolute&&(o=window.location.protocol+\\\"//\\\"+window.location.host+window.location.pathname+window.location.search,o=o.replace(/\\\\(/g,\\\"\\\\\\\\(\\\"),o=o.replace(/\\\\)/g,\\\"\\\\\\\\)\\\")),a.attr(\\\"marker-end\\\",\\\"url(\\\"+o+\\\"#\\\"+n(Ci.relationType.DEPENDENCY)+\\\"End)\\\"),r.title!==void 0){const l=t.append(\\\"g\\\").attr(\\\"class\\\",\\\"stateLabel\\\"),{x:u,y:d}=ge.calcLabelPosition(e.points),f=he.getRows(r.title);let p=0;const g=[];let b=0,k=0;for(let E=0;E\u003C=f.length;E++){const I=l.append(\\\"text\\\").attr(\\\"text-anchor\\\",\\\"middle\\\").text(f[E]).attr(\\\"x\\\",u).attr(\\\"y\\\",d+p),V=I.node().getBBox();b=Math.max(b,V.width),k=Math.min(k,V.x),B.info(V.x,u,d+p),p===0&&(p=I.node().getBBox().height,B.info(\\\"Title height\\\",p,d)),g.push(I)}let T=p*f.length;if(f.length>1){const E=(f.length-1)*p*.5;g.forEach((I,V)=>I.attr(\\\"y\\\",d+V*p-E)),T=p*f.length}const L=l.node().getBBox();l.insert(\\\"rect\\\",\\\":first-child\\\").attr(\\\"class\\\",\\\"box\\\").attr(\\\"x\\\",u-b/2-$().state.padding/2).attr(\\\"y\\\",d-T/2-$().state.padding/2-3.5).attr(\\\"width\\\",b+$().state.padding).attr(\\\"height\\\",T+$().state.padding),B.info(L)}k4++};let $r;const xd={},EP=function(){},CP=function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"dependencyEnd\\\").attr(\\\"refX\\\",19).attr(\\\"refY\\\",7).attr(\\\"markerWidth\\\",20).attr(\\\"markerHeight\\\",28).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 19,7 L9,13 L14,7 L9,1 Z\\\")},SP=function(t,e,r,n){$r=$().state;const i=$().securityLevel;let s;i===\\\"sandbox\\\"&&(s=St(\\\"#i\\\"+e));const a=St(i===\\\"sandbox\\\"?s.nodes()[0].contentDocument.body:\\\"body\\\"),o=i===\\\"sandbox\\\"?s.nodes()[0].contentDocument:document;B.debug(\\\"Rendering diagram \\\"+t);const l=a.select(`[id='${e}']`);CP(l),new sr({multigraph:!0,compound:!0,rankdir:\\\"RL\\\"}).setDefaultEdgeLabel(function(){return{}});const d=n.db.getRootDoc();w4(d,l,void 0,!1,a,o,n);const f=$r.padding,p=l.node().getBBox(),g=p.width+f*2,b=p.height+f*2,k=g*1.75;xn(l,b,k,$r.useMaxWidth),l.attr(\\\"viewBox\\\",`${p.x-$r.padding} ${p.y-$r.padding} `+g+\\\" \\\"+b)},AP=t=>t?t.length*$r.fontSizeFactor:1,w4=(t,e,r,n,i,s,a)=>{const o=new sr({compound:!0,multigraph:!0});let l,u=!0;for(l=0;l\u003Ct.length;l++)if(t[l].stmt===\\\"relation\\\"){u=!1;break}r?o.setGraph({rankdir:\\\"LR\\\",multigraph:!0,compound:!0,ranker:\\\"tight-tree\\\",ranksep:u?1:$r.edgeLengthFactor,nodeSep:u?1:50,isMultiGraph:!0}):o.setGraph({rankdir:\\\"TB\\\",multigraph:!0,compound:!0,ranksep:u?1:$r.edgeLengthFactor,nodeSep:u?1:50,ranker:\\\"tight-tree\\\",isMultiGraph:!0}),o.setDefaultEdgeLabel(function(){return{}}),a.db.extract(t);const d=a.db.getStates(),f=a.db.getRelations(),p=Object.keys(d);for(const L of p){const E=d[L];r&&(E.parentId=r);let I;if(E.doc){let V=e.append(\\\"g\\\").attr(\\\"id\\\",E.id).attr(\\\"class\\\",\\\"stateGroup\\\");I=w4(E.doc,V,E.id,!n,i,s,a);{V=_P(V,E,n);let H=V.node().getBBox();I.width=H.width,I.height=H.height+$r.padding/2,xd[E.id]={y:$r.compositTitleSize}}}else I=v4(e,E);if(E.note){const V={descriptions:[],id:E.id+\\\"-note\\\",note:E.note,type:\\\"note\\\"},H=v4(e,V);E.note.position===\\\"left of\\\"?(o.setNode(I.id+\\\"-note\\\",H),o.setNode(I.id,I)):(o.setNode(I.id,I),o.setNode(I.id+\\\"-note\\\",H)),o.setParent(I.id,I.id+\\\"-group\\\"),o.setParent(I.id+\\\"-note\\\",I.id+\\\"-group\\\")}else o.setNode(I.id,I)}B.debug(\\\"Count=\\\",o.nodeCount(),o);let g=0;f.forEach(function(L){g++,B.debug(\\\"Setting edge\\\",L),o.setEdge(L.id1,L.id2,{relation:L,width:AP(L.title),height:$r.labelHeight*he.getRows(L.title).length,labelpos:\\\"c\\\"},\\\"id\\\"+g)}),Ea(o),B.debug(\\\"Graph after layout\\\",o.nodes());const b=e.node();o.nodes().forEach(function(L){L!==void 0&&o.node(L)!==void 0?(B.warn(\\\"Node \\\"+L+\\\": \\\"+JSON.stringify(o.node(L))),i.select(\\\"#\\\"+b.id+\\\" #\\\"+L).attr(\\\"transform\\\",\\\"translate(\\\"+(o.node(L).x-o.node(L).width/2)+\\\",\\\"+(o.node(L).y+(xd[L]?xd[L].y:0)-o.node(L).height/2)+\\\" )\\\"),i.select(\\\"#\\\"+b.id+\\\" #\\\"+L).attr(\\\"data-x-shift\\\",o.node(L).x-o.node(L).width/2),s.querySelectorAll(\\\"#\\\"+b.id+\\\" #\\\"+L+\\\" .divider\\\").forEach(I=>{const V=I.parentElement;let H=0,G=0;V&&(V.parentElement&&(H=V.parentElement.getBBox().width),G=parseInt(V.getAttribute(\\\"data-x-shift\\\"),10),Number.isNaN(G)&&(G=0)),I.setAttribute(\\\"x1\\\",0-G+8),I.setAttribute(\\\"x2\\\",H-G-8)})):B.debug(\\\"No Node \\\"+L+\\\": \\\"+JSON.stringify(o.node(L)))});let k=b.getBBox();o.edges().forEach(function(L){L!==void 0&&o.edge(L)!==void 0&&(B.debug(\\\"Edge \\\"+L.v+\\\" -> \\\"+L.w+\\\": \\\"+JSON.stringify(o.edge(L))),TP(e,o.edge(L),o.edge(L).relation))}),k=b.getBBox();const T={id:r||\\\"root\\\",label:r||\\\"root\\\",width:0,height:0};return T.width=k.width+2*$r.padding,T.height=k.height+2*$r.padding,B.debug(\\\"Doc rendered\\\",T,o),T},LP={setConf:EP,draw:SP},Ru=\\\"rect\\\",vd=\\\"rectWithTitle\\\",DP=\\\"start\\\",MP=\\\"end\\\",NP=\\\"divider\\\",BP=\\\"roundedWithTitle\\\",IP=\\\"note\\\",OP=\\\"noteGroup\\\",Ra=\\\"statediagram\\\",RP=`${Ra}-state`,T4=\\\"transition\\\",FP=\\\"note\\\",PP=`${T4} note-edge`,YP=`${Ra}-${FP}`,VP=`${Ra}-cluster`,UP=`${Ra}-cluster-alt`,E4=\\\"parent\\\",C4=\\\"note\\\",zP=\\\"state\\\",kd=\\\"----\\\",WP=`${kd}${C4}`,S4=`${kd}${E4}`,A4=\\\"fill:none\\\",L4=\\\"fill: #333\\\",D4=\\\"c\\\",M4=\\\"text\\\",N4=\\\"normal\\\";let Fu={},$i=0;const HP=function(t){const e=Object.keys(t);for(const r of e)t[r]},GP=function(t,e){B.trace(\\\"Extracting classes\\\"),e.db.clear();try{return e.parser.parse(t),e.db.extract(e.db.getRootDocV2()),e.db.getClasses()}catch(r){return r}};function qP(t){return t==null?\\\"\\\":t.classes?t.classes.join(\\\" \\\"):\\\"\\\"}function wd(t=\\\"\\\",e=0,r=\\\"\\\",n=kd){const i=r!==null&&r.length>0?`${n}${r}`:\\\"\\\";return`${zP}-${t}${i}-${e}`}const nl=(t,e,r,n,i,s)=>{const a=r.id,o=qP(n[a]);if(a!==\\\"root\\\"){let l=Ru;r.start===!0&&(l=DP),r.start===!1&&(l=MP),r.type!==Jo&&(l=r.type),Fu[a]||(Fu[a]={id:a,shape:l,description:he.sanitizeText(a,$()),classes:`${o} ${RP}`});const u=Fu[a];r.description&&(Array.isArray(u.description)?(u.shape=vd,u.description.push(r.description)):u.description.length>0?(u.shape=vd,u.description===a?u.description=[r.description]:u.description=[u.description,r.description]):(u.shape=Ru,u.description=r.description),u.description=he.sanitizeTextOrArray(u.description,$())),u.description.length===1&&u.shape===vd&&(u.shape=Ru),!u.type&&r.doc&&(B.info(\\\"Setting cluster for \\\",a,Td(r)),u.type=\\\"group\\\",u.dir=Td(r),u.shape=r.type===o4?NP:BP,u.classes=u.classes+\\\" \\\"+VP+\\\" \\\"+(s?UP:\\\"\\\"));const d={labelStyle:\\\"\\\",shape:u.shape,labelText:u.description,classes:u.classes,style:\\\"\\\",id:a,dir:u.dir,domId:wd(a,$i),type:u.type,padding:15};if(r.note){const f={labelStyle:\\\"\\\",shape:IP,labelText:r.note.text,classes:YP,style:\\\"\\\",id:a+WP+\\\"-\\\"+$i,domId:wd(a,$i,C4),type:u.type,padding:15},p={labelStyle:\\\"\\\",shape:OP,labelText:r.note.text,classes:u.classes,style:\\\"\\\",id:a+S4,domId:wd(a,$i,E4),type:\\\"group\\\",padding:0};$i++;const g=a+S4;t.setNode(g,p),t.setNode(f.id,f),t.setNode(a,d),t.setParent(a,g),t.setParent(f.id,g);let b=a,k=f.id;r.note.position===\\\"left of\\\"&&(b=f.id,k=a),t.setEdge(b,k,{arrowhead:\\\"none\\\",arrowType:\\\"\\\",style:A4,labelStyle:\\\"\\\",classes:PP,arrowheadStyle:L4,labelpos:D4,labelType:M4,thickness:N4})}else t.setNode(a,d)}e&&e.id!==\\\"root\\\"&&(B.trace(\\\"Setting node \\\",a,\\\" to be child of its parent \\\",e.id),t.setParent(a,e.id)),r.doc&&(B.trace(\\\"Adding nodes children \\\"),jP(t,r,r.doc,n,i,!s))},jP=(t,e,r,n,i,s)=>{B.trace(\\\"items\\\",r),r.forEach(a=>{switch(a.stmt){case Mu:nl(t,e,a,n,i,s);break;case Jo:nl(t,e,a,n,i,s);break;case fd:{nl(t,e,a.state1,n,i,s),nl(t,e,a.state2,n,i,s);const o={id:\\\"edge\\\"+$i,arrowhead:\\\"normal\\\",arrowTypeEnd:\\\"arrow_barb\\\",style:A4,labelStyle:\\\"\\\",label:he.sanitizeText(a.description,$()),arrowheadStyle:L4,labelpos:D4,labelType:M4,thickness:N4,classes:T4};t.setEdge(a.state1.id,a.state2.id,o,$i),$i++}break}})},Td=(t,e=WF)=>{let r=e;if(t.doc)for(let n=0;n\u003Ct.doc.length;n++){const i=t.doc[n];i.stmt===\\\"dir\\\"&&(r=i.value)}return r},$P={setConf:HP,getClasses:GP,draw:function(t,e,r,n){B.info(\\\"Drawing state diagram (v2)\\\",e),Fu={};let i=n.db.getDirection();i===void 0&&(i=a4);const{securityLevel:s,state:a}=$(),o=a.nodeSpacing||50,l=a.rankSpacing||50;B.info(n.db.getRootDocV2()),n.db.extract(n.db.getRootDocV2()),B.info(n.db.getRootDocV2());const u=n.db.getStates(),d=new sr({multigraph:!0,compound:!0}).setGraph({rankdir:Td(n.db.getRootDocV2()),nodesep:o,ranksep:l,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});nl(d,void 0,n.db.getRootDocV2(),u,n.db,!0);let f;s===\\\"sandbox\\\"&&(f=St(\\\"#i\\\"+e));const p=St(s===\\\"sandbox\\\"?f.nodes()[0].contentDocument.body:\\\"body\\\"),g=p.select(`[id=\\\"${e}\\\"]`),b=p.select(\\\"#\\\"+e+\\\" g\\\");v0(b,d,[\\\"barb\\\"],Ra,e);const k=8;ge.insertTitle(g,\\\"statediagramTitleText\\\",a.titleTopMargin,n.db.getDiagramTitle());const T=g.node().getBBox(),L=T.width+k*2,E=T.height+k*2;g.attr(\\\"class\\\",Ra);const I=g.node().getBBox();xn(g,E,L,a.useMaxWidth);const V=`${I.x-k} ${I.y-k} ${L} ${E}`;B.debug(`viewBox ${V}`),g.attr(\\\"viewBox\\\",V);const H=document.querySelectorAll('[id=\\\"'+e+'\\\"] .edgeLabel .label');for(const G of H){const Y=G.getBBox(),W=document.createElementNS(\\\"http://www.w3.org/2000/svg\\\",Ru);W.setAttribute(\\\"rx\\\",0),W.setAttribute(\\\"ry\\\",0),W.setAttribute(\\\"width\\\",Y.width),W.setAttribute(\\\"height\\\",Y.height),G.insertBefore(W,G.firstChild)}}};var Ed=function(){var t=function(k,T,L,E){for(L=L||{},E=k.length;E--;L[k[E]]=T);return L},e=[1,2],r=[1,5],n=[6,9,11,17,18,20,22,23,24,26],i=[1,15],s=[1,16],a=[1,17],o=[1,18],l=[1,19],u=[1,20],d=[1,24],f=[4,6,9,11,17,18,20,22,23,24,26],p={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,\\\":\\\":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:\\\"error\\\",4:\\\"journey\\\",6:\\\"EOF\\\",9:\\\"SPACE\\\",11:\\\"NEWLINE\\\",15:\\\":\\\",17:\\\"title\\\",18:\\\"acc_title\\\",19:\\\"acc_title_value\\\",20:\\\"acc_descr\\\",21:\\\"acc_descr_value\\\",22:\\\"acc_descr_multiline_value\\\",23:\\\"section\\\",24:\\\"taskName\\\",25:\\\"taskData\\\",26:\\\"open_directive\\\",27:\\\"type_directive\\\",28:\\\"arg_directive\\\",29:\\\"close_directive\\\"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(T,L,E,I,V,H,G){var Y=H.length-1;switch(V){case 1:return H[Y-1];case 3:this.$=[];break;case 4:H[Y-1].push(H[Y]),this.$=H[Y-1];break;case 5:case 6:this.$=H[Y];break;case 7:case 8:this.$=[];break;case 11:I.setDiagramTitle(H[Y].substr(6)),this.$=H[Y].substr(6);break;case 12:this.$=H[Y].trim(),I.setAccTitle(this.$);break;case 13:case 14:this.$=H[Y].trim(),I.setAccDescription(this.$);break;case 15:I.addSection(H[Y].substr(8)),this.$=H[Y].substr(8);break;case 16:I.addTask(H[Y-1],H[Y]),this.$=\\\"task\\\";break;case 18:I.parseDirective(\\\"%%{\\\",\\\"open_directive\\\");break;case 19:I.parseDirective(H[Y],\\\"type_directive\\\");break;case 20:H[Y]=H[Y].trim().replace(/'/g,'\\\"'),I.parseDirective(H[Y],\\\"arg_directive\\\");break;case 21:I.parseDirective(\\\"}%%\\\",\\\"close_directive\\\",\\\"journey\\\");break}},table:[{3:1,4:e,7:3,12:4,26:r},{1:[3]},t(n,[2,3],{5:6}),{3:7,4:e,7:3,12:4,26:r},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:s,20:a,22:o,23:l,24:u,26:r},{1:[2,2]},{14:22,15:[1,23],29:d},t([15,29],[2,19]),t(n,[2,8],{1:[2,1]}),t(n,[2,4]),{7:21,10:25,12:4,17:i,18:s,20:a,22:o,23:l,24:u,26:r},t(n,[2,6]),t(n,[2,7]),t(n,[2,11]),{19:[1,26]},{21:[1,27]},t(n,[2,14]),t(n,[2,15]),{25:[1,28]},t(n,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},t(n,[2,5]),t(n,[2,12]),t(n,[2,13]),t(n,[2,16]),t(f,[2,9]),{14:32,29:d},{29:[2,20]},{11:[1,33]},t(f,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(T,L){if(L.recoverable)this.trace(T);else{var E=new Error(T);throw E.hash=L,E}},parse:function(T){var L=this,E=[0],I=[],V=[null],H=[],G=this.table,Y=\\\"\\\",W=0,N=0,D=2,w=1,v=H.slice.call(arguments,1),M=Object.create(this.lexer),m={yy:{}};for(var Q in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Q)&&(m.yy[Q]=this.yy[Q]);M.setInput(T,m.yy),m.yy.lexer=M,m.yy.parser=this,typeof M.yylloc>\\\"u\\\"&&(M.yylloc={});var x=M.yylloc;H.push(x);var ct=M.options&&M.options.ranges;typeof m.yy.parseError==\\\"function\\\"?this.parseError=m.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Dt(){var z;return z=I.pop()||M.lex()||w,typeof z!=\\\"number\\\"&&(z instanceof Array&&(I=z,z=I.pop()),z=L.symbols_[z]||z),z}for(var kt,j,ot,rt,nt={},ut,_t,K,Ot;;){if(j=E[E.length-1],this.defaultActions[j]?ot=this.defaultActions[j]:((kt===null||typeof kt>\\\"u\\\")&&(kt=Dt()),ot=G[j]&&G[j][kt]),typeof ot>\\\"u\\\"||!ot.length||!ot[0]){var P=\\\"\\\";Ot=[];for(ut in G[j])this.terminals_[ut]&&ut>D&&Ot.push(\\\"'\\\"+this.terminals_[ut]+\\\"'\\\");M.showPosition?P=\\\"Parse error on line \\\"+(W+1)+`:\\n`+M.showPosition()+`\\nExpecting `+Ot.join(\\\", \\\")+\\\", got '\\\"+(this.terminals_[kt]||kt)+\\\"'\\\":P=\\\"Parse error on line \\\"+(W+1)+\\\": Unexpected \\\"+(kt==w?\\\"end of input\\\":\\\"'\\\"+(this.terminals_[kt]||kt)+\\\"'\\\"),this.parseError(P,{text:M.match,token:this.terminals_[kt]||kt,line:M.yylineno,loc:x,expected:Ot})}if(ot[0]instanceof Array&&ot.length>1)throw new Error(\\\"Parse Error: multiple actions possible at state: \\\"+j+\\\", token: \\\"+kt);switch(ot[0]){case 1:E.push(kt),V.push(M.yytext),H.push(M.yylloc),E.push(ot[1]),kt=null,N=M.yyleng,Y=M.yytext,W=M.yylineno,x=M.yylloc;break;case 2:if(_t=this.productions_[ot[1]][1],nt.$=V[V.length-_t],nt._$={first_line:H[H.length-(_t||1)].first_line,last_line:H[H.length-1].last_line,first_column:H[H.length-(_t||1)].first_column,last_column:H[H.length-1].last_column},ct&&(nt._$.range=[H[H.length-(_t||1)].range[0],H[H.length-1].range[1]]),rt=this.performAction.apply(nt,[Y,N,W,m.yy,ot[1],V,H].concat(v)),typeof rt\u003C\\\"u\\\")return rt;_t&&(E=E.slice(0,-1*_t*2),V=V.slice(0,-1*_t),H=H.slice(0,-1*_t)),E.push(this.productions_[ot[1]][0]),V.push(nt.$),H.push(nt._$),K=G[E[E.length-2]][E[E.length-1]],E.push(K);break;case 3:return!0}}return!0}},g=function(){var k={EOF:1,parseError:function(L,E){if(this.yy.parser)this.yy.parser.parseError(L,E);else throw new Error(L)},setInput:function(T,L){return this.yy=L||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=\\\"\\\",this.conditionStack=[\\\"INITIAL\\\"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var L=T.match(/(?:\\\\r\\\\n?|\\\\n).*/g);return L?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},unput:function(T){var L=T.length,E=T.split(/(?:\\\\r\\\\n?|\\\\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-L),this.offset-=L;var I=this.match.split(/(?:\\\\r\\\\n?|\\\\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),E.length-1&&(this.yylineno-=E.length-1);var V=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:E?(E.length===I.length?this.yylloc.first_column:0)+I[I.length-E.length].length-E[0].length:this.yylloc.first_column-L},this.options.ranges&&(this.yylloc.range=[V[0],V[0]+this.yyleng-L]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno});return this},less:function(T){this.unput(this.match.slice(T))},pastInput:function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?\\\"...\\\":\\\"\\\")+T.substr(-20).replace(/\\\\n/g,\\\"\\\")},upcomingInput:function(){var T=this.match;return T.length\u003C20&&(T+=this._input.substr(0,20-T.length)),(T.substr(0,20)+(T.length>20?\\\"...\\\":\\\"\\\")).replace(/\\\\n/g,\\\"\\\")},showPosition:function(){var T=this.pastInput(),L=new Array(T.length+1).join(\\\"-\\\");return T+this.upcomingInput()+`\\n`+L+\\\"^\\\"},test_match:function(T,L){var E,I,V;if(this.options.backtrack_lexer&&(V={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(V.yylloc.range=this.yylloc.range.slice(0))),I=T[0].match(/(?:\\\\r\\\\n?|\\\\n).*/g),I&&(this.yylineno+=I.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:I?I[I.length-1].length-I[I.length-1].match(/\\\\r?\\\\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],E=this.performAction.call(this,this.yy,this,L,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var H in V)this[H]=V[H];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,L,E,I;this._more||(this.yytext=\\\"\\\",this.match=\\\"\\\");for(var V=this._currentRules(),H=0;H\u003CV.length;H++)if(E=this._input.match(this.rules[V[H]]),E&&(!L||E[0].length>L[0].length)){if(L=E,I=H,this.options.backtrack_lexer){if(T=this.test_match(E,V[H]),T!==!1)return T;if(this._backtrack){L=!1;continue}else return!1}else if(!this.options.flex)break}return L?(T=this.test_match(L,V[I]),T!==!1?T:!1):this._input===\\\"\\\"?this.EOF:this.parseError(\\\"Lexical error on line \\\"+(this.yylineno+1)+`. Unrecognized text.\\n`+this.showPosition(),{text:\\\"\\\",token:null,line:this.yylineno})},lex:function(){var L=this.next();return L||this.lex()},begin:function(L){this.conditionStack.push(L)},popState:function(){var L=this.conditionStack.length-1;return L>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(L){return L=this.conditionStack.length-1-Math.abs(L||0),L>=0?this.conditionStack[L]:\\\"INITIAL\\\"},pushState:function(L){this.begin(L)},stateStackSize:function(){return this.conditionStack.length},options:{\\\"case-insensitive\\\":!0},performAction:function(L,E,I,V){switch(I){case 0:return this.begin(\\\"open_directive\\\"),26;case 1:return this.begin(\\\"type_directive\\\"),27;case 2:return this.popState(),this.begin(\\\"arg_directive\\\"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:break;case 6:break;case 7:return 11;case 8:break;case 9:break;case 10:return 4;case 11:return 17;case 12:return this.begin(\\\"acc_title\\\"),18;case 13:return this.popState(),\\\"acc_title_value\\\";case 14:return this.begin(\\\"acc_descr\\\"),20;case 15:return this.popState(),\\\"acc_descr_value\\\";case 16:this.begin(\\\"acc_descr_multiline\\\");break;case 17:this.popState();break;case 18:return\\\"acc_descr_multiline_value\\\";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return\\\"INVALID\\\"}},rules:[/^(?:%%\\\\{)/i,/^(?:((?:(?!\\\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\\\}%%)/i,/^(?:((?:(?!\\\\}%%).|\\\\n)*))/i,/^(?:%(?!\\\\{)[^\\\\n]*)/i,/^(?:[^\\\\}]%%[^\\\\n]*)/i,/^(?:[\\\\n]+)/i,/^(?:\\\\s+)/i,/^(?:#[^\\\\n]*)/i,/^(?:journey\\\\b)/i,/^(?:title\\\\s[^#\\\\n;]+)/i,/^(?:accTitle\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*:\\\\s*)/i,/^(?:(?!\\\\n||)*[^\\\\n]*)/i,/^(?:accDescr\\\\s*\\\\{\\\\s*)/i,/^(?:[\\\\}])/i,/^(?:[^\\\\}]*)/i,/^(?:section\\\\s[^#:\\\\n;]+)/i,/^(?:[^#:\\\\n;]+)/i,/^(?::[^#\\\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}};return k}();p.lexer=g;function b(){this.yy={}}return b.prototype=p,p.Parser=b,new b}();Ed.parser=Ed;const XP=Ed,KP=t=>t.match(/^\\\\s*journey/)!==null;let Fa=\\\"\\\";const Cd=[],il=[],sl=[],ZP=function(t,e,r){ze.parseDirective(this,t,e,r)},QP=function(){Cd.length=0,il.length=0,Fa=\\\"\\\",sl.length=0,vn()},JP=function(t){Fa=t,Cd.push(t)},tY=function(){return Cd},eY=function(){let t=B4();const e=100;let r=0;for(;!t&&r\u003Ce;)t=B4(),r++;return il.push(...sl),il},rY=function(){const t=[];return il.forEach(r=>{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},nY=function(t,e){const r=e.substr(1).split(\\\":\\\");let n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(\\\",\\\"));const s=i.map(o=>o.trim()),a={section:Fa,type:Fa,people:s,task:t,score:n};sl.push(a)},iY=function(t){const e={section:Fa,type:Fa,description:t,task:t,classes:[]};il.push(e)},B4=function(){const t=function(r){return sl[r].processed};let e=!0;for(const[r,n]of sl.entries())t(r),e=e&&n.processed;return e},I4={parseDirective:ZP,getConfig:()=>$().journey,clear:QP,setDiagramTitle:hi,getDiagramTitle:di,setAccTitle:nn,getAccTitle:kn,setAccDescription:wn,getAccDescription:Tn,addSection:JP,getSections:tY,getTasks:eY,addTask:nY,addTaskOrg:iY,getActors:function(){return rY()}},Pu=function(t,e){const r=t.append(\\\"rect\\\");return r.attr(\\\"x\\\",e.x),r.attr(\\\"y\\\",e.y),r.attr(\\\"fill\\\",e.fill),r.attr(\\\"stroke\\\",e.stroke),r.attr(\\\"width\\\",e.width),r.attr(\\\"height\\\",e.height),r.attr(\\\"rx\\\",e.rx),r.attr(\\\"ry\\\",e.ry),e.class!==void 0&&r.attr(\\\"class\\\",e.class),r},sY=function(t,e){const n=t.append(\\\"circle\\\").attr(\\\"cx\\\",e.cx).attr(\\\"cy\\\",e.cy).attr(\\\"class\\\",\\\"face\\\").attr(\\\"r\\\",15).attr(\\\"stroke-width\\\",2).attr(\\\"overflow\\\",\\\"visible\\\"),i=t.append(\\\"g\\\");i.append(\\\"circle\\\").attr(\\\"cx\\\",e.cx-15/3).attr(\\\"cy\\\",e.cy-15/3).attr(\\\"r\\\",1.5).attr(\\\"stroke-width\\\",2).attr(\\\"fill\\\",\\\"#666\\\").attr(\\\"stroke\\\",\\\"#666\\\"),i.append(\\\"circle\\\").attr(\\\"cx\\\",e.cx+15/3).attr(\\\"cy\\\",e.cy-15/3).attr(\\\"r\\\",1.5).attr(\\\"stroke-width\\\",2).attr(\\\"fill\\\",\\\"#666\\\").attr(\\\"stroke\\\",\\\"#666\\\");function s(l){const u=jh().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);l.append(\\\"path\\\").attr(\\\"class\\\",\\\"mouth\\\").attr(\\\"d\\\",u).attr(\\\"transform\\\",\\\"translate(\\\"+e.cx+\\\",\\\"+(e.cy+2)+\\\")\\\")}function a(l){const u=jh().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);l.append(\\\"path\\\").attr(\\\"class\\\",\\\"mouth\\\").attr(\\\"d\\\",u).attr(\\\"transform\\\",\\\"translate(\\\"+e.cx+\\\",\\\"+(e.cy+7)+\\\")\\\")}function o(l){l.append(\\\"line\\\").attr(\\\"class\\\",\\\"mouth\\\").attr(\\\"stroke\\\",2).attr(\\\"x1\\\",e.cx-5).attr(\\\"y1\\\",e.cy+7).attr(\\\"x2\\\",e.cx+5).attr(\\\"y2\\\",e.cy+7).attr(\\\"class\\\",\\\"mouth\\\").attr(\\\"stroke-width\\\",\\\"1px\\\").attr(\\\"stroke\\\",\\\"#666\\\")}return e.score>3?s(i):e.score\u003C3?a(i):o(i),n},O4=function(t,e){const r=t.append(\\\"circle\\\");return r.attr(\\\"cx\\\",e.cx),r.attr(\\\"cy\\\",e.cy),r.attr(\\\"class\\\",\\\"actor-\\\"+e.pos),r.attr(\\\"fill\\\",e.fill),r.attr(\\\"stroke\\\",e.stroke),r.attr(\\\"r\\\",e.r),r.class!==void 0&&r.attr(\\\"class\\\",r.class),e.title!==void 0&&r.append(\\\"title\\\").text(e.title),r},R4=function(t,e){const r=e.text.replace(/\u003Cbr\\\\s*\\\\/?>/gi,\\\" \\\"),n=t.append(\\\"text\\\");n.attr(\\\"x\\\",e.x),n.attr(\\\"y\\\",e.y),n.attr(\\\"class\\\",\\\"legend\\\"),n.style(\\\"text-anchor\\\",e.anchor),e.class!==void 0&&n.attr(\\\"class\\\",e.class);const i=n.append(\\\"tspan\\\");return i.attr(\\\"x\\\",e.x+e.textMargin*2),i.text(r),n},aY=function(t,e){function r(i,s,a,o,l){return i+\\\",\\\"+s+\\\" \\\"+(i+a)+\\\",\\\"+s+\\\" \\\"+(i+a)+\\\",\\\"+(s+o-l)+\\\" \\\"+(i+a-l*1.2)+\\\",\\\"+(s+o)+\\\" \\\"+i+\\\",\\\"+(s+o)}const n=t.append(\\\"polygon\\\");n.attr(\\\"points\\\",r(e.x,e.y,50,20,7)),n.attr(\\\"class\\\",\\\"labelBox\\\"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,R4(t,e)},oY=function(t,e,r){const n=t.append(\\\"g\\\"),i=Sd();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class=\\\"journey-section section-type-\\\"+e.num,i.rx=3,i.ry=3,Pu(n,i),P4(r)(e.text,n,i.x,i.y,i.width,i.height,{class:\\\"journey-section section-type-\\\"+e.num},r,e.colour)};let F4=-1;const lY=function(t,e,r){const n=e.x+r.width/2,i=t.append(\\\"g\\\");F4++;const s=300+5*30;i.append(\\\"line\\\").attr(\\\"id\\\",\\\"task\\\"+F4).attr(\\\"x1\\\",n).attr(\\\"y1\\\",e.y).attr(\\\"x2\\\",n).attr(\\\"y2\\\",s).attr(\\\"class\\\",\\\"task-line\\\").attr(\\\"stroke-width\\\",\\\"1px\\\").attr(\\\"stroke-dasharray\\\",\\\"4 2\\\").attr(\\\"stroke\\\",\\\"#666\\\"),sY(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});const a=Sd();a.x=e.x,a.y=e.y,a.fill=e.fill,a.width=r.width,a.height=r.height,a.class=\\\"task task-type-\\\"+e.num,a.rx=3,a.ry=3,Pu(i,a);let o=e.x+14;e.people.forEach(l=>{const u=e.actors[l].color,d={cx:o,cy:e.y,r:7,fill:u,stroke:\\\"#000\\\",title:l,pos:e.actors[l].position};O4(i,d),o+=10}),P4(r)(e.task,i,a.x,a.y,a.width,a.height,{class:\\\"task\\\"},r,e.colour)},cY=function(t,e){Pu(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:\\\"rect\\\"}).lower()},uY=function(){return{x:0,y:0,fill:void 0,\\\"text-anchor\\\":\\\"start\\\",width:100,height:100,textMargin:0,rx:0,ry:0}},Sd=function(){return{x:0,y:0,width:100,anchor:\\\"start\\\",height:100,rx:0,ry:0}},P4=function(){function t(i,s,a,o,l,u,d,f){const p=s.append(\\\"text\\\").attr(\\\"x\\\",a+l/2).attr(\\\"y\\\",o+u/2+5).style(\\\"font-color\\\",f).style(\\\"text-anchor\\\",\\\"middle\\\").text(i);n(p,d)}function e(i,s,a,o,l,u,d,f,p){const{taskFontSize:g,taskFontFamily:b}=f,k=i.split(/\u003Cbr\\\\s*\\\\/?>/gi);for(let T=0;T\u003Ck.length;T++){const L=T*g-g*(k.length-1)/2,E=s.append(\\\"text\\\").attr(\\\"x\\\",a+l/2).attr(\\\"y\\\",o).attr(\\\"fill\\\",p).style(\\\"text-anchor\\\",\\\"middle\\\").style(\\\"font-size\\\",g).style(\\\"font-family\\\",b);E.append(\\\"tspan\\\").attr(\\\"x\\\",a+l/2).attr(\\\"dy\\\",L).text(k[T]),E.attr(\\\"y\\\",o+u/2).attr(\\\"dominant-baseline\\\",\\\"central\\\").attr(\\\"alignment-baseline\\\",\\\"central\\\"),n(E,d)}}function r(i,s,a,o,l,u,d,f){const p=s.append(\\\"switch\\\"),b=p.append(\\\"foreignObject\\\").attr(\\\"x\\\",a).attr(\\\"y\\\",o).attr(\\\"width\\\",l).attr(\\\"height\\\",u).attr(\\\"position\\\",\\\"fixed\\\").append(\\\"xhtml:div\\\").style(\\\"display\\\",\\\"table\\\").style(\\\"height\\\",\\\"100%\\\").style(\\\"width\\\",\\\"100%\\\");b.append(\\\"div\\\").attr(\\\"class\\\",\\\"label\\\").style(\\\"display\\\",\\\"table-cell\\\").style(\\\"text-align\\\",\\\"center\\\").style(\\\"vertical-align\\\",\\\"middle\\\").text(i),e(i,p,a,o,l,u,d,f),n(b,d)}function n(i,s){for(const a in s)a in s&&i.attr(a,s[a])}return function(i){return i.textPlacement===\\\"fo\\\"?r:i.textPlacement===\\\"old\\\"?t:e}}(),al={drawRect:Pu,drawCircle:O4,drawSection:oY,drawText:R4,drawLabel:aY,drawTask:lY,drawBackgroundRect:cY,getTextObj:uY,getNoteRect:Sd,initGraphics:function(t){t.append(\\\"defs\\\").append(\\\"marker\\\").attr(\\\"id\\\",\\\"arrowhead\\\").attr(\\\"refX\\\",5).attr(\\\"refY\\\",2).attr(\\\"markerWidth\\\",6).attr(\\\"markerHeight\\\",4).attr(\\\"orient\\\",\\\"auto\\\").append(\\\"path\\\").attr(\\\"d\\\",\\\"M 0,0 V 4 L6,2 Z\\\")}},hY=function(t){Object.keys(t).forEach(function(r){Yu[r]=t[r]})},Si={};function dY(t){const e=$().journey;let r=60;Object.keys(Si).forEach(n=>{const i=Si[n].color,s={cx:20,cy:r,r:7,fill:i,stroke:\\\"#000\\\",pos:Si[n].position};al.drawCircle(t,s);const a={x:40,y:r+7,fill:\\\"#666\\\",text:n,textMargin:e.boxTextMargin|5};al.drawText(t,a),r+=20})}const Yu=$().journey,Ns=Yu.leftMargin,fY=function(t,e,r,n){const i=$().journey;n.db.clear(),n.parser.parse(t+`\\n`);const s=$().securityLevel;let a;s===\\\"sandbox\\\"&&(a=St(\\\"#i\\\"+e));const o=St(s===\\\"sandbox\\\"?a.nodes()[0].contentDocument.body:\\\"body\\\");an.init();const l=o.select(\\\"#\\\"+e);al.initGraphics(l);const u=n.db.getTasks(),d=n.db.getDiagramTitle(),f=n.db.getActors();for(const L in Si)delete Si[L];let p=0;f.forEach(L=>{Si[L]={color:i.actorColours[p%i.actorColours.length],position:p},p++}),dY(l),an.insert(0,0,Ns,Object.keys(Si).length*50),pY(l,u,0);const g=an.getBounds();d&&l.append(\\\"text\\\").text(d).attr(\\\"x\\\",Ns).attr(\\\"font-size\\\",\\\"4ex\\\").attr(\\\"font-weight\\\",\\\"bold\\\").attr(\\\"y\\\",25);const b=g.stopy-g.starty+2*i.diagramMarginY,k=Ns+g.stopx+2*i.diagramMarginX;xn(l,b,k,i.useMaxWidth),l.append(\\\"line\\\").attr(\\\"x1\\\",Ns).attr(\\\"y1\\\",i.height*4).attr(\\\"x2\\\",k-Ns-4).attr(\\\"y2\\\",i.height*4).attr(\\\"stroke-width\\\",4).attr(\\\"stroke\\\",\\\"black\\\").attr(\\\"marker-end\\\",\\\"url(#arrowhead)\\\");const T=d?70:0;l.attr(\\\"viewBox\\\",`${g.startx} -25 ${k} ${b+T}`),l.attr(\\\"preserveAspectRatio\\\",\\\"xMinYMin meet\\\"),l.attr(\\\"height\\\",b+T+25)},an={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},updateBounds:function(t,e,r,n){const i=$().journey,s=this;let a=0;function o(l){return function(d){a++;const f=s.sequenceItems.length-a+1;s.updateVal(d,\\\"starty\\\",e-f*i.boxMargin,Math.min),s.updateVal(d,\\\"stopy\\\",n+f*i.boxMargin,Math.max),s.updateVal(an.data,\\\"startx\\\",t-f*i.boxMargin,Math.min),s.updateVal(an.data,\\\"stopx\\\",r+f*i.boxMargin,Math.max),l!==\\\"activation\\\"&&(s.updateVal(d,\\\"startx\\\",t-f*i.boxMargin,Math.min),s.updateVal(d,\\\"stopx\\\",r+f*i.boxMargin,Math.max),s.updateVal(an.data,\\\"starty\\\",e-f*i.boxMargin,Math.min),s.updateVal(an.data,\\\"stopy\\\",n+f*i.boxMargin,Math.max))}}this.sequenceItems.forEach(o())},insert:function(t,e,r,n){const i=Math.min(t,r),s=Math.max(t,r),a=Math.min(e,n),o=Math.max(e,n);this.updateVal(an.data,\\\"startx\\\",i,Math.min),this.updateVal(an.data,\\\"starty\\\",a,Math.min),this.updateVal(an.data,\\\"stopx\\\",s,Math.max),this.updateVal(an.data,\\\"stopy\\\",o,Math.max),this.updateBounds(i,a,s,o)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Ad=Yu.sectionFills,Y4=Yu.sectionColours,pY=function(t,e,r){const n=$().journey;let i=\\\"\\\";const s=n.height*2+n.diagramMarginY,a=r+s;let o=0,l=\\\"#CCC\\\",u=\\\"black\\\",d=0;for(const[f,p]of e.entries()){if(i!==p.section){l=Ad[o%Ad.length],d=o%Ad.length,u=Y4[o%Y4.length];const b={x:f*n.taskMargin+f*n.width+Ns,y:50,text:p.section,fill:l,num:d,colour:u};al.drawSection(t,b,n),i=p.section,o++}const g=p.people.reduce((b,k)=>(Si[k]&&(b[k]=Si[k]),b),{});p.x=f*n.taskMargin+f*n.width+Ns,p.y=a,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=u,p.fill=l,p.num=d,p.actors=g,al.drawTask(t,p,n),an.insert(p.x,p.y,p.x+p.width+n.taskMargin,300+5*30)}},V4={setConf:hY,draw:fY};let U4={};const Ld={setConf:function(t){U4={...U4,...t}},draw:(t,e,r)=>{try{B.debug(`Renering svg for syntax error\\n`);const n=St(\\\"#\\\"+e),i=n.append(\\\"g\\\");i.append(\\\"path\\\").attr(\\\"class\\\",\\\"error-icon\\\").attr(\\\"d\\\",\\\"m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z\\\"),i.append(\\\"path\\\").attr(\\\"class\\\",\\\"error-icon\\\").attr(\\\"d\\\",\\\"m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z\\\"),i.append(\\\"path\\\").attr(\\\"class\\\",\\\"error-icon\\\").attr(\\\"d\\\",\\\"m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z\\\"),i.append(\\\"path\\\").attr(\\\"class\\\",\\\"error-icon\\\").attr(\\\"d\\\",\\\"m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z\\\"),i.append(\\\"path\\\").attr(\\\"class\\\",\\\"error-icon\\\").attr(\\\"d\\\",\\\"m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z\\\"),i.append(\\\"path\\\").attr(\\\"class\\\",\\\"error-icon\\\").attr(\\\"d\\\",\\\"m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z\\\"),i.append(\\\"text\\\").attr(\\\"class\\\",\\\"error-text\\\").attr(\\\"x\\\",1440).attr(\\\"y\\\",250).attr(\\\"font-size\\\",\\\"150px\\\").style(\\\"text-anchor\\\",\\\"middle\\\").text(\\\"Syntax error in graph\\\"),i.append(\\\"text\\\").attr(\\\"class\\\",\\\"error-text\\\").attr(\\\"x\\\",1250).attr(\\\"y\\\",400).attr(\\\"font-size\\\",\\\"100px\\\").style(\\\"text-anchor\\\",\\\"middle\\\").text(\\\"mermaid version \\\"+r),n.attr(\\\"height\\\",100),n.attr(\\\"width\\\",500),n.attr(\\\"viewBox\\\",\\\"768 0 912 512\\\")}catch(n){B.error(\\\"Error while rendering info diagram\\\"),B.error(UT(n))}}};let z4=!1;const ol=()=>{z4||(z4=!0,yr(\\\"error\\\",{db:{clear:()=>{}},styles:eg,renderer:Ld,parser:{parser:{yy:{}},parse:()=>{}},init:()=>{}},t=>t.toLowerCase().trim()===\\\"error\\\"),yr(\\\"c4\\\",{parser:HE,db:xg,renderer:Lg,styles:lg,init:t=>{Lg.setConf(t.c4)}},GE),yr(\\\"class\\\",{parser:Dg,db:fa,renderer:dB,styles:go,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,fa.clear()}},MC),yr(\\\"classDiagram\\\",{parser:Dg,db:fa,renderer:uI,styles:go,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,fa.clear()}},NC),yr(\\\"er\\\",{parser:hI,db:yI,renderer:DI,styles:tg},dI),yr(\\\"gantt\\\",{parser:XO,db:Z0,renderer:SR,styles:rg},KO),yr(\\\"info\\\",{parser:AR,db:LR,renderer:DR,styles:ng},MR),yr(\\\"pie\\\",{parser:NR,db:IR,renderer:OR,styles:ig},BR),yr(\\\"requirement\\\",{parser:RR,db:PR,renderer:GR,styles:sg},FR),yr(\\\"sequence\\\",{parser:qR,db:j3,renderer:i4,styles:ag,init:t=>{if(t.sequence||(t.sequence={}),t.sequence.arrowMarkerAbsolute=t.arrowMarkerAbsolute,\\\"sequenceDiagram\\\"in t)throw new Error(\\\"`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.\\\");j3.setWrap(t.wrap),i4.setConf(t.sequence)}},jR),yr(\\\"state\\\",{parser:s4,db:Ci,renderer:LP,styles:Lc,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Ci.clear()}},UF),yr(\\\"stateDiagram\\\",{parser:s4,db:Ci,renderer:$P,styles:Lc,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Ci.clear()}},zF),yr(\\\"journey\\\",{parser:XP,db:I4,renderer:V4,styles:og,init:t=>{V4.setConf(t.journey),I4.clear()}},KP),yr(\\\"flowchart\\\",{parser:jm,db:vi,renderer:Y0,styles:Ac,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,jO.setConf(t.flowchart),vi.clear(),vi.setGen(\\\"gen-1\\\")}},MI),yr(\\\"flowchart-v2\\\",{parser:jm,db:vi,renderer:Y0,styles:Ac,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Xp({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}}),Y0.setConf(t.flowchart),vi.clear(),vi.setGen(\\\"gen-2\\\")}},NI),yr(\\\"gitGraph\\\",{parser:gE,db:OE,renderer:zE,styles:WE},yE))};class Dd{constructor(e,r){za(this,\\\"type\\\",\\\"graph\\\");za(this,\\\"parser\\\");za(this,\\\"renderer\\\");za(this,\\\"db\\\");za(this,\\\"detectTypeFailed\\\",!1);var a,o;this.txt=e;const n=$();this.txt=e;try{this.type=h1(e,n)}catch(l){this.handleError(l,r),this.type=\\\"error\\\",this.detectTypeFailed=!0}const i=ug(this.type);B.debug(\\\"Type \\\"+this.type),this.db=i.db,(o=(a=this.db).clear)==null||o.call(a),this.renderer=i.renderer,this.parser=i.parser;const s=this.parser.parse.bind(this.parser);this.parser.parse=l=>s(_7(l,this.db)),this.parser.parser.yy=this.db,i.init&&(i.init(n),B.debug(\\\"Initialized diagram \\\"+this.type,n)),this.txt+=`\\n`,this.parse(this.txt,r)}parse(e,r){var n,i;if(this.detectTypeFailed)return!1;try{return e=e+`\\n`,(i=(n=this.db).clear)==null||i.call(n),this.parser.parse(e),!0}catch(s){this.handleError(s,r)}return!1}handleError(e,r){if(r===void 0)throw e;if(m1(e)){r(e.str,e.hash);return}r(e)}getParser(){return this.parser}getType(){return this.type}}const Md=(t,e)=>{const r=h1(t,$());try{ug(r)}catch{const i=k7(r);if(!i)throw new Error(`Diagram ${r} not found.`);return i().then(({diagram:s})=>(yr(r,s,void 0),new Dd(t,e)))}return new Dd(t,e)},Nd=Dd;function gY(t,e){wa(e)||t.attr(\\\"aria-roledescription\\\",e)}function yY(t,e,r,n){if(t.insert!==void 0)if(e||r){if(r){const i=\\\"chart-desc-\\\"+n;t.attr(\\\"aria-describedby\\\",i),t.insert(\\\"desc\\\",\\\":first-child\\\").attr(\\\"id\\\",i).text(r)}if(e){const i=\\\"chart-title-\\\"+n;t.attr(\\\"aria-labelledby\\\",i),t.insert(\\\"title\\\",\\\":first-child\\\").attr(\\\"id\\\",i).text(e)}}else return}const Bd=[\\\"graph\\\",\\\"flowchart\\\",\\\"flowchart-v2\\\",\\\"stateDiagram\\\",\\\"stateDiagram-v2\\\"],W4=\\\"graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa\\\",H4=\\\"sandbox\\\",G4=\\\"loose\\\",mY=\\\"http://www.w3.org/2000/svg\\\",q4=\\\"http://www.w3.org/1999/xlink\\\",j4=\\\"http://www.w3.org/1999/xhtml\\\",bY=\\\"100%\\\",_Y=\\\"100%\\\",xY=\\\"border:0;margin:0;\\\",vY=\\\"margin:0\\\",kY=\\\"allow-top-navigation-by-user-activation allow-popups\\\",wY='The \\\"iframe\\\" tag is not supported by your browser.',$4=[\\\"foreignobject\\\"],X4=[\\\"dominant-baseline\\\"];function TY(t,e){return ol(),new Nd(t,e).parse(t,e)}async function EY(t,e){return ol(),(await Md(t,e)).parse(t,e)}const K4=function(t){let e=t;return e=e.replace(/style.*:\\\\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\\\\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\\\\w+;/g,function(r){const n=r.substring(1,r.length-1);return/^\\\\+?\\\\d+$/.test(n)?\\\"\\\\uFB02\\\\xB0\\\\xB0\\\"+n+\\\"\\\\xB6\\\\xDF\\\":\\\"\\\\uFB02\\\\xB0\\\"+n+\\\"\\\\xB6\\\\xDF\\\"}),e},Id=function(t){let e=t;return e=e.replace(/fl°°/g,\\\"&#\\\"),e=e.replace(/fl°/g,\\\"&\\\"),e=e.replace(/¶ß/g,\\\";\\\"),e},Z4=(t,e,r=[])=>`\\n.${t} ${e} { ${r.join(\\\" !important; \\\")} !important; }`,CY=(t,e,r={})=>{var i;let n=\\\"\\\";if(t.themeCSS!==void 0&&(n+=`\\n${t.themeCSS}`),t.fontFamily!==void 0&&(n+=`\\n:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(n+=`\\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!wa(r)&&Bd.includes(e)){const l=t.htmlLabels||((i=t.flowchart)==null?void 0:i.htmlLabels)?[\\\"> *\\\",\\\"span\\\"]:[\\\"rect\\\",\\\"polygon\\\",\\\"ellipse\\\",\\\"circle\\\",\\\"path\\\"];for(const u in r){const d=r[u];wa(d.styles)||l.forEach(f=>{n+=Z4(d.id,f,d.styles)}),wa(d.textStyles)||(n+=Z4(d.id,\\\"tspan\\\",d.textStyles))}}return n},Q4=(t,e,r,n)=>{const i=CY(t,e,r),s=hE(e,i,t.themeVariables);return T1(tE(`${n}{${s}}`),rE)},J4=(t=\\\"\\\",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end=\\\"url\\\\(.*?#/g,'marker-end=\\\"url(#')),n=Id(n),n=n.replace(/\u003Cbr>/g,\\\"\u003Cbr/>\\\"),n},tb=(t=\\\"\\\",e)=>{const r=e?e.viewBox.baseVal.height+\\\"px\\\":_Y,n=btoa('\u003Cbody style=\\\"'+vY+'\\\">'+t+\\\"\u003C/body>\\\");return`\u003Ciframe style=\\\"width:${bY};height:${r};${xY}\\\" src=\\\"data:text/html;base64,${n}\\\" sandbox=\\\"${kY}\\\">\\n ${wY}\\n\u003C/iframe>`},Vu=(t,e,r,n,i)=>{const s=t.append(\\\"div\\\");s.attr(\\\"id\\\",r),n&&s.attr(\\\"style\\\",n);const a=s.append(\\\"svg\\\").attr(\\\"id\\\",e).attr(\\\"width\\\",\\\"100%\\\").attr(\\\"xmlns\\\",mY);return i&&a.attr(\\\"xmlns:xlink\\\",i),a.append(\\\"g\\\"),t};function Uu(t,e){return t.append(\\\"iframe\\\").attr(\\\"id\\\",e).attr(\\\"style\\\",\\\"width: 100%; height: 100%;\\\").attr(\\\"sandbox\\\",\\\"\\\")}const eb=(t,e,r,n)=>{var i,s,a;(i=t.getElementById(e))==null||i.remove(),(s=t.getElementById(r))==null||s.remove(),(a=t.getElementById(n))==null||a.remove()},SY=function(t,e,r,n){var m,Q,x,ct,Dt;ol(),po();const i=ge.detectInit(e);i&&(bs(i),E1(i));const s=$();B.debug(s),e.length>((m=s==null?void 0:s.maxTextSize)!=null?m:5e4)&&(e=W4),e=e.replace(/\\\\r\\\\n?/g,`\\n`);const a=\\\"#\\\"+t,o=\\\"i\\\"+t,l=\\\"#\\\"+o,u=\\\"d\\\"+t,d=\\\"#\\\"+u;let f=St(\\\"body\\\");const p=s.securityLevel===H4,g=s.securityLevel===G4,b=s.fontFamily;if(n!==void 0){if(n&&(n.innerHTML=\\\"\\\"),p){const kt=Uu(St(n),o);f=St(kt.nodes()[0].contentDocument.body),f.node().style.margin=0}else f=St(n);Vu(f,t,u,`font-family: ${b}`,q4)}else{if(eb(document,t,u,o),p){const kt=Uu(St(\\\"body\\\"),o);f=St(kt.nodes()[0].contentDocument.body),f.node().style.margin=0}else f=St(\\\"body\\\");Vu(f,t,u)}e=K4(e);let k,T;try{if(k=Md(e),\\\"then\\\"in k)throw new Error(\\\"Diagram is a promise. Use renderAsync.\\\")}catch(kt){k=new Nd(\\\"error\\\"),T=kt}const L=f.select(d).node(),E=k.type,I=L.firstChild,V=I.firstChild,H=Bd.includes(E)?k.renderer.getClasses(e,k):{},G=Q4(s,E,H,a),Y=document.createElement(\\\"style\\\");Y.innerHTML=G,I.insertBefore(Y,V);try{k.renderer.draw(e,t,Ec.version,k)}catch(kt){throw Ld.draw(e,t,Ec.version),kt}const W=f.select(`${d} svg`),N=(x=(Q=k.db).getAccTitle)==null?void 0:x.call(Q),D=(Dt=(ct=k.db).getAccDescription)==null?void 0:Dt.call(ct);rb(E,W,N,D),f.select(`[id=\\\"${t}\\\"]`).selectAll(\\\"foreignobject > *\\\").attr(\\\"xmlns\\\",j4);let w=f.select(d).node().innerHTML;if(B.debug(\\\"config.arrowMarkerAbsolute\\\",s.arrowMarkerAbsolute),w=J4(w,p,pr(s.arrowMarkerAbsolute)),p){const kt=f.select(d+\\\" svg\\\").node();w=tb(w,kt)}else g||(w=io.sanitize(w,{ADD_TAGS:$4,ADD_ATTR:X4}));if(r!==void 0)switch(E){case\\\"flowchart\\\":case\\\"flowchart-v2\\\":r(w,vi.bindFunctions);break;case\\\"gantt\\\":r(w,Z0.bindFunctions);break;case\\\"class\\\":case\\\"classDiagram\\\":r(w,fa.bindFunctions);break;default:r(w)}else B.debug(\\\"CB = undefined!\\\");$3();const M=St(p?l:d).node();if(M&&\\\"remove\\\"in M&&M.remove(),T)throw T;return w},AY=async function(t,e,r,n){var m,Q,x,ct,Dt;ol(),po();const i=ge.detectInit(e);i&&(bs(i),E1(i));const s=$();B.debug(s),e.length>((m=s==null?void 0:s.maxTextSize)!=null?m:5e4)&&(e=W4),e=e.replace(/\\\\r\\\\n?/g,`\\n`);const a=\\\"#\\\"+t,o=\\\"i\\\"+t,l=\\\"#\\\"+o,u=\\\"d\\\"+t,d=\\\"#\\\"+u;let f=St(\\\"body\\\");const p=s.securityLevel===H4,g=s.securityLevel===G4,b=s.fontFamily;if(n!==void 0){if(n&&(n.innerHTML=\\\"\\\"),p){const kt=Uu(St(n),o);f=St(kt.nodes()[0].contentDocument.body),f.node().style.margin=0}else f=St(n);Vu(f,t,u,`font-family: ${b}`,q4)}else{if(eb(document,t,u,o),p){const kt=Uu(St(\\\"body\\\"),o);f=St(kt.nodes()[0].contentDocument.body),f.node().style.margin=0}else f=St(\\\"body\\\");Vu(f,t,u)}e=K4(e);let k,T;try{k=await Md(e)}catch(kt){k=new Nd(\\\"error\\\"),T=kt}const L=f.select(d).node(),E=k.type,I=L.firstChild,V=I.firstChild,H=Bd.includes(E)?k.renderer.getClasses(e,k):{},G=Q4(s,E,H,a),Y=document.createElement(\\\"style\\\");Y.innerHTML=G,I.insertBefore(Y,V);try{await k.renderer.draw(e,t,Ec.version,k)}catch(kt){throw Ld.draw(e,t,Ec.version),kt}const W=f.select(`${d} svg`),N=(x=(Q=k.db).getAccTitle)==null?void 0:x.call(Q),D=(Dt=(ct=k.db).getAccDescription)==null?void 0:Dt.call(ct);rb(E,W,N,D),f.select(`[id=\\\"${t}\\\"]`).selectAll(\\\"foreignobject > *\\\").attr(\\\"xmlns\\\",j4);let w=f.select(d).node().innerHTML;if(B.debug(\\\"config.arrowMarkerAbsolute\\\",s.arrowMarkerAbsolute),w=J4(w,p,pr(s.arrowMarkerAbsolute)),p){const kt=f.select(d+\\\" svg\\\").node();w=tb(w,kt)}else g||(w=io.sanitize(w,{ADD_TAGS:$4,ADD_ATTR:X4}));if(r!==void 0)switch(E){case\\\"flowchart\\\":case\\\"flowchart-v2\\\":r(w,vi.bindFunctions);break;case\\\"gantt\\\":r(w,Z0.bindFunctions);break;case\\\"class\\\":case\\\"classDiagram\\\":r(w,fa.bindFunctions);break;default:r(w)}else B.debug(\\\"CB = undefined!\\\");$3();const M=St(p?l:d).node();if(M&&\\\"remove\\\"in M&&M.remove(),T)throw T;return w};let Bs={};const LY=function(t,e,r,n){try{if(e!==void 0)switch(e=e.trim(),r){case\\\"open_directive\\\":Bs={};break;case\\\"type_directive\\\":if(!Bs)throw new Error(\\\"currentDirective is undefined\\\");Bs.type=e.toLowerCase();break;case\\\"arg_directive\\\":if(!Bs)throw new Error(\\\"currentDirective is undefined\\\");Bs.args=JSON.parse(e);break;case\\\"close_directive\\\":DY(t,Bs,n),Bs=void 0;break}}catch(i){B.error(`Error while rendering sequenceDiagram directive: ${e} jison context: ${r}`),B.error(i.message)}},DY=function(t,e,r){switch(B.debug(`Directive type=${e.type} with args:`,e.args),e.type){case\\\"init\\\":case\\\"initialize\\\":{[\\\"config\\\"].forEach(n=>{e.args[n]!==void 0&&(r===\\\"flowchart-v2\\\"&&(r=\\\"flowchart\\\"),e.args[r]=e.args[n],delete e.args[n])}),B.debug(\\\"sanitize in handleDirective\\\",e.args),bs(e.args),B.debug(\\\"sanitize in handleDirective (done)\\\",e.args),E1(e.args);break}case\\\"wrap\\\":case\\\"nowrap\\\":t&&t.setWrap&&t.setWrap(e.type===\\\"wrap\\\");break;case\\\"themeCss\\\":B.warn(\\\"themeCss encountered\\\");break;default:B.warn(`Unhandled directive: source: '%%{${e.type}: ${JSON.stringify(e.args?e.args:{})}}%%`,e);break}};function MY(t={}){var r;(t==null?void 0:t.fontFamily)&&!((r=t.themeVariables)!=null&&r.fontFamily)&&(t.themeVariables={fontFamily:t.fontFamily}),iE(t),(t==null?void 0:t.theme)&&t.theme in oi?t.themeVariables=oi[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=oi.default.getThemeVariables(t.themeVariables));const e=typeof t==\\\"object\\\"?nE(t):$p();Qu(e.logLevel),ol()}function rb(t,e,r,n){gY(e,t),yY(e,r,n,e.attr(\\\"id\\\"))}const ze=Object.freeze({render:SY,renderAsync:AY,parse:TY,parseAsync:EY,parseDirective:LY,initialize:MY,getConfig:$,setConfig:Xp,getSiteConfig:$p,updateSiteConfig:sE,reset:()=>{po()},globalReset:()=>{po(ha)},defaultConfig:ha});Qu($().logLevel),po($());let nb=!1;const NY=async function(t,e,r){try{nb?await ab(t,e,r):sb(t,e,r)}catch(n){B.warn(\\\"Syntax Error rendering\\\"),m1(n)&&B.warn(n.str),on.parseError&&on.parseError(n)}},ib=(t,e,r)=>{B.warn(t),m1(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},sb=function(t,e,r){const n=ze.getConfig();t&&(on.sequenceConfig=t),B.debug(`${r?\\\"\\\":\\\"No \\\"}Callback function found`);let i;if(e===void 0)i=document.querySelectorAll(\\\".mermaid\\\");else if(typeof e==\\\"string\\\")i=document.querySelectorAll(e);else if(e instanceof HTMLElement)i=[e];else if(e instanceof NodeList)i=e;else throw new Error(\\\"Invalid argument nodes for mermaid.init\\\");B.debug(`Found ${i.length} diagrams`),(t==null?void 0:t.startOnLoad)!==void 0&&(B.debug(\\\"Start On Load: \\\"+(t==null?void 0:t.startOnLoad)),ze.updateSiteConfig({startOnLoad:t==null?void 0:t.startOnLoad}));const s=new ge.initIdGenerator(n.deterministicIds,n.deterministicIDSeed);let a;const o=[];for(const l of Array.from(i)){B.info(\\\"Rendering diagram: \\\"+l.id);/*! Check if previously processed */if(l.getAttribute(\\\"data-processed\\\"))continue;l.setAttribute(\\\"data-processed\\\",\\\"true\\\");const u=`mermaid-${s.next()}`;a=l.innerHTML,a=ge.entityDecode(a).trim().replace(/\u003Cbr\\\\s*\\\\/?>/gi,\\\"\u003Cbr/>\\\");const d=ge.detectInit(a);d&&B.debug(\\\"Detected early reinit: \\\",d);try{ze.render(u,a,(f,p)=>{l.innerHTML=f,r!==void 0&&r(u),p&&p(l)},l)}catch(f){ib(f,o,on.parseError)}}if(o.length>0)throw o[0]},BY=t=>{for(const{id:e,detector:r,loader:n}of t)Lp(e,r,n)},IY=async t=>{B.debug(`Loading ${t.length} external diagrams`);const r=(await Promise.allSettled(t.map(async({id:n,detector:i,loader:s})=>{const{diagram:a}=await s();yr(n,a,i)}))).filter(n=>n.status===\\\"rejected\\\");if(r.length>0){B.error(`Failed to load ${r.length} external diagrams`);for(const n of r)B.error(n);throw new Error(`Failed to load ${r.length} external diagrams`)}},ab=async function(t,e,r){const n=ze.getConfig();t&&(on.sequenceConfig=t),B.debug(`${r?\\\"\\\":\\\"No \\\"}Callback function found`);let i;if(e===void 0)i=document.querySelectorAll(\\\".mermaid\\\");else if(typeof e==\\\"string\\\")i=document.querySelectorAll(e);else if(e instanceof HTMLElement)i=[e];else if(e instanceof NodeList)i=e;else throw new Error(\\\"Invalid argument nodes for mermaid.init\\\");B.debug(`Found ${i.length} diagrams`),(t==null?void 0:t.startOnLoad)!==void 0&&(B.debug(\\\"Start On Load: \\\"+(t==null?void 0:t.startOnLoad)),ze.updateSiteConfig({startOnLoad:t==null?void 0:t.startOnLoad}));const s=new ge.initIdGenerator(n.deterministicIds,n.deterministicIDSeed);let a;const o=[];for(const l of Array.from(i)){B.info(\\\"Rendering diagram: \\\"+l.id);/*! Check if previously processed */if(l.getAttribute(\\\"data-processed\\\"))continue;l.setAttribute(\\\"data-processed\\\",\\\"true\\\");const u=`mermaid-${s.next()}`;a=l.innerHTML,a=ge.entityDecode(a).trim().replace(/\u003Cbr\\\\s*\\\\/?>/gi,\\\"\u003Cbr/>\\\");const d=ge.detectInit(a);d&&B.debug(\\\"Detected early reinit: \\\",d);try{await ze.renderAsync(u,a,(f,p)=>{l.innerHTML=f,r!==void 0&&r(u),p&&p(l)},l)}catch(f){ib(f,o,on.parseError)}}if(o.length>0)throw o[0]},OY=function(t){ze.initialize(t)},RY=async(t,{lazyLoad:e=!0}={})=>{e?BY(t):await IY(t),nb=!0},ob=function(){if(on.startOnLoad){const{startOnLoad:t}=ze.getConfig();t&&on.init()}};if(typeof document\u003C\\\"u\\\"){/*!\\n * Wait for document loaded before starting the execution\\n */window.addEventListener(\\\"load\\\",ob,!1)}const FY=function(t){on.parseError=t},PY=t=>ze.parse(t,on.parseError),zu=[];let Od=!1;const lb=async()=>{if(!Od){for(Od=!0;zu.length>0;){const t=zu.shift();if(t)try{await t()}catch(e){B.error(\\\"Error executing queue\\\",e)}}Od=!1}},YY=t=>new Promise((e,r)=>{const n=()=>new Promise((i,s)=>{ze.parseAsync(t,on.parseError).then(a=>{i(a),e(a)},a=>{B.error(\\\"Error parsing\\\",a),s(a),r(a)})});zu.push(n),lb()}),VY=(t,e,r,n)=>new Promise((i,s)=>{const a=()=>new Promise((o,l)=>{ze.renderAsync(t,e,r,n).then(u=>{o(u),i(u)},u=>{B.error(\\\"Error parsing\\\",u),l(u),s(u)})});zu.push(a),lb()}),on={startOnLoad:!0,diagrams:{},mermaidAPI:ze,parse:PY,parseAsync:YY,render:ze.render,renderAsync:VY,init:NY,initThrowsErrors:sb,initThrowsErrorsAsync:ab,registerExternalDiagrams:RY,initialize:OY,parseError:void 0,contentLoaded:ob,setParseErrorHandler:FY};return on});\\n//# sourceMappingURL=mermaid.min.js.map\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/orange/mermaid-tw5/readme\":{\"title\":\"$:/plugins/orange/mermaid-tw5/readme\",\"text\":\"This is a TiddlyWiki plugin for using [[mermaid.js|https://github.com/mermaid-js/mermaid]]. It is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js. It is currently based on [[mermaid.js 9.3.0|https://github.com/mermaid-js/mermaid/releases/tag/v9.3.0]]\\n\\n\\n!Installation\\n\\nYou can drag the plugin link into your TiddlyWiki to install, from http://efurlanm.github.io/mermaid-tw5\\n\\n\\n!Info\\n\\nThe Mermaid TW5 Plugin is based on:\\n\\n* http://github.com/gt6796c/mermaid-tw5\\n* http://github.com/jasonmhoule/tw5-mermaid\\n* http://github.com/cedarvera/mermaid-tw5\\n* http://github.com/jceb/mermaid-tw5\\n* https://github.com/mermaid-js/mermaid\\n* and others\\n\\nThere is a [[post|https://talk.tiddlywiki.org/t/mermaid-tw5-plugin-update-to-mermaid-8-13-2/1117]] on the TiddlyWiki 5 Discourse discussion group for end users, regarding this plugin.\\n\"},\"$:/plugins/orange/mermaid-tw5/typed-parser.js\":{\"title\":\"$:/plugins/orange/mermaid-tw5/typed-parser.js\",\"text\":\"/*\\ntitle: $:/plugins/orange/mermaid-tw5/typed-parser.js\\ntype: application/javascript\\nmodule-type: parser\\nauthor: Nathaniel Jones 2017-05-26\\nmodified: E Furlan 2022-05-08\\n\\nThis parser wraps unadorned railroad syntax into a railroad widget\\n\\n*/\\n(function() {\\n // jslint node: true, browser: true\\n // global $tw: false\\n 'use strict';\\n let MermaidParser = function(type, text, options) {\\n let element = {\\n type: \\\"mermaid\\\",\\n tag: \\\"$mermaid\\\",\\n text: text\\n };\\n this.tree = [element];\\n };\\n exports[\\\"text/vnd.tiddlywiki.mermaid\\\"] = MermaidParser;\\n})();\\n\",\"module-type\":\"parser\",\"type\":\"application/javascript\"},\"$:/plugins/orange/mermaid-tw5/usage\":{\"title\":\"$:/plugins/orange/mermaid-tw5/usage\",\"text\":\"!mermaid\\n\\nUse the ``\u003C$mermaid>`` widget and place the mermaid commands within it. Any of the options that can be specified\\nin the ``.render()`` options variable can be specified as JSON-encoded values in attributes of the same name on the widgets.\\nThe values of the attributes can also be the title of Data Tiddlers and the values will be used from the referenced Tiddler.\\nYou can set the type of a Tiddler to text/vnd.tiddlywiki.mermaid and use the native commands directly in the Tiddler body. You can\\nadd fields that are the names below prefixed with 'mermaid'. So \\\"theme\\\" becomes \\\"mermaid-theme\\\"\\n\\n!Troubleshooting\\n\\n*When in doubt, please create a test case by creating a tiddler that has ``type=text/vnd.tiddlywiki.mermaid`` and contains ''only'' mermaid commands, (no TW markup or other contents)\\n*TW treats any text inside of a Tiddler designated as a \\\"normal Twiddler\\\" (meaning type=text/vnd.tiddlywiki) as Tiddler Markup. Full stop. I've put into place some \\\"unparsing\\\" but it is twitchy difficult to maintain and buggy. So if you have cool, advanced uses of mermaid that fail in the ``\u003C$mermaid>`` tag but work on with the type setup as mermaid, then that is probably the best you're going to get\\n*As much as I'd like to make this not be this way, it just isn't possible with my skills/understanding\\n*JSON encoding only allows double-quotes ``\\\"`` as string delimiters\\n*JSON encoding requires double-quotes around single string values\\n\"},\"$:/plugins/orange/mermaid-tw5/widget-tools.js\":{\"title\":\"$:/plugins/orange/mermaid-tw5/widget-tools.js\",\"text\":\"/*\\ntitle: $:/plugins/orange/mermaid-tw5/widget-tools.js\\ntype: application/javascript\\nauthor: Nathaniel Jones 2017-05-26\\nmodified: E Furlan 2022-05-08\\n*/\\n(function() {\\n \\\"use strict\\\";\\n\\n function Rocklib() {\\n this.uniqueID = 1;\\n this.hue = .2;\\n };\\n // tries to un-parse the wikitext. of dubious value\\n Rocklib.prototype.getScriptBody = function(src, attr) {\\n var scriptBody = src.getAttribute(attr, src\\n .parseTreeNode.text || \\\"\\\");\\n if (src.parseTreeNode.text) {\\n scriptBody = src.parseTreeNode.text;\\n } else if (src.parseTreeNode.children) {\\n var kids = src.parseTreeNode.children;\\n for (var k in kids) {\\n var kk = kids[k];\\n switch (kk.type) {\\n // no wikiparsing found\\n case \\\"text\\\":\\n scriptBody += kk.text;\\n break;\\n // internal link, make it a permalink reference\\n case \\\"link\\\":\\n scriptBody += \\\"#\\\" + kk.children[0].text;\\n break;\\n // -- gets interpreted as an HTML element, we\\n // don't want that\\n case \\\"entity\\\":\\n switch (kk.entity) {\\n case \\\"–\\\":\\n scriptBody += \\\"--\\\";\\n break;\\n };\\n break;\\n // just re-write it back out\\n case \\\"element\\\":\\n switch (kk.tag) {\\n case \\\"a\\\":\\n scriptBody += kk.children[0]\\n .text;\\n }\\n };\\n }\\n }\\n return scriptBody;\\n };\\n /*\\n Runs through lots of ways to get options. It can pull them from a\\n named data Tiddler, from the fields of the Tiddler, and from the\\n attributes of the widget specified by 'tag'. Any value pulled is\\n treated as JSON first and then as straight text.\\n @param src\\n @param tag\\n @param options\\n @returns {*}\\n */\\n Rocklib.prototype.getOptions = function(src, tag, options) {\\n try {\\n // try to set options from fields on tiddler first\\n // [tag-xxx]\\n var tt = src.getVariable('currentTiddler');\\n if (tt) {\\n var t = src.wiki.getTiddler(tt);\\n if (t) {\\n // this looks for fields that start with our tag\\n // and then maps a.x to aX since something is\\n // unCamelCasing the vars\\n for (var f in t.fields) {\\n var fi = f.indexOf(tag);\\n if (fi != 0) continue;\\n var k = f.substring(tag.length + 1);\\n var cap = k.indexOf(\\\".\\\");\\n while (cap > -1) {\\n if (k.length \u003C cap + 2) break;\\n k = k.substring(0, cap) + k.charAt(\\n cap + 1)\\n .toUpperCase() + k.substring(\\n cap + 2);\\n cap = k.indexOf(\\\".\\\");\\n }\\n var v = t.fields[f];\\n // try as JSON\\n try {\\n options[k] = JSON.parse(v);\\n }\\n // last attempt is just a string\\n catch (ex) {\\n options[k] = v;\\n }\\n }\\n }\\n }\\n // treat any attributes as JSON representations of options\\n // for the object\\n for (var att in src.attributes) {\\n var attval = src.getAttribute(att);\\n // allow for data from named tiddlers\\n if ($tw.wiki.tiddlerExists(attval)) {\\n var data = $tw.wiki.getTiddlerData(attval);\\n options[att] = data;\\n } else {\\n // try as JSON\\n try {\\n options[att] = JSON.parse(attval);\\n }\\n // last attempt is just a string\\n catch (ex) {\\n options[att] = attval;\\n }\\n }\\n }\\n } catch (ex) {\\n console.error(ex);\\n }\\n return options;\\n };\\n /*\\n Retrieves a canvas to work with based on the calling functions\\n need of a \\\"div\\\" or \\\"canvas\\\" element\\n @param src\\n @param tag\\n @param type\\n @returns {Element}\\n */\\n Rocklib.prototype.getCanvas = function(src, tag, type) {\\n type = typeof(type) === \\\"undefined\\\" ? \\\"div\\\" : type;\\n var height = src.getAttribute(\\\"height\\\");\\n var width = src.getAttribute(\\\"width\\\");\\n var canvas = src.document.createElement(type);\\n var style = \\\"\\\";\\n if (type === \\\"canvas\\\") {\\n if (width) canvas.width = width;\\n if (height) canvas.height = height;\\n } else {\\n if (height) style += \\\" height:\\\" + height;\\n if (width) style += \\\" width:\\\" + width;\\n if (style) canvas.setAttribute(\\\"style\\\", style);\\n }\\n canvas.setAttribute(\\\"id\\\", tag + \\\"_\\\" + this.uniqueID);\\n this.uniqueID++;\\n return canvas;\\n };\\n /*\\n Based on \u003Chttp://martin.ankerl.com/2009/12/09/how-to-create-\\n random-colors-programmatically/>\\n @param s\\n @param v\\n @returns {string}\\n */\\n Rocklib.prototype.nextColor = function(s, v) {\\n var golden_ratio_conjugate = 0.618033988749895\\n this.hue += golden_ratio_conjugate;\\n this.hue %= 1;\\n var rgb = this.hsv_to_rgb(this.hue, s, v);\\n return \\\"#\\\" + rgb.r.toString(16) + rgb.g.toString(16) +\\n rgb.b.toString(16);\\n };\\n /*\\n Taken from \u003Chttp://stackoverflow.com/questions/17242144/\\n javascript-convert-hsb-hsv-color-to-rgb-accurately>\\n accepts parameters\\n r Object = {r:x, g:y, b:z}\\n OR\\n r, g, b\\n */\\n Rocklib.prototype.rgb_to_hsv = function(r, g, b) {\\n if (arguments.length === 1) {\\n g = r.g, b = r.b, r = r.r;\\n }\\n var max = Math.max(r, g, b),\\n min = Math.min(r, g, b),\\n d = max - min,\\n h,\\n s = (max === 0 ? 0 : d / max),\\n v = max / 255;\\n switch (max) {\\n case min:\\n h = 0;\\n break;\\n case r:\\n h = (g - b) + d * (g \u003C b ? 6 : 0);\\n h /= 6 * d;\\n break;\\n case g:\\n h = (b - r) + d * 2;\\n h /= 6 * d;\\n break;\\n case b:\\n h = (r - g) + d * 4;\\n h /= 6 * d;\\n break;\\n }\\n return {\\n h: h,\\n s: s,\\n v: v\\n };\\n };\\n /*\\n Taken from \u003Chttp://stackoverflow.com/questions/17242144/\\n javascript-convert-hsb-hsv-color-to-rgb-accurately>\\n accepts parameters\\n h Object = {h:x, s:y, v:z}\\n OR\\n h, s, v\\n */\\n Rocklib.prototype.hsv_to_rgb = function(h, s, v) {\\n var r, g, b, i, f, p, q, t;\\n if (arguments.length === 1) {\\n s = h.s, v = h.v, h = h.h;\\n }\\n i = Math.floor(h * 6);\\n f = h * 6 - i;\\n p = v * (1 - s);\\n q = v * (1 - f * s);\\n t = v * (1 - (1 - f) * s);\\n switch (i % 6) {\\n case 0:\\n r = v, g = t, b = p;\\n break;\\n case 1:\\n r = q, g = v, b = p;\\n break;\\n case 2:\\n r = p, g = v, b = t;\\n break;\\n case 3:\\n r = p, g = q, b = v;\\n break;\\n case 4:\\n r = t, g = p, b = v;\\n break;\\n case 5:\\n r = v, g = p, b = q;\\n break;\\n }\\n return {\\n r: Math.round(r * 255),\\n g: Math.round(g * 255),\\n b: Math.round(b * 255)\\n };\\n };\\n exports.rocklib = Rocklib;\\n})();\\n\",\"module-type\":\"library\",\"type\":\"application/javascript\"},\"$:/plugins/orange/mermaid-tw5/wrapper.js\":{\"title\":\"$:/plugins/orange/mermaid-tw5/wrapper.js\",\"text\":\"/*\\ntitle: $:/plugins/orange/mermaid-tw5/wrapper.js\\ntype: application/javascript\\nmodule-type: widget\\nauthor: Nathaniel Jones 2017-05-26\\nmodified: E Furlan 2022-05-08\\n*/\\n(function() {\\n // jslint node: true, browser: true\\n // global $tw: false\\n 'use strict';\\n\\n var uniqueID = 1,\\n Rocklib = require(\\\"$:/plugins/orange/mermaid-tw5/widget-tools.js\\\").rocklib,\\n Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget,\\n rocklib = new Rocklib(),\\n mermaidAPI = require(\\\"$:/plugins/orange/mermaid-tw5/mermaid.min.js\\\")\\n .mermaidAPI;\\n\\n // Changes to run on TiddlyWiki for Node.js - 2022-12-28\\n // if($tw.browser && !window.mermaidAPI) {\\n // window.rocklib = new Rocklib();\\n // window.mermaidAPI = require(\\\"$:/plugins/orange/mermaid-tw5/mermaid.min.js\\\")\\n // .mermaidAPI;\\n // }\\n\\n let MermaidWidget = function(parseTreeNode, options) {\\n this.initialise(parseTreeNode, options);\\n };\\n MermaidWidget.prototype = new Widget();\\n // Render this widget into the DOM\\n MermaidWidget.prototype.render = function(parent, nextSibling) {\\n this.parentDomNode = parent;\\n this.computeAttributes();\\n this.execute();\\n var tag = \\\"mermaid\\\",\\n scriptBody = rocklib.getScriptBody(this, \\\"text\\\"),\\n divNode = rocklib.getCanvas(this, tag),\\n _insertSVG = function(svgCode, bindFunctions) {\\n divNode.innerHTML = svgCode;\\n };\\n try {\\n let options = {\\n theme: \\\"\\\"\\n };\\n rocklib.getOptions(this, tag, options);\\n\\n mermaidAPI.render(divNode.id, scriptBody, _insertSVG);\\n // window.mermaidAPI.render(divNode.id, scriptBody, _insertSVG);\\n\\n } catch (ex) {\\n divNode.innerText = ex;\\n }\\n parent.insertBefore(divNode, nextSibling);\\n this.domNodes.push(divNode);\\n };\\n MermaidWidget.prototype.execute = function() {\\n // Nothing to do\\n };\\n /*\\n Selectively refreshes the widget if needed. Returns true if the\\n widget or any of its children needed re-rendering\\n */\\n MermaidWidget.prototype.refresh = function(changedTiddlers) {\\n return false;\\n };\\n exports.mermaid = MermaidWidget;\\n})();\\n\",\"module-type\":\"widget\",\"type\":\"application/javascript\"}}}","revision":"0","bag":"default","icon":"https://mermaid-js.github.io/mermaid/img/header.png"}, {"title":"$:/plugins/sq/ExternalContent","name":"External Content","description":"Load content from another TiddlyWiki","author":"Saq Imtiaz","core-version":">=5.3.0","plugin-priority":"0","list":"readme settings","version":"0.0.4","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\n \"tiddlers\": {\n \"$:/config/sq/ExternalContent/load-on-startup\": {\n \"title\": \"$:/config/sq/ExternalContent/load-on-startup\",\n \"text\": \"yes\"\n },\n \"$:/plugins/sq/ExternalContent/filters/jsonfiltertiddlers.js\": {\n \"title\": \"$:/plugins/sq/ExternalContent/filters/jsonfiltertiddlers.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sq/ExternalContent/filters/jsonfiltertiddlers.js\\ntype: application/javascript\\nmodule-type: filteroperator\\ndescription: Interpret each incoming title as a JSON array of tiddlers and return tiddlers that match the filter expression\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nExport our filter function\\n*/\\nexports[\\\"jsonfiltertiddlers\\\"] = function(source,operator,options) {\\n\\tvar results = [];\\n\\tsource(function(tiddler,title) {\\n\\t\\tlet data = $tw.utils.parseJSONSafe(title),\\n\\t\\t\\toutput = [];\\n\\t\\tif(data && Array.isArray(data)) {\\n\\t\\t\\tlet tempWiki = new $tw.Wiki();\\n\\t\\t\\ttempWiki.addTiddlers(data);\\n\\t\\t\\tlet outputTitles = tempWiki.filterTiddlers(operator.operand||\\\"\\\");\\n\\t\\t\\toutputTitles.forEach(title => {\\n\\t\\t\\t\\tlet tiddler = tempWiki.getTiddler(title);\\n\\t\\t\\t\\tif(tiddler) {\\n\\t\\t\\t\\t\\tlet fields = tiddler.getFieldStrings();;\\n\\t\\t\\t\\t\\toutput.push(fields)\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t}\\n\\t\\tresults.push(JSON.stringify(output));\\n\\t});\\n\\treturn results;\\n};\\n\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"filteroperator\",\n \"description\": \"Interpret each incoming title as a JSON array of tiddlers and return tiddlers that match the filter expression\"\n },\n \"$:/plugins/sq/ExternalContent/loadWikiActions\": {\n \"title\": \"$:/plugins/sq/ExternalContent/loadWikiActions\",\n \"code-body\": \"yes\",\n \"text\": \"\\\\procedure startupConfigTitle() $:/config/sq/ExternalContent/load-on-startup\\n\\\\procedure loadWikiActions(wikiURL,contentFilter,deserializer)\\n\\t\u003C!-- actions invoked after fetching the remote data -->\\n\\t\\\\procedure getWikiCallback()\\n\\t\\t\u003C!-- actions to turn the remote data into tiddlers -->\\n\\t\\t\\\\procedure importTiddlers()\\n\\t\\t\\t\u003C$let\\n\\t\\t\\t\\tpassthroughFilter=\\\"[all[]]\\\"\\n\\t\\t\\t\\tdefaultDeserializer=\\\"text/html\\\"\\n\\t\\t\\t\\tcontentFilter={{{ [\u003CcontentFilter>!is[blank]else\u003CpassthroughFilter>] }}}\\n\\t\\t\\t\\tdeserializer={{{ [\u003Cdeserializer>!is[blank]else\u003CdefaultDeserializer>] }}}\\n\\t\\t\\t\\ttiddlerJSON={{{[\u003Cdata>deserialize\u003Cdeserializer>jsonfiltertiddlers\u003CcontentFilter>]}}}\\n\\t\\t\\t\\ttiddlers={{{ [\u003CtiddlerJSON>jsonindexes[]] :map[\u003CtiddlerJSON>jsonget\u003CcurrentTiddler>,[title]] :and[format:titlelist[]join[ ]] }}}\\n\\t\\t\\t>\\n\\t\\t\\t\u003C$action-log $$filter=\\\"wikiURL contentFilter deserializer tiddlers tiddlerJSON\\\"/>\\n\\t\\t\\t\\t\u003C!-- iterate over each position in the array -->\\n\\t\\t\\t\\t\u003C$list filter=\\\"[\u003CtiddlerJSON>jsonindexes[]]\\\" variable=\\\"index\\\">\\n\\t\\t\\t\\t\\t\u003C!-- get the tiddler at that position in the array from the JSON -->\\n\\t\\t\\t\\t\\t\u003C$let\\n\\t\\t\\t\\t\\t\\ttiddler={{{ [\u003CtiddlerJSON>jsonextract\u003Cindex>] }}} \\n\\t\\t\\t\\t\\t\\ttitle={{{ [\u003Ctiddler>jsonget[title]] }}}\\n\\t\\t\\t\\t\\t>\\n\\t\\t\\t\\t\\t\\t\u003C!-- make sure we have a title for the tiddler and exclude system tiddlers -->\\n\\t\\t\\t\\t\\t\\t\u003C$list filter=\\\"[\u003Ctitle>!is[blank]]\\\">\\n\\t\\t\\t\\t\\t\\t\\t\u003C$action-setmultiplefields\\n\\t\\t\\t\\t\\t\\t\\t\\t$fields=\\\"[\u003Ctiddler>jsonindexes[]] externalTiddler is_volatile includeTimestamp\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t$values=\\\"[\u003Ctiddler>jsonindexes[]] :map[\u003Ctiddler>jsonget\u003CcurrentTiddler>!is[blank]else[]] =yes =yes [\u003Cnow [UTC]YYYY0MM0DD0hh0mm0ssXXX>]\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t$timestamp=\\\"no\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t/>\\n\\t\\t\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\\\\end importTiddlers\\n\\t\\t\u003C!-- actions invoked if there is an error fetching the data -->\\n\\t\\t\\\\procedure failureHandler()\\n\\t\\t\\t\u003C$action-log status=\\\"error fetching the wiki\\\"/>\\n\\t\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/temp/http/error/]addsuffix\u003Cnow [UTC]YYYY0MM0DD0hh0mm0ssXXX]>] }}} text={{{ [[There was an error fetching the wiki ]addsuffix\u003CwikiURL>addsuffix\u003Cerror>] }}} tags=\\\"$:/tags/Alert\\\"/>\\n\\t\\t\\\\end failureHandler\\n\\t\\t\u003C$list filter=\\\"[\u003Cstatus>match[200]]\\\" variable=\\\"null\\\" emptyValue=\u003C\u003CfailureHandler>> >\\n\\t\\t\\t\u003C$action-log data=\u003C\u003Cdata>> status=\\\"succcess\\\" />\\n\\t\\t\\t\u003C\u003CimportTiddlers>>\\n\\t\\t\u003C/$list>\\n\\t\\\\end getWikiCallback\\n\\n\\t\u003C!-- fetch the remote data source-->\\n\\t\\\\procedure getWikiActions()\\n\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t$message=\\\"tm-http-request\\\"\\n\\t\\t\\tmethod=\\\"GET\\\"\\n\\t\\t\\tbind-status={{{ [[$:/temp/http/load-content/]addsuffix\u003CwikiURL>] }}}\\n\\t\\t\\toncompletion=\u003C\u003CgetWikiCallback>>\\n\\t\\t\\turl=\u003C\u003CwikiURL>>\\n\\t\\t\\tvar-wikiURL=\u003C\u003CwikiURL>>\\n\\t\\t\\tvar-contentFilter=\u003C\u003CcontentFilter>>\\n\\t\\t\\tvar-deserializer=\u003C\u003Cdeserializer>>\\n\\t\\t\\t>\\n\\t\\\\end getWikiActions\\n\\n\u003C!-- check if its a tiddlyhost URL and if so map it to the json file /tiddlers.json, also trim any trailing slashes -->\\n\\n\u003C$let isTiddlyHost={{{ [\u003CwikiURL>regexp[(?i)^https:\\\\/\\\\/\\\\S+tiddlyhost.com]then[yes]else[no]] }}}\\n\\twikiURL={{{ [\u003CisTiddlyHost>match[yes]] :then[\u003CwikiURL>trim:suffix[/]trim:suffix[tiddlers.json]addsuffix[/tiddlers.json]] :else[\u003CwikiURL>] }}}\\n\\tdeserializer={{{ [\u003CisTiddlyHost>match[yes]then[application/json]else\u003Cdeserializer>] }}}\\n\\t>\\n\\t\u003C$action-log $$filter=\\\"isTiddlyHost wikiURL deserializer\\\"/>\\n\\t\u003C\u003CgetWikiActions>>\\n\u003C/$let>\\n\\\\end loadWikiActions\\n\\n\\n\u003C!-- ARE IMAGES IMPORTING CORRECTLY? -->\"\n },\n \"$:/plugins/sq/ExternalContent/readme\": {\n \"title\": \"$:/plugins/sq/ExternalContent/readme\",\n \"text\": \"!!Import content from other online wikis\\n\\nNote that content is loaded immediately after the wiki starts up, therefore JavaScript modules and tiddlers that are meant to influence the startup behaviour will not take effect if loaded in this manner. The wiki from which content is to be imported must be hosted on a server with CORS support, such as TiddlyHost or GitHub pages.\\n\\n!! Excluding imported content from being saved with the wiki\\n''If you do not want the imported tiddlers to be saved with the host wiki, you must exclude them:''\\n\\n* for single file TiddlyWikis you need to create or amend the global variable publishFilter by adding `-[is_volatile[yes]]`\\n** if you have not previously defined a publishFilter, create a tiddler with the title `$:/publishFilter` with the tag `$:/tags/Global` where the text field consists of `-[is_volatile[yes]]`\\n* for TiddlyWiki on node.js, modify the tiddler `$:/config/SyncFilter` and append `-[is_volatile[yes]]`\\n\\n!! Loading content on startup\\n\\nFor each wiki from which you want to load content on startup, create a tiddler tagged with `$:/tags/load-external-content` with the following fields:\\n\\n|tags |~$:/tags/load-external-content |\\n|text |the URL of the wiki from which to import tiddlers |\\n|content-filter |(optional) filter that determines which tiddlers to import from the target wiki. Note you can filter out system tiddlers or config tiddlers that might not be desirable. |\\n|deserializer|(optional) defaults to `text/html` which is appropriate for TiddlyWiki files |\\n\\nNote: for TiddlyHost files the plugin automatically downloads just the tiddler.json file provided by TiddlyHost and chooses the appropriate deserializer, to decrease the bandwidth used.\\n\\n!! Loading content on demand\\n\\nImport variables from the tiddler `$:/plugins/sq/ExternalContent/loadWikiActions` and use the procedure `loadWikiActions` in an action string.\\n\\nExample:\\n\\n```\\n\\\\procedure loadMyWiki()\\n\\\\import [[$:/plugins/sq/ExternalContent/loadWikiActions]]\\n\u003C$transclude\\n $variable=\\\"loadWikiActions\\\"\\n wikiURL=\\\"https://tiddlywiki.com\\\"\\n contentFilter=\\\"[!is[system]tag[Working with TiddlyWiki]]\\\"\\n deseralizer=\\\"text/html\\\"\\n />\\n\\\\end\\n\\n\u003C$button actions=\u003C\u003CloadMyWiki>> > load content \u003C/$button>\\n\\n```\"\n },\n \"$:/plugins/sq/ExternalContent/settings\": {\n \"title\": \"$:/plugins/sq/ExternalContent/settings\",\n \"text\": \"\u003C$checkbox tiddler=\\\"$:/config/sq/ExternalContent/load-on-startup\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"yes\\\"> Load external content on startup\u003C/$checkbox>\\n\\nWikis to load content from on startup:\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/load-external-content]]\\\">\\n\\n|Defined in |\u003C$link/> |\\n|URL |{{!!text}} |\\n|content-filter|\u003C$text text={{!!content-filter}}/> |\\n|deseralizer|\u003C$text text={{!!deserializer}}/>|\\n\\n\u003C/$list>\\n\\n\u003C$button>\\n\u003C$action-sendmessage $message=\\\"tm-new-tiddler\\\" title=\\\"Please enter the wiki name here\\\" tags=\\\"$:/tags/load-external-content\\\" text=\\\"Replace this text with the URL\\\" content-filter=\\\"\\\" deseralizer=\\\"\\\"/>\\nAdd wiki to load content from\\n\u003C/$button>\"\n },\n \"$:/plugins/sq/ExternalContent/startupActions\": {\n \"title\": \"$:/plugins/sq/ExternalContent/startupActions\",\n \"tags\": \"$:/tags/StartupAction/PostRender\",\n \"code-body\": \"yes\",\n \"text\": \"\\\\import [[$:/plugins/sq/ExternalContent/loadWikiActions]]\\n\\n\u003C% if [\u003CstartupConfigTitle>get[text]trim[]match[yes]] %>\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/load-external-content]!is[draft]]\\\">\\n\\t\u003C$transclude\\n\\t\\t$variable=\\\"loadWikiActions\\\"\\n\\t\\twikiURL={{{ [\u003CcurrentTiddler>get[text]] }}}\\n\\t\\tcontentFilter={{{ [\u003CcurrentTiddler>get[content-filter]] }}}\\n\\t\\tdeseralizer={{{ [\u003CcurrentTiddler>get[deseralizer]] }}}\\n\\t\\t/>\\n\u003C/$list>\\n\u003C% endif %>\"\n }\n }\n}"}, @@ -1017,7 +1030,7 @@ Error message and password prompt {"created":"20240108030906508","title":"$:/state/add-plugin-info/$:/temp/ServerConnection/https://tiddly-gittly.github.io/TiddlyWiki-CPL/library/index.html/$:/temp/RemoteAssetInfo/https://tiddly-gittly.github.io/TiddlyWiki-CPL/library/index.html/$:/plugins/tiddlywiki/mobiledragdrop","text":"yes","modified":"20240108030906508"}, {"created":"20240108031013167","title":"$:/state/add-plugin-info/$:/temp/ServerConnection/https://tiddly-gittly.github.io/TiddlyWiki-CPL/library/index.html/$:/temp/RemoteAssetInfo/https://tiddly-gittly.github.io/TiddlyWiki-CPL/library/index.html/$:/plugins/TWaddle/SideEditor","text":"yes","modified":"20240108031013167"}, {"created":"20231007140354167","title":"$:/state/addplugins/tab-1342078386","text":"$:/config/OfficialPluginLibrary","modified":"20240312123824749"}, -{"created":"20231021150029344","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/Standard","modified":"20240319212820971"}, +{"created":"20231021150029344","title":"$:/state/advancedsearch/currentTab","text":"$:/core/ui/AdvancedSearch/System","modified":"20240328172431062"}, {"created":"20240306005444320","title":"$:/state/folded/CESIUM","text":"show","modified":"20240308140413654"}, {"title":"$:/state/http-requests","text":"0"}, {"created":"20240312123634834","title":"$:/state/plugin-info--1264091880-$:/plugins/sycom/atom-feed---559970551","text":"contents","modified":"20240312123636178"}, @@ -1032,24 +1045,26 @@ Error message and password prompt {"created":"20240108031535321","title":"$:/state/plugin-info-1867135918-$:/plugins/Gk0Wk/sidebar-resizer","text":"no","modified":"20240228015434856"}, {"created":"20240308145403680","title":"$:/state/plugin-info-1867135918-$:/plugins/oeyoews/neotw-pwa","text":"no","modified":"20240308145408559"}, {"created":"20240312123524153","title":"$:/state/plugin-info-1867135918-$:/plugins/orange/mermaid-tw5","text":"no","modified":"20240312123530142"}, -{"created":"20240229002453021","title":"$:/state/plugin-info-1867135918-$:/plugins/sq/ExternalContent","text":"yes","modified":"20240313150221314"}, +{"created":"20240229002453021","title":"$:/state/plugin-info-1867135918-$:/plugins/sq/ExternalContent","text":"no","modified":"20240328172727375"}, {"created":"20240229002500427","title":"$:/state/plugin-info-1867135918-$:/plugins/sq/ExternalContent---751343348","text":"contents","modified":"20240304130309589"}, {"created":"20240312123620356","title":"$:/state/plugin-info-1867135918-$:/plugins/sycom/atom-feed","text":"no","modified":"20240312123703588"}, +{"created":"20240328172734886","title":"$:/state/plugin-info-1867135918-$:/plugins/tiddlywiki/mobiledragdrop","text":"no","modified":"20240328172749147"}, +{"created":"20240328172744649","title":"$:/state/plugin-info-1867135918-$:/plugins/tiddlywiki/mobiledragdrop---475165247","text":"contents","modified":"20240328172744649"}, {"created":"20231007124549638","title":"$:/state/plugin-info-1935472218-$:/plugins/ipfs--1406793555","text":"contents","modified":"20231007124549638"}, {"created":"20231021133100479","title":"$:/state/plugin-info-292606808-$:/plugins/oeyoews/neotw-pwa---1763606351","text":"contents","modified":"20231021133100479"}, {"created":"20231007125040460","title":"$:/state/sidebar","text":"yes","modified":"20240312134313664"}, -{"created":"20231021150029345","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/Standard","modified":"20240319212820971"}, +{"created":"20231021150029345","title":"$:/state/tab--1498284803","text":"$:/core/ui/AdvancedSearch/System","modified":"20240328172431062"}, {"created":"20240312134141372","title":"$:/state/tab--1963855381","text":"$:/core/ui/ControlPanel/Palette","modified":"20240322234405066"}, {"created":"20231007133913097","title":"$:/state/tab--2112689675","text":"$:/core/ui/ControlPanel/Basics","modified":"20231202141754599"}, {"created":"20231021132220450","title":"$:/state/tab--639260661","text":"$:/core/ui/ControlPanel/Plugins/Add/Languages","modified":"20240108031759983"}, {"created":"20231123173056838","title":"$:/state/tab--697582678","text":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20231123173101769"}, {"created":"20231202141850730","title":"$:/state/tab--86143343","text":"$:/core/ui/ControlPanel/Plugins/Installed/Plugins","modified":"20240312133344797"}, {"created":"20240312123830157","title":"$:/state/tab-1688658110","text":"$:/core/ui/ControlPanel/Plugins/Add/Plugins","modified":"20240312123917271"}, -{"created":"20231007121508028","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Info","modified":"20240322234413842"}, +{"created":"20231007121508028","title":"$:/state/tab-1749438307","text":"$:/core/ui/ControlPanel/Plugins","modified":"20240328172711526"}, {"created":"20231007121510466","title":"$:/state/tab-2065006209","text":"$:/core/ui/ControlPanel/Saving/General","modified":"20240315155003155"}, {"created":"20231007122348727","title":"$:/state/tab/sidebar--595412856","text":"ZenCard","modified":"20240324084405431"}, -{"title":"$:/status/RequireReloadDueToPluginChange","text":"no"}, -{"created":"20240324084022165","title":"$:/StoryList","text":"","list":"INTRODUCTION _PLAYER_","modified":"20240324084324630"}, +{"title":"$:/status/RequireReloadDueToPluginChange","text":"yes"}, +{"title":"$:/StoryList","created":"20240328172336693","text":"","list":"INTRODUCTION _PLAYER_","modified":"20240328172709223"}, {"title":"$:/themes/tiddlywiki/snowwhite","name":"Snow White","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Emphasises individual tiddlers","dependents":"$:/themes/tiddlywiki/vanilla","plugin-priority":"0","version":"5.3.3","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/snowwhite/base\":{\"title\":\"$:/themes/tiddlywiki/snowwhite/base\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"text\":\"\\\\define sidebarbreakpoint-minus-one()\\n\u003C$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\\n\\\\end\\n\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n\\n.tc-sidebar-header {\\n\\ttext-shadow: 0 1px 0 \u003C\u003Ccolour sidebar-foreground-shadow>>;\\n}\\n\\n.tc-tiddler-info {\\n\\t\u003C\u003Cbox-shadow \\\"inset 1px 2px 3px rgba(0,0,0,0.1)\\\">>\\n}\\n\\n@media screen {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow \\\"1px 1px 5px rgba(0, 0, 0, 0.3)\\\">>\\n\\t}\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\t\u003C\u003Cbox-shadow none>>\\n\\t}\\n}\\n\\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\\n\\t\u003C\u003Ctransition \\\"fill 150ms ease-in-out\\\">>\\n}\\n\\n.tc-tiddler-controls button.tc-selected,\\n.tc-page-controls button.tc-selected {\\n\\t\u003C\u003Cfilter \\\"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\\\">>\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow \\\"inset 0 1px 8px rgba(0, 0, 0, 0.15)\\\">>\\n}\\n\\n.tc-edit-tags {\\n\\t\u003C\u003Cbox-shadow \\\"inset 0 1px 8px rgba(0, 0, 0, 0.15)\\\">>\\n}\\n\\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\\n\\t\u003C\u003Cbox-shadow \\\"none\\\">>\\n\\tborder: none;\\n\\toutline: none;\\n}\\n\\ntextarea.tc-edit-texteditor {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n}\\n\\ncanvas.tc-edit-bitmapeditor {\\n\\t\u003C\u003Cbox-shadow \\\"2px 2px 5px rgba(0, 0, 0, 0.5)\\\">>\\n}\\n\\n.tc-drop-down {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow \\\"2px 2px 10px rgba(0, 0, 0, 0.5)\\\">>\\n}\\n\\n.tc-block-dropdown {\\n\\tborder-radius: 4px;\\n\\t\u003C\u003Cbox-shadow \\\"2px 2px 10px rgba(0, 0, 0, 0.5)\\\">>\\n}\\n\\n.tc-modal {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow \\\"0 3px 7px rgba(0,0,0,0.3)\\\">>\\n}\\n\\n.tc-modal-footer {\\n\\tborder-radius: 0 0 6px 6px;\\n\\t\u003C\u003Cbox-shadow \\\"inset 0 1px 0 #fff\\\">>;\\n}\\n\\n\\n.tc-alert {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow \\\"0 3px 7px rgba(0,0,0,0.6)\\\">>\\n}\\n\\n.tc-notification {\\n\\tborder-radius: 6px;\\n\\t\u003C\u003Cbox-shadow \\\"0 3px 7px rgba(0,0,0,0.3)\\\">>\\n\\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\\n}\\n\\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\\n\\tborder-top: none;\\n\\theight: 1px;\\n\\t\u003C\u003Cbackground-linear-gradient \\\"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\\\">>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\\n\\t\u003C\u003Cbackground-linear-gradient \\\"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\\\">>\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\\n\\t\u003C\u003Cbackground-linear-gradient \\\"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\\\">>\\n}\\n\\n.tc-message-box img {\\n\\t\u003C\u003Cbox-shadow \\\"1px 1px 3px rgba(0,0,0,0.5)\\\">>\\n}\\n\\n.tc-plugin-info {\\n\\t\u003C\u003Cbox-shadow \\\"1px 1px 3px rgba(0,0,0,0.5)\\\">>\\n}\\n\"}}}"}, {"title":"$:/themes/tiddlywiki/vanilla","name":"Vanilla","author":"JeremyRuston","core-version":">=5.0.0","plugin-type":"theme","description":"Basic theme","plugin-priority":"0","version":"5.3.3","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/themes/tiddlywiki/vanilla/themetweaks\":{\"title\":\"$:/themes/tiddlywiki/vanilla/themetweaks\",\"tags\":\"$:/tags/ControlPanel/Appearance\",\"caption\":\"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\"text\":\"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\n\\\\define replacement-text()\\n[img[$(imageTitle)$]]\\n\\\\end\\n\\n\\\\define backgroundimage-dropdown()\\n\u003Cdiv class=\\\"tc-drop-down-wrapper\\\">\\n\u003C$set name=\\\"state\\\" value=\u003C\u003Cqualify \\\"$:/state/popup/themetweaks/backgroundimage\\\">>>\\n\u003C$button popup=\u003C\u003Cstate>> class=\\\"tc-btn-invisible tc-btn-dropdown\\\">{{$:/core/images/down-arrow}}\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cstate>> type=\\\"popup\\\" position=\\\"belowleft\\\" text=\\\"\\\" default=\\\"\\\" class=\\\"tc-popup-keep\\\">\\n\u003Cdiv class=\\\"tc-drop-down\\\" style=\\\"text-align:center;\\\">\\n\u003C$macrocall $name=\\\"image-picker\\\" actions=\\\"\\\"\\\"\\n\\n\u003C$action-setfield\\n\\t$tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"\\n\\t$value=\u003C\u003CimageTitle>>\\n/>\\n\\n\u003C$action-deletetiddler $tiddler=\u003C\u003Cstate>>/>\\n\\n\\\"\\\"\\\"/>\\n\u003C/div>\\n\u003C/$reveal>\\n\u003C/$set>\\n\u003C/div>\\n\\\\end\\n\\n\\\\define backgroundimageattachment-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\" default=\\\"scroll\\\">\\n\u003Coption value=\\\"scroll\\\">\u003C\u003Clingo Settings/BackgroundImageAttachment/Scroll>>\u003C/option>\\n\u003Coption value=\\\"fixed\\\">\u003C\u003Clingo Settings/BackgroundImageAttachment/Fixed>>\u003C/option>\\n\u003C/$select>\\n\\\\end\\n\\n\\\\define backgroundimagesize-dropdown()\\n\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\" default=\\\"scroll\\\">\\n\u003Coption value=\\\"auto\\\">\u003C\u003Clingo Settings/BackgroundImageSize/Auto>>\u003C/option>\\n\u003Coption value=\\\"cover\\\">\u003C\u003Clingo Settings/BackgroundImageSize/Cover>>\u003C/option>\\n\u003Coption value=\\\"contain\\\">\u003C\u003Clingo Settings/BackgroundImageSize/Contain>>\u003C/option>\\n\u003C/$select>\\n\\\\end\\n\\n\u003C\u003Clingo ThemeTweaks/Hint>>\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003C\u003Clingo Options/SidebarLayout>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\">\u003Coption value=\\\"fixed-fluid\\\">\u003C\u003Clingo Options/SidebarLayout/Fixed-Fluid>>\u003C/option>\u003Coption value=\\\"fluid-fixed\\\">\u003C\u003Clingo Options/SidebarLayout/Fluid-Fixed>>\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=\\\"pre\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"pre-wrap\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\">\u003C\u003Clingo Settings/CodeFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\">\u003C\u003Clingo Settings/BackgroundImage>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\u003C\u003Cbackgroundimage-dropdown>> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\">\u003C\u003Clingo Settings/BackgroundImageAttachment>>\u003C/$link> |\u003C\u003Cbackgroundimageattachment-dropdown>> | |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\">\u003C\u003Clingo Settings/BackgroundImageSize>>\u003C/$link> |\u003C\u003Cbackgroundimagesize-dropdown>> | |\\n\\n! \u003C\u003Clingo Metrics>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\">\u003C\u003Clingo Metrics/FontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\">\u003C\u003Clingo Metrics/LineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\">\u003C\u003Clingo Metrics/BodyFontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\">\u003C\u003Clingo Metrics/BodyLineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\\\">\u003C\u003Clingo Metrics/StoryLeft>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryLeft/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storytop\\\">\u003C\u003Clingo Metrics/StoryTop>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryTop/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storytop\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyright\\\">\u003C\u003Clingo Metrics/StoryRight>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryRight/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyright\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\\\">\u003C\u003Clingo Metrics/StoryWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\\\">\u003C\u003Clingo Metrics/TiddlerWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/TiddlerWidth/Hint>>//\u003Cbr> |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\">\u003C\u003Clingo Metrics/SidebarBreakpoint>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarBreakpoint/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\">\u003C\u003Clingo Metrics/SidebarWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n\"},\"$:/themes/tiddlywiki/vanilla/base\":{\"title\":\"$:/themes/tiddlywiki/vanilla/base\",\"tags\":\"[[$:/tags/Stylesheet]]\",\"list-before\":\"\",\"code-body\":\"yes\",\"text\":\"\\\\define custom-background-datauri()\\n\u003C$set name=\\\"background\\\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\\n\u003C$list filter=\\\"[\u003Cbackground>is[image]]\\\">\\n`background: url(`\\n\u003C$list filter=\\\"[\u003Cbackground>!has[_canonical_uri]]\\\">\\n`\\\"`\u003C$macrocall $name=\\\"datauri\\\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\\\"`\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Cbackground>has[_canonical_uri]]\\\">\\n`\\\"`\u003C$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\\\"_canonical_uri\\\"/>`\\\"`\\n\u003C/$list>\\n`) center center;`\\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\\n\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\define sidebarbreakpoint()\\n\u003C$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\\n\\\\end\\n\\n\\\\define sidebarbreakpoint-minus-one()\\n\u003C$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\\n\\\\end\\n\\n\\\\define if-fluid-fixed(text,hiddenSidebarText)\\n\u003C$reveal state=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\" type=\\\"match\\\" text=\\\"fluid-fixed\\\">\\n$text$\\n\u003C$reveal state=\\\"$:/state/sidebar\\\" type=\\\"nomatch\\\" text=\\\"yes\\\" default=\\\"yes\\\">\\n$hiddenSidebarText$\\n\u003C/$reveal>\\n\u003C/$reveal>\\n\\\\end\\n\\n\\\\define if-editor-height-fixed(then,else)\\n\u003C$reveal state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\" type=\\\"match\\\" text=\\\"fixed\\\">\\n$then$\\n\u003C/$reveal>\\n\u003C$reveal state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\" type=\\\"match\\\" text=\\\"auto\\\">\\n$else$\\n\u003C/$reveal>\\n\\\\end\\n\\n\\\\define set-type-selector-min-width()\\n\u003C$set name=\\\"typeLength\\\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\\n\\n\\t.tc-type-selector-dropdown-wrapper {\\n\\t\\tmin-width: calc(\u003C\u003CtypeLength>>ch + 4em);\\n\\t}\\n\\n\\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\\n\\t\\tmin-width: \u003C\u003CtypeLength>>ch;\\n\\t}\\n\\n\u003C/$set>\\n\\\\end\\n\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n/*\\n** Start with the normalize CSS reset, and then belay some of its effects\\n*/\\n\\n{{$:/themes/tiddlywiki/vanilla/reset}}\\n\\n*, input[type=\\\"search\\\"] {\\n\\tbox-sizing: border-box;\\n\\t-moz-box-sizing: border-box;\\n\\t-webkit-box-sizing: border-box;\\n}\\n\\n/*\\n** Button default styles. Makes them look consistent for all browsers\\n*/\\nhtml button {\\n\\tline-height: 1.2;\\n\\tcolor: \u003C\u003Ccolour button-foreground>>;\\n\\tfill: \u003C\u003Ccolour button-foreground>>;\\n\\tbackground: \u003C\u003Ccolour button-background>>;\\n\\tborder-color: \u003C\u003Ccolour button-border>>;\\n}\\n\\nbutton:disabled svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n/*\\n** Basic element styles\\n*/\\n\\nhtml, body {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\\n\\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\\n\\t-webkit-font-smoothing: antialiased;\\n\\t-moz-osx-font-smoothing: grayscale;\\n}\\n\\nhtml:-webkit-full-screen {\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\nbody.tc-body {\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\\n\\tword-wrap: break-word;\\n\\t\u003C\u003Ccustom-background-datauri>>\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n\u003C\u003Cif-background-attachment \\\"\\\"\\\"\\n\\nbody.tc-body {\\n\\tbackground-color: transparent;\\n}\\n\\n\\\"\\\"\\\">>\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\n\\nh1 {\\n\\tfont-size: 2em;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n\\tline-height: 1.2;\\n\\tfont-weight: normal;\\n}\\n\\npre {\\n\\tdisplay: block;\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n\\tword-break: normal;\\n\\tword-wrap: break-word;\\n\\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\\n\\tbackground-color: \u003C\u003Ccolour pre-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour pre-border>>;\\n\\tpadding: 0 3px 2px;\\n\\tborder-radius: 3px;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\ncode {\\n\\tcolor: \u003C\u003Ccolour code-foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour code-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour code-border>>;\\n\\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\\n\\tpadding: 0 3px 2px;\\n\\tborder-radius: 3px;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\nblockquote {\\n\\tborder-left: 5px solid \u003C\u003Ccolour blockquote-bar>>;\\n\\tmargin-left: 25px;\\n\\tpadding-left: 10px;\\n\\tquotes: \\\"\\\\201C\\\"\\\"\\\\201D\\\"\\\"\\\\2018\\\"\\\"\\\\2019\\\";\\n}\\n\\nblockquote > div {\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n}\\n\\nblockquote.tc-big-quote {\\n\\tfont-family: Georgia, serif;\\n\\tposition: relative;\\n\\tbackground: \u003C\u003Ccolour pre-background>>;\\n\\tborder-left: none;\\n\\tmargin-left: 50px;\\n\\tmargin-right: 50px;\\n\\tpadding: 10px;\\n\\tborder-radius: 8px;\\n}\\n\\nblockquote.tc-big-quote cite:before {\\n\\tcontent: \\\"\\\\2014 \\\\2009\\\";\\n}\\n\\nblockquote.tc-big-quote:before {\\n\\tfont-family: Georgia, serif;\\n\\tcolor: \u003C\u003Ccolour blockquote-bar>>;\\n\\tcontent: open-quote;\\n\\tfont-size: 8em;\\n\\tline-height: 0.1em;\\n\\tmargin-right: 0.25em;\\n\\tvertical-align: -0.4em;\\n\\tposition: absolute;\\n\\tleft: -50px;\\n\\ttop: 42px;\\n}\\n\\nblockquote.tc-big-quote:after {\\n\\tfont-family: Georgia, serif;\\n\\tcolor: \u003C\u003Ccolour blockquote-bar>>;\\n\\tcontent: close-quote;\\n\\tfont-size: 8em;\\n\\tline-height: 0.1em;\\n\\tmargin-right: 0.25em;\\n\\tvertical-align: -0.4em;\\n\\tposition: absolute;\\n\\tright: -80px;\\n\\tbottom: -20px;\\n}\\n\\ndl dt {\\n\\tfont-weight: bold;\\n\\tmargin-top: 6px;\\n}\\n\\ntextarea,\\ninput[type=text],\\ninput[type=search],\\ninput[type=\\\"\\\"],\\ninput:not([type]) {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n}\\n\\ninput[type=\\\"checkbox\\\"] {\\n\\tvertical-align: middle;\\n}\\n\\ninput[type=\\\"search\\\"]::-webkit-search-decoration,\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button,\\ninput[type=\\\"search\\\"]::-webkit-search-results-button,\\ninput[type=\\\"search\\\"]::-webkit-search-results-decoration {\\n\\t-webkit-appearance:none;\\n}\\n\\n.tc-muted {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\nsvg.tc-image-button {\\n\\tpadding: 0px 1px 1px 0px;\\n}\\n\\n.tc-icon-wrapper > svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\nkbd {\\n\\tdisplay: inline-block;\\n\\tpadding: 3px 5px;\\n\\tfont-size: 0.8em;\\n\\tline-height: 1.2;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tvertical-align: middle;\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\n\\tborder: solid 1px \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-bottom-color: \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: inset 0 -1px 0 \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n::selection {\\n\\tbackground-color: Highlight;\\n\\tcolor: HighlightText;\\n\\tbackground-color: \u003C\u003Ccolour selection-background>>;\\n\\tcolor: \u003C\u003Ccolour selection-foreground>>;\\n}\\n\\n.tc-inline-style {\\n\\tbackground: \u003C\u003Ccolour highlight-background>>;\\n\\tcolor: \u003C\u003Ccolour highlight-foreground>>;\\n}\\n\\nform.tc-form-inline {\\n\\tdisplay: inline;\\n}\\n\\n/*\\nMarkdown likes putting code elements inside pre elements\\n*/\\npre > code {\\n\\tpadding: 0;\\n\\tborder: none;\\n\\tbackground-color: inherit;\\n\\tcolor: inherit;\\n}\\n\\n/*\\nTable defaults\\n*/\\n\\ntable {\\n\\tborder: 1px solid \u003C\u003Ccolour table-border>>;\\n\\twidth: auto;\\n\\tmax-width: 100%;\\n\\tcaption-side: bottom;\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n\\t/* next 2 elements needed, since normalize 8.0.1 */\\n\\tborder-collapse: collapse;\\n\\tborder-spacing: 0;\\n}\\n\\ntable th, table td {\\n\\tpadding: 0 7px 0 7px;\\n\\tborder-top: 1px solid \u003C\u003Ccolour table-border>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour table-border>>;\\n}\\n\\ntable thead tr td, table th {\\n\\tbackground-color: \u003C\u003Ccolour table-header-background>>;\\n\\tfont-weight: bold;\\n}\\n\\ntable tfoot tr td {\\n\\tbackground-color: \u003C\u003Ccolour table-footer-background>>;\\n}\\n\\n/*\\nTable utility classes\\n*/\\n\\n/* Remove borders from table as used in eg: GettingStarted*/\\n.tc-table-no-border,\\n.tc-table-no-border th,\\n.tc-table-no-border td {\\n\\tborder: initial;\\n}\\n\\n/* First column in table width will fit to text.*/\\n/* This rule makes most sense with tc-first-link-nowrap*/\\n.tc-first-col-min-width td:nth-child(1) {\\n\\twidth: 1%;\\n}\\n\\n/*\\n** Utility classes work well with tables but also for other containers\\n*/\\n\\n/* First link A element will not wrap */\\n.tc-first-link-nowrap:first-of-type a {\\n\\twhite-space: nowrap;\\n}\\n\\n/* Move the table to the center of the container */\\n.tc-center {\\n\\tmargin-left: auto;\\n\\tmargin-right: auto;\\n}\\n\\n.tc-max-width {\\n\\twidth: 100%;\\n}\\n\\n.tc-max-width-80 {\\n\\tmax-width: 80%;\\n}\\n\\n/* Allow input and textarea to look like the ControlPanel inputs */\\n.tc-edit-max-width input,\\n.tc-edit-max-width textarea {\\n\\twidth: 100%;\\n\\tpadding: 3px;\\n}\\n\\n/*\\nCSV parser plugin\\n*/\\n\\n.tc-csv-table {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-csv-table th,\\n.tc-csv-table td {\\n\\twhite-space: pre-line;\\n}\\n\\n/*\\nTiddler frame in story river\\n*/\\n\\n.tc-tiddler-frame img,\\n.tc-tiddler-frame svg,\\n.tc-tiddler-frame canvas,\\n.tc-tiddler-frame embed,\\n.tc-tiddler-frame iframe {\\n\\tmax-width: 100%;\\n}\\n\\n.tc-tiddler-body > embed,\\n.tc-tiddler-body > iframe {\\n\\twidth: 100%;\\n\\theight: 600px;\\n}\\n\\n:root {\\n\\tcolor-scheme: {{{ [{$:/palette}get[color-scheme]] ~light }}};\\n}\\n\\n/*\\n** Links\\n*/\\n\\nbutton.tc-tiddlylink,\\na.tc-tiddlylink {\\n\\ttext-decoration: none;\\n\\tfont-weight: 500;\\n\\tcolor: \u003C\u003Ccolour tiddler-link-foreground>>;\\n\\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\\n\\t-webkit-touch-callout: none; /* Prevents long presses from bringing up a link preview */\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink {\\n\\tcolor: \u003C\u003Ccolour sidebar-tiddler-link-foreground>>;\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour sidebar-tiddler-link-foreground-hover>>;\\n}\\n\\nbutton.tc-tiddlylink:hover,\\na.tc-tiddlylink:hover {\\n\\ttext-decoration: underline;\\n}\\n\\na.tc-tiddlylink-resolves {\\n}\\n\\na.tc-tiddlylink-shadow {\\n\\tfont-weight: bold;\\n}\\n\\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\\n\\tfont-weight: normal;\\n}\\n\\na.tc-tiddlylink-missing {\\n\\tfont-style: italic;\\n}\\n\\na.tc-tiddlylink-external {\\n\\ttext-decoration: underline;\\n\\tcolor: \u003C\u003Ccolour external-link-foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background>>;\\n}\\n\\na.tc-tiddlylink-external:visited {\\n\\tcolor: \u003C\u003Ccolour external-link-foreground-visited>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background-visited>>;\\n}\\n\\na.tc-tiddlylink-external:hover {\\n\\tcolor: \u003C\u003Ccolour external-link-foreground-hover>>;\\n\\tbackground-color: \u003C\u003Ccolour external-link-background-hover>>;\\n}\\n\\n.tc-drop-down a.tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-background>>;\\n}\\n\\n/*\\n** Drag and drop styles\\n*/\\n\\n.tc-tiddler-dragger {\\n\\tposition: relative;\\n\\tz-index: -10000;\\n}\\n\\n.tc-tiddler-dragger-inner {\\n\\tposition: absolute;\\n\\ttop: -1000px;\\n\\tleft: -1000px;\\n\\tdisplay: inline-block;\\n\\tpadding: 8px 20px;\\n\\tfont-size: 16.9px;\\n\\tfont-weight: bold;\\n\\tline-height: 20px;\\n\\tcolor: \u003C\u003Ccolour dragger-foreground>>;\\n\\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\\n\\twhite-space: nowrap;\\n\\tvertical-align: baseline;\\n\\tbackground-color: \u003C\u003Ccolour dragger-background>>;\\n\\tborder-radius: 20px;\\n}\\n\\n.tc-tiddler-dragger-cover {\\n\\tposition: absolute;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n.tc-page-container > .tc-dropzone {\\n\\tmin-height: 100vh;\\n}\\n\\n.tc-dropzone {\\n\\tposition: relative;\\n}\\n\\n.tc-dropzone.tc-dragover:before {\\n\\tz-index: 10000;\\n\\tdisplay: block;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: \u003C\u003Ccolour dropzone-background>>;\\n\\ttext-align: center;\\n\\tcontent: \\\"\u003C\u003Clingo DropMessage>>\\\";\\n}\\n\\n.tc-droppable > .tc-droppable-placeholder {\\n\\tdisplay: none;\\n}\\n\\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\\n\\tdisplay: block;\\n\\tborder: 2px dashed \u003C\u003Ccolour dropzone-background>>;\\n}\\n\\n.tc-draggable {\\n\\tcursor: move;\\n}\\n\\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\\n.tc-links-draggable-list .tc-droppable-placeholder {\\n\\tline-height: 2em;\\n\\theight: 2em;\\n}\\n\\n.tc-sidebar-tab-open-item {\\n\\tposition: relative;\\n}\\n\\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\\n\\tfont-size: 0.7em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n/*\\n** Plugin reload warning\\n*/\\n\\n.tc-plugin-reload-warning {\\n\\tz-index: 1000;\\n\\tdisplay: block;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: \u003C\u003Ccolour alert-background>>;\\n\\ttext-align: center;\\n}\\n\\n/*\\n** Buttons\\n*/\\n\\nbutton svg, button img, label svg, label img {\\n\\tvertical-align: middle;\\n}\\n\\n.tc-btn-invisible {\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\tcursor: pointer;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\nbutton:disabled.tc-btn-invisible {\\n\\tcursor: default;\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-btn-boxed {\\n\\tfont-size: 0.6em;\\n\\tpadding: 0.2em;\\n\\tmargin: 1px;\\n\\tbackground: none;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-controls-foreground>>;\\n\\tborder-radius: 0.25em;\\n}\\n\\nhtml body.tc-body .tc-btn-boxed svg {\\n\\tfont-size: 1.6666em;\\n}\\n\\n.tc-btn-boxed:hover {\\n\\tbackground: \u003C\u003Ccolour muted-foreground>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n}\\n\\nhtml body.tc-body .tc-btn-boxed:hover svg {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-btn-rounded {\\n\\tfont-size: 0.5em;\\n\\tline-height: 2;\\n\\tpadding: 0em 0.3em 0.2em 0.4em;\\n\\tmargin: 1px;\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground: \u003C\u003Ccolour muted-foreground>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tborder-radius: 2em;\\n}\\n\\nhtml body.tc-body .tc-btn-rounded svg {\\n\\tfont-size: 1.6666em;\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-btn-rounded:hover {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\nhtml body.tc-body .tc-btn-rounded:hover svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-btn-icon svg {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n\\n.tc-btn-text {\\n\\tmargin-left: 7px;\\n}\\n\\n/* used for documentation \\\"fake\\\" buttons */\\n.tc-btn-standard {\\n\\tline-height: 1.8;\\n\\tcolor: #667;\\n\\tbackground-color: #e0e0e0;\\n\\tborder: 1px solid #888;\\n\\tpadding: 2px 1px 2px 1px;\\n\\tmargin: 1px 4px 1px 4px;\\n}\\n\\n.tc-btn-big-green {\\n\\tdisplay: inline-block;\\n\\tpadding: 8px;\\n\\tmargin: 4px 8px 4px 8px;\\n\\tbackground: \u003C\u003Ccolour download-background>>;\\n\\tcolor: \u003C\u003Ccolour download-foreground>>;\\n\\tfill: \u003C\u003Ccolour download-foreground>>;\\n\\tborder: none;\\n\\tborder-radius: 2px;\\n\\tfont-size: 1.2em;\\n\\tline-height: 1.4em;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-btn-big-green svg,\\n.tc-btn-big-green img {\\n\\theight: 2em;\\n\\twidth: 2em;\\n\\tvertical-align: middle;\\n\\tfill: \u003C\u003Ccolour download-foreground>>;\\n}\\n\\n.tc-primary-btn {\\n\\tbackground: \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-sidebar-lists input {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-sidebar-lists button {\\n\\tcolor: \u003C\u003Ccolour sidebar-button-foreground>>;\\n\\tfill: \u003C\u003Ccolour sidebar-button-foreground>>;\\n}\\n\\n.tc-sidebar-lists button.tc-btn-mini {\\n\\tcolor: \u003C\u003Ccolour sidebar-muted-foreground>>;\\n}\\n\\n.tc-sidebar-lists button.tc-btn-mini:hover {\\n\\tcolor: \u003C\u003Ccolour sidebar-muted-foreground-hover>>;\\n}\\n\\n.tc-sidebar-lists button small {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\nbutton svg.tc-image-button, button .tc-image-button img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n}\\n\\n.tc-unfold-banner {\\n\\tposition: absolute;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\twidth: 100%;\\n\\twidth: calc(100% + 2px);\\n\\tmargin-left: -43px;\\n\\ttext-align: center;\\n\\tborder-top: 2px solid \u003C\u003Ccolour tiddler-info-background>>;\\n\\tmargin-top: 4px;\\n}\\n\\n.tc-unfold-banner:hover {\\n\\tbackground: \u003C\u003Ccolour tiddler-info-background>>;\\n\\tborder-top: 2px solid \u003C\u003Ccolour tiddler-info-border>>;\\n}\\n\\n.tc-unfold-banner svg, .tc-fold-banner svg {\\n\\theight: 0.75em;\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground>>;\\n}\\n\\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-hover>>;\\n}\\n\\n.tc-fold-banner {\\n\\tposition: absolute;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\twidth: 23px;\\n\\ttext-align: center;\\n\\tmargin-left: -35px;\\n\\ttop: 6px;\\n\\tbottom: 6px;\\n}\\n\\n.tc-fold-banner:hover {\\n\\tbackground: \u003C\u003Ccolour tiddler-info-background>>;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n\\t.tc-unfold-banner {\\n\\t\\tposition: static;\\n\\t\\twidth: calc(100% + 59px);\\n\\t}\\n\\n\\t.tc-fold-banner {\\n\\t\\twidth: 16px;\\n\\t\\tmargin-left: -16px;\\n\\t\\tfont-size: 0.75em;\\n\\t}\\n\\n}\\n\\n/*\\n** Tags and missing tiddlers\\n*/\\n\\n.tc-tag-list-item {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-tags-wrapper {\\n\\tmargin: 4px 0 14px 0;\\n}\\n\\n.tc-tags-wrapper .tc-tag-list-item {\\n\\tmargin-right: 7px;\\n}\\n\\n.tc-missing-tiddler-label {\\n\\tfont-style: italic;\\n\\tfont-weight: normal;\\n\\tdisplay: inline-block;\\n\\tfont-size: 11.844px;\\n\\tline-height: 14px;\\n\\twhite-space: nowrap;\\n\\tvertical-align: baseline;\\n}\\n\\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n}\\n\\nbutton.tc-tag-label, span.tc-tag-label {\\n\\tdisplay: inline-block;\\n\\tpadding: 0.16em 0.7em;\\n\\tfont-size: 0.9em;\\n\\tfont-weight: normal;\\n\\tline-height: 1.2em;\\n\\tcolor: \u003C\u003Ccolour tag-foreground>>;\\n\\twhite-space: break-spaces;\\n\\tvertical-align: baseline;\\n\\tbackground-color: \u003C\u003Ccolour tag-background>>;\\n\\tborder-radius: 1em;\\n}\\n\\n.tc-sidebar-scrollable .tc-tag-label {\\n\\ttext-shadow: none;\\n}\\n\\n.tc-untagged-separator {\\n\\tborder: 0;\\n\\theight: 1px;\\n\\tbackground: \u003C\u003Ccolour tab-divider>>;\\n}\\n\\nbutton.tc-untagged-label {\\n\\tbackground-color: \u003C\u003Ccolour untagged-background>>;\\n}\\n\\n.tc-tag-label svg, .tc-tag-label img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tmargin-right: 3px;\\n\\tmargin-bottom: 1px;\\n\\tvertical-align: bottom;\\n}\\n\\n.tc-edit-tags button.tc-remove-tag-button svg {\\n\\tfont-size: 0.7em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-tag-manager-table .tc-tag-label {\\n}\\n\\n.tc-tag-manager-tag {\\n\\twidth: 100%;\\n}\\n\\nbutton.tc-btn-invisible.tc-remove-tag-button {\\n\\toutline: none;\\n}\\n\\n.tc-tag-button-selected,\\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n\\tcolor: \u003C\u003Ccolour tiddler-background>>;\\n}\\n\\n/*\\n** Page layout\\n*/\\n\\n.tc-topbar {\\n\\tposition: fixed;\\n\\tz-index: 1200;\\n}\\n\\n.tc-topbar-left {\\n\\tleft: 29px;\\n\\ttop: 5px;\\n}\\n\\n.tc-topbar-right {\\n\\ttop: 5px;\\n\\tright: 29px;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n\\t.tc-topbar-right {\\n\\t\\tright: 10px;\\n\\t}\\n\\n}\\n\\n.tc-topbar button {\\n\\tpadding: 8px;\\n}\\n\\n.tc-topbar svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-topbar button:hover svg {\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n\\t.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\\n\\t\\ttransform: rotate(-90deg);\\n\\t}\\n\\n}\\n\\n.tc-sidebar-header {\\n\\tcolor: \u003C\u003Ccolour sidebar-foreground>>;\\n\\tfill: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\\n\\tfont-weight: normal;\\n}\\n\\n.tc-sidebar-header .tc-sidebar-lists p {\\n\\tmargin-top: 3px;\\n\\tmargin-bottom: 3px;\\n}\\n\\n.tc-sidebar-header .tc-missing-tiddler-label {\\n\\tcolor: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-advanced-search input {\\n\\twidth: 60%;\\n}\\n\\n.tc-search a svg {\\n\\twidth: 1.2em;\\n\\theight: 1.2em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-page-controls {\\n\\tmargin-top: 14px;\\n\\tfont-size: 1.5em;\\n}\\n\\n.tc-page-controls .tc-drop-down {\\n\\tfont-size: 1rem;\\n}\\n\\n.tc-page-controls button {\\n\\tmargin-right: 0.5em;\\n}\\n\\n.tc-page-controls a.tc-tiddlylink:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-page-controls img {\\n\\twidth: 1em;\\n}\\n\\n.tc-page-controls svg {\\n\\tfill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\\n\\tfill: \u003C\u003Ccolour sidebar-controls-foreground-hover>>;\\n}\\n\\n.tc-sidebar-lists .tc-menu-list-item {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-menu-list-count {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-menu-list-subitem {\\n\\tpadding-left: 7px;\\n}\\n\\n.tc-story-river {\\n\\tposition: relative;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n\\t.tc-sidebar-header {\\n\\t\\tpadding: 14px;\\n\\t\\tmin-height: 32px;\\n\\t\\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\ttransition: min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\\n\\t}\\n\\t\\n\\t\u003C\u003Cif-no-sidebar \\\"\\\"\\\"\\n\\n\\t\\t.tc-sidebar-header {\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t\\\"\\\"\\\">>\\n\\n\\t.tc-story-river {\\n\\t\\tposition: relative;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n\\t.tc-message-box {\\n\\t\\tmargin: 21px -21px 21px -21px;\\n\\t}\\n\\n\\t.tc-sidebar-scrollable {\\n\\t\\tposition: fixed;\\n\\t\\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\\n\\t\\tbottom: 0;\\n\\t\\tright: 0;\\n\\t\\toverflow-y: auto;\\n\\t\\toverflow-x: auto;\\n\\t\\t-webkit-overflow-scrolling: touch;\\n\\t\\tmargin: 0 0 0 -42px;\\n\\t\\tpadding: 71px 0 28px 42px;\\n\\t}\\n\\n\\thtml[dir=\\\"rtl\\\"] .tc-sidebar-scrollable {\\n\\t\\tleft: auto;\\n\\t\\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\\n\\t}\\n\\n\\t.tc-story-river {\\n\\t\\tposition: relative;\\n\\t\\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\\n\\t\\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\\n\\t\\tpadding: 42px 42px 42px 42px;\\n\\t}\\n\\n\u003C\u003Cif-no-sidebar \\\"\\n\\n\\t.tc-story-river {\\n\\t\\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\\n\\t}\\n\\n\\\">>\\n\\n\\t.tc-story-river.tc-static-story-river {\\n\\t\\tmargin-right: 0;\\n\\t\\tpadding-right: 42px;\\n\\t}\\n\\n}\\n\\n@media print {\\n\\n\\tbody.tc-body {\\n\\t\\tbackground-color: transparent;\\n\\t}\\n\\n\\t.tc-sidebar-header, .tc-topbar {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.tc-story-river {\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t}\\n\\n\\t.tc-story-river .tc-tiddler-frame {\\n\\t\\tmargin: 0;\\n\\t\\tborder: none;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n/*\\n** Tiddler styles\\n*/\\n\\n.tc-tiddler-frame {\\n\\tposition: relative;\\n\\tmargin-bottom: 28px;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-border>>;\\n}\\n\\n{{$:/themes/tiddlywiki/vanilla/sticky}}\\n\\n.tc-tiddler-info {\\n\\toverflow: hidden;\\n\\tpadding: 14px 42px 14px 42px;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-info-background>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tiddler-info-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tiddler-info-border>>;\\n}\\n\\n.tc-tiddler-info p {\\n\\tmargin-top: 3px;\\n\\tmargin-bottom: 3px;\\n}\\n\\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-info-tab-background>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tiddler-info-tab-background>>;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\n\\t.tc-tiddler-info {\\n\\t\\tpadding: 14px 14px 14px 14px;\\n\\t}\\n\\n}\\n\\n.tc-view-field-table {\\n\\twidth: 100%;\\n}\\n\\n.tc-view-field-name {\\n\\twidth: 1%; /* Makes this column be as narrow as possible */\\n\\twhite-space: nowrap;\\n\\tvertical-align: top;\\n\\ttext-align: right;\\n\\tfont-style: italic;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-view-field-value {\\n\\tword-break: break-all;\\n}\\n\\n@media (max-width: \u003C\u003Csidebarbreakpoint-minus-one>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\tpadding: 14px 14px 14px 14px;\\n\\t\\tmargin-bottom: .5em;\\n\\t}\\n\\n\\t.tc-tiddler-info {\\n\\t\\tmargin: 0 -14px 0 -14px;\\n\\t}\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\t.tc-tiddler-frame {\\n\\t\\tpadding: 28px 42px 42px 42px;\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\\n\\t\\tborder-radius: 2px;\\n\\t}\\n\\n\u003C\u003Cif-no-sidebar \\\"\\n\\n\\t.tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\\">>\\n\\n\\t.tc-tiddler-info {\\n\\t\\tmargin: 0 -42px 0 -42px;\\n\\t}\\n}\\n\\n.tc-site-title,\\n.tc-titlebar {\\n\\tfont-weight: normal;\\n\\tfont-size: 2.35em;\\n\\tline-height: 1.35em;\\n\\tcolor: \u003C\u003Ccolour tiddler-title-foreground>>;\\n\\tmargin: 0;\\n}\\n\\n.tc-site-title {\\n\\tcolor: \u003C\u003Ccolour site-title-foreground>>;\\n}\\n\\n.tc-tiddler-title-icon {\\n\\tvertical-align: middle;\\n\\tmargin-right: .1em;\\n}\\n\\n.tc-tiddler-title-icon svg {\\n\\twidth: 0.9em;\\n\\theight: 0.9em;\\n}\\n\\n.tc-system-title-prefix {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-titlebar h2 {\\n\\tfont-size: 1em;\\n\\tdisplay: inline;\\n}\\n\\n.tc-titlebar img {\\n\\theight: 1em;\\n}\\n\\n.tc-subtitle {\\n\\tfont-size: 0.9em;\\n\\tcolor: \u003C\u003Ccolour tiddler-subtitle-foreground>>;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-subtitle .tc-tiddlylink {\\n\\tmargin-right: .3em;\\n}\\n\\n.tc-tiddler-missing .tc-title {\\n\\tfont-style: italic;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-controls {\\n\\tfloat: right;\\n\\tpadding: 3px; /* make space for outline */\\n}\\n\\n.tc-tiddler-controls .tc-drop-down {\\n\\tfont-size: 0.6em;\\n}\\n\\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\\n\\tfont-size: 1em;\\n}\\n\\n.tc-tiddler-controls > span > button,\\n.tc-tiddler-controls > span > span > button,\\n.tc-tiddler-controls > span > span > span > button {\\n\\tvertical-align: baseline;\\n\\tmargin-left:5px;\\n}\\n\\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\\n.tc-search button svg, .tc-search a svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground>>;\\n}\\n\\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\\n\\theight: 0.75em;\\n}\\n\\n.tc-search button svg, .tc-search a svg {\\n\\theight: 1.2em;\\n\\twidth: 1.2em;\\n\\tmargin: 0 0.25em;\\n}\\n\\n.tc-tiddler-controls button.tc-selected svg,\\n.tc-page-controls button.tc-selected svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n}\\n\\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\\n.tc-search button:hover svg, .tc-search a:hover svg {\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-hover>>;\\n}\\n\\n@media print {\\n\\t.tc-tiddler-controls {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n.tc-tiddler-help { /* Help prompts within tiddler template */\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n\\tmargin-top: 14px;\\n}\\n\\n.tc-tiddler-help a.tc-tiddlylink {\\n\\tcolor: \u003C\u003Ccolour very-muted-foreground>>;\\n}\\n\\n.tc-tiddler-frame .tc-edit-texteditor {\\n\\twidth: 100%;\\n\\tmargin: 4px 0 4px 0;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor {\\n\\tpadding: 3px 3px 3px 3px;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tline-height: 1.3em;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n\\t-webkit-appearance: none;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame select.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-editor-background>>;\\n}\\n\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>>;\\n}\\n\\n.tc-tiddler-frame .tc-edit-fields input.tc-edit-fieldeditor,\\n.tc-tiddler-frame .tc-edit-fields select.tc-edit-fieldeditor,\\n.tc-tiddler-frame .tc-edit-fields textarea.tc-edit-fieldeditor {\\n\\tmargin: 0;\\n\\tpadding: 2px 3px;\\n}\\n\\n.tc-tiddler-frame .tc-binary-warning {\\n\\twidth: 100%;\\n\\theight: 5em;\\n\\ttext-align: center;\\n\\tpadding: 3em 3em 6em 3em;\\n\\tbackground: \u003C\u003Ccolour alert-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour alert-border>>;\\n}\\n\\ncanvas.tc-edit-bitmapeditor {\\n\\tborder: 6px solid \u003C\u003Ccolour tiddler-editor-border-image>>;\\n\\tcursor: crosshair;\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tmargin-top: 6px;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.tc-edit-bitmapeditor-width {\\n\\tdisplay: block;\\n}\\n\\n.tc-edit-bitmapeditor-height {\\n\\tdisplay: block;\\n}\\n\\n.tc-tiddler-body {\\n\\tclear: both;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-body {\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\\n}\\n\\n.tc-titlebar, .tc-tiddler-edit-title {\\n\\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\\n}\\n\\nhtml body.tc-body.tc-single-tiddler-window {\\n\\tmargin: 1em;\\n\\tbackground: \u003C\u003Ccolour tiddler-background>>;\\n}\\n\\n.tc-single-tiddler-window img,\\n.tc-single-tiddler-window svg,\\n.tc-single-tiddler-window canvas,\\n.tc-single-tiddler-window embed,\\n.tc-single-tiddler-window iframe {\\n\\tmax-width: 100%;\\n}\\n\\n/*\\n** Editor\\n*/\\n\\n.tc-editor-toolbar {\\n\\tmargin-top: 8px;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview .tc-editor-toolbar,\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden .tc-editor-toolbar {\\n\\tgrid-area: toolbar;\\n}\\n\\n.tc-editor-toolbar button {\\n\\tvertical-align: middle;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-controls-foreground>>;\\n\\tcolor: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n\\tfill: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n\\tborder-radius: 4px;\\n\\tpadding: 3px;\\n\\tmargin: 2px 0 2px 4px;\\n}\\n\\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\\n\\tmargin-left: 1px;\\n\\twidth: 1em;\\n\\tborder-radius: 8px;\\n}\\n\\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\\n\\tmargin-left: 11px;\\n}\\n\\n.tc-editor-toolbar button.tc-selected {\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-editor-toolbar button svg {\\n\\twidth: 1.6em;\\n\\theight: 1.2em;\\n}\\n\\n.tc-editor-toolbar .tc-drop-down button.tc-btn-mini {\\n\\tpadding: 2px 4px;\\n}\\n\\n.tc-editor-toolbar button:hover {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-controls-foreground-selected>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\\n\\twhite-space: normal;\\n}\\n\\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\\n\\tdisplay: inline-block;\\n\\tpadding: 3px;\\n\\twidth: auto;\\n}\\n\\n.tc-editor-toolbar .tc-search-results {\\n\\tpadding: 0;\\n}\\n\\n.tc-editor-toolbar button.tc-editortoolbar-stamp-button + .tc-popup .tc-drop-down > p {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n}\\n\\n.tc-editor-toolbar button.tc-editortoolbar-stamp-button + .tc-popup .tc-drop-down a.tc-tiddlylink {\\n\\tfont-weight: normal;\\n}\\n\\n/*\\n** Adjustments for fluid-fixed mode\\n*/\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n\u003C\u003Cif-fluid-fixed text:\\\"\\\"\\\"\\n\\n\\t.tc-story-river {\\n\\t\\tpadding-right: 0;\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\t\\tleft: 0;\\n\\t\\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\\n\\t\\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\\n\\t}\\n\\n\\t.tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.tc-sidebar-scrollable {\\n\\t\\tleft: auto;\\n\\t\\tbottom: 0;\\n\\t\\tright: 0;\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\\n\\t}\\n\\n\\tbody.tc-body .tc-page-container.tc-page-view-zoomin .tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t\\twidth: calc(100% - 42px);\\n\\t}\\n\\n\\\"\\\"\\\" hiddenSidebarText:\\\"\\\"\\\"\\n\\n\\t.tc-story-river {\\n\\t\\tpadding-right: 3em;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\tbody.tc-body .tc-page-container.tc-page-view-zoomin .tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t\\twidth: calc(100% - 84px);\\n\\t}\\n\\n\\\"\\\"\\\">>\\n\\n}\\n\\n/*\\n** Toolbar buttons\\n*/\\n\\n.tc-page-controls svg.tc-image-new-button {\\n\\tfill: \u003C\u003Ccolour toolbar-new-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-options-button {\\n\\tfill: \u003C\u003Ccolour toolbar-options-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-save-button {\\n\\tfill: \u003C\u003Ccolour toolbar-save-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-info-button {\\n\\tfill: \u003C\u003Ccolour toolbar-info-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-edit-button {\\n\\tfill: \u003C\u003Ccolour toolbar-edit-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-close-button {\\n\\tfill: \u003C\u003Ccolour toolbar-close-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-delete-button {\\n\\tfill: \u003C\u003Ccolour toolbar-delete-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-cancel-button {\\n\\tfill: \u003C\u003Ccolour toolbar-cancel-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-done-button {\\n\\tfill: \u003C\u003Ccolour toolbar-done-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-layout-button {\\n\\tfill: \u003C\u003Ccolour toolbar-options-button>>;\\n}\\n\\n/*\\n** Tiddler edit mode\\n*/\\n\\n.tc-tiddler-edit-frame em.tc-edit {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n\\tfont-style: normal;\\n}\\n\\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\\n\\tfont-style: normal;\\n}\\n\\n.tc-type-selector .tc-edit-typeeditor {\\n\\twidth: auto;\\n}\\n\\n.tc-type-selector-dropdown-wrapper {\\n\\tdisplay: inline-block;\\n}\\n\\n\u003C\u003Cset-type-selector-min-width>>\\n\\n.tc-edit-tags {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tpadding: 4px 8px 4px 8px;\\n}\\n\\n.tc-edit-add-tag {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-add-tag .tc-add-tag-name input {\\n\\twidth: 50%;\\n}\\n\\n.tc-edit-add-tag .tc-keyboard {\\n\\tdisplay:inline;\\n}\\n\\n.tc-edit-tags .tc-tag-label {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-tags-list {\\n\\tmargin: 14px 0 14px 0;\\n}\\n\\n.tc-remove-tag-button {\\n\\tpadding-left: 4px;\\n}\\n\\n.tc-tiddler-preview {\\n\\toverflow: auto;\\n}\\n\\n.tc-tiddler-editor {\\n\\tdisplay: grid;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview {\\n\\tgrid-template-areas:\\n\\t\\t\\\"toolbar toolbar\\\"\\n\\t\\t\\\"editor preview\\\";\\n\\tgrid-template-columns: 1fr 1fr;\\n\\tgrid-template-rows: auto 1fr;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden {\\n\\tgrid-template-areas:\\n\\t\\t\\\"toolbar\\\"\\n\\t\\t\\\"editor\\\";\\n\\tgrid-template-columns: 1fr;\\n\\tgrid-template-rows: auto 1fr;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview .tc-tiddler-preview-preview {\\n\\tgrid-area: preview;\\n\\toverflow-wrap: anywhere;\\n\\tword-break: normal;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n\\tmargin: 4px 0 3px 3px;\\n\\tpadding: 3px 3px 3px 3px;\\n}\\n\\n\u003C\u003Cif-editor-height-fixed then:\\\"\\\"\\\"\\n\\n.tc-tiddler-preview-preview {\\n\\toverflow-y: scroll;\\n\\theight: {{$:/config/TextEditor/EditorHeight/Height}};\\n}\\n\\n\\\"\\\"\\\">>\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview .tc-edit-texteditor,\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden .tc-edit-texteditor {\\n\\tgrid-area: editor;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview canvas.tc-edit-bitmapeditor,\\n.tc-tiddler-frame .tc-tiddler-editor.tc-tiddler-preview-hidden canvas.tc-edit-bitmapeditor {\\n\\tgrid-area: editor;\\n\\tmax-width: 100%;\\n}\\n\\n.tc-edit-fields {\\n\\twidth: 100%;\\n}\\n\\n.tc-edit-fields.tc-edit-fields-small {\\n\\tmargin-top: 0;\\n\\tmargin-bottom: 0;\\n}\\n\\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\\n\\tborder: none;\\n\\tpadding: 4px;\\n}\\n\\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-editor-fields-odd>>;\\n}\\n\\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\\n\\tbackground-color: \u003C\u003Ccolour tiddler-editor-fields-even>>;\\n}\\n\\n.tc-edit-field-name {\\n\\ttext-align: right;\\n}\\n\\n.tc-edit-field-value input {\\n\\twidth: 100%;\\n}\\n\\n.tc-edit-field-remove {\\n}\\n\\n.tc-edit-field-remove svg {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\\n\\twidth: auto;\\n}\\n\\n.tc-edit-field-add-name-wrapper {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-field-add-value {\\n\\tdisplay: inline-block;\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n\\t.tc-edit-field-add-value {\\n\\t\\twidth: 35%;\\n\\t}\\n\\n}\\n\\n.tc-edit-field-add-button {\\n\\tdisplay: inline-block;\\n\\twidth: 10%;\\n}\\n\\n\\n/*\\n** Tiddler editor dropzone\\n*/\\n\\n.tc-dropzone-editor {\\n\\tposition:relative;\\n}\\n\\n.tc-dropzone-editor.tc-dragover .tc-editor-toolbar::after{\\n\\tz-index: 10000;\\n\\ttop:0;\\n\\tleft:0;\\n\\tright:0;\\n\\theight: 100%;\\n\\tbackground: \u003C\u003Ccolour dropzone-background>>;\\n\\tcontent: \\\"\u003C\u003Clingo DropMessage>>\\\";\\n\\tpointer-events: none;\\n\\tposition: absolute;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\n\\tborder: 4px dashed \u003C\u003Ccolor modal-border>>;\\n\\tfont-weight: bold;\\n\\tfont-size: 150%;\\n\\topacity: 0.8;\\n\\tcolor: \u003C\u003Ccolor foreground>>;\\n}\\n\\n.tc-editor-importpopup {\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\n.tc-editor-import {\\n\\tposition: absolute;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tbackground: \u003C\u003Ccolor pre-background>>;\\n\\tbox-shadow: 2px 2px 10px \u003C\u003Ccolour foreground>>;\\n\\tpadding: 10px;\\n\\twidth: 96%;\\n\\tborder: 1px solid \u003C\u003Ccolor tiddler-controls-foreground>>;\\n\\ttext-align:center;\\n}\\n\\n.tc-editor-import img {\\n\\tmax-height: 500px;\\n}\\n\\n/*\\n** Storyview Classes\\n*/\\n\\n.tc-viewswitcher .tc-image-button {\\n\\tmargin-right: .3em;\\n}\\n\\n.tc-page-container.tc-page-view-zoomin .tc-tiddler-frame {\\n\\tposition: absolute;\\n\\tdisplay: block;\\n\\twidth: 100%;\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n\\t.tc-page-container.tc-page-view-zoomin .tc-tiddler-frame {\\n\\t\\twidth: calc(100% - 84px);\\n\\t}\\n\\n}\\n\\n/*\\n** Dropdowns\\n*/\\n\\n.tc-btn-dropdown {\\n\\ttext-align: left;\\n}\\n\\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-drop-down-wrapper {\\n\\tposition: relative;\\n}\\n\\n.tc-drop-down {\\n\\tmin-width: 380px;\\n\\tborder: 1px solid \u003C\u003Ccolour dropdown-border>>;\\n\\tbackground-color: \u003C\u003Ccolour dropdown-background>>;\\n\\tpadding: 7px 0 7px 0;\\n\\tmargin: 4px 0 0 0;\\n\\twhite-space: nowrap;\\n\\ttext-shadow: none;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-drop-down .tc-drop-down {\\n\\tmargin-left: 14px;\\n}\\n\\n.tc-drop-down button svg, .tc-drop-down a svg {\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-drop-down button:disabled svg {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-drop-down button.tc-btn-invisible:hover svg {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-drop-down .tc-drop-down-info {\\n\\tpadding-left: 14px;\\n}\\n\\n.tc-drop-down p {\\n\\tpadding: 0 14px 0 14px;\\n}\\n\\n.tc-drop-down svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-drop-down img {\\n\\twidth: 1em;\\n}\\n\\n.tc-drop-down a, .tc-drop-down button {\\n\\tdisplay: block;\\n\\tpadding: 0 14px 0 14px;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\\n\\tdisplay: inline-block;\\n\\twidth: auto;\\n\\tmargin-bottom: 0px;\\n\\tborder-bottom-left-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-drop-down .tc-prompt {\\n\\tpadding: 0 14px;\\n}\\n\\n.tc-drop-down .tc-chooser {\\n\\tborder: none;\\n}\\n\\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\\n\\tfont-size: 0.4em;\\n\\tpadding-left: 1.2em;\\n}\\n\\n.tc-drop-down .tc-file-input-wrapper {\\n\\twidth: 100%;\\n}\\n\\n.tc-drop-down .tc-file-input-wrapper button {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-background>>;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-link-foreground>>;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-drop-down .tc-tab-buttons button {\\n\\tbackground-color: \u003C\u003Ccolour dropdown-tab-background>>;\\n}\\n\\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour dropdown-tab-background-selected>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour dropdown-tab-background-selected>>;\\n}\\n\\n.tc-drop-down-bullet {\\n\\tdisplay: inline-block;\\n\\twidth: 0.5em;\\n}\\n\\n.tc-drop-down .tc-tab-contents a {\\n\\tpadding: 0 0.5em 0 0.5em;\\n}\\n\\n.tc-block-dropdown-wrapper {\\n\\tposition: relative;\\n}\\n\\n.tc-block-dropdown {\\n\\tposition: absolute;\\n\\tmin-width: 220px;\\n\\tborder: 1px solid \u003C\u003Ccolour dropdown-border>>;\\n\\tbackground-color: \u003C\u003Ccolour dropdown-background>>;\\n\\tpadding: 7px 0;\\n\\tmargin: 4px 0 0 0;\\n\\twhite-space: nowrap;\\n\\tz-index: 1000;\\n\\ttext-shadow: none;\\n}\\n\\n.tc-block-dropdown.tc-search-drop-down {\\n\\tmargin-left: -12px;\\n}\\n\\n.tc-block-dropdown a {\\n\\tdisplay: block;\\n\\tpadding: 4px 14px 4px 14px;\\n}\\n\\n.tc-block-dropdown.tc-search-drop-down a {\\n\\tdisplay: block;\\n\\tpadding: 0px 10px 0px 10px;\\n}\\n\\n.tc-drop-down .tc-dropdown-item-plain,\\n.tc-block-dropdown .tc-dropdown-item-plain {\\n\\tpadding: 4px 14px 4px 7px;\\n}\\n\\n.tc-drop-down .tc-dropdown-item,\\n.tc-block-dropdown .tc-dropdown-item {\\n\\tpadding: 4px 14px 4px 7px;\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-block-dropdown a.tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-background>>;\\n\\tbackground-color: \u003C\u003Ccolour tiddler-link-foreground>>;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-search-results {\\n\\tpadding: 0 7px 0 7px;\\n}\\n\\n.tc-image-chooser, .tc-colour-chooser {\\n\\twhite-space: normal;\\n}\\n\\n.tc-image-chooser a,\\n.tc-colour-chooser a {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\ttext-align: center;\\n\\tposition: relative;\\n}\\n\\n.tc-image-chooser a {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tpadding: 2px;\\n\\tmargin: 2px;\\n\\twidth: 4em;\\n\\theight: 4em;\\n}\\n\\n.tc-colour-chooser a {\\n\\tpadding: 3px;\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-image-chooser a:hover,\\n.tc-colour-chooser a:hover {\\n\\tbackground: \u003C\u003Ccolour primary>>;\\n\\tpadding: 0px;\\n\\tborder: 3px solid \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-image-chooser a svg,\\n.tc-image-chooser a img {\\n\\tdisplay: inline-block;\\n\\twidth: auto;\\n\\theight: auto;\\n\\tmax-width: 3.5em;\\n\\tmax-height: 3.5em;\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tmargin: auto;\\n}\\n\\n/* Make search dropdown visible on small screens. issue #7003 */\\n@media (max-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n\\t.tc-sidebar-search .tc-block-dropdown-wrapper {\\n\\t\\tposition: initial;\\n\\t}\\n\\n}\\n\\n/*\\n** Modals\\n*/\\n\\n.tc-modal-wrapper {\\n\\tposition: fixed;\\n\\toverflow: auto;\\n\\toverflow-y: scroll;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tz-index: 900;\\n}\\n\\n.tc-modal-backdrop {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tz-index: 1000;\\n\\tbackground-color: \u003C\u003Ccolour modal-backdrop>>;\\n}\\n\\n.tc-modal {\\n\\tz-index: 1100;\\n\\tbackground-color: \u003C\u003Ccolour modal-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour modal-border>>;\\n}\\n\\n@media (max-width: 55em) {\\n\\t.tc-modal {\\n\\t\\tposition: fixed;\\n\\t\\ttop: 1em;\\n\\t\\tleft: 1em;\\n\\t\\tright: 1em;\\n\\t}\\n\\n\\t.tc-modal-body {\\n\\t\\toverflow-y: auto;\\n\\t\\tmax-height: 400px;\\n\\t\\tmax-height: 60vh;\\n\\t}\\n}\\n\\n@media (min-width: 55em) {\\n\\t.tc-modal {\\n\\t\\tposition: fixed;\\n\\t\\ttop: 2em;\\n\\t\\tleft: 25%;\\n\\t\\twidth: 50%;\\n\\t}\\n\\n\\t.tc-modal-body {\\n\\t\\toverflow-y: auto;\\n\\t\\tmax-height: 400px;\\n\\t\\tmax-height: 60vh;\\n\\t}\\n}\\n\\n.tc-modal-header {\\n\\tpadding: 9px 15px;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour modal-header-border>>;\\n}\\n\\n.tc-modal-header h3 {\\n\\tmargin: 0;\\n\\tline-height: 30px;\\n}\\n\\n.tc-modal-header img, .tc-modal-header svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-modal-body {\\n\\tpadding: 15px;\\n}\\n\\n.tc-modal-footer {\\n\\tpadding: 14px 15px 15px;\\n\\tmargin-bottom: 0;\\n\\ttext-align: right;\\n\\tbackground-color: \u003C\u003Ccolour modal-footer-background>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour modal-footer-border>>;\\n}\\n\\n.tc-modal-prevent-scroll {\\n\\toverflow: hidden;\\n}\\n\\n/*\\n** Centered modals\\n*/\\n.tc-modal-centered .tc-modal {\\n\\twidth: auto;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%) !important;\\n}\\n\\n/*\\n** Notifications\\n*/\\n\\n.tc-notification {\\n\\tposition: fixed;\\n\\ttop: 14px;\\n\\tright: 42px;\\n\\tz-index: 1300;\\n\\tmax-width: 280px;\\n\\tpadding: 0 14px 0 14px;\\n\\tbackground-color: \u003C\u003Ccolour notification-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour notification-border>>;\\n}\\n\\n/*\\n** Tabs\\n*/\\n\\n.tc-tab-set.tc-vertical {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-tab-buttons {\\n\\tfont-size: 0.85em;\\n\\tpadding-top: 1em;\\n\\tmargin-bottom: -2px;\\n}\\n\\n.tc-tab-buttons.tc-vertical {\\n\\tz-index: 100;\\n\\tdisplay: block;\\n\\tpadding-top: 14px;\\n\\tvertical-align: top;\\n\\ttext-align: right;\\n\\tmargin-bottom: inherit;\\n\\tmargin-right: -1px;\\n\\tmax-width: 33%;\\n\\t-webkit-flex: 0 0 auto;\\n\\tflex: 0 0 auto;\\n}\\n\\n.tc-tab-buttons button.tc-tab-selected {\\n\\tcolor: \u003C\u003Ccolour tab-foreground-selected>>;\\n\\tbackground-color: \u003C\u003Ccolour tab-background-selected>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border-selected>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border-selected>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour tab-border-selected>>;\\n}\\n\\n.tc-tab-buttons button {\\n\\tcolor: \u003C\u003Ccolour tab-foreground>>;\\n\\tpadding: 3px 5px 3px 5px;\\n\\tmargin-right: 0.3em;\\n\\tfont-weight: normal;\\n\\tborder: none;\\n\\tbackground: inherit;\\n\\tbackground-color: \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-top-left-radius: 2px;\\n\\tborder-top-right-radius: 2px;\\n\\tborder-bottom-left-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-tab-buttons.tc-vertical button {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmargin-top: 3px;\\n\\tmargin-right: 0;\\n\\ttext-align: right;\\n\\tbackground-color: \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-right: none;\\n\\tborder-top-left-radius: 2px;\\n\\tborder-bottom-left-radius: 2px;\\n\\tborder-top-right-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour tab-background-selected>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour tab-background-selected>>;\\n}\\n\\n.tc-tab-divider {\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-divider>>;\\n}\\n\\n.tc-tab-divider.tc-vertical {\\n\\tdisplay: none;\\n}\\n\\n.tc-tab-content {\\n\\tmargin-top: 14px;\\n}\\n\\n.tc-tab-content.tc-vertical {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\tpadding-top: 0;\\n\\tpadding-left: 14px;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\t-webkit-flex: 1 0 70%;\\n\\tflex: 1 0 70%;\\n\\toverflow: auto;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons {\\n\\tmargin-bottom: -1px;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background-selected>>;\\n\\tcolor: \u003C\u003Ccolour sidebar-tab-foreground-selected>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour sidebar-tab-border-selected>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour sidebar-tab-border-selected>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour sidebar-tab-border-selected>>;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons button {\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n\\tcolor: \u003C\u003Ccolour sidebar-tab-foreground>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour sidebar-tab-border>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour sidebar-tab-border>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour sidebar-tab-border>>;\\n}\\n\\n.tc-sidebar-lists .tc-tab-divider {\\n\\tborder-top: 1px solid \u003C\u003Ccolour sidebar-tab-divider>>;\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background>>;\\n\\tborder-top: none;\\n\\tborder-left: none;\\n\\tborder-bottom: none;\\n\\tborder-right: 1px solid #ccc;\\n\\tmargin-bottom: inherit;\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\\n\\tbackground-color: \u003C\u003Ccolour sidebar-tab-background-selected>>;\\n\\tborder: none;\\n}\\n\\n/*\\n** Manager\\n*/\\n\\n.tc-manager-wrapper {\\n\\t\\n}\\n\\n.tc-manager-controls {\\n\\t\\n}\\n\\n.tc-manager-control {\\n\\tmargin: 0.5em 0;\\n}\\n\\n.tc-manager-control select {\\n\\tmax-width: 100%;\\n}\\n\\n.tc-manager-list {\\n\\twidth: 100%;\\n\\tborder-top: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-right: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-manager-list-item {\\n\\n}\\n\\n.tc-manager-list-item-heading {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tpadding: 3px;\\n}\\n\\n.tc-manager-list-item-heading-selected {\\n\\tfont-weight: bold;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n\\tbackground-color: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-manager-list-item-heading:hover {\\n\\tbackground: \u003C\u003Ccolour primary>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-manager-list-item-content {\\n\\tdisplay: flex;\\n}\\n\\n.tc-manager-list-item-content-sidebar {\\n\\tflex: 1 0;\\n\\tbackground: \u003C\u003Ccolour tiddler-editor-background>>;\\n\\tborder-right: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-bottom: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-manager-list-item-content-item-heading {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n\\tbackground: \u003C\u003Ccolour muted-foreground>>;\\n\\ttext-transform: uppercase;\\n\\tfont-size: 0.6em;\\n\\tfont-weight: bold;\\n\\tpadding: 0.5em 0 0.5em 0;\\n}\\n\\n.tc-manager-list-item-content-item-body {\\n\\tpadding: 0 0.5em 0 0.5em;\\n}\\n\\n.tc-manager-list-item-content-item-body > pre {\\n\\tmargin: 0.5em 0 0.5em 0;\\n\\tborder: none;\\n\\tbackground: inherit;\\n}\\n\\n.tc-manager-list-item-content-tiddler {\\n\\tflex: 3 1;\\n\\tborder-left: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-right: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-bottom: 0.5em solid \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-manager-list-item-content-item-body > table {\\n\\tborder: none;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n}\\n\\n.tc-manager-list-item-content-item-body > table td {\\n\\tborder: none;\\n}\\n\\n.tc-manager-icon-editor > button {\\n\\twidth: 100%;\\n}\\n\\n.tc-manager-icon-editor > button > svg,\\n.tc-manager-icon-editor > button > button {\\n\\twidth: 100%;\\n\\theight: auto;\\n}\\n\\n/*\\n** Import table\\n*/\\n\\n.tc-import-table {\\n\\twidth: 100%;\\n}\\n\\n.tc-import-table svg.tc-image-edit-button {\\n\\tmax-width: unset;\\n}\\n\\n.tc-import-table th:first-of-type {\\n\\twidth: 10%;\\n}\\n\\n.tc-import-table th:last-of-type {\\n\\twidth: 30%;\\n}\\n\\n.tc-import-table .tc-row-disabled {\\n\\tbackground: \u003C\u003Ccolour very-muted-foreground>>10;\\n\\topacity: 0.8;\\n}\\n\\n.tc-import-table .tc-row-warning {\\n\\tbackground: \u003C\u003Ccolour diff-delete-background>>50;\\n}\\n\\n/*\\n** Alerts\\n*/\\n\\n.tc-alerts {\\n\\tposition: fixed;\\n\\ttop: 28px;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tmax-width: 50%;\\n\\tz-index: 20000;\\n}\\n\\n.tc-alert {\\n\\tposition: relative;\\n\\tmargin: 14px;\\n\\tpadding: 7px;\\n\\tborder: 1px solid \u003C\u003Ccolour alert-border>>;\\n\\tbackground-color: \u003C\u003Ccolour alert-background>>;\\n}\\n\\n.tc-alert-toolbar {\\n\\tposition: absolute;\\n\\ttop: 7px;\\n\\tright: 7px;\\n\\tline-height: 0;\\n}\\n\\n.tc-alert-toolbar svg {\\n\\tfill: \u003C\u003Ccolour alert-muted-foreground>>;\\n}\\n\\n.tc-alert-subtitle {\\n\\tcolor: \u003C\u003Ccolour alert-muted-foreground>>;\\n\\tfont-weight: bold;\\n\\tfont-size: 0.8em;\\n\\tmargin-bottom: 0.5em;\\n}\\n\\n.tc-alert-body > p {\\n\\tmargin: 0;\\n}\\n\\n.tc-alert-highlight {\\n\\tcolor: \u003C\u003Ccolour alert-highlight>>;\\n}\\n\\n@media (min-width: \u003C\u003Csidebarbreakpoint>>) {\\n\\n\\t.tc-static-alert {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t.tc-static-alert-inner {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 100;\\n\\t}\\n\\n}\\n\\n.tc-static-alert-inner {\\n\\tpadding: 0 2px 2px 42px;\\n\\tcolor: \u003C\u003Ccolour static-alert-foreground>>;\\n}\\n\\n/*\\n** Floating drafts list\\n*/\\n\\n.tc-drafts-list {\\n\\tz-index: 2000;\\n\\tposition: fixed;\\n\\tfont-size: 0.8em;\\n\\tleft: 0;\\n\\tbottom: 0;\\n}\\n\\n.tc-drafts-list a {\\n\\tmargin: 0 0.5em;\\n\\tpadding: 4px 4px;\\n\\tborder-top-left-radius: 4px;\\n\\tborder-top-right-radius: 4px;\\n\\tborder: 1px solid \u003C\u003Ccolour background>>;\\n\\tborder-bottom: none;\\n\\tbackground: \u003C\u003Ccolour dirty-indicator>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-drafts-list a:hover {\\n\\ttext-decoration: none;\\n\\tbackground: \u003C\u003Ccolour foreground>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-drafts-list a svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: text-bottom;\\n}\\n\\n/*\\n** Control panel\\n*/\\n\\n.tc-control-panel td {\\n\\tpadding: 4px;\\n}\\n\\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\\n\\twidth: 100%;\\n}\\n\\n.tc-plugin-info {\\n\\tdisplay: flex;\\n\\ttext-shadow: none;\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\n\\tmargin: 0.5em 0 0.5em 0;\\n\\tpadding: 4px;\\n\\talign-items: center;\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink.tc-plugin-info {\\n\\tcolor: \u003C\u003Ccolour tiddler-link-foreground>>;\\n}\\n\\n\\n.tc-plugin-info-sub-plugins .tc-plugin-info {\\n\\tmargin: 0.5em;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-plugin-info-sub-plugin-indicator {\\n\\tmargin: -16px 1em 0 2em;\\n}\\n\\n.tc-plugin-info-sub-plugin-indicator button {\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tbackground: \u003C\u003Ccolour foreground>>;\\n\\tborder-radius: 8px;\\n\\tpadding: 2px 7px;\\n\\tfont-size: 0.75em;\\n}\\n\\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\\n\\tmargin-left: 1em;\\n\\tmargin-right: 1em;\\n}\\n\\n.tc-plugin-info-disabled {\\n\\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\\n\\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\\n}\\n\\n.tc-plugin-info-disabled:hover {\\n\\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\\n\\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\\n}\\n\\na.tc-tiddlylink.tc-plugin-info:hover {\\n\\ttext-decoration: none;\\n\\tbackground-color: \u003C\u003Ccolour primary>>;\\n\\tcolor: \u003C\u003Ccolour background>>;\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-plugin-info-chunk {\\n\\tmargin: 2px;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tline-height: 1;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-icon {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tline-height: 1;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description {\\n\\tflex-grow: 1;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\\n\\tfont-size: 0.8em;\\n\\tline-height: 1.2;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\ttext-align: right;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\\n\\tfont-size: 1em;\\n\\tline-height: 1.2;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\\n\\tfont-size: 0.8em;\\n\\tline-height: 1.2;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-description div {\\n\\tfont-size: 0.7em;\\n\\tline-height: 1.2;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\\n\\twidth: 2em;\\n\\theight: 2em;\\n}\\n\\n.tc-plugin-info-dropdown {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tmargin-top: -8px;\\n}\\n\\n.tc-plugin-info-dropdown-message {\\n\\tbackground: \u003C\u003Ccolour message-background>>;\\n\\tpadding: 0.5em 1em 0.5em 1em;\\n\\tfont-weight: bold;\\n\\tfont-size: 0.8em;\\n}\\n\\n.tc-plugin-info-dropdown-body {\\n\\tpadding: 1em 1em 0 1em;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-plugin-info-sub-plugins {\\n\\tpadding: 0.5em;\\n\\tmargin: 0 1em 1em 1em;\\n\\tbackground: \u003C\u003Ccolour notification-background>>;\\n}\\n\\n.tc-install-plugin {\\n\\tfont-weight: bold;\\n\\tbackground: green;\\n\\tcolor: white;\\n\\tfill: white;\\n\\tborder-radius: 4px;\\n\\tpadding: 3px;\\n}\\n\\n.tc-install-plugin.tc-reinstall-downgrade {\\n\\tbackground: red;\\n}\\n\\n.tc-install-plugin.tc-reinstall {\\n\\tbackground: blue;\\n}\\n\\n.tc-install-plugin.tc-reinstall-upgrade {\\n\\tbackground: orange;\\n}\\n\\n.tc-check-list {\\n\\tline-height: 2em;\\n}\\n\\n.tc-check-list .tc-image-button {\\n\\theight: 1.5em;\\n}\\n\\n/*\\n** Message boxes\\n*/\\n\\n.tc-message-box {\\n\\tborder: 1px solid \u003C\u003Ccolour message-border>>;\\n\\tbackground: \u003C\u003Ccolour message-background>>;\\n\\tpadding: 0px 21px 0px 21px;\\n\\tfont-size: 12px;\\n\\tline-height: 18px;\\n\\tcolor: \u003C\u003Ccolour message-foreground>>;\\n}\\n\\n.tc-message-box svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: text-bottom;\\n}\\n\\n/*\\n** Pictures\\n*/\\n\\n.tc-bordered-image {\\n\\tborder: 1px solid \u003C\u003Ccolour muted-foreground>>;\\n\\tpadding: 5px;\\n\\tmargin: 5px;\\n}\\n\\n/*\\n** Floats\\n*/\\n\\n.tc-float-right {\\n\\tfloat: right;\\n}\\n\\n/*\\n** Chooser\\n*/\\n\\n.tc-chooser {\\n\\tborder-right: 1px solid \u003C\u003Ccolour table-header-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour table-header-background>>;\\n}\\n\\n\\n.tc-chooser-item {\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour table-header-background>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour table-header-background>>;\\n\\tpadding: 2px 4px 2px 14px;\\n}\\n\\n.tc-drop-down .tc-chooser-item {\\n\\tpadding: 2px;\\n}\\n\\n.tc-chosen,\\n.tc-chooser-item:hover {\\n\\tbackground-color: \u003C\u003Ccolour table-header-background>>;\\n\\tborder-color: \u003C\u003Ccolour table-footer-background>>;\\n}\\n\\n.tc-chosen .tc-tiddlylink {\\n\\tcursor:default;\\n}\\n\\n.tc-chooser-item .tc-tiddlylink {\\n\\tdisplay: block;\\n\\ttext-decoration: none;\\n\\tbackground-color: transparent;\\n}\\n\\n.tc-chooser-item:hover .tc-tiddlylink:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-drop-down .tc-chosen .tc-tiddlylink,\\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-chosen > .tc-tiddlylink:before {\\n\\tmargin-left: -10px;\\n\\tposition: relative;\\n\\tcontent: \\\"» \\\";\\n}\\n\\n.tc-chooser-item svg,\\n.tc-chooser-item img{\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-language-chooser .tc-image-button img {\\n\\twidth: 2em;\\n\\tvertical-align: -0.15em;\\n}\\n\\n/*\\n** Palette swatches\\n*/\\n\\n.tc-swatches-horiz {\\n}\\n\\n.tc-swatches-horiz .tc-swatch {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-swatch {\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tmargin: 0.4em;\\n\\tborder: 1px solid #888;\\n}\\n\\ninput.tc-palette-manager-colour-input {\\n\\twidth: 100%;\\n\\tpadding: 0;\\n}\\n\\n/*\\n** Table of contents\\n*/\\n\\n.tc-sidebar-lists .tc-table-of-contents {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-table-of-contents button,\\n.tc-table-of-contents .toc-item-muted {\\n\\tcolor: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-table-of-contents svg {\\n\\twidth: 0.7em;\\n\\theight: 0.7em;\\n\\tvertical-align: middle;\\n\\tfill: \u003C\u003Ccolour sidebar-foreground>>;\\n}\\n\\n.tc-table-of-contents ol {\\n\\tlist-style-type: none;\\n\\tpadding-left: 0;\\n}\\n\\n.tc-table-of-contents ol ol {\\n\\tpadding-left: 1em;\\n}\\n\\n.tc-table-of-contents li {\\n\\tfont-size: 1.0em;\\n\\tfont-weight: bold;\\n}\\n\\n.tc-table-of-contents li a {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-table-of-contents li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: normal;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-table-of-contents li li a {\\n\\tfont-weight: normal;\\n}\\n\\n.tc-table-of-contents li li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: normal;\\n\\tline-height: 1.5;\\n}\\n\\n.tc-table-of-contents li li li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-tabbed-table-of-contents {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents {\\n\\tz-index: 100;\\n\\tdisplay: inline-block;\\n\\tpadding-left: 1em;\\n\\tmax-width: 50%;\\n\\t-webkit-flex: 0 0 auto;\\n\\tflex: 0 0 auto;\\n\\tbackground: \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\\n\\tdisplay: block;\\n\\tpadding: 0.12em 1em 0.12em 0.25em;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-background>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-background>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-background>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\\n\\ttext-decoration: none;\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tbackground: \u003C\u003Ccolour tab-border>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\\n\\tborder-top: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-left: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tmargin-right: -1px;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\tpadding-left: 1.5em;\\n\\tpadding-right: 1.5em;\\n\\tborder: 1px solid \u003C\u003Ccolour tab-border>>;\\n\\t-webkit-flex: 1 0 50%;\\n\\tflex: 1 0 50%;\\n}\\n\\n/*\\n** Dirty indicator\\n*/\\n\\nhtml body svg.tc-image-save-button-dynamic .tc-image-save-button-dynamic-clean {\\n\\tvisibility: visible;\\n}\\n\\nhtml body svg.tc-image-save-button-dynamic .tc-image-save-button-dynamic-dirty {\\n\\tvisibility: hidden;\\n}\\n\\nhtml body.tc-dirty svg.tc-image-save-button-dynamic .tc-image-save-button-dynamic-clean {\\n\\tvisibility: hidden;\\n}\\n\\nhtml body.tc-dirty svg.tc-image-save-button-dynamic .tc-image-save-button-dynamic-dirty {\\n\\tvisibility: visible;\\n}\\n\\nhtml body.tc-dirty span.tc-dirty-indicator, html body.tc-dirty span.tc-dirty-indicator svg {\\n\\tfill: \u003C\u003Ccolour dirty-indicator>>;\\n\\tcolor: \u003C\u003Ccolour dirty-indicator>>;\\n}\\n\\n/*\\n** File inputs\\n*/\\n\\n.tc-file-input-wrapper {\\n\\tposition: relative;\\n\\toverflow: hidden;\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-file-input-wrapper input[type=file] {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tfont-size: 999px;\\n\\tmax-width: 100%;\\n\\tmax-height: 100%;\\n\\tfilter: alpha(opacity=0);\\n\\topacity: 0;\\n\\toutline: none;\\n\\tbackground: white;\\n\\tcursor: pointer;\\n\\tdisplay: inline-block;\\n}\\n\\n::-webkit-file-upload-button {\\n\\tcursor:pointer;\\n}\\n\\n/*\\n** Thumbnail macros\\n*/\\n\\n.tc-thumbnail-wrapper {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\tmargin: 6px;\\n\\tvertical-align: top;\\n}\\n\\n.tc-thumbnail-right-wrapper {\\n\\tfloat:right;\\n\\tmargin: 0.5em 0 0.5em 0.5em;\\n}\\n\\n.tc-thumbnail-image {\\n\\ttext-align: center;\\n\\toverflow: hidden;\\n\\tborder-radius: 3px;\\n}\\n\\n.tc-thumbnail-image svg,\\n.tc-thumbnail-image img {\\n\\tfilter: alpha(opacity=1);\\n\\topacity: 1;\\n\\tmin-width: 100%;\\n\\tmin-height: 100%;\\n\\tmax-width: 100%;\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\\n\\tfilter: alpha(opacity=0.8);\\n\\topacity: 0.8;\\n}\\n\\n.tc-thumbnail-background {\\n\\tposition: absolute;\\n\\tborder-radius: 3px;\\n}\\n\\n.tc-thumbnail-icon svg,\\n.tc-thumbnail-icon img {\\n\\twidth: 3em;\\n\\theight: 3em;\\n\\t\u003C\u003Cfilter \\\"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\\\">>\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\\n\\tfill: #fff;\\n\\t\u003C\u003Cfilter \\\"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\\\">>\\n}\\n\\n.tc-thumbnail-icon {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tdisplay: -webkit-flex;\\n\\t-webkit-align-items: center;\\n\\t-webkit-justify-content: center;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n.tc-thumbnail-caption {\\n\\tposition: absolute;\\n\\tbackground-color: #777;\\n\\tcolor: #fff;\\n\\ttext-align: center;\\n\\tbottom: 0;\\n\\twidth: 100%;\\n\\tfilter: alpha(opacity=0.9);\\n\\topacity: 0.9;\\n\\tline-height: 1.4;\\n\\tborder-bottom-left-radius: 3px;\\n\\tborder-bottom-right-radius: 3px;\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\\n\\tfilter: alpha(opacity=1);\\n\\topacity: 1;\\n}\\n\\n/*\\n** Diffs\\n*/\\n\\n.tc-diff-equal {\\n\\tbackground-color: \u003C\u003Ccolour diff-equal-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-equal-foreground>>;\\n}\\n\\n.tc-diff-insert {\\n\\tbackground-color: \u003C\u003Ccolour diff-insert-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-insert-foreground>>;\\n}\\n\\n.tc-diff-delete {\\n\\tbackground-color: \u003C\u003Ccolour diff-delete-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-delete-foreground>>;\\n}\\n\\n.tc-diff-invisible {\\n\\tbackground-color: \u003C\u003Ccolour diff-invisible-background>>;\\n\\tcolor: \u003C\u003Ccolour diff-invisible-foreground>>;\\n}\\n\\n.tc-diff-tiddlers th {\\n\\ttext-align: right;\\n\\tbackground: \u003C\u003Ccolour background>>;\\n\\tfont-weight: normal;\\n\\tfont-style: italic;\\n}\\n\\n.tc-diff-tiddlers pre {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: none;\\n\\tbackground: none;\\n}\\n\\n/*\\n** Errors\\n*/\\n\\n.tc-error {\\n\\tbackground: #f00;\\n\\tcolor: #fff;\\n}\\n\\n/*\\n** Tree macro\\n*/\\n\\n.tc-tree div {\\n\\tpadding-left: 14px;\\n}\\n\\n.tc-tree ol {\\n\\tlist-style-type: none;\\n\\tpadding-left: 0;\\n\\tmargin-top: 0;\\n}\\n\\n.tc-tree ol ol {\\n\\tpadding-left: 1em;\\n}\\n\\n.tc-tree button {\\n\\tcolor: #acacac;\\n}\\n\\n.tc-tree svg {\\n\\tfill: #acacac;\\n}\\n\\n.tc-tree span svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n\\tvertical-align: baseline;\\n}\\n\\n.tc-tree li span {\\n\\tcolor: lightgray;\\n}\\n\\nselect {\\n\\tcolor: \u003C\u003Ccolour select-tag-foreground>>;\\n\\tbackground: \u003C\u003Ccolour select-tag-background>>;\\n}\\n\\n/*\\n** Translink macro\\n*/\\n\\n.tc-translink {\\n\\tbackground-color: \u003C\u003Ccolour pre-background>>;\\n\\tborder: 1px solid \u003C\u003Ccolour pre-border>>;\\n\\tpadding: 0 3px;\\n\\tborder-radius: 3px;\\n}\\n\\ndiv.tc-translink > div {\\n\\tmargin: 1em;\\n}\\n\\ndiv.tc-translink > div > a:first-child > h1 {\\n\\tfont-size: 1.2em;\\n\\tfont-weight: bold;\\n}\\n\\nspan.tc-translink > a:first-child {\\n\\tfont-weight: bold;\\n}\\n\\n/*\\n** Classes for displaying globals\\n*/\\n\\n.tc-global-tiddler-body {\\n\\tpadding: 0.25em;\\n\\tborder: 1px solid \u003C\u003Ccolour foreground>>;\\n\\tbackground-color: \u003C\u003Ccolour muted-foreground>>;\\n\\tborder-radius: 3px;\\n}\\n\\n.tc-global-tiddler-body-heading {\\n\\tmargin: 0 0 0.25em 0;\\n\\tfont-weight: normal;\\n}\\n\\n.tc-global-tiddler-body-type {\\n\\tmargin: 0 0 0.25em 0;\\n\\tborder-bottom: 1px solid \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-global-tiddler-body-details {\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-global-tiddler-body pre {\\n\\tmargin: 0;\\n\\tborder: 1px solid \u003C\u003Ccolour foreground>>;\\n}\\n\\n/*\\n** Utility classes for SVG icons\\n*/\\n\\n.tc-fill-background {\\n\\tfill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-network-activity-background {\\n\\tfill: \u003C\u003Ccolour network-activity-foreground>>;\\n}\\n\\n/*\\n** Flexbox utility classes\\n*/\\n\\n.tc-flex {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-flex-column {\\n\\tflex-direction: column;\\n}\\n\\n.tc-flex-row {\\n\\tflex-direction: row;\\n}\\n\\n.tc-flex-grow-1 {\\n\\tflex-grow: 1;\\n}\\n\\n.tc-flex-grow-2 {\\n\\tflex-grow: 2;\\n}\\n\\n/*\\n** Other utility classes\\n*/\\n\\n/* Horizontal gaps */\\n\\n.tc-tiny-gap {\\n\\tmargin-left: .25em;\\n\\tmargin-right: .25em;\\n}\\n\\n.tc-tiny-gap-left {\\n\\tmargin-left: .25em;\\n}\\n\\n.tc-tiny-gap-right {\\n\\tmargin-right: .25em;\\n}\\n\\n.tc-small-gap {\\n\\tmargin-left: .5em;\\n\\tmargin-right: .5em;\\n}\\n\\n.tc-small-gap-left {\\n\\tmargin-left: .5em;\\n}\\n\\n.tc-small-gap-right {\\n\\tmargin-right: .5em;\\n}\\n\\n.tc-big-gap {\\n\\tmargin-left: 1em;\\n\\tmargin-right: 1em;\\n}\\n\\n.tc-big-gap-left {\\n\\tmargin-left: 1em;\\n}\\n\\n.tc-big-gap-right {\\n\\tmargin-right: 1em;\\n}\\n\\n.tc-word-break {\\n\\tword-break: break-all;\\n}\\n\\n/* Vertical gaps */\\n\\n.tc-tiny-v-gap-bottom {\\n\\tmargin-bottom: 3px;\\n}\\n\"},\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\",\"text\":\"15px\"},\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\",\"text\":\"22px\"},\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\"text\":\"14px\"},\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\"text\":\"20px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\"text\":\"0px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storytop\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\"text\":\"0px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storyright\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\"text\":\"770px\"},\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\"text\":\"770px\"},\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\",\"text\":\"686px\"},\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\",\"text\":\"960px\"},\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\":{\"title\":\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\",\"text\":\"350px\"},\"$:/themes/tiddlywiki/vanilla/options/stickytitles\":{\"title\":\"$:/themes/tiddlywiki/vanilla/options/stickytitles\",\"text\":\"no\"},\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\":{\"title\":\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\",\"text\":\"fixed-fluid\"},\"$:/themes/tiddlywiki/vanilla/options/codewrapping\":{\"title\":\"$:/themes/tiddlywiki/vanilla/options/codewrapping\",\"text\":\"pre-wrap\"},\"$:/themes/tiddlywiki/vanilla/reset\":{\"title\":\"$:/themes/tiddlywiki/vanilla/reset\",\"type\":\"text/css\",\"text\":\"/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\\n\\n/*\\nDocument\\n========\\n*/\\n\\n/**\\nUse a better box model (opinionated).\\n*/\\n\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n}\\n\\n/**\\nUse a more readable tab size (opinionated).\\n*/\\n\\n:root {\\n -moz-tab-size: 4;\\n tab-size: 4;\\n}\\n\\n/**\\n1. Correct the line height in all browsers.\\n2. Prevent adjustments of font size after orientation changes in iOS.\\n*/\\n\\nhtml {\\n line-height: 1.15; /* 1 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n}\\n\\n/*\\nSections\\n========\\n*/\\n\\n/**\\nRemove the margin in all browsers.\\n*/\\n\\nbody {\\n margin: 0;\\n}\\n\\n/**\\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\\n*/\\n\\nbody {\\n font-family:\\n system-ui,\\n -apple-system, /* Firefox supports this but not yet `system-ui` */\\n 'Segoe UI',\\n Roboto,\\n Helvetica,\\n Arial,\\n sans-serif,\\n 'Apple Color Emoji',\\n 'Segoe UI Emoji';\\n}\\n\\n/*\\nGrouping content\\n================\\n*/\\n\\n/**\\n1. Add the correct height in Firefox.\\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\\n*/\\n\\nhr {\\n height: 0; /* 1 */\\n color: inherit; /* 2 */\\n}\\n\\n/*\\nText-level semantics\\n====================\\n*/\\n\\n/**\\nAdd the correct text decoration in Chrome, Edge, and Safari.\\n*/\\n\\nabbr[title] {\\n text-decoration: underline dotted;\\n}\\n\\n/**\\nAdd the correct font weight in Edge and Safari.\\n*/\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\n/**\\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\\n2. Correct the odd 'em' font sizing in all browsers.\\n*/\\n\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family:\\n ui-monospace,\\n SFMono-Regular,\\n Consolas,\\n 'Liberation Mono',\\n Menlo,\\n monospace; /* 1 */\\n font-size: 1em; /* 2 */\\n}\\n\\n/**\\nAdd the correct font size in all browsers.\\n*/\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/**\\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\\n*/\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\n/*\\nTabular data\\n============\\n*/\\n\\n/**\\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\\n*/\\n\\ntable {\\n text-indent: 0; /* 1 */\\n border-color: inherit; /* 2 */\\n}\\n\\n/*\\nForms\\n=====\\n*/\\n\\n/**\\n1. Change the font styles in all browsers.\\n2. Remove the margin in Firefox and Safari.\\n*/\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit; /* 1 */\\n font-size: 100%; /* 1 */\\n line-height: 1.15; /* 1 */\\n margin: 0; /* 2 */\\n}\\n\\n/**\\nRemove the inheritance of text transform in Edge and Firefox.\\n1. Remove the inheritance of text transform in Firefox.\\n*/\\n\\nbutton,\\nselect { /* 1 */\\n text-transform: none;\\n}\\n\\n/**\\nCorrect the inability to style clickable types in iOS and Safari.\\n*/\\n\\nbutton,\\n[type='button'],\\n[type='reset'],\\n[type='submit'] {\\n -webkit-appearance: button;\\n}\\n\\n/**\\nRemove the inner border and padding in Firefox.\\n*/\\n\\n::-moz-focus-inner {\\n border-style: none;\\n padding: 0;\\n}\\n\\n/**\\nRestore the focus styles unset by the previous rule.\\n*/\\n\\n:-moz-focusring {\\n outline: 1px dotted ButtonText;\\n}\\n\\n/**\\nRemove the additional ':invalid' styles in Firefox.\\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\\n*/\\n\\n:-moz-ui-invalid {\\n box-shadow: none;\\n}\\n\\n/**\\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\\n*/\\n\\nlegend {\\n padding: 0;\\n}\\n\\n/**\\nAdd the correct vertical alignment in Chrome and Firefox.\\n*/\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n/**\\nCorrect the cursor style of increment and decrement buttons in Safari.\\n*/\\n\\n::-webkit-inner-spin-button,\\n::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/**\\n1. Correct the odd appearance in Chrome and Safari.\\n2. Correct the outline style in Safari.\\n*/\\n\\n[type='search'] {\\n -webkit-appearance: textfield; /* 1 */\\n outline-offset: -2px; /* 2 */\\n}\\n\\n/**\\nRemove the inner padding in Chrome and Safari on macOS.\\n*/\\n\\n::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/**\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Change font properties to 'inherit' in Safari.\\n*/\\n\\n::-webkit-file-upload-button {\\n -webkit-appearance: button; /* 1 */\\n font: inherit; /* 2 */\\n}\\n\\n/*\\nInteractive\\n===========\\n*/\\n\\n/*\\nAdd the correct display in Chrome and Safari.\\n*/\\n\\nsummary {\\n display: list-item;\\n}\\n\"},\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\":{\"title\":\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\",\"text\":\"-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji\"},\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\":{\"title\":\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\",\"text\":\"\\\"SFMono-Regular\\\",Consolas,\\\"Liberation Mono\\\",Menlo,Courier,monospace\"},\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\":{\"title\":\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\",\"text\":\"fixed\"},\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\":{\"title\":\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\",\"text\":\"auto\"},\"$:/themes/tiddlywiki/vanilla/sticky\":{\"title\":\"$:/themes/tiddlywiki/vanilla/sticky\",\"code-body\":\"yes\",\"text\":\"\u003C$reveal state=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n``\\n.tc-tiddler-title {\\n\\tposition: -webkit-sticky;\\n\\tposition: -moz-sticky;\\n\\tposition: -o-sticky;\\n\\tposition: -ms-sticky;\\n\\tposition: sticky;\\n\\ttop: 0px;\\n\\tbackground: ``\u003C\u003Ccolour tiddler-background>>``;\\n\\tz-index: 500;\\n}\\n\\n``\\n\u003C$list filter=\\\"[range[100]]\\\">\\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) {\\nz-index: `\u003C$text text={{{ [[200]subtract\u003CcurrentTiddler>] }}}/>`;\\n}\\n`\\n\u003C/$list>\\n\u003C/$reveal>\\n\"}}}"}, {"created":"20240108030956555","title":"$:/themes/tiddlywiki/vanilla/options/sidebarlayout","text":"fixed-fluid","modified":"20240312134146332"},