@sme.up/ketchup 11.0.0-SNAPSHOT-20241118135127 → 11.0.0-SNAPSHOT-20241118143411

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/cjs/{f-cell-2c5c4b63.js → f-cell-99c84f1c.js} +4 -4
  2. package/dist/cjs/{f-cell-2c5c4b63.js.map → f-cell-99c84f1c.js.map} +1 -1
  3. package/dist/cjs/{f-chip-c76e0caa.js → f-chip-29e9258a.js} +2 -2
  4. package/dist/cjs/{f-chip-c76e0caa.js.map → f-chip-29e9258a.js.map} +1 -1
  5. package/dist/cjs/{f-paginator-utils-e30b6e63.js → f-paginator-utils-af69bd51.js} +2 -2
  6. package/dist/cjs/{f-paginator-utils-e30b6e63.js.map → f-paginator-utils-af69bd51.js.map} +1 -1
  7. package/dist/cjs/{f-text-field-41132ecd.js → f-text-field-4226081f.js} +2 -2
  8. package/dist/cjs/{f-text-field-41132ecd.js.map → f-text-field-4226081f.js.map} +1 -1
  9. package/dist/cjs/index.cjs.js +1 -1
  10. package/dist/cjs/kup-accordion.cjs.entry.js +1 -1
  11. package/dist/cjs/kup-activity-timeline.cjs.entry.js +2 -2
  12. package/dist/cjs/kup-autocomplete_28.cjs.entry.js +6 -6
  13. package/dist/cjs/kup-box.cjs.entry.js +6 -6
  14. package/dist/cjs/kup-calendar.cjs.entry.js +2 -2
  15. package/dist/cjs/kup-card-list.cjs.entry.js +1 -1
  16. package/dist/cjs/kup-cell.cjs.entry.js +4 -4
  17. package/dist/cjs/kup-dashboard.cjs.entry.js +2 -2
  18. package/dist/cjs/{kup-data-table-helper-f228f568.js → kup-data-table-helper-00427a69.js} +2 -2
  19. package/dist/cjs/{kup-data-table-helper-f228f568.js.map → kup-data-table-helper-00427a69.js.map} +1 -1
  20. package/dist/cjs/kup-drawer.cjs.entry.js +1 -1
  21. package/dist/cjs/kup-echart.cjs.entry.js +1 -1
  22. package/dist/cjs/kup-editor.cjs.entry.js +1 -1
  23. package/dist/cjs/kup-family-tree.cjs.entry.js +1 -1
  24. package/dist/cjs/kup-grid.cjs.entry.js +1 -1
  25. package/dist/cjs/kup-htm.cjs.entry.js +1 -1
  26. package/dist/cjs/kup-iframe.cjs.entry.js +1 -1
  27. package/dist/cjs/kup-image-list.cjs.entry.js +4 -4
  28. package/dist/cjs/kup-input-panel.cjs.entry.js +4 -4
  29. package/dist/cjs/kup-lazy.cjs.entry.js +1 -1
  30. package/dist/cjs/kup-magic-box.cjs.entry.js +1 -1
  31. package/dist/cjs/{kup-manager-77611451.js → kup-manager-fe741ac9.js} +2 -2
  32. package/dist/cjs/{kup-manager-77611451.js.map → kup-manager-fe741ac9.js.map} +1 -1
  33. package/dist/cjs/kup-nav-bar.cjs.entry.js +1 -1
  34. package/dist/cjs/kup-numeric-picker.cjs.entry.js +2 -2
  35. package/dist/cjs/kup-pdf.cjs.entry.js +1 -1
  36. package/dist/cjs/kup-photo-frame.cjs.entry.js +1 -1
  37. package/dist/cjs/kup-planner.cjs.entry.js +2 -2
  38. package/dist/cjs/kup-probe.cjs.entry.js +1 -1
  39. package/dist/cjs/kup-qlik.cjs.entry.js +1 -1
  40. package/dist/cjs/kup-snackbar.cjs.entry.js +1 -1
  41. package/dist/cjs/kup-txt.cjs.entry.js +1 -1
  42. package/dist/cjs/kup-typography-list.cjs.entry.js +1 -1
  43. package/dist/cjs/kup-typography.cjs.entry.js +1 -1
  44. package/dist/components/kup-manager.js +1 -1
  45. package/dist/components/kup-manager.js.map +1 -1
  46. package/dist/esm/{f-cell-ed323876.js → f-cell-84b76695.js} +4 -4
  47. package/dist/esm/{f-cell-ed323876.js.map → f-cell-84b76695.js.map} +1 -1
  48. package/dist/esm/{f-chip-493f6e72.js → f-chip-cd564624.js} +2 -2
  49. package/dist/esm/{f-chip-493f6e72.js.map → f-chip-cd564624.js.map} +1 -1
  50. package/dist/esm/{f-paginator-utils-45b88cb0.js → f-paginator-utils-7fd2bb01.js} +2 -2
  51. package/dist/esm/{f-paginator-utils-45b88cb0.js.map → f-paginator-utils-7fd2bb01.js.map} +1 -1
  52. package/dist/esm/{f-text-field-234a66b4.js → f-text-field-66b6f8a6.js} +2 -2
  53. package/dist/esm/{f-text-field-234a66b4.js.map → f-text-field-66b6f8a6.js.map} +1 -1
  54. package/dist/esm/index.js +1 -1
  55. package/dist/esm/kup-accordion.entry.js +1 -1
  56. package/dist/esm/kup-activity-timeline.entry.js +2 -2
  57. package/dist/esm/kup-autocomplete_28.entry.js +6 -6
  58. package/dist/esm/kup-box.entry.js +6 -6
  59. package/dist/esm/kup-calendar.entry.js +2 -2
  60. package/dist/esm/kup-card-list.entry.js +1 -1
  61. package/dist/esm/kup-cell.entry.js +4 -4
  62. package/dist/esm/kup-dashboard.entry.js +2 -2
  63. package/dist/esm/{kup-data-table-helper-dc9ece8a.js → kup-data-table-helper-7807c3bc.js} +2 -2
  64. package/dist/esm/{kup-data-table-helper-dc9ece8a.js.map → kup-data-table-helper-7807c3bc.js.map} +1 -1
  65. package/dist/esm/kup-drawer.entry.js +1 -1
  66. package/dist/esm/kup-echart.entry.js +1 -1
  67. package/dist/esm/kup-editor.entry.js +1 -1
  68. package/dist/esm/kup-family-tree.entry.js +1 -1
  69. package/dist/esm/kup-grid.entry.js +1 -1
  70. package/dist/esm/kup-htm.entry.js +1 -1
  71. package/dist/esm/kup-iframe.entry.js +1 -1
  72. package/dist/esm/kup-image-list.entry.js +4 -4
  73. package/dist/esm/kup-input-panel.entry.js +4 -4
  74. package/dist/esm/kup-lazy.entry.js +1 -1
  75. package/dist/esm/kup-magic-box.entry.js +1 -1
  76. package/dist/esm/{kup-manager-0f056eae.js → kup-manager-e6854c15.js} +2 -2
  77. package/dist/esm/{kup-manager-0f056eae.js.map → kup-manager-e6854c15.js.map} +1 -1
  78. package/dist/esm/kup-nav-bar.entry.js +1 -1
  79. package/dist/esm/kup-numeric-picker.entry.js +2 -2
  80. package/dist/esm/kup-pdf.entry.js +1 -1
  81. package/dist/esm/kup-photo-frame.entry.js +1 -1
  82. package/dist/esm/kup-planner.entry.js +2 -2
  83. package/dist/esm/kup-probe.entry.js +1 -1
  84. package/dist/esm/kup-qlik.entry.js +1 -1
  85. package/dist/esm/kup-snackbar.entry.js +1 -1
  86. package/dist/esm/kup-txt.entry.js +1 -1
  87. package/dist/esm/kup-typography-list.entry.js +1 -1
  88. package/dist/esm/kup-typography.entry.js +1 -1
  89. package/dist/ketchup/index.esm.js +1 -1
  90. package/dist/ketchup/ketchup.esm.js +1 -1
  91. package/dist/ketchup/{p-f8982626.entry.js → p-00696d0b.entry.js} +2 -2
  92. package/dist/ketchup/{p-4e4f3c12.entry.js → p-02d83afd.entry.js} +2 -2
  93. package/dist/ketchup/{p-28a98448.entry.js → p-08a8d90e.entry.js} +2 -2
  94. package/dist/ketchup/{p-e7ba0039.entry.js → p-0f194063.entry.js} +2 -2
  95. package/dist/ketchup/{p-e5b89e72.entry.js → p-0f8be7d2.entry.js} +2 -2
  96. package/dist/ketchup/{p-941633cf.entry.js → p-10cea33b.entry.js} +2 -2
  97. package/dist/ketchup/{p-07101843.entry.js → p-1b23ecb9.entry.js} +2 -2
  98. package/dist/ketchup/{p-8b1f6d22.js → p-1f0bd3bc.js} +2 -2
  99. package/dist/ketchup/{p-8666c112.entry.js → p-1fd1da4a.entry.js} +2 -2
  100. package/dist/ketchup/{p-e4e7cb0a.entry.js → p-36f1f1f2.entry.js} +2 -2
  101. package/dist/ketchup/{p-18c2474c.entry.js → p-3a0e74d7.entry.js} +2 -2
  102. package/dist/ketchup/{p-e177845a.entry.js → p-4e8485bb.entry.js} +2 -2
  103. package/dist/ketchup/{p-4ac7f525.js → p-5403ec7d.js} +2 -2
  104. package/dist/ketchup/{p-6722ad32.entry.js → p-56ebec9a.entry.js} +2 -2
  105. package/dist/ketchup/{p-6a7aad42.entry.js → p-582719d0.entry.js} +2 -2
  106. package/dist/ketchup/{p-d88f2604.entry.js → p-6b510eea.entry.js} +2 -2
  107. package/dist/ketchup/{p-73b94f37.entry.js → p-7fd94ab9.entry.js} +2 -2
  108. package/dist/ketchup/{p-7f6331ba.entry.js → p-822300c4.entry.js} +2 -2
  109. package/dist/ketchup/{p-98d28887.entry.js → p-9466c7b2.entry.js} +2 -2
  110. package/dist/ketchup/{p-7c151495.entry.js → p-9b45f18d.entry.js} +2 -2
  111. package/dist/ketchup/{p-43d46909.entry.js → p-b2a20978.entry.js} +2 -2
  112. package/dist/ketchup/{p-2215ccf4.entry.js → p-c0aed6b3.entry.js} +2 -2
  113. package/dist/ketchup/{p-27163fd2.js → p-c398ed83.js} +2 -2
  114. package/dist/ketchup/{p-f00d7dff.js → p-c618c6fd.js} +2 -2
  115. package/dist/ketchup/p-c71c14ea.entry.js +2 -0
  116. package/dist/ketchup/{p-c88e7d76.entry.js.map → p-c71c14ea.entry.js.map} +1 -1
  117. package/dist/ketchup/{p-525b168f.entry.js → p-cda00e9e.entry.js} +2 -2
  118. package/dist/ketchup/{p-996ba080.entry.js → p-d073f545.entry.js} +2 -2
  119. package/dist/ketchup/{p-fb533065.entry.js → p-d26f1d41.entry.js} +2 -2
  120. package/dist/ketchup/{p-99171aba.js → p-da7ae266.js} +2 -2
  121. package/dist/ketchup/{p-013a555c.entry.js → p-e1c69d06.entry.js} +2 -2
  122. package/dist/ketchup/{p-15f54117.js → p-e1cf074e.js} +4 -4
  123. package/dist/ketchup/p-e1cf074e.js.map +1 -0
  124. package/dist/ketchup/{p-b2699d88.entry.js → p-ee8fc062.entry.js} +2 -2
  125. package/dist/ketchup/{p-5b8896da.entry.js → p-f1d7efa6.entry.js} +2 -2
  126. package/dist/ketchup/{p-dc8e1959.entry.js → p-f9e43ad1.entry.js} +2 -2
  127. package/dist/ketchup/{p-12c06de2.entry.js → p-fcce8e0d.entry.js} +2 -2
  128. package/dist/ketchup/{p-b896d5c4.entry.js → p-ff6a7fca.entry.js} +2 -2
  129. package/package.json +1 -1
  130. package/dist/ketchup/p-15f54117.js.map +0 -1
  131. package/dist/ketchup/p-c88e7d76.entry.js +0 -2
  132. /package/dist/ketchup/{p-f8982626.entry.js.map → p-00696d0b.entry.js.map} +0 -0
  133. /package/dist/ketchup/{p-4e4f3c12.entry.js.map → p-02d83afd.entry.js.map} +0 -0
  134. /package/dist/ketchup/{p-28a98448.entry.js.map → p-08a8d90e.entry.js.map} +0 -0
  135. /package/dist/ketchup/{p-e7ba0039.entry.js.map → p-0f194063.entry.js.map} +0 -0
  136. /package/dist/ketchup/{p-e5b89e72.entry.js.map → p-0f8be7d2.entry.js.map} +0 -0
  137. /package/dist/ketchup/{p-941633cf.entry.js.map → p-10cea33b.entry.js.map} +0 -0
  138. /package/dist/ketchup/{p-07101843.entry.js.map → p-1b23ecb9.entry.js.map} +0 -0
  139. /package/dist/ketchup/{p-8b1f6d22.js.map → p-1f0bd3bc.js.map} +0 -0
  140. /package/dist/ketchup/{p-8666c112.entry.js.map → p-1fd1da4a.entry.js.map} +0 -0
  141. /package/dist/ketchup/{p-e4e7cb0a.entry.js.map → p-36f1f1f2.entry.js.map} +0 -0
  142. /package/dist/ketchup/{p-18c2474c.entry.js.map → p-3a0e74d7.entry.js.map} +0 -0
  143. /package/dist/ketchup/{p-e177845a.entry.js.map → p-4e8485bb.entry.js.map} +0 -0
  144. /package/dist/ketchup/{p-4ac7f525.js.map → p-5403ec7d.js.map} +0 -0
  145. /package/dist/ketchup/{p-6722ad32.entry.js.map → p-56ebec9a.entry.js.map} +0 -0
  146. /package/dist/ketchup/{p-6a7aad42.entry.js.map → p-582719d0.entry.js.map} +0 -0
  147. /package/dist/ketchup/{p-d88f2604.entry.js.map → p-6b510eea.entry.js.map} +0 -0
  148. /package/dist/ketchup/{p-73b94f37.entry.js.map → p-7fd94ab9.entry.js.map} +0 -0
  149. /package/dist/ketchup/{p-7f6331ba.entry.js.map → p-822300c4.entry.js.map} +0 -0
  150. /package/dist/ketchup/{p-98d28887.entry.js.map → p-9466c7b2.entry.js.map} +0 -0
  151. /package/dist/ketchup/{p-7c151495.entry.js.map → p-9b45f18d.entry.js.map} +0 -0
  152. /package/dist/ketchup/{p-43d46909.entry.js.map → p-b2a20978.entry.js.map} +0 -0
  153. /package/dist/ketchup/{p-2215ccf4.entry.js.map → p-c0aed6b3.entry.js.map} +0 -0
  154. /package/dist/ketchup/{p-27163fd2.js.map → p-c398ed83.js.map} +0 -0
  155. /package/dist/ketchup/{p-f00d7dff.js.map → p-c618c6fd.js.map} +0 -0
  156. /package/dist/ketchup/{p-525b168f.entry.js.map → p-cda00e9e.entry.js.map} +0 -0
  157. /package/dist/ketchup/{p-996ba080.entry.js.map → p-d073f545.entry.js.map} +0 -0
  158. /package/dist/ketchup/{p-fb533065.entry.js.map → p-d26f1d41.entry.js.map} +0 -0
  159. /package/dist/ketchup/{p-99171aba.js.map → p-da7ae266.js.map} +0 -0
  160. /package/dist/ketchup/{p-013a555c.entry.js.map → p-e1c69d06.entry.js.map} +0 -0
  161. /package/dist/ketchup/{p-b2699d88.entry.js.map → p-ee8fc062.entry.js.map} +0 -0
  162. /package/dist/ketchup/{p-5b8896da.entry.js.map → p-f1d7efa6.entry.js.map} +0 -0
  163. /package/dist/ketchup/{p-dc8e1959.entry.js.map → p-f9e43ad1.entry.js.map} +0 -0
  164. /package/dist/ketchup/{p-12c06de2.entry.js.map → p-fcce8e0d.entry.js.map} +0 -0
  165. /package/dist/ketchup/{p-b896d5c4.entry.js.map → p-ff6a7fca.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["KupCardProps","KupCardBuiltInClockElements","KupCardFamily","KupCardIds","KupCardCSSClasses","KupCardSubEvents","KupLanguageDefaults","KupLanguageCheckbox","KupLanguageColumn","KupLanguageDashboard","KupLanguageDebug","KupLanguageDensity","KupLanguageFontsize","KupLanguageGeneric","KupLanguageGrid","KupLanguageGrouping","KupLanguagePage","KupLanguageRow","KupLanguageSearch","KupLanguageTotals","KupDebugCategory","KupDebugLogColor","dom","document","documentElement","KupDebug","constructor","active","autoprint","logLimit","_KupDebug_debugWidget","set","this","autoPrint","container","createElement","setAttribute","body","appendChild","logs","__classPrivateFieldSet","addEventListener","__classPrivateFieldGet","hideWidget","showWidget","downloadProps","res","dataStr","encodeURIComponent","JSON","stringify","downloadAnchorNode","click","remove","debugWidget","languages","ketchup","language","getLanguages","languagesListData","index","length","push","id","selected","name","value","themes","theme","getThemes","themesListData","locales","dates","getLocales","localesListData","locale","data","button","icon","customStyle","title","translate","OFF","PRINT","checked","iconOff","AUTOPRINT","toggable","CLEAR","DUMP","className","label","styling","DL_PROPS","DL_ALL","MAGIC_BOX","combobox","emitSubmitEventOnEnter","inputType","THEME_CHANGER","initialValue","isSelect","LANGUAGE_CHANGER","LOCALE_CHANGER","textfield","LOG_LIMIT","layoutFamily","DIALOG","layoutNumber","sizeX","sizeY","handler","handleEvents","e","append","kupDebug","compEvent","detail","event","compID","type","widgetClear","refresh","getProps","then","dump","toggleMagicBox","toggle","widgetPrint","setLocale","math","children","Array","prototype","slice","call","slots","slot","classList","add","category","ERROR","style","backgroundColor","borderLeft","WARNING","INFO","element","DL_PROPS_COMP","fontWeight","cursor","onclick","err","logMessage","innerHTML","opacity","marginLeft","message","reverse","print","printLog","indexOf","isComponent","date","format","key","Object","hasOwnProperty","console","groupCollapsed","log","groupEnd","table","dispatchEvent","CustomEvent","isDebug","comps","Set","props","descriptions","has","matchingObject","promises","forEach","el","error","rootElement","tagName","Promise","all","responses","cnt","tag","tagInfo","comp","Date","obj","warn","window","bubbles","logLoad","didLoad","startTime","performance","now","endTime","renderCount","renderStart","renderEnd","debugInfo","timeDiff","logRender","didRender","breakpoint","kupDynamicPositionAttribute","kupDynamicPositionAnchorAttribute","kupDynamicPositionActiveClass","KupDynamicPositionPlacement","KupDynamicPosition","managedElements","anchorIsHTMLElement","anchor","undefined","register","anchorEl","margin","placement","detach","isRegistered","changeAnchor","zIndex","originalPath","currentEl","parentNode","host","position","kupDynamicPosition","AUTO","rAF","mutObserver","MutationObserver","mutations","target","contains","requestAnimationFrame","dynamicPosition","run","observe","attributes","attributeFilter","unregister","elements","delete","start","stop","isConnected","cancelAnimationFrame","top","right","bottom","left","x","y","offsetWidth","innerWidth","offsetHeight","innerHeight","detached","offsetH","clientHeight","offsetW","clientWidth","rect","getBoundingClientRect","pageYOffset","pageXOffset","TOP","TOP_LEFT","TOP_RIGHT","BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","LEFT","RIGHT","scrollbarWidth","t","module","exports","defineProperty","default","Window","getWindow","ownerDocument","defaultView","r","init","o","realWindow","n","createTextNode","wrap","i","a","Symbol","iterator","s","l","u","docFrag","nodeType","object","func","number","bool","string","test","Element","nodeName","plainObject","toString","array","splice","c","f","interaction","prepared","axis","coords","cur","page","client","velocity","d","iEvent","delta","p","install","actions","Interactable","defaults","draggable","map","drag","methodDict","listeners","interactable","buttons","options","enabled","pointerIsDown","pointerType","mouseButtons","action","lockAxis","startAxis","setPerAction","setOnEvents","beforeMove","move","getCursor","v","h","g","DocumentFragment","SVGElement","SVGSVGElement","SVGElementInstance","HTMLElement","Event","Touch","PointerEvent","MSPointerEvent","m","b","navigator","supportsTouch","DocumentTouch","supportsPointerEvent","pointerEnabled","isIOS","platform","isIOS7","appVersion","isIe9","userAgent","isOperaMobile","appName","prefixedMatchesSelector","pEventTypes","up","down","over","out","cancel","wheelEvent","w","_","P","O","replace","closest","getActualElement","correspondingUseElement","getElementClientRect","M","getElementRect","T","getPath","getScrollXY","indexOfDeepestElement","E","S","ownerSVGElement","lastChild","previousSibling","parseInt","getComputedStyle","matchesSelector","matchesUpTo","nodeContains","trySelector","querySelector","unshift","scrollX","scrollLeft","scrollY","scrollTop","getClientRects","width","height","j","k","I","D","getRect","addEdges","getStringOptionResult","rectToXY","resolveRectLike","apply","isArray","from","TypeError","tlbrToXywh","xywhToTlbr","A","origin","R","z","trim","split","search","reduce","concat","C","Math","sqrt","F","X","prefixedPropREs","webkit","moz","B","Y","W","L","U","V","N","touches","changedTouches","q","pageX","pageY","clientX","clientY","screenX","screenY","coordsToEvent","timeStamp","pointerId","preventDefault","copyCoords","getClientXY","getEventTargets","composedPath","path","currentTarget","getPageXY","getPointerId","identifier","getPointerType","getTouchPair","getXY","isNativePointer","newCoords","pointerAverage","enumerable","get","setCoordDeltas","setCoordVelocity","max","setCoords","setZeroCoords","touchAngle","atan2","PI","touchBBox","min","touchDistance","$","G","configurable","writable","H","BaseEvent","K","_interaction","propagationStopped","immediatePropagationStopped","_proxy","Z","merge","findIndex","find","J","Q","tt","et","nt","rt","setPrototypeOf","__proto__","ot","it","ReferenceError","at","getPrototypeOf","st","DropEvent","lt","create","Reflect","construct","sham","Proxy","Boolean","valueOf","arguments","prev","dropzone","dragEvent","relatedTarget","dropState","rejected","events","enter","stopImmediatePropagation","activeDrops","fire","ut","ct","ft","interactables","list","drop","accept","draggableElement","_context","querySelectorAll","dt","dropCheck","pt","leave","activate","deactivate","dragLeave","prevDropzone","dragEnter","dragmove","vt","ht","dynamicDrop","gt","interactStatic","usePlugin","keys","off","on","ondrop","ondropactivate","ondropdeactivate","ondragenter","ondragleave","ondropmove","overlap","checker","phaselessTypes","dragenter","dragleave","dropactivate","dropdeactivate","dropmove","getActiveDrops","getDrop","getDropEvents","fireDropEvents","yt","mt","bt","phase","pointers","pointer","deltaSource","distance","box","scale","ds","angle","da","gesture","startDistance","startAngle","prevEvent","isNaN","xt","before","gesturable","wt","_t","Pt","abs","Ot","resizeAxes","resize","square","axes","Et","browser","cursors","xy","topleft","bottomright","topright","bottomleft","defaultMargin","resizable","preserveAspectRatio","edges","_rects","corrected","previous","deltaRect","invert","_latestPointer","eventTarget","NaN","St","Tt","Mt","jt","kt","It","Dt","At","request","bind","setTimeout","clearTimeout","Rt","getContainer","Ct","getScroll","Ft","getScrollSize","scrollWidth","scrollHeight","getScrollSizeDelta","autoScroll","zt","speed","isScrolling","prevTime","scroll","scrollBy","check","onInteractionMove","interacting","simulation","Xt","autoscroll","perAction","Bt","copyAction","sign","warnOnce","Yt","Wt","styleCursor","Lt","actionChecker","Ut","getAction","ignoreFrom","_backCompatOption","allowFrom","Vt","Nt","testIgnoreAllow","Ht","qt","$t","forEachMatch","manualStart","Gt","Jt","maxPerElement","autoStart","maxInteractions","interactions","Kt","Zt","cursorElement","cursorChecker","_interacting","Qt","base","withinInteractionLimit","pointerWasMoved","validateAction","te","ee","dx","dy","downPointer","downEvent","ne","re","hold","delay","oe","autoStartHoldTimer","duplicate","getHoldDuration","ie","ae","se","le","ue","checkAndPreventDefault","ce","supportsPassive","getDocOptions","passive","docEvents","listener","fe","de","pe","ve","touchAction","boxSizing","noListeners","he","ge","ye","me","next","done","return","be","xe","we","getRectOffset","Oe","_e","result","Pe","modifiers","methods","_methods","filter","prepareStates","startOffset","startDelta","fillArg","pageCoords","preEnd","startAll","setAll","states","state","skipModifiers","shouldDo","eventProps","rectDelta","changed","modifiedCoords","applyToInteraction","beforeEnd","endResult","modification","endOnly","setStart","Ee","Se","addEventModifiers","makeModifier","enable","disable","_defaults","Te","setAndApply","restoreInteractionCoords","Me","je","ke","Ie","De","Ae","Re","ze","Ce","InteractEvent","Fe","ctrlKey","altKey","shiftKey","metaKey","t0","downTime","x0","y0","clientX0","clientY0","duration","swipe","getSwipe","velocityY","velocityX","defineProperties","Xe","Be","Ye","We","PointerInfo","Le","downTarget","Ue","Ve","Ne","qe","$e","Interaction","_ProxyValues","_ProxyMethods","end","Ge","He","scopeFire","_scopeFire","updatePointer","pointerIndex","pointerInfo","_stopped","_doPhase","pointerMoveTolerance","getPointerIndex","curEventTarget","removePointer","_ending","_now","pointerExtend","_updateLatestPointer","_createPreparedEvent","_fireEvent","Ke","Ze","Je","nn","offset","total","pending","Qe","tn","en","addTotal","applyPending","offsetBy","rn","an","sn","InertiaState","ln","un","copyFrom","allowResume","v0","currentOffset","startCoords","modifierArg","minSpeed","endSpeed","startInertia","startSmoothEnd","targetOffset","resistance","lambda_v0","one_ve_v0","isModified","modifiedOffset","onNextFrame","inertiaTick","smoothEnd","smoothEndTick","timeout","exp","cn","smoothEndDuration","fn","modifierCount","inertia","dn","phases","inertiastart","resume","pn","vn","hn","gn","Eventable","yn","global","types","mn","substr","bn","createInteractStatic","new","globalEvents","getPointerAverage","getTouchBBox","getTouchDistance","getTouchAngle","version","scope","use","isSet","context","debug","addDocument","removeDocument","xn","wn","_n","Pn","_actions","_win","_doc","_scopeEvents","onstart","onmove","onend","oninertiastart","updatePerActionListeners","_rectChecker","testIgnore","testAllow","_onOff","delegatedEvents","selector","removeDelegate","On","En","Sn","InteractableSet","Tn","addListeners","selectorMap","win","inContext","Mn","jn","kn","In","Dn","An","originalEvent","stopPropagation","Rn","capture","zn","addDelegate","delegateListener","delegateUseCapture","documents","targets","supportsOptions","removeEventListener","Cn","Fn","methodOrder","simulationResume","eventType","mouseOrPen","Xn","hasPointer","idle","some","Bn","Yn","Wn","Ln","Un","Vn","Nn","qn","$n","Gn","Hn","Kn","prevTouchTime","Zn","searchDetails","Jn","doc","Qn","pointerDown","pointerMove","pointerUp","documentBlur","destroy","onDocSignal","doOnInteractions","methodNames","tr","er","nr","rr","getOwnPropertyDescriptor","ar","or","ir","sr","lr","ur","cr","Scope","initScope","dr","fr","floor","random","listenerMaps","isInitialized","_plugins","pluginIsInstalled","pr","getDocIndex","onWindowUnload","vr","hr","gr","yr","globalThis","mr","br","xr","wr","_r","range","limits","grid","round","coordFields","Pr","Or","Er","snappers","createSnapGrid","Sr","Tr","getOwnPropertySymbols","Mr","jr","getOwnPropertyDescriptors","aspectRatio","kr","ratio","equalDelta","startRect","linkedEdges","xIsPrimaryAxis","edgeSign","subModification","Ir","Dr","prevCoords","prevRect","Ar","Rr","zr","Cr","Fr","Xr","Br","getRestrictionRect","restrict","Yr","elementRect","restriction","Wr","Lr","restrictEdges","Ur","Vr","Nr","qr","noInner","noOuter","inner","outer","$r","Gr","restrictRect","Hr","Kr","Zr","Jr","restrictSize","Qr","to","eo","no","ro","oo","snap","io","offsetWithOrigin","relativePoints","offsets","relativePoint","source","inRange","ao","so","lo","snapSize","uo","targetFields","co","fo","snapEdges","po","vo","ho","go","yo","mo","spring","avoid","transform","rubberband","bo","xo","wo","_o","Po","Oo","Eo","So","To","Mo","tapTime","double","prevTap","jo","ko","pointerEvents","Ao","Io","node","eventable","holdDuration","collectEventTargets","Do","tap","doubletap","pointerEvent","_subtractOrigin","_addOrigin","Ro","zo","Co","holdIntervalHandle","clearInterval","Fo","holdRepeatInterval","holdrepeat","count","Xo","Bo","Yo","Wo","Lo","Uo","Vo","reflow","_reflowPromise","_reflowResolve","No","qo","$o","Go","Ho","Ko","Zo","kupDialogAttribute","kupDialogResizableClass","kupDropEvent","kupDragActiveAttr","kupDragOverAttr","kupDraggableAttr","kupDraggableCellAttr","kupDraggableColumnAttr","kupDraggableRowAttr","KupDragEffect","KupPointerEventTypes","KupDropEventTypes","KupInteract","restrictContainer","defaultModalCb","modalCb","interact","isMobileDevice","modalBackdrop","eventData","effect","callbacks","userSelect","MOVE","toLowerCase","NONE","ghostImage","kupDragDrop","parseFloat","getAttribute","draggableDetails","callback","cell","column","row","BADGE","multiple","text","selectedRows","transition","CLONE","cloneNode","parentElement","removeAttribute","dropzoneDetails","ketchupDropEvent","cancelable","dataType","sourceElement","targetElement","dispatcher","moveOnResize","autoResize","assign","oldTransform","isInViewport","isFixed","dialogify","handleEl","unresizable","hideModalBackdrop","showModalBackdrop","cb","responsive","unset","KupLanguage","languagesJson['default']","managedComponents","decodedLanguage","decodeLanguage","variantName","variant","translatedString","variants","invalidKey","dLanguage","dVariant","separator","substring","variantKey","getBCP47","_a","bcp47Map","chinese","english","spanish","italian","french","polish","russian","component","KupObjects","objJson['default']","canHaveAutomaticDerivedColumn","canObjHaveExtraColumns","isNumber","isTime","isTimestamp","isPercentage","canObjsHaveExtraColumns","objs","isEmptyKupObj","isBar","isButton","isCheckbox","isIcon","isImage","isLink","isProgressBar","isRadio","isVoCodver","isChart","toLocaleUpperCase","startsWith","toUpperCase","isColor","isDate","isKupObjList","isPositiveNumber","isPassword","isStringObject","isSwitch","isTextField","isTimeWithSeconds","isEmptyJsObject","isSameKupObj","every","parseDate","toDayjs","deepEqual","object1","object2","isJsObject","keys1","keys2","val1","val2","areObjects","ScrollOnHoverDirection","KupScrollOnHover","step","_KupScrollOnHover_arrowsContainer","_KupScrollOnHover_leftArrows","_KupScrollOnHover_rightArrows","_KupScrollOnHover_scrollEvent","_KupScrollOnHover_mousemoveEvent","_KupScrollOnHover_mouseleaveEvent","_KupScrollOnHover_rAF","_KupScrollOnHover_timeout","updateChildren","vertical","percentages","_KupScrollOnHover_instances","_KupScrollOnHover_initArrows","overflowX","scrollOnHover","back","forward","trueHeight","trueWidth","percRight","percLeft","elOffset","maxScrollLeft","direction","percBottom","percTop","maxScrollTop","percForward","percBack","arrow","kupThemeApplicationCss","kupThemeApplicationCss$1","kupThemeComponentCss","kupThemeComponentCss$1","fButtonCss","fButtonCss$1","fCellCss","fCellCss$1","fCheckboxCss","fCheckboxCss$1","fChipCss","fChipCss$1","fImageCss","fImageCss$1","fPaginatorCss","fPaginatorCss$1","fProgressBarCss","fProgressBarCss$1","fRadioCss","fRadioCss$1","fRatingCss","fRatingCss$1","fSwitchCss","fSwitchCss$1","fTextFieldCss","fTextFieldCss$1","fTypographyCss","fTypographyCss$1","mdcRippleCss","mdcRippleCss$1","KupTagNames","KupComponentSizing","masterCustomStyle","fButtonUsers","BUTTON","BUTTON_LIST","BOX","CALENDAR","CARD","CELL","DASHBOARD","DATA_TABLE","DROPDOWN_BUTTON","FAMILY_TREE","FORM","INPUT_PANEL","IMAGE_LIST","SNACKBAR","TOOLBAR","fCellUsers","TREE","fCheckboxUsers","CHECKBOX","LIST","fChipUsers","CHIP","fImageUsers","ACCORDION","ACTIVITY_TIMELINE","IMAGE","RADIO","TAB_BAR","TEXT_FIELD","TYPOGRAPHY","TYPOGRAPHY_LIST","fPaginatorUsers","fProgressBarUsers","PROGRESS_BAR","fRadioUsers","fRatingUsers","RATING","fSwitchUsers","SWITCH","fTypographyUsers","fTextFieldUsers","AUTOCOMPLETE","COLOR_PICKER","COMBOBOX","DATE_PICKER","NUMERIC_PICKER","PLANNER","TIME_PICKER","rippleUsers","editorUsers","KupThemeColorValues","KupThemeIconValues","KupThemeFonts","KupThemeFontFamilyMap","IBM_PLEX_MONO","IBM_PLEX_SANS","KupTheme","cssVars","themesJson['default']","styleTag","fonts","fontPath","getAssetPath","fontFace","cssVariables","variables","css","val","computedColor","colorCheck","rgbKey","hKey","sKey","lKey","rgbVal","rgbValues","hue","saturation","lightness","icons","innerText","applicationCSS['default']","setKupStyle","styles","customStyles","completeStyle","componentCSS['default']","includes","fButtonCSS['default']","fCellCSS['default']","fCheckboxCSS['default']","fChipCSS['default']","fImageCSS['default']","fPaginatorCSS['default']","fProgressBarCSS['default']","fRadioCSS['default']","fRatingCSS['default']","fSwitchCSS['default']","FTypographyCSS['default']","fTextFieldCSS['default']","rippleCSS['default']","colorContrast","color","rgbColor","colorValues","brightness","randomColor","randomChannel","randomTheme","altRgbRe","altRgb","parts","match","isHex","isHsl","isRgb","oldColor","codeToHex","hexColor","hslColor","hslValues","rgbColorObj","hexToRgb","regexp","hsl","exec","hslToRgb","rgbToHsl","rgbToHex","values","hex","huePrime","chroma","secondComponent","red","green","blue","lightnessAdjustment","valueToHex","cmin","cmax","toFixed","colorCodes","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","goldenrod","gold","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lavender","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","KupToolbarModifierKeys","KupToolbar","_KupToolbar_keyEvent","ALT","CTRL","toolbar","hide","show","ContentRect_1","ContentRect","getBBox","freeze","paddingLeft","paddingTop","ResizeObservation_1","require$$0","ResizeObservation","$$broadcastWidth","$$broadcastHeight","isActive","broadcastWidth","broadcastHeight","ResizeObserverEntry_1","ResizeObserverEntry","contentRect","ResizeObserver_1","require$$1","resizeObservers","ResizeObserver","$$observationTargets","$$activeTargets","$$skippedTargets","callbackGuard","$$callback","targetGuard","findTargetIndex","registerResizeObserver","unobserve","deregisterResizeObserver","disconnect","ResizeObserver_2","ResizeObserver$1","resizeObserver","startLoop","checkStopLoop","functionName","Node","ELEMENT_NODE","collection","gatherActiveObservationsAtDepth","depth","targetDepth","calculateDepthForNode","hasActiveObservations","hasSkippedObservations","broadcastActiveObservations","shallowestTargetDepth","Infinity","entries","obs","entry","deliverResizeLoopErrorNotification","errorEvent","ErrorEvent","notificationIteration","animationFrameCancelToken","runLoop","KupDataNewColumnTypes","DropDownAction","KupDataTableProps","SortMode","VoCodVerRowEnum","DataTableAreasEnum","TotalMode","TotalLabel","PaginatorPos","ShowGrid","LoadMoreMode","GroupLabelDisplayMode","FixedCellsClasses","columns","columnsR","rows","FixedCellsCSSVarsBase","fieldColumn","iconColumn","keyColumn","SelectionMode","KupCellProps","KupCellElementsPosition","getCellValueForDisplay","displayedValue","formattedValue","_getCellValueForDisplay","getValueForDisplay2","formatToNumber","numberify","getValueForDisplay","decimals","objects","numberStringToFormattedString","isIsoDate","timeStringToFormattedString","timestampStringToFormattedString","getColumnByName","compareCell","cell1","cell2","sortMode","compareValues","obj1","value1","obj2","value2","sm","localCompareAsInJava","compare","s1","s2","v1","v2","numberifySafe","toDate","KupDatesFormats","ISO_DATE","Number","ISO_DATE_TIME","t1","t2","t1Length","t2Length","lim","c1","c2","charCodeAt","CMBandACPAdapter","trailingIcon","showIcons","option","SWTAdapter","leadingLabel","RADAdapter","CHKAdapter","CHIAdapter","submitPositionAdapter","positionAdapterMap","Map","buttonPosition","FilterInterval","FILTER_ANALIZER","KupGlobalFilterMode","Filters","isTree","isObjFiltrableByInterval","normalizeValue","smeupObj","newValue","isValidFormattedStringDate","normalize","manageSeconds","isValidFormattedStringTime","formattedStringToCustomDateTime","ISO_TIME","ISO_TIME_WITHOUT_SECONDS","formattedStringToTimestampString","isStringNumber","formattedStringToNumberString","filterIsNegative","filterValue","analyzedFilter","isFilterCompliantForValue","_filterIsNegative","matchSpecialFilter","parsedFilter","ignoreNegativeFlag","toRet","endsWith","isFilterCompliantForSimpleValue","valueToCheck","interval","FROM","TO","checkByRegularExpression","valueNumber","fromNumber","toNumber","valueDate","defaultFormat","normValue","fromDate","valuesArrayContainsValue","indexOfValueInValuesArray","kupObjects","findCell","dataset","filters","finder","cells","getCellValue","sorted","univocal","extractColumnValues","sort","n1","n2","addColumnValueFromRow","item","replaceCell","replaced","findColumns","hideColumns","columns2hide","hidden","visible","newColumn","CONCATENATE","newColumnFromConcatenate","DUPLICATE","newColumnFromDuplication","MATH","newColumnFromMath","operation","MERGE","newColumnFromMerge","firstColumn","titles","col","mergedFrom","newName","join","newObj","newTitle","column2duplicate","duplicatedName","names","formulaRow","formula","AVERAGE","DIFFERENCE","PRODUCT","SUM","resultOf","prog","RegExp","formulas","custom","columns2merge","outputCells","column2removeIndex","rowIndex","outputCell","findRow","toNode","nodes","removeNode","node2remove","removed","recursive","setPropertiesNode","properties","recursively","exclude","updated","toStreamNode","streamlined","getDrilldownInfoNode","maxChildren","maxDepth","getDepth","arr","getParentNode","child","parent","hasChildren","getNodeByPath","treeNodePath","_getNodeByPath","_getNode","autoCenterComps","fullWidthFieldsComps","FCellEvents","FCellPadding","FCellClasses","FCellShapes","FCellTypes","editableTypes","DATE","LINK","MULTI_AUTOCOMPLETE","MULTI_COMBOBOX","NUMBER","OBJECT","STRING","TIME","kupTypes","BAR","CHART","GAUGE","KNOB","KupData","getValue","getUnivocalValue","getType","shape","EDITOR","INPUT_CHECKBOX","TABLE","ICON","DATETIME","formatCells","getCodVer","formattedCells","buildFCell","setSizes","buildCellActions","commands","cellActions","currentCell","commandsFiltered","command","compareObjects","isObjectTPKEmpty","currentCommand","COMMAND","hasActionCell","isMatchFound","isCodVer","hasCodVerCol","hasCodVer","getDrilldownInfo","getParent","findByStrTreeNodePath","setProperties","toStream","rowActionsAdapter","rowActions","rowAction","ROWACTION","buildRowActions","codVerActions","createActionsFromVoCodRow","rowActionsWithCodVer","buildImageProp","resource","wrapperClass","onClick","PRIMARY","checkEveryActionHasOnlyIcon","cellsCodVer","codVer","hasCommands","currentColumn","pop","commandFilter","_b","CODVER","hasCommandsWithBlankObj","createActionsWithText","firstObj","secondObj","dMax","String","dMin","nMax","nMin","distinct","valuesColumn","occurrencies","occurrency","newColumns","newRows","outputColumns","outputRows","criteria","outputRow","parse","rangedDistinct","rangeColumns","resultingColumn","newD","columnNames","sortType","headerColumn","output","idx","lastIdx","leftIdx","rightIdx","xC","transpose","transposed","oldColumn","oldRow","cellName","placeholderIcon","isKey","transposedColumnName","searchStartEvent","KupSearch","activeCards","card","isMenu","menuVisible","prop","cardDetail","datatableDetail","KupMathLocales","factory","numeral","VERSION","formats","currentLocale","zeroFormat","nullFormat","scalePercentBy100","Numeral","input","_input","_value","kind","unformatFunction","isNumeral","regexps","unformat","stringToNumber","numberToFormat","roundingFunction","negP","optDec","leadingCount","abbr","trillion","billion","million","thousand","decimal","neg","abbrForce","int","precision","signed","thousands","abbreviations","delimiters","stringOriginal","abbreviation","currency","symbol","pow","insert","subString","len","multiplier","correctionFactor","args","accum","maxDecimals","optionals","splitValue","minDecimals","boundedPrecision","optionalsRegExp","power","localeData","Error","reset","property","validate","culture","_decimalSep","_thousandSep","_currSymbol","_valArray","_abbrObj","_thousandRegEx","temp","clone","inputString","formatFunction","corrFactor","cback","curr","currI","subtract","multiply","divide","difference","ordinal","space","suffixes","binary","allSuffixes","unformatRegex","bytes","suffix","bytesMultiplier","symbols","after","exponential","toExponential","num","hours","minutes","seconds","timeArray","customFormula","Function","normalDistributionFormula","average","variance","identify","fillString","stringIn","stringForFill","finalLen","addBefore","initSize","stringOut","setProps","getRegExpFromString","flags","escapeRegExp","KupMath","normalDistribution","numbers","toLocaleString","maximumFractionDigits","inputIsLocalized","positiveN","createFormatPattern","thousandPoint","decimalSeparator","numberWithGroupAndDecimalSeparator","Intl","NumberFormat","formatToParts","part","groupSeparator","matchNumericValueWithOptions","found","integerPartSuffix","integer","allowNegative","regexpObj","decFmt","getNumericValueSuffix","tmpStr","decSeparator","numberStringToNumberString","kupMath","unf","numberToString","countDecimals","minimumFractionDigits","useGrouping","stringValue","nstr","numberToFormattedString","browserDecSeparator","browserGroupSeparator","KupTooltip","fCellCallbacks","modal","currentAnchor","_KupTooltip_clickCb","paths","enterHandler","kupTooltip","overHandler","leaveHandler","removeClickCallback","_KupTooltip_instances","_KupTooltip_create","_KupTooltip_setOptions","_KupTooltip_dynPos","addClickCallback","extendStatics","__extends","__","__assign","__awaiter","thisArg","_arguments","generator","adopt","resolve","reject","fulfilled","__generator","sent","trys","ops","verb","throw","op","__spreadArray","pack","Bounds","fromClientRect","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","EMPTY","parseBounds","parseDocumentSize","toCodePoints$1","str","codePoints","extra","fromCodePoint$1","_i","fromCodePoint","codeUnits","codePoint","fromCharCode","chars$2","lookup$2","Uint8Array","i$2","chars$1$1","lookup$1$1","i$1$1","decode$1","base64","bufferLength","encoded1","encoded2","encoded3","encoded4","buffer","ArrayBuffer","polyUint16Array$1","polyUint32Array$1","UTRIE2_SHIFT_2$1","UTRIE2_SHIFT_1$1","UTRIE2_INDEX_SHIFT$1","UTRIE2_SHIFT_1_2$1","UTRIE2_LSCP_INDEX_2_OFFSET$1","UTRIE2_DATA_BLOCK_LENGTH$1","UTRIE2_DATA_MASK$1","UTRIE2_LSCP_INDEX_2_LENGTH$1","UTRIE2_INDEX_2_BMP_LENGTH$1","UTRIE2_UTF8_2B_INDEX_2_OFFSET$1","UTRIE2_UTF8_2B_INDEX_2_LENGTH$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1","UTRIE2_INDEX_2_BLOCK_LENGTH$1","UTRIE2_INDEX_2_MASK$1","slice16$1","view","Uint16Array","slice32$1","Uint32Array","createTrieFromBase64$1","_byteLength","view32","view16","headerLength","ceil","Trie$1","Trie","errorValue","highStart","highValueIndex","ix","chars$3","lookup$3","i$3","base64$1","LETTER_NUMBER_MODIFIER","BK","CR$1","LF$1","CM","NL","WJ","ZW","GL","SP","ZWJ$1","B2","BA","BB","HY","CB","CL","CP","EX","IN","NS","OP","QU","IS","NU","PO","PR","SY","AI","AL","CJ","EB","EM","H2","H3","HL","ID","JL","JV","JT","RI$1","SA","XX","ea_OP","BREAK_MANDATORY","BREAK_NOT_ALLOWED$1","BREAK_ALLOWED$1","UnicodeTrie$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","codePointsToCharacterClasses","lineBreak","indices","categories","classType","isAdjacentWithSpaceIgnored","currentIndex","classTypes","current","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","prevIndex","cssFormattedClasses","wordBreak","isLetterNumber","forbiddenBreakpoints","letterNumber","Break","required","LineBreaker","lastEnd","nextIndex","FLAG_UNRESTRICTED","FLAG_ID","FLAG_INTEGER","FLAG_NUMBER","LINE_FEED","SOLIDUS","REVERSE_SOLIDUS","CHARACTER_TABULATION","SPACE","QUOTATION_MARK","EQUALS_SIGN","NUMBER_SIGN","DOLLAR_SIGN","PERCENTAGE_SIGN","APOSTROPHE","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","LOW_LINE","HYPHEN_MINUS","EXCLAMATION_MARK","LESS_THAN_SIGN","GREATER_THAN_SIGN","COMMERCIAL_AT","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","CIRCUMFLEX_ACCENT","LEFT_CURLY_BRACKET","QUESTION_MARK","RIGHT_CURLY_BRACKET","VERTICAL_LINE","TILDE","CONTROL","REPLACEMENT_CHARACTER","ASTERISK","PLUS_SIGN","COMMA","COLON","SEMICOLON","FULL_STOP","NULL","BACKSPACE","LINE_TABULATION","SHIFT_OUT","INFORMATION_SEPARATOR_ONE","DELETE","EOF","ZERO","isDigit","isSurrogateCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isWhiteSpace","isNameStartCodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","isIdentifierStart","c3","isNumberStart","integers","fraction","fracd","frac","expsign","exponent","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","shift","digits","questionMarks","start_1","digit","endDigits","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","SLICE_STACK_SIZE","amount","endingCodePoint","consumeNumber","repr","unit","hexCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","DEG","GRAD","RAD","TURN","isAngle","parseNamedSide","sideOrCorner","ident","deg","color$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","namedColor","COLORS","TRANSPARENT","isTransparent","asString","alpha","getTokenColorValue","rgb","hue2rgb","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","prefix","parseColorStop","processColorStops","stops","lineLength","first","last","processStops","stop_1","absoluteValue","gapBegin","stop_2","gapLength","beforeGap","gapValue","getAngleFromCorner","corner","centerX","centerY","calculateGradientDirection","radian","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","findCorner","corners","stat","cx","cy","optimumDistance","optimumCorner","calculateRadius","gradient","rx","ry","size","linearGradient","angle$1","firstToken","colorStop","prefixLinearGradient","webkitGradient","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","radialGradient","isColorStop","isAtPosition_1","acc","prefixRadialGradient","isLinearGradient","background","isRadialGradient","image","image_1","url","cache","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isSupportedImage","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","BACKGROUND_SIZE","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","display","bit","parseDisplayValue","float","letterSpacing","LINE_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","overflow","overflowWrap","paddingForSide","paddingRight","paddingBottom","textAlign","textShadow","shadow","offsetX","offsetY","blur","textTransform","transform$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","WORD_BREAK","BREAK_ALL","KEEP_ALL","auto","order","time","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","fontVariant","fontStyle","content","counterIncrement","increments","filtered","counter","increment","counterReset","resets","quotes","open_1","close_1","open","close","getQuote","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","animationDuration","cssFloat","overflowTuple","overflowY","textDecoration","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","parser","length_1","value_1","elementDebuggerAttribute","getElementDebugType","attribute","isDebugging","elementType","ElementContainer","textNodes","isHTMLElementNode","bounds","chars$1","lookup$1","i$1","decode","polyUint16Array","polyUint32Array","UTRIE2_SHIFT_2","UTRIE2_SHIFT_1","UTRIE2_INDEX_SHIFT","UTRIE2_SHIFT_1_2","UTRIE2_LSCP_INDEX_2_OFFSET","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_DATA_MASK","UTRIE2_LSCP_INDEX_2_LENGTH","UTRIE2_INDEX_2_BMP_LENGTH","UTRIE2_UTF8_2B_INDEX_2_OFFSET","UTRIE2_UTF8_2B_INDEX_2_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_OMITTED_BMP_INDEX_1_LENGTH","UTRIE2_INDEX_2_BLOCK_LENGTH","UTRIE2_INDEX_2_MASK","slice16","slice32","createTrieFromBase64","chars","lookup","Prepend","CR","LF","Control","Extend","SpacingMark","LV","LVT","ZWJ","Extended_Pictographic","RI","toCodePoints","UnicodeTrie","BREAK_NOT_ALLOWED","BREAK_ALLOWED","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","graphemeBreak","splitGraphemes","breaker","graphemes","bk","testRangeBounds","TEST_HEIGHT","createRange","testElement","selectNode","rangeBounds","rangeHeight","removeChild","testIOSLineBreak","wordSpacing","repeat","firstChild","textList","supports","setEnd","boundAhead","testCORS","Image","crossOrigin","testResponseType","XMLHttpRequest","responseType","testSVG","img","canvas","ctx","getContext","src","drawImage","toDataURL","isGreenPixel","testForeignObject","fillStyle","fillRect","greenImageSrc","svg","createForeignObjectSVG","loadSerializedSVG$1","getImageData","catch","xmlns","createElementNS","foreignObject","setAttributeNS","onload","onerror","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","SUPPORT_WORD_BREAKING","SUPPORT_SVG_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","fetch","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Segmenter","TextBounds","parseTextBounds","breakText","textBounds","clientRects","subSegments","segmentGraphemes","subOffset_1","subSegment","replacementNode","splitText","getWrapperBounds","wrapper","replaceChild","segmenter","granularity","segment","segmentWords","breakWords","wordSeparators","words","_loop_1","word_1","TextContainer","CAPITALIZE","capitalize","p1","p2","ImageElementContainer","_super","_this","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","reformatInputBounds","getInputValue","PASSWORD","placeholder","INPUT_COLOR","InputElementContainer","SelectElementContainer","selectedIndex","TextareaElementContainer","IFrameElementContainer","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","isElementNode","isSlotElement","assignedNodes","createContainer","createsRealStackingContext","createsStackingContext","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","TEXT_NODE","isSVGElementNode","isHTMLElement","isVideoElement","isStyleElement","isScriptElement","isCustomElement","CounterState","counters","getCounterValue","getCounterValues","canReset","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","fallback","createCounterText","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","CJK_ZEROS","CJK_TEN_COEFFICIENTS","CJK_TEN_HIGH_COEFFICIENTS","CJK_HUNDRED_COEFFICIENTS","createCJKCounter","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","IGNORE_ATTRIBUTE","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","scrollTo","logger","clonedReferenceElement","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","rule","cssText","textContent","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","blankCanvas","appendChildNode","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","PseudoElementType","BEFORE","insertBefore","AFTER","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","cloneIframeContainer","border","scrolling","imageReady","complete","images","setInterval","childNodes","readyState","ignoredStyleProperties","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_BEFORE","PSEUDO_AFTER","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","CacheStorage","getOrigin","link","_link","href","protocol","hostname","port","isSameOrigin","_origin","setContext","location","Cache","_options","_cache","isBlobImage","isRenderable","loadImage","useCORS","useProxy","isInlineImage","proxy","isInlineBase64Image","imageTimeout","xhr","status","response","reader_1","FileReader","readAsDataURL","queryString","timeout_1","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","Vector","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","isBezierCurve","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","CORNER","topRightBorderDoubleOuterBox","bottomRightBorderDoubleOuterBox","bottomLeftBorderDoubleOuterBox","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculateContentBoxPath","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isTransformEffect","isClipEffect","isOpacityEffect","equalPath","transformPath","deltaW","deltaH","point","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","stack","order_1","index_1","index_2","processListItems","owner","numbering","listValue","parseStackingContexts","parsePathForBorder","borderSide","createPathFromCurves","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","parsePathForBorderStroke","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundPositioningArea","calculateBackgroundPaintingArea","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","targetRatio","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_1","height_1","width_2","height_2","width_3","height_3","SMALL_IMAGE","SAMPLE_TEXT","FontMetrics","_data","_document","parseMetrics","span","padding","whiteSpace","verticalAlign","baseline","offsetTop","middle","getMetrics","Renderer","MASK_OFFSET","CanvasRenderer","_activeEffects","fontMetrics","textBaseline","applyEffects","popEffect","applyEffect","save","globalAlpha","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letters","letter","measureText","createFontStyle","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","iframeRenderer","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","_f","_g","_h","_j","_k","_l","_m","_p","mask","moveTo","lineTo","formatPath","closePath","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","this_1","x1","y1","gradient_1","top_1","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","createRadialGradient","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","numberOfDashes","minSpace","maxSpace","path1","path2","setLineDash","lineCap","stroke","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","loadSerializedSVG","Logger","getTime","instances","Context","instanceName","instanceCount","logging","html2canvas","renderElement","opts","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","renderOptions","renderer","_q","_s","_u","windowWidth","windowHeight","parseBackgroundColor","devicePixelRatio","removeContainer","backgroundColorOverride","defaultBackgroundColor","KupOpenAI","dialog","sessionInfo","getFunFromText","matchAll","setError","dontRefreshCard","getCardOptions","submitCb","chat","authCb","auth","sttCb","stt","parameters","onFunClick","_KupOpenAI_instances","_KupOpenAI_create","inputArea","speechConstructor","SpeechRecognition","webkitSpeechRecognition","alert","recognition","lang","interimResults","maxAlternatives","transcript","setValue","isFinal","showSpinner","setFocus","_KupOpenAI_disconnect","mockAuth","openAI","method","headers","responseJson","json","_KupOpenAI_connect","field","pwd","_KupOpenAI_invalidPassword","disableInteractivity","communicate","async","question","responseMessages","fileId","threadId","messages","funs","helper","BUILT_IN","header","KupKeysBinding","_KupKeysBinding_SEPARATOR_KEYS_COMBO","_KupKeysBinding_pressedKeys","_KupKeysBinding_keysEvents","_KupKeysBinding_instances","_KupKeysBinding_checkEvent","_KupKeysBinding_clearKey","clear","isLunched","keyboardEvent","keyPressed","keyEvent","_KupKeysBinding_getKeysCombination","keyReleased","KupManager","overrides","datesLocale","debugActive","debugAutoprint","debugLogLimit","dialogRestrictContainer","dialogZIndex","languageList","languageName","objectsList","scrollOnHoverDelay","scrollOnHoverStep","themeList","themeName","tooltipDelay","tooltipFCellCallbacks","tooltipModal","enableExperimentalFeatures","openAIUrl","assetsPath","tooltip","setAssetPath","KupDates","magicBox","resizeCallback","utilities","clickCallbacks","lastPointerDownString","keysBinding","lastString","elAsDynamicPos","pathEl","pathElAsDynamicPos","showMagicBox","hideMagicBox","setLibraryLocalization","KupDatesLocales","getEventPath","rasterize","kupManagerInstance","ketchupInit","kupManager","autoSetLocalization"],"sources":["src/components/kup-card/kup-card-declarations.ts","src/managers/kup-language/kup-language-declarations.ts","src/managers/kup-debug/kup-debug-declarations.ts","src/managers/kup-debug/kup-debug.ts","src/managers/kup-dynamic-position/kup-dynamic-position-declarations.ts","src/managers/kup-dynamic-position/kup-dynamic-position.ts","node_modules/interactjs/dist/interact.min.js","src/managers/kup-interact/kup-interact-declarations.ts","src/managers/kup-interact/kup-interact.ts","src/managers/kup-language/kup-language.ts","src/managers/kup-objects/kup-objects.ts","src/managers/kup-scroll-on-hover/kup-scroll-on-hover-declarations.ts","src/managers/kup-scroll-on-hover/kup-scroll-on-hover.ts","src/managers/kup-theme/kup-theme-application.css","src/managers/kup-theme/kup-theme-component.css","src/f-components/f-button/f-button.css","src/f-components/f-cell/f-cell.css","src/f-components/f-checkbox/f-checkbox.css","src/f-components/f-chip/f-chip.css","src/f-components/f-image/f-image.css","src/f-components/f-paginator/f-paginator.css","src/f-components/f-progress-bar/f-progress-bar.css","src/f-components/f-radio/f-radio.css","src/f-components/f-rating/f-rating.css","src/f-components/f-switch/f-switch.css","src/f-components/f-text-field/f-text-field.css","src/f-components/f-typography/f-typography.css","src/managers/kup-theme/mdc-ripple.css","src/types/GenericTypes.ts","src/managers/kup-theme/kup-theme-declarations.ts","src/managers/kup-theme/kup-theme.ts","src/managers/kup-toolbar/kup-toolbar-declarations.ts","src/managers/kup-toolbar/kup-toolbar.ts","node_modules/resize-observer/lib/ContentRect.js","node_modules/resize-observer/lib/ResizeObservation.js","node_modules/resize-observer/lib/ResizeObserverEntry.js","node_modules/resize-observer/lib/ResizeObserver.js","src/managers/kup-data/kup-data-declarations.ts","src/components/kup-data-table/kup-data-table-declarations.ts","src/components/kup-cell/kup-cell-declarations.ts","src/utils/cell-utils.ts","src/utils/filters/filters-declarations.ts","src/utils/filters/filters.ts","src/managers/kup-data/kup-data-cell-helper.ts","src/managers/kup-data/kup-data-column-helper.ts","src/managers/kup-data/kup-data-row-helper.ts","src/managers/kup-data/kup-data-node-helper.ts","src/f-components/f-cell/f-cell-declarations.ts","src/managers/kup-data/kup-data.ts","src/managers/kup-search/kup-search-declarations.ts","src/managers/kup-search/kup-search.ts","src/managers/kup-math/kup-math-declarations.ts","node_modules/numeral/numeral.js","node_modules/numeral/locales/chs.js","node_modules/numeral/locales/es.js","node_modules/numeral/locales/fr.js","node_modules/numeral/locales/it.js","node_modules/numeral/locales/pl.js","node_modules/numeral/locales/ru.js","src/managers/kup-math/kup-math-helper.ts","src/utils/utils.ts","src/managers/kup-math/kup-math.ts","src/managers/kup-tooltip/kup-tooltip.ts","node_modules/html2canvas/dist/html2canvas.js","src/managers/kup-openai/kup-openai.ts","src/managers/kup-keys-binding/kup-keys-binding.ts","src/managers/kup-manager/kup-manager.ts"],"sourcesContent":["import { GenericObject, KupEventPayload } from '../../types/GenericTypes';\nimport { KupObj } from '../../managers/kup-objects/kup-objects-declarations';\nimport { SourceEvent } from '../kup-date-picker/kup-date-picker-declarations';\nimport Picker from 'vanilla-picker';\nimport {\n KupDataColumn,\n KupDataDataset,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { KupTextFieldEventPayload } from '../kup-text-field/kup-text-field-declarations';\nimport {\n KupButtonClickEventPayload,\n KupTextFieldCustomEvent,\n} from '../../components';\n/**\n * Props of the kup-card component.\n * Used to export every prop in an object.\n */\nexport enum KupCardProps {\n customStyle = 'Custom style of the component.',\n data = 'The actual data of the card.',\n isMenu = 'Defines whether the card is a menu or not. Works together with menuVisible.',\n layoutFamily = 'Sets the type of the card.',\n layoutNumber = 'Sets the number of the layout.',\n menuVisible = \"Sets the status of the card as menu, when false it's hidden otherwise it's visible. Works together with isMenu.\",\n sizeX = 'The width of the card, defaults to 100%. Accepts any valid CSS format (px, %, vw, etc.).',\n sizeY = 'The height of the card, defaults to 100%. Accepts any valid CSS format (px, %, vh, etc.).',\n}\n/**\n * Options of the built-in calendar.\n */\nexport interface KupCardBuiltInCalendarOptions {\n initialValue?: string | KupObj;\n firstDayIndex?: number;\n resetStatus: boolean;\n showPreviousNextMonthDays?: boolean;\n}\n/**\n * Data of the built-in calendar.\n */\nexport interface KupCardBuiltInCalendarData {\n value?: Date;\n firstDayIndex?: number;\n calendarView?: SourceEvent;\n day?: number;\n month?: number;\n year?: number;\n showPreviousNextMonthDays?: boolean;\n}\n/**\n * Html element of the built-in calendar.\n */\nexport interface KupCardBuiltInCalendar extends HTMLElement {\n kupData: KupCardBuiltInCalendarData;\n}\n/**\n * Options of the built-in clock.\n */\nexport interface KupCardBuiltInClockOptions {\n initialValue?: string | KupObj;\n manageSeconds?: boolean;\n hoursActive?: boolean;\n minutesActive?: boolean;\n secondsActive?: boolean;\n}\n/**\n * Options of the built-in message box.\n */\nexport interface KupCardBuiltInMessageBoxOptions {\n cancelCb?: (e: MouseEvent) => unknown;\n confirmCb?: (e: MouseEvent) => unknown;\n text?: string;\n}\n/**\n * Options of the built-in Open AI interface.\n */\nexport interface KupCardBuiltInOpenAIOptions {\n authCb?: KupCardBuiltInOpenAIAuthCb;\n messages?: KupCardBuiltInOpenAIMessages[];\n state?: 'authentication' | 'connecting' | 'error' | 'ready';\n sttCb?: (\n inputArea: HTMLKupTextFieldElement,\n button: HTMLKupButtonElement\n ) => void;\n submitCb?: (\n disableCb: (status: boolean) => void,\n inputArea?: HTMLKupTextFieldElement\n ) => void;\n}\n\nexport type KupCardBuiltInOpenAIAuthCb = (\n field: HTMLKupTextFieldElement\n) => void;\n/**\n * Message interface of the Open AI interface.\n */\nexport interface KupCardBuiltInOpenAIMessages {\n text: string;\n type: 'request' | 'response';\n funs: RegExpMatchArray[];\n}\n/**\n * Options of the built-in column drop menu.\n */\nexport interface KupCardColumnDropMenuOptions {\n data: KupDataDataset;\n enableFormula: boolean;\n enableMerge: boolean;\n enableMove: boolean;\n receivingColumn?: KupDataColumn;\n starterColumn?: KupDataColumn;\n formulaCb?: () => void;\n mergeCb?: () => void;\n moveCb?: () => void;\n}\n/**\n * Options of the built-in color picker.\n */\nexport interface KupCardColorPickerOptions {\n initialValue: string;\n changeCb?: (color: any) => void;\n creationCb?: (picker: Picker) => void;\n}\n/**\n * Element ids for built-in clock.\n */\nexport enum KupCardBuiltInClockElements {\n CLOCK = 'clockEl',\n HOURS = 'hoursEl',\n MINUTES = 'minutesEl',\n SECONDS = 'secondsEl',\n HOURSCIRCLE = 'hoursCircleEl',\n MINUTESCIRCLE = 'minutesCircleEl',\n SECONDSCIRCLE = 'secondsCircleEl',\n}\n/**\n * Data prop of the built-in clock.\n */\nexport interface KupCardBuiltInClockData {\n value?: string;\n manageSeconds?: boolean;\n hoursActive?: boolean;\n minutesActive?: boolean;\n secondsActive?: boolean;\n}\n/**\n * Html element of the built-in clock\n */\nexport interface KupCardBuiltInClock extends HTMLElement {\n kupData: KupCardBuiltInClockData;\n}\n/**\n * Options of the built-in numeric.\n */\nexport interface KupCardBuiltInNumericOptions {\n decimals?: boolean;\n initialValue?: string | KupObj;\n maxDecimals?: number;\n maxIntegers?: number;\n maxLength?: number;\n negative?: boolean;\n resetStatus: boolean;\n}\n/**\n * Data prop of the built-in numeric.\n */\nexport interface KupCardBuiltInNumericData {\n localeValue?: string;\n value: string;\n}\n\n/**\n * Html element of the built-in numeric\n */\nexport interface KupCardBuiltInNumeric extends HTMLElement {\n kupData: KupCardBuiltInNumericData;\n}\n/**\n * Data prop of the kup-card component.\n */\nexport interface KupCardData {\n autocomplete?: GenericObject[];\n button?: GenericObject[];\n cell?: GenericObject[];\n chart?: GenericObject[];\n checkbox?: GenericObject[];\n chip?: GenericObject[];\n color?: string[];\n columns?: KupDataColumn[];\n combobox?: GenericObject[];\n datatable?: GenericObject[];\n datepicker?: GenericObject[];\n image?: GenericObject[];\n list?: GenericObject[];\n object?: KupObj[];\n options?:\n | KupCardBuiltInCalendarOptions\n | KupCardBuiltInClockOptions\n | KupCardColumnDropMenuOptions\n | KupCardColorPickerOptions\n | KupCardBuiltInNumericOptions\n | KupCardBuiltInMessageBoxOptions\n | KupCardBuiltInOpenAIOptions;\n progressbar?: GenericObject[];\n switch?: GenericObject[];\n tabbar?: GenericObject[];\n text?: string[];\n textfield?: GenericObject[];\n timepicker?: GenericObject[];\n tree?: GenericObject[];\n}\n/**\n * Layout families of the kup-card component.\n * @enum {string}\n * @property {string} BOX - Layouts tailored for kup-box.\n * @property {string} BUILT_IN - Cards belonging to this family will be created automatically by the library and will have premade behaviors.\n * @property {string} COLLAPSIBLE - Cards belonging to this family will display an area usable to expand the content of the card.\n * @property {string} DIALOG - Cards belonging to this family will be movable and usually closable.\n * @property {string} FREE - This family of card will only receive slots, usually already arranged from the outside style.\n * @property {string} SCALABLE - Content will fit its container, resizing itself automatically.\n * @property {string} STANDARD - Stndard layouts.\n */\nexport enum KupCardFamily {\n BOX = 'box',\n BUILT_IN = 'built-in',\n COLLAPSIBLE = 'collapsible',\n DIALOG = 'dialog',\n FREE = 'free',\n SCALABLE = 'scalable',\n STANDARD = 'standard',\n}\n/**\n * Recurring IDs.\n */\nexport enum KupCardIds {\n COLUMNS_LIST = 'columns-list',\n DIALOG_CLOSE = 'dialog-close',\n DRAG_HANDLE = 'drag-handle',\n EXPAND_ACTION = 'expand-action',\n EXTRA_COLUMNS = 'extra-columns',\n NEXT_ROW = 'next-row',\n OBJECT_CHANGE = 'object-change',\n PREVIOUS_ROW = 'previous-row',\n VIEW_SELECTOR = 'view-selector',\n}\n/**\n * Recurring CSS classes.\n */\nexport enum KupCardCSSClasses {\n AUTOSCROLL = 'autoscroll',\n BUILT_IN_CARD = 'built-in-card',\n CARD_VIEW = 'card-view',\n CLICKABLE_LINK = 'clickable-link',\n COLLAPSIBLE_ACTIVE = 'collapsible-active',\n COLLAPSIBLE_CARD = 'collapsible-card',\n COLLAPSIBLE_ELEMENT = 'collapsible-element',\n COLLAPSIBLE_WRAPPER = 'collapsible-wrapper',\n DIALOG_TITLE = 'dialog-title',\n DIALOG_UNRESIZABLE = 'dialog-unresizable',\n EXPANDED = 'expanded',\n HAS_ACTIONS = 'has-actions',\n HAS_CONTENT = 'has-content',\n HEADER_BAR = 'header-bar',\n VIEW_PREFIX = 'view-',\n VISIBLE = 'visible',\n}\n/**\n * Internally-handled sub-component events.\n */\nexport enum KupCardSubEvents {\n AUTOCOMPLETE_BLUR = 'kup-autocomplete-blur',\n AUTOCOMPLETE_ITEMCLICK = 'kup-autocomplete-itemclick',\n BUTTON_CLICK = 'kup-button-click',\n CHIP_BLUR = 'kup-chip-blur',\n CHIP_ICONCLICK = 'kup-chip-iconclick',\n TABBAR_CLICK = 'kup-tabbar-click',\n TREE_NODESELECTED = 'kup-tree-nodeselected',\n}\n\nexport interface KupCardClickPayload extends KupEventPayload {\n value: string;\n}\n\nexport interface KupCardEventPayload extends KupEventPayload {\n event: any;\n}\n","import type { GenericObject } from '../../types/GenericTypes';\n\n/**\n * Master type extending all subtypes of keys.\n * Remember to edit \"languages.json\"\n */\nexport type KupLanguageKey =\n | KupLanguageCheckbox\n | KupLanguageColumn\n | KupLanguageDashboard\n | KupLanguageDebug\n | KupLanguageDensity\n | KupLanguageFontsize\n | KupLanguageGeneric\n | KupLanguageGrid\n | KupLanguageGrouping\n | KupLanguagePage\n | KupLanguageRow\n | KupLanguageSearch\n | KupLanguageTotals;\n/**\n * Interface of the languages JSON.\n */\nexport interface KupLanguageJSON {\n [index: string]: KupLanguageElement;\n}\n/**\n * Interface of a single language.\n */\nexport interface KupLanguageElement {\n keys: GenericObject;\n variants?: {\n keys: GenericObject;\n };\n}\n/**\n * Decode language interface.\n */\nexport interface KupLanguageDecode {\n language: string;\n variant: string;\n}\n/**\n * Default languages available.\n */\nexport enum KupLanguageDefaults {\n cn = 'chinese',\n en = 'english',\n es = 'spanish',\n it = 'italian',\n fr = 'french',\n pl = 'polish',\n ru = 'russian',\n}\n/**\n * Checkbox statuses decodes.\n */\nexport enum KupLanguageCheckbox {\n ALL = 'checkboxAll',\n CHECKED = 'checkboxChecked',\n INDETERMINATE = 'checkboxIndeterminate',\n UNCHECKED = 'checkboxUnchecked',\n}\n/**\n * Column related decodes.\n */\nexport enum KupLanguageColumn {\n ADD = 'columnAdd',\n ADD_DESCRIPTION = 'columnAddDescription',\n COLUMNS = 'columnColumns',\n HIDE = 'columnHide',\n MERGE = 'columnMerge',\n NO_FORMULA = 'columnNoFormula',\n NON_NUMERICAL = 'columnNonNumerical',\n NON_NUMERICAL_IN_TABLE = 'columnNonNumericalInTable',\n SWAP = 'columnSwap',\n}\n/**\n * Dashboard related decodes.\n */\nexport enum KupLanguageDashboard {\n DIMENSION = 'dashboardDimension',\n LOADED = 'dashboardLoaded',\n RESET = 'dashboardReset',\n SAVE = 'dashboardSave',\n VERTICAL = 'dashboardVertical',\n}\n/**\n * Debug widget decodes.\n */\nexport enum KupLanguageDebug {\n AUTOPRINT = 'debugAutoprint',\n CLEAR = 'debugClear',\n DUMP = 'debugDump',\n DL_ALL = 'debugDLAll',\n DL_PROPS = 'debugDLProps',\n DL_PROPS_COMP = 'debugDLPropsComp',\n LANGUAGE_CHANGER = 'debugLanguageChanger',\n LOCALE_CHANGER = 'debugLocaleChanger',\n LOG_LIMIT = 'debugLogLimit',\n MAGIC_BOX = 'debugMagicBox',\n OFF = 'debugOff',\n PRINT = 'debugPrint',\n THEME_CHANGER = 'debugThemeChanger',\n}\n/**\n * Density decodes (data table customization settings).\n */\nexport enum KupLanguageDensity {\n DENSE = 'densityDense',\n LABEL = 'densityLabel',\n MEDIUM = 'densityMedium',\n WIDE = 'densityWide',\n}\n/**\n * Font size decodes (data table customization settings).\n */\nexport enum KupLanguageFontsize {\n BIG = 'fontsizeBig',\n LABEL = 'fontsizeLabel',\n MEDIUM = 'fontsizeMedium',\n SMALL = 'fontsizeSmall',\n}\n/**\n * Generic user interface action/messages.\n */\nexport enum KupLanguageGeneric {\n ABORT = 'genericAbort',\n ADD_NEW = 'genericAddNew',\n AI_ASSISTANT = 'genericAiAssistant',\n APPLY = 'genericApply',\n BACK = 'genericBack',\n COLLAPSE = 'genericCollapse',\n CONFIRM = 'genericConfirm',\n CONFIRM_DELETE = 'genericConfirmDelete',\n CONFIRM_DELETE_X_ROWS = 'genericConfirmDeleteXRows',\n DAY = 'genericDay',\n DRAG_AND_DROP = 'genericDragAndDrop',\n DROP_YOUR_DATA = 'genericDropYourData',\n EDITABLE = 'genericEditable',\n EDITABLE_FIELD = 'genericEditableField',\n EMPTY_DATA = 'genericEmptyData',\n EMPTY_OBJECT = 'genericEmptyObject',\n EXPAND = 'genericExpand',\n EXPERIMENTAL_FEAT = 'genericExperimentalFeat',\n FILTERS = 'genericFilters',\n INFO = 'genericInfo',\n INVALID_COLOR = 'genericInvalidColor',\n LAYOUT_NYI = 'genericLayoutNotYetImplemented',\n LIST = 'genericList',\n LOAD_MORE = 'genericLoadMoreData',\n MERGE = 'genericMerge',\n MENU = 'genericMenu',\n MONTH = 'genericMonth',\n MOVE = 'genericMove',\n NEXT = 'genericNext',\n NO = 'genericNo',\n OPEN_NAVIGATION_MENU = 'genericOpenNavigationMenu',\n OPEN_IN_NEW_TAB = 'genericOpenInNewTab',\n OPEN_IN_NEW_WINDOW = 'genericOpenInNewWindow',\n OPTIONS = 'genericOptions',\n PREVIOUS = 'genericPrevious',\n REMOVE_FILTERS = 'genericRemoveFilters',\n SETTINGS = 'genericSettings',\n SHOW_ROW_OPTIONS = 'genericShowRowOptions',\n SHOW_TOOLTIP_INFO = 'genericShowTooltipInfo',\n SORT_BY = 'genericSortBy',\n SWAP = 'genericSwap',\n TOGGLE = 'genericToggle',\n TODAY = 'genericToday',\n TOP = 'genericTop',\n TOTALS_TABLE = 'genericTotalsTable',\n TRANSPOSE_DATA = 'genericTransposeData',\n VIEW_AS = 'genericViewAs',\n WEEK = 'genericWeek',\n YES = 'genericYes',\n UPDATE = 'genericUpdate',\n ROW_ADD = 'genericRowAdd',\n ROW_DELETE = 'genericRowDelete',\n INVALID_VALUE = 'genericInvalidValue',\n REQUIRED_VALUE = 'genericRequiredValue',\n}\n/**\n * Grid decodes (data table customization settings).\n */\nexport enum KupLanguageGrid {\n COLUMN = 'gridColumn',\n COMPLETE = 'gridComplete',\n LABEL = 'gridLabel',\n NONE = 'gridNone',\n ROW = 'gridRow',\n}\n/**\n * Grouping decodes (data table groups).\n */\nexport enum KupLanguageGrouping {\n DISABLE = 'groupingDisable',\n ENABLE = 'groupingEnable',\n GROUPS = 'groupingGroups',\n}\n/**\n * Page related decodes.\n */\nexport enum KupLanguagePage {\n PAGE = 'pagePage',\n TOTAL = 'pageTotal',\n}\n/**\n * Row related decodes.\n */\nexport enum KupLanguageRow {\n DETAIL = 'rowDetail',\n EDITABLE_KEY = 'rowEditableKey',\n KEY = 'rowKey',\n NEXT = 'rowNext',\n PREVIOUS = 'rowPrevious',\n RENDERED = 'rowRendered',\n ROWS = 'rowRows',\n SELECTED = 'rowSelected',\n TOTAL = 'rowTotal',\n}\n/**\n * Search decodes.\n */\nexport enum KupLanguageSearch {\n FROM = 'searchFrom',\n SEARCH = 'searchSearch',\n TO = 'searchTo',\n}\n/**\n * Footer totals decodes (tree and data table).\n */\nexport enum KupLanguageTotals {\n AVERAGE = 'totalsAverage',\n CALCULATE = 'totalsCalculate',\n CANCEL = 'totalsCancel',\n COUNT = 'totalsCount',\n DIFFERENCE = 'totalsDifference',\n DISTINCT = 'totalsDistinct',\n FORMULA = 'totalsFormula',\n MAXIMUM = 'totalsMaximum',\n MINIMUM = 'totalsMinimum',\n PRODUCT = 'totalsProduct',\n SUM = 'totalsSum',\n}\n","/**\n * Interface for the logs of KupDebug.\n */\nexport interface KupDebugLog {\n category: KupDebugCategory;\n date: Date;\n id: string;\n element: string | Object;\n message: string;\n}\n/**\n * Interface for printed logs.\n */\nexport interface KupDebugLogPrint {\n [index: string]: {\n date: string;\n element: string | Object;\n message: string;\n }[];\n}\n/**\n * Category of debug logs.\n */\nexport enum KupDebugCategory {\n INFO = 'Informational',\n WARNING = 'Warning',\n ERROR = 'Error',\n}\n/**\n * Colors associated with every type of log to be printed.\n */\nexport enum KupDebugLogColor {\n 'Load' = 'green',\n 'Render' = 'green',\n 'Resize' = 'green',\n 'Misc' = 'blue',\n 'Total' = 'teal',\n}\n","import type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport type { GenericObject, KupComponent } from '../../types/GenericTypes';\nimport {\n KupCardEventPayload,\n KupCardFamily,\n} from '../../components/kup-card/kup-card-declarations';\nimport { KupListNode } from '../../components/kup-list/kup-list-declarations';\nimport { KupLanguageDebug } from '../kup-language/kup-language-declarations';\nimport {\n KupDebugCategory,\n KupDebugLog,\n KupDebugLogColor,\n KupDebugLogPrint,\n} from './kup-debug-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Debugging suite, used to log messages and statuses from the Ketchup components.\n * @module KupDebug\n */\nexport class KupDebug {\n active: boolean;\n autoPrint: boolean;\n container: HTMLElement;\n logLimit: number;\n logs: KupDebugLog[];\n #debugWidget: HTMLKupCardElement;\n /**\n * Initializes KupDebug.\n * @param {boolean} active - When true, the debug is active on initialization.\n * @param {boolean} autoprint - When true, logs will be automatically printed inside the debug widget.\n * @param {number} logLimit - Maximum amount of logs stored, when they exceed the number specified in logLimit the cache will be automatically cleared.\n */\n constructor(active?: boolean, autoprint?: boolean, logLimit?: number) {\n this.active = active ? true : false;\n this.autoPrint = autoprint ? true : false;\n this.container = document.createElement('div');\n this.container.setAttribute('kup-debug', '');\n document.body.appendChild(this.container);\n this.logLimit = logLimit ? logLimit : 250;\n this.logs = [];\n this.#debugWidget = null;\n document.addEventListener('kup-language-change', () => {\n if (this.active && this.#debugWidget) {\n this.hideWidget();\n this.showWidget();\n }\n });\n }\n /**\n * Allows the download of props by creating a temporary clickable anchor element.\n */\n private downloadProps(res: GenericObject) {\n const dataStr: string =\n 'data:text/json;charset=utf-8,' +\n encodeURIComponent(JSON.stringify(res, null, 2));\n const downloadAnchorNode: HTMLAnchorElement =\n document.createElement('a');\n downloadAnchorNode.setAttribute('href', dataStr);\n downloadAnchorNode.setAttribute('download', 'kup_props.json');\n this.container.appendChild(downloadAnchorNode);\n downloadAnchorNode.click();\n downloadAnchorNode.remove();\n }\n /**\n * Creates the debug widget.\n */\n private showWidget(): void {\n const debugWidget: HTMLKupCardElement =\n document.createElement('kup-card');\n const languages: string[] = dom.ketchup.language.getLanguages();\n const languagesListData: KupListNode[] = [];\n for (let index = 0; index < languages.length; index++) {\n languagesListData.push({\n id: languages[index],\n selected:\n languages[index] === dom.ketchup.language.name\n ? true\n : false,\n value: languages[index],\n });\n }\n const themes: string[] = dom.ketchup.theme.getThemes();\n const themesListData: KupListNode[] = [];\n for (let index = 0; index < themes.length; index++) {\n themesListData.push({\n id: themes[index],\n selected:\n themes[index] === dom.ketchup.theme.name ? true : false,\n value: themes[index],\n });\n }\n const locales: string[] = dom.ketchup.dates.getLocales();\n const localesListData: KupListNode[] = [];\n for (let index = 0; index < locales.length; index++) {\n localesListData.push({\n id: locales[index],\n selected:\n locales[index] === dom.ketchup.dates.locale ? true : false,\n value: locales[index],\n });\n }\n debugWidget.data = {\n button: [\n {\n icon: 'power_settings_new',\n id: 'kup-debug-off',\n customStyle:\n ':host {--kup-font-size: 0.875em; border-left: 1px solid var(--kup-border-subtle); border-right: 1px solid var(--kup-border-subtle);}',\n title: dom.ketchup.language.translate(KupLanguageDebug.OFF),\n },\n {\n customStyle: ':host {--kup-font-size: 0.875em;}',\n icon: 'print',\n id: 'kup-debug-print',\n title: dom.ketchup.language.translate(\n KupLanguageDebug.PRINT\n ),\n },\n {\n checked: this.autoPrint,\n customStyle:\n ':host {--kup-font-size: 0.875em; border-right: 1px solid var(--kup-border-subtle);}',\n icon: 'speaker_notes',\n iconOff: 'speaker_notes_off',\n id: 'kup-debug-autoprint',\n title: dom.ketchup.language.translate(\n KupLanguageDebug.AUTOPRINT\n ),\n toggable: true,\n },\n {\n customStyle: ':host {--kup-font-size: 0.875em;}',\n icon: 'broom',\n id: 'kup-debug-clear',\n title: dom.ketchup.language.translate(\n KupLanguageDebug.CLEAR\n ),\n },\n {\n customStyle: ':host {--kup-font-size: 0.875em;}',\n icon: 'delete',\n id: 'kup-debug-delete',\n title: dom.ketchup.language.translate(\n KupLanguageDebug.DUMP\n ),\n },\n {\n className: 'kup-full-height',\n customStyle:\n ':host {border-left: 1px solid var(--kup-border-subtle);}',\n icon: 'download',\n id: 'kup-debug-dl-props',\n label: 'Props',\n styling: 'flat',\n title: dom.ketchup.language.translate(\n KupLanguageDebug.DL_PROPS\n ),\n },\n {\n className: 'kup-full-height',\n customStyle:\n ':host {border-right: 1px solid var(--kup-border-subtle);}',\n icon: 'download',\n id: 'kup-debug-dl-all',\n label: dom.ketchup.language.translate(\n KupLanguageDebug.DL_ALL\n ),\n styling: 'flat',\n title: dom.ketchup.language.translate(\n KupLanguageDebug.DL_ALL\n ),\n },\n {\n customStyle: ':host {--kup-font-size: 0.875em;}',\n icon: 'auto-fix',\n id: 'kup-debug-magic-box',\n title: dom.ketchup.language.translate(\n KupLanguageDebug.MAGIC_BOX\n ),\n },\n ],\n combobox: [\n {\n className: 'kup-full-height',\n data: {\n 'kup-list': {\n data: themesListData,\n id: 'kup-debug-theme-changer-list',\n },\n 'kup-text-field': {\n className: 'kup-full-height',\n emitSubmitEventOnEnter: false,\n inputType: 'text',\n label: dom.ketchup.language.translate(\n KupLanguageDebug.THEME_CHANGER\n ),\n },\n },\n id: 'kup-debug-theme-changer',\n initialValue: dom.ketchup.theme.name,\n isSelect: true,\n },\n {\n className: 'kup-full-height',\n data: {\n 'kup-list': {\n data: languagesListData,\n id: 'kup-debug-language-changer-list',\n },\n 'kup-text-field': {\n className: 'kup-full-height',\n emitSubmitEventOnEnter: false,\n inputType: 'text',\n label: dom.ketchup.language.translate(\n KupLanguageDebug.LANGUAGE_CHANGER\n ),\n },\n },\n id: 'kup-debug-language-changer',\n initialValue: dom.ketchup.language.name,\n isSelect: true,\n },\n {\n className: 'kup-full-height',\n data: {\n 'kup-list': {\n data: localesListData,\n id: 'kup-debug-locale-changer-list',\n },\n 'kup-text-field': {\n className: 'kup-full-height',\n emitSubmitEventOnEnter: false,\n inputType: 'text',\n label: dom.ketchup.language.translate(\n KupLanguageDebug.LOCALE_CHANGER\n ),\n },\n },\n id: 'kup-debug-locale-changer',\n initialValue: dom.ketchup.dates.locale,\n isSelect: true,\n },\n ],\n textfield: [\n {\n className: 'kup-full-height',\n id: 'kup-debug-log-limit',\n label: dom.ketchup.language.translate(\n KupLanguageDebug.LOG_LIMIT\n ),\n initialValue: this.logLimit,\n emitSubmitEventOnEnter: false,\n inputType: 'number',\n },\n ],\n };\n debugWidget.customStyle =\n '#kup-debug-log-limit {width: 120px;} #kup-debug-theme-changer {width: 190px;} #kup-debug-language-changer {width: 190px;} #kup-debug-locale-changer {width: 190px;}';\n debugWidget.id = 'kup-debug-widget';\n debugWidget.layoutFamily = KupCardFamily.DIALOG;\n debugWidget.layoutNumber = 3;\n debugWidget.sizeX = 'max-content';\n debugWidget.sizeY = 'auto';\n const handler = this.handleEvents;\n debugWidget.addEventListener('kup-card-event', (e: CustomEvent) =>\n handler(e, this)\n );\n\n this.container.append(debugWidget);\n this.#debugWidget = debugWidget;\n }\n /**\n * Listens the card events and handles the related actions.\n * @param {CustomEvent<KupCardEventPayload>} e - kup-card-event.\n * @param {KupDebug} kupDebug - Instance of the KupDebug class.\n */\n private handleEvents(\n e: CustomEvent<KupCardEventPayload>,\n kupDebug: KupDebug\n ): void {\n const compEvent: CustomEvent = e.detail.event;\n const compID: string = compEvent.detail.id;\n switch (compEvent.type) {\n case 'kup-button-click':\n switch (compID) {\n case 'kup-debug-autoprint':\n kupDebug.autoPrint = !kupDebug.autoPrint;\n break;\n case 'kup-debug-clear':\n kupDebug.widgetClear();\n kupDebug.#debugWidget.refresh();\n break;\n case 'kup-debug-dl-props':\n kupDebug.getProps().then((res: GenericObject) => {\n kupDebug.downloadProps(res);\n });\n break;\n case 'kup-debug-dl-all':\n kupDebug.getProps(true).then((res: GenericObject) => {\n kupDebug.downloadProps(res);\n });\n break;\n case 'kup-debug-delete':\n kupDebug.dump();\n break;\n case 'kup-debug-magic-box':\n dom.ketchup.toggleMagicBox();\n break;\n case 'kup-debug-off':\n kupDebug.toggle();\n break;\n case 'kup-debug-print':\n kupDebug.widgetClear();\n kupDebug.widgetPrint();\n kupDebug.#debugWidget.refresh();\n break;\n }\n break;\n case 'kup-combobox-itemclick':\n switch (compID) {\n case 'kup-debug-language-changer':\n dom.ketchup.language.set(compEvent.detail.value);\n break;\n case 'kup-debug-locale-changer':\n dom.ketchup.dates.setLocale(compEvent.detail.value);\n dom.ketchup.math.setLocale(compEvent.detail.value);\n break;\n case 'kup-debug-theme-changer':\n dom.ketchup.theme.set(compEvent.detail.value);\n break;\n }\n case 'kup-textfield-input':\n switch (compID) {\n case 'kup-debug-log-limit':\n if (\n compEvent.detail.value === '' ||\n compEvent.detail.value < 1\n ) {\n kupDebug.logLimit = 1;\n } else {\n kupDebug.logLimit = compEvent.detail.value;\n }\n break;\n }\n }\n }\n /**\n * Closes the debug widget.\n */\n private hideWidget() {\n this.#debugWidget.remove();\n this.#debugWidget = null;\n }\n /**\n * Clears all the printed logs inside the debug widget.\n */\n private widgetClear(): void {\n const children: HTMLCollection = Array.prototype.slice.call(\n this.#debugWidget.children,\n 0\n );\n for (let index = 0; index < children.length; index++) {\n children[index].remove();\n }\n }\n /**\n * Prints the stored logs inside the debug widget.\n */\n private widgetPrint(): void {\n const slots: Array<HTMLDivElement> = [];\n for (let index = 0; index < this.logs.length; index++) {\n // Wrapper div\n const slot: HTMLDivElement = document.createElement('div');\n slot.classList.add('text');\n switch (this.logs[index].category) {\n case KupDebugCategory.ERROR:\n slot.style.backgroundColor =\n 'rgba(var(--kup-danger-color-rgb), 0.15)';\n slot.style.borderLeft =\n '5px solid var(--kup-danger-color-60)';\n break;\n case KupDebugCategory.WARNING:\n slot.style.backgroundColor =\n 'rgba(var(--kup-warning-color-rgb), 0.15)';\n slot.style.borderLeft =\n '5px solid var(--kup-warning-color-50)';\n break;\n case KupDebugCategory.INFO:\n default:\n slot.style.borderLeft =\n '5px solid var(--kup-info-color-50)';\n break;\n }\n // If the log is tied to a KupComponent, on click its props will be downloaded.\n // Also, a different style will be applied to distinguish it between the others.\n if (typeof this.logs[index].element == 'object') {\n slot.title = dom.ketchup.language.translate(\n KupLanguageDebug.DL_PROPS_COMP\n );\n slot.style.fontWeight = 'bold';\n slot.style.cursor = 'pointer';\n slot.onclick = () => {\n try {\n (this.logs[index].element as KupComponent)\n .getProps()\n .then((res: GenericObject) => {\n this.downloadProps(res);\n });\n } catch (err) {\n this.logMessage(\n 'kup-debug',\n err,\n KupDebugCategory.WARNING\n );\n }\n };\n }\n // ID span\n const id: HTMLSpanElement = document.createElement('span');\n id.innerHTML = this.logs[index].id;\n id.style.opacity = '0.75';\n id.style.marginLeft = '5px';\n // Message span\n const message: HTMLSpanElement = document.createElement('span');\n message.innerHTML = this.logs[index].message;\n // Append elements\n slot.append(id, message);\n slots.push(slot);\n }\n slots.reverse();\n for (let index = 0; index < slots.length; index++) {\n this.#debugWidget.append(slots[index]);\n }\n }\n /**\n * Dumps the stored logs.\n */\n dump(): void {\n this.logs = [];\n }\n /**\n * Displays a table with debug information inside the browser's console.\n */\n print(): void {\n let printLog: KupDebugLogPrint = {};\n for (let index = 0; index < this.logs.length; index++) {\n const type: string =\n this.logs[index].message.indexOf('Render #') > -1\n ? 'Render'\n : this.logs[index].message.indexOf('Component ready') > -1\n ? 'Load'\n : this.logs[index].message.indexOf('Size changed') > -1\n ? 'Resize'\n : 'Misc';\n const isComponent: boolean = !!(this.logs[index]\n .element as KupComponent);\n if (!printLog[type]) {\n printLog[type] = [];\n }\n printLog[type].push({\n date: dom.ketchup.dates.format(this.logs[index].date, 'LLL:ms'),\n element: isComponent\n ? (this.logs[index].element as KupComponent)\n : this.logs[index].id,\n message: isComponent\n ? this.logs[index].id + this.logs[index].message\n : this.logs[index].message,\n });\n }\n for (const key in printLog) {\n if (Object.prototype.hasOwnProperty.call(printLog, key)) {\n console.groupCollapsed(\n '%c %c' +\n key +\n ' logs ' +\n '(' +\n printLog[key].length +\n ')',\n 'background-color: ' +\n KupDebugLogColor[key] +\n '; margin-right: 10px; border-radius: 50%',\n 'background-color: transparent'\n );\n for (let index = 0; index < printLog[key].length; index++) {\n console.log(\n printLog[key][index].date,\n printLog[key][index].message,\n printLog[key][index].element\n );\n }\n console.groupEnd();\n }\n }\n if (this.logs.length > 0) {\n console.groupCollapsed(\n '%c %c' + 'All logs (' + this.logs.length + ')',\n 'background-color: ' +\n KupDebugLogColor['Total'] +\n '; margin-right: 10px; border-radius: 50%',\n 'background-color: transparent'\n );\n console.table(this.logs);\n console.groupEnd();\n }\n }\n /**\n * Function used to set the status of the debug.\n * If no argument is provided, this method will work as a toggler.\n * @param {boolean} value - If this argument is provided, the debug status will be forced to its value.\n */\n toggle(value?: boolean): void {\n if (typeof value !== 'boolean') {\n this.active = !this.active;\n } else {\n this.active = value;\n }\n if (this.active) {\n document.dispatchEvent(new CustomEvent('kup-debug-active'));\n if (!this.#debugWidget) {\n this.showWidget();\n }\n } else {\n document.dispatchEvent(new CustomEvent('kup-debug-inactive'));\n if (this.#debugWidget) {\n this.hideWidget();\n }\n }\n }\n /**\n * Function used to check whether the debug is active or not.\n * @returns {boolean} Status of the debug.\n */\n isDebug(): boolean {\n return this.active;\n }\n /**\n * Retrieves the information for every component in this.logs by invoking the getProps public method of each component.\n * 'tag' will contain the props of the component's html tag (i.e.: <kup-chip>).\n * 'props' will contain the developer defined props of the component, making it handy for test purposes.\n * @param {boolean} detail - If provided and true, the returned object will contain additional information (i.e.: className, id).\n * @returns {GenericObject} Props of the components.\n */\n async getProps(detail?: boolean): Promise<GenericObject> {\n let comps: Set<KupComponent> = new Set();\n let props: GenericObject = detail ? { descriptions: {} } : {};\n // Storing unique components inside \"comps\"\n for (let index = 0; index < this.logs.length; index++) {\n if (typeof this.logs[index].element !== 'string') {\n if (!comps.has(this.logs[index].element as KupComponent)) {\n comps.add(this.logs[index].element as KupComponent);\n }\n }\n }\n // Object of two arrays, positionally matching each other.\n // One contains components, the other the relative promise.\n const matchingObject: {\n comps: KupComponent[];\n promises: Promise<GenericObject>[];\n } = {\n comps: [],\n promises: [],\n };\n comps.forEach((el: KupComponent) => {\n try {\n matchingObject.comps.push(el);\n matchingObject.promises.push(el.getProps());\n } catch (error) {\n this.logMessage(\n 'kup-debug',\n 'Exception when accessing \"getProps\" public method for component: ' +\n el.rootElement.tagName,\n KupDebugCategory.WARNING\n );\n }\n });\n // Returning \"props\", which is returned by the Promise.all\n return Promise.all(matchingObject.promises).then((responses) => {\n for (let index = 0; index < matchingObject.comps.length; index++) {\n const el: KupComponent = matchingObject.comps[index];\n const res: GenericObject = responses[index];\n let cnt: number = 0;\n let key: string = el.rootElement.id\n ? el.rootElement.tagName + '#' + el.rootElement.id\n : el.rootElement.tagName + '_' + ++cnt;\n while (props[key]) {\n key = el.rootElement.tagName + '_' + ++cnt;\n }\n if (detail) {\n let tag: GenericObject = {};\n for (const key in el.rootElement) {\n tag[key] = el.rootElement[key];\n }\n props[key] = {\n props: res,\n tagInfo: tag,\n };\n if (!props.descriptions[el.rootElement.tagName]) {\n try {\n el.getProps(true).then((res: GenericObject) => {\n props.descriptions[el.rootElement.tagName] =\n res;\n });\n } catch (error) {\n this.logMessage(\n 'kup-debug',\n 'Exception when accessing \"getProps\" public method for component: ' +\n el.rootElement.tagName,\n KupDebugCategory.WARNING\n );\n }\n }\n } else {\n props[key] = res;\n }\n }\n return props;\n });\n }\n /**\n * Displays a timestamped message in the browser's console when the kupDebug property on document.documentElement is true.\n * Warnings and errors will be displayed even when kupDebug !== true.\n * @param {any} comp - The component calling this function or a string.\n * @param {string} message - The actual message that will be printed.\n * @param {KupDebugCategory} category - The type of console message, defaults to log but warning and error can be used as well.\n */\n logMessage(comp: any, message: string, category?: KupDebugCategory): void {\n if (\n (!category || category === KupDebugCategory.INFO) &&\n !this.isDebug()\n ) {\n return;\n }\n const date: Date = new Date();\n if (!category) {\n category = KupDebugCategory.INFO;\n }\n let obj: object | string = null;\n let id: string = '';\n if (comp.rootElement) {\n id =\n ' ' +\n comp.rootElement.tagName +\n '#' +\n comp.rootElement.id +\n ' => ';\n obj = comp;\n } else {\n id = ' ' + comp + ' => ';\n obj = '';\n }\n\n if (this.isDebug() && id.indexOf('#kup-debug') < 0) {\n const log: KupDebugLog = {\n category: category,\n date: date,\n element: obj,\n id: id,\n message: message,\n };\n if (this.logs.length > this.logLimit) {\n console.warn(\n dom.ketchup.dates.format(date, 'LLL:ms') +\n ' kup-debug => ' +\n 'Too many logs (> ' +\n this.logLimit +\n ')! Dumping (increase debug.logLimit to store more logs)... .'\n );\n this.dump();\n }\n this.logs.push(log);\n if (this.autoPrint && this.#debugWidget) {\n this.widgetClear();\n this.widgetPrint();\n this.#debugWidget.refresh();\n }\n }\n\n switch (category) {\n case KupDebugCategory.ERROR:\n console.error(\n dom.ketchup.dates.format(date, 'LLL:ms') + id + message,\n obj\n );\n window.dispatchEvent(\n new CustomEvent('kup-debug-error', {\n bubbles: true,\n detail: { comp, date, message },\n })\n );\n break;\n case KupDebugCategory.WARNING:\n console.warn(\n dom.ketchup.dates.format(date, 'LLL:ms') + id + message,\n obj\n );\n break;\n }\n }\n /**\n * Function used to time the loading times of a component.\n * @param {any} comp - The component calling this function or a string.\n * @param {boolean} didLoad - Must be set to false when called inside a componentWillLoad() lifecycle hook and true when called inside componentDidLoad().\n */\n logLoad(comp: any, didLoad: boolean): void {\n if (!didLoad) {\n comp['debugInfo'] = {\n startTime: window.performance.now(),\n endTime: 0,\n renderCount: 0,\n renderStart: 0,\n renderEnd: 0,\n };\n } else {\n comp.debugInfo.endTime = window.performance.now();\n let timeDiff: number =\n comp.debugInfo.endTime - comp.debugInfo.startTime;\n if (this.isDebug()) {\n this.logMessage(\n comp,\n 'Component ready after ' + timeDiff + 'ms.'\n );\n }\n }\n }\n /**\n * Function used to time the render times of a component.\n * @param {any} comp - The component calling this function or a string.\n * @param {boolean} didRender - Must be set to false when called inside a componentWillRender() lifecycle hook and true when called inside componentDidRender().\n * @param {string} breakpoint - When present, this log is supposedly between a willRender and didRender hook. Used to time single features of the render lifecycle.\n */\n logRender(comp: any, didRender: boolean, breakpoint?: string): void {\n if (breakpoint) {\n const timeDiff: number =\n window.performance.now() - comp.debugInfo.renderStart;\n if (this.isDebug()) {\n this.logMessage(comp, breakpoint + ' took ' + timeDiff + 'ms.');\n }\n } else if (!didRender) {\n comp.debugInfo.renderCount++;\n comp.debugInfo.renderStart = window.performance.now();\n } else {\n comp.debugInfo.renderEnd = window.performance.now();\n const timeDiff: number =\n comp.debugInfo.renderEnd - comp.debugInfo.renderStart;\n if (this.isDebug()) {\n this.logMessage(\n comp,\n 'Render #' +\n comp.debugInfo.renderCount +\n ' took ' +\n timeDiff +\n 'ms.'\n );\n }\n }\n }\n}\n","/**\n * HTML attribute attached to dynamically positioned elements.\n */\nexport const kupDynamicPositionAttribute = 'kup-dynamic-position';\n/**\n * HTML attribute attached to dynamically positioned elements' anchor point.\n */\nexport const kupDynamicPositionAnchorAttribute = 'kup-dynamic-position-anchor';\n/**\n * CSS class attached to dynamically positioned elements when the script is running.\n */\nexport const kupDynamicPositionActiveClass = 'kup-dynamic-position-active';\n/**\n * Master type extending all subtypes of available anchor points.\n */\nexport type KupDynamicPositionAnchor =\n | HTMLElement\n | KupDynamicPositionCoordinates;\n/**\n * Fixed position element.\n */\nexport interface KupDynamicPositionElement extends HTMLElement {\n kupDynamicPosition?: {\n anchor: KupDynamicPositionAnchor;\n detach: boolean;\n margin: number;\n originalPath: HTMLElement[];\n placement: KupDynamicPositionPlacement;\n rAF: number;\n };\n}\n/**\n * Coordinates for fixed positioning.\n */\nexport interface KupDynamicPositionCoordinates {\n x: number;\n y: number;\n}\n/**\n * Available placements.\n */\nexport enum KupDynamicPositionPlacement {\n AUTO = '',\n BOTTOM = 'b',\n BOTTOM_LEFT = 'bl',\n BOTTOM_RIGHT = 'br',\n LEFT = 'l',\n RIGHT = 'r',\n TOP = 't',\n TOP_LEFT = 'tl',\n TOP_RIGHT = 'tr',\n}\n","import type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport {\n kupDynamicPositionActiveClass,\n KupDynamicPositionAnchor,\n kupDynamicPositionAnchorAttribute,\n kupDynamicPositionAttribute,\n KupDynamicPositionElement,\n} from './kup-dynamic-position-declarations';\nimport { KupDynamicPositionPlacement } from './kup-dynamic-position-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * This class is used to dynamically reposition HTML elements.\n * @module KupDynamicPosition\n */\nexport class KupDynamicPosition {\n container: HTMLElement;\n managedElements: Set<KupDynamicPositionElement>;\n /**\n * Initializes KupDynamicPosition.\n */\n constructor() {\n this.container = document.createElement('div');\n this.container.setAttribute('kup-dynamic-position', '');\n document.body.appendChild(this.container);\n this.managedElements = new Set();\n }\n /**\n * Function used to check whether the anchor point is an HTMLElement or a set of coordinates.\n * @param {KupDynamicPositionAnchor} anchor - Anchor point.\n * @returns {anchor is HTMLElement} Returns true when the anchor point is an HTMLElement.\n */\n anchorIsHTMLElement(\n anchor: KupDynamicPositionAnchor\n ): anchor is HTMLElement {\n return (anchor as HTMLElement).tagName !== undefined;\n }\n /**\n * Watches the element eligible to dynamic positioning.\n * @param {KupDynamicPositionElement} el - Element to reposition.\n * @param {KupDynamicPositionAnchor} anchorEl - \"el\" position will be anchored to this element or to these coordinates.\n * @param {number} margin - \"el\" distance from its parent in pixels.\n * @param {KupDynamicPositionPlacement} placement - \"el\" placement.\n * @param {boolean} detach - When true, the function won't be recursive but it will be executed only once. \"el\" will be detached from its original parent and it will be appended to this.container.\n */\n register(\n el: KupDynamicPositionElement,\n anchorEl: KupDynamicPositionAnchor,\n margin?: number,\n placement?: KupDynamicPositionPlacement,\n detach?: boolean\n ): void {\n if (this.isRegistered(el)) {\n this.changeAnchor(el, anchorEl);\n return;\n }\n el.setAttribute(kupDynamicPositionAttribute, '');\n if (this.anchorIsHTMLElement(anchorEl)) {\n anchorEl.setAttribute(kupDynamicPositionAnchorAttribute, '');\n }\n el.style.zIndex = `calc(var(--kup-navbar-zindex) + 1000)`;\n const originalPath: HTMLElement[] = [];\n if (detach) {\n let currentEl: unknown = el;\n while (currentEl && currentEl !== document.body) {\n currentEl = (currentEl as HTMLElement).parentNode\n ? (currentEl as HTMLElement).parentNode\n : (currentEl as ShadowRoot).host;\n originalPath.push(currentEl as HTMLElement);\n }\n el.style.position = 'absolute';\n this.container.appendChild(el);\n } else {\n el.style.position = 'fixed';\n }\n el.kupDynamicPosition = {\n anchor: anchorEl,\n detach: detach ? true : false,\n originalPath: originalPath,\n margin: margin ? margin : 0,\n placement: placement ? placement : KupDynamicPositionPlacement.AUTO,\n rAF: null,\n };\n const mutObserver: MutationObserver = new MutationObserver(function (\n mutations\n ) {\n const target: Node = mutations[0].target;\n if (\n (target as HTMLElement).classList.contains(\n kupDynamicPositionActiveClass\n )\n ) {\n requestAnimationFrame(function () {\n dom.ketchup.dynamicPosition.run(el);\n });\n }\n });\n mutObserver.observe(el, {\n attributes: true,\n attributeFilter: ['class'],\n });\n this.managedElements.add(el);\n }\n /**\n * Changes the anchor point of the given element.\n * @param {KupDynamicPositionElement} elements - Dynamically positioned element previously registered.\n * @param {KupDynamicPositionAnchor} anchorEl - New anchor point.\n */\n changeAnchor(\n el: KupDynamicPositionElement,\n anchorEl: KupDynamicPositionAnchor\n ): void {\n el.kupDynamicPosition.anchor = anchorEl;\n }\n /**\n * Removes the element from dynamic position management.\n * @param {KupDynamicPositionElement[]} elements - Elements to remove from the managed elements set.\n */\n unregister(elements: KupDynamicPositionElement[]): void {\n if (this.managedElements) {\n for (let index = 0; index < elements.length; index++) {\n this.managedElements.delete(elements[index]);\n }\n }\n }\n /**\n * Returns whether an element was previously registered or not.\n * @param {KupDynamicPositionElement} el - Element to test.\n * @returns {boolean} True if the element was registered.\n */\n isRegistered(el: KupDynamicPositionElement): boolean {\n return !this.managedElements ? false : this.managedElements.has(el);\n }\n /**\n * Starts the process of dynamically reposition the element (which must be firstly initialized through this.setup()).\n * @param {KupDynamicPositionElement} el - Element to reposition.\n */\n start(el: KupDynamicPositionElement): void {\n el.classList.add(kupDynamicPositionActiveClass);\n }\n /**\n * Ends the process of dynamically reposition the element.\n * @param {KupDynamicPositionElement} el - Element to reposition.\n */\n stop(el: KupDynamicPositionElement): void {\n el.classList.remove(kupDynamicPositionActiveClass);\n }\n /**\n * This function calculates where to place the element in order to correctly display it attached to its anchor point.\n * @param {KupDynamicPositionElement} el - Element to reposition.\n */\n run(el: KupDynamicPositionElement): void {\n if (!el.isConnected) {\n dom.ketchup.dynamicPosition.managedElements.delete(el);\n cancelAnimationFrame(el.kupDynamicPosition.rAF);\n return;\n }\n if (!el.classList.contains(kupDynamicPositionActiveClass)) {\n cancelAnimationFrame(el.kupDynamicPosition.rAF);\n return;\n }\n // Reset placement\n el.style.top = '';\n el.style.right = '';\n el.style.bottom = '';\n el.style.left = '';\n // Fixed position (usually from mouse events).\n // When anchor doesn't have the tagName property, anchor is considered as a set of coordinates.\n if (!this.anchorIsHTMLElement(el.kupDynamicPosition.anchor)) {\n const x: number = el.kupDynamicPosition.anchor.x;\n const y: number = el.kupDynamicPosition.anchor.y - 1;\n if (\n el.offsetWidth >\n window.innerWidth - el.kupDynamicPosition.anchor.x\n ) {\n el.style.left = x - el.offsetWidth + 'px';\n } else {\n el.style.left = x + 'px';\n }\n if (\n el.offsetHeight >\n window.innerHeight - el.kupDynamicPosition.anchor.y\n ) {\n el.style.top = y - el.offsetHeight + 'px';\n } else {\n el.style.top = y + 'px';\n }\n return;\n }\n const detached: boolean = !!el.kupDynamicPosition.detach;\n const offsetH: number = el.clientHeight;\n const offsetW: number = el.clientWidth;\n const rect: DOMRect = (\n el.kupDynamicPosition.anchor as HTMLElement\n ).getBoundingClientRect();\n const top: number = detached ? window.pageYOffset + rect.top : rect.top,\n left: number = detached\n ? window.pageXOffset + rect.left\n : rect.left,\n bottom: number = detached\n ? window.pageYOffset + rect.bottom\n : rect.bottom,\n right: number = detached\n ? window.pageXOffset + rect.right\n : rect.right;\n // Vertical position\n if (\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.TOP ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.TOP_LEFT ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.TOP_RIGHT\n ) {\n el.style.bottom = `${\n window.innerHeight - top + el.kupDynamicPosition.margin\n }px`;\n } else if (\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.BOTTOM ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.BOTTOM_LEFT ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.BOTTOM_RIGHT\n ) {\n el.style.top = `${bottom - 1 + el.kupDynamicPosition.margin}px`;\n } else {\n if (\n offsetH < rect.top &&\n window.innerHeight - rect.bottom < offsetH\n ) {\n el.style.bottom = `${\n window.innerHeight - top + el.kupDynamicPosition.margin\n }px`;\n } else {\n el.style.top = `${bottom - 1 + el.kupDynamicPosition.margin}px`;\n }\n }\n // Horizontal position\n if (\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.LEFT ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.BOTTOM_LEFT ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.TOP_LEFT\n ) {\n el.style.left = `${left}px`;\n } else if (\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.RIGHT ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.BOTTOM_RIGHT ||\n el.kupDynamicPosition.placement ===\n KupDynamicPositionPlacement.TOP_RIGHT\n ) {\n let scrollbarWidth: number =\n window.innerWidth - document.documentElement.offsetWidth;\n if (scrollbarWidth > 30) {\n scrollbarWidth = 0;\n }\n el.style.right = `${window.innerWidth - scrollbarWidth - right}px`;\n } else {\n if (\n offsetW < rect.right &&\n window.innerWidth - rect.left < offsetW\n ) {\n let scrollbarWidth: number =\n window.innerWidth - document.documentElement.offsetWidth;\n if (scrollbarWidth > 30) {\n scrollbarWidth = 0;\n }\n el.style.right = `${\n window.innerWidth - scrollbarWidth - right\n }px`;\n } else {\n el.style.left = `${left}px`;\n }\n }\n // Testing behavior: always anchored - 2024-09-25\n el.kupDynamicPosition.rAF = requestAnimationFrame(function () {\n dom.ketchup.dynamicPosition.run(el);\n });\n }\n}\n","/* interact.js 1.10.12 | https://interactjs.io/license */\n!function(t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).interact=t()}((function(){var t={};Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=void 0,t.default=function(t){return!(!t||!t.Window)&&t instanceof t.Window};var e={};Object.defineProperty(e,\"__esModule\",{value:!0}),e.getWindow=function(e){return(0,t.default)(e)?e:(e.ownerDocument||e).defaultView||r.window},e.init=o,e.window=e.realWindow=void 0;var n=void 0;e.realWindow=n;var r=void 0;function o(t){e.realWindow=n=t;var o=t.document.createTextNode(\"\");o.ownerDocument!==t.document&&\"function\"==typeof t.wrap&&t.wrap(o)===o&&(t=t.wrap(t)),e.window=r=t}e.window=r,\"undefined\"!=typeof window&&window&&o(window);var i={};function a(t){return(a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}Object.defineProperty(i,\"__esModule\",{value:!0}),i.default=void 0;var s=function(t){return!!t&&\"object\"===a(t)},l=function(t){return\"function\"==typeof t},u={window:function(n){return n===e.window||(0,t.default)(n)},docFrag:function(t){return s(t)&&11===t.nodeType},object:s,func:l,number:function(t){return\"number\"==typeof t},bool:function(t){return\"boolean\"==typeof t},string:function(t){return\"string\"==typeof t},element:function(t){if(!t||\"object\"!==a(t))return!1;var n=e.getWindow(t)||e.window;return/object|function/.test(a(n.Element))?t instanceof n.Element:1===t.nodeType&&\"string\"==typeof t.nodeName},plainObject:function(t){return s(t)&&!!t.constructor&&/function Object\\b/.test(t.constructor.toString())},array:function(t){return s(t)&&void 0!==t.length&&l(t.splice)}};i.default=u;var c={};function f(t){var e=t.interaction;if(\"drag\"===e.prepared.name){var n=e.prepared.axis;\"x\"===n?(e.coords.cur.page.y=e.coords.start.page.y,e.coords.cur.client.y=e.coords.start.client.y,e.coords.velocity.client.y=0,e.coords.velocity.page.y=0):\"y\"===n&&(e.coords.cur.page.x=e.coords.start.page.x,e.coords.cur.client.x=e.coords.start.client.x,e.coords.velocity.client.x=0,e.coords.velocity.page.x=0)}}function d(t){var e=t.iEvent,n=t.interaction;if(\"drag\"===n.prepared.name){var r=n.prepared.axis;if(\"x\"===r||\"y\"===r){var o=\"x\"===r?\"y\":\"x\";e.page[o]=n.coords.start.page[o],e.client[o]=n.coords.start.client[o],e.delta[o]=0}}}Object.defineProperty(c,\"__esModule\",{value:!0}),c.default=void 0;var p={id:\"actions/drag\",install:function(t){var e=t.actions,n=t.Interactable,r=t.defaults;n.prototype.draggable=p.draggable,e.map.drag=p,e.methodDict.drag=\"draggable\",r.actions.drag=p.defaults},listeners:{\"interactions:before-action-move\":f,\"interactions:action-resume\":f,\"interactions:action-move\":d,\"auto-start:check\":function(t){var e=t.interaction,n=t.interactable,r=t.buttons,o=n.options.drag;if(o&&o.enabled&&(!e.pointerIsDown||!/mouse|pointer/.test(e.pointerType)||0!=(r&n.options.drag.mouseButtons)))return t.action={name:\"drag\",axis:\"start\"===o.lockAxis?o.startAxis:o.lockAxis},!1}},draggable:function(t){return i.default.object(t)?(this.options.drag.enabled=!1!==t.enabled,this.setPerAction(\"drag\",t),this.setOnEvents(\"drag\",t),/^(xy|x|y|start)$/.test(t.lockAxis)&&(this.options.drag.lockAxis=t.lockAxis),/^(xy|x|y)$/.test(t.startAxis)&&(this.options.drag.startAxis=t.startAxis),this):i.default.bool(t)?(this.options.drag.enabled=t,this):this.options.drag},beforeMove:f,move:d,defaults:{startAxis:\"xy\",lockAxis:\"xy\"},getCursor:function(){return\"move\"}},v=p;c.default=v;var h={};Object.defineProperty(h,\"__esModule\",{value:!0}),h.default=void 0;var g={init:function(t){var e=t;g.document=e.document,g.DocumentFragment=e.DocumentFragment||y,g.SVGElement=e.SVGElement||y,g.SVGSVGElement=e.SVGSVGElement||y,g.SVGElementInstance=e.SVGElementInstance||y,g.Element=e.Element||y,g.HTMLElement=e.HTMLElement||g.Element,g.Event=e.Event,g.Touch=e.Touch||y,g.PointerEvent=e.PointerEvent||e.MSPointerEvent},document:null,DocumentFragment:null,SVGElement:null,SVGSVGElement:null,SVGElementInstance:null,Element:null,HTMLElement:null,Event:null,Touch:null,PointerEvent:null};function y(){}var m=g;h.default=m;var b={};Object.defineProperty(b,\"__esModule\",{value:!0}),b.default=void 0;var x={init:function(t){var e=h.default.Element,n=t.navigator||{};x.supportsTouch=\"ontouchstart\"in t||i.default.func(t.DocumentTouch)&&h.default.document instanceof t.DocumentTouch,x.supportsPointerEvent=!1!==n.pointerEnabled&&!!h.default.PointerEvent,x.isIOS=/iP(hone|od|ad)/.test(n.platform),x.isIOS7=/iP(hone|od|ad)/.test(n.platform)&&/OS 7[^\\d]/.test(n.appVersion),x.isIe9=/MSIE 9/.test(n.userAgent),x.isOperaMobile=\"Opera\"===n.appName&&x.supportsTouch&&/Presto/.test(n.userAgent),x.prefixedMatchesSelector=\"matches\"in e.prototype?\"matches\":\"webkitMatchesSelector\"in e.prototype?\"webkitMatchesSelector\":\"mozMatchesSelector\"in e.prototype?\"mozMatchesSelector\":\"oMatchesSelector\"in e.prototype?\"oMatchesSelector\":\"msMatchesSelector\",x.pEventTypes=x.supportsPointerEvent?h.default.PointerEvent===t.MSPointerEvent?{up:\"MSPointerUp\",down:\"MSPointerDown\",over:\"mouseover\",out:\"mouseout\",move:\"MSPointerMove\",cancel:\"MSPointerCancel\"}:{up:\"pointerup\",down:\"pointerdown\",over:\"pointerover\",out:\"pointerout\",move:\"pointermove\",cancel:\"pointercancel\"}:null,x.wheelEvent=h.default.document&&\"onmousewheel\"in h.default.document?\"mousewheel\":\"wheel\"},supportsTouch:null,supportsPointerEvent:null,isIOS7:null,isIOS:null,isIe9:null,isOperaMobile:null,prefixedMatchesSelector:null,pEventTypes:null,wheelEvent:null},w=x;b.default=w;var _={};function P(t){var e=t.parentNode;if(i.default.docFrag(e)){for(;(e=e.host)&&i.default.docFrag(e););return e}return e}function O(t,n){return e.window!==e.realWindow&&(n=n.replace(/\\/deep\\//g,\" \")),t[b.default.prefixedMatchesSelector](n)}Object.defineProperty(_,\"__esModule\",{value:!0}),_.closest=function(t,e){for(;i.default.element(t);){if(O(t,e))return t;t=P(t)}return null},_.getActualElement=function(t){return t.correspondingUseElement||t},_.getElementClientRect=M,_.getElementRect=function(t){var n=M(t);if(!b.default.isIOS7&&n){var r=T(e.getWindow(t));n.left+=r.x,n.right+=r.x,n.top+=r.y,n.bottom+=r.y}return n},_.getPath=function(t){for(var e=[];t;)e.push(t),t=P(t);return e},_.getScrollXY=T,_.indexOfDeepestElement=function(t){for(var n,r=[],o=0;o<t.length;o++){var i=t[o],a=t[n];if(i&&o!==n)if(a){var s=E(i),l=E(a);if(s!==i.ownerDocument)if(l!==i.ownerDocument)if(s!==l){r=r.length?r:S(a);var u=void 0;if(a instanceof h.default.HTMLElement&&i instanceof h.default.SVGElement&&!(i instanceof h.default.SVGSVGElement)){if(i===l)continue;u=i.ownerSVGElement}else u=i;for(var c=S(u,a.ownerDocument),f=0;c[f]&&c[f]===r[f];)f++;var d=[c[f-1],c[f],r[f]];if(d[0])for(var p=d[0].lastChild;p;){if(p===d[1]){n=o,r=c;break}if(p===d[2])break;p=p.previousSibling}}else v=i,g=a,void 0,void 0,(parseInt(e.getWindow(v).getComputedStyle(v).zIndex,10)||0)>=(parseInt(e.getWindow(g).getComputedStyle(g).zIndex,10)||0)&&(n=o);else n=o}else n=o}var v,g;return n},_.matchesSelector=O,_.matchesUpTo=function(t,e,n){for(;i.default.element(t);){if(O(t,e))return!0;if((t=P(t))===n)return O(t,e)}return!1},_.nodeContains=function(t,e){if(t.contains)return t.contains(e);for(;e;){if(e===t)return!0;e=e.parentNode}return!1},_.parentNode=P,_.trySelector=function(t){return!!i.default.string(t)&&(h.default.document.querySelector(t),!0)};var E=function(t){return t.parentNode||t.host};function S(t,e){for(var n,r=[],o=t;(n=E(o))&&o!==e&&n!==o.ownerDocument;)r.unshift(o),o=n;return r}function T(t){return{x:(t=t||e.window).scrollX||t.document.documentElement.scrollLeft,y:t.scrollY||t.document.documentElement.scrollTop}}function M(t){var e=t instanceof h.default.SVGElement?t.getBoundingClientRect():t.getClientRects()[0];return e&&{left:e.left,right:e.right,top:e.top,bottom:e.bottom,width:e.width||e.right-e.left,height:e.height||e.bottom-e.top}}var j={};Object.defineProperty(j,\"__esModule\",{value:!0}),j.default=function(t,e){for(var n in e)t[n]=e[n];return t};var k={};function I(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function D(t,e,n){return\"parent\"===t?(0,_.parentNode)(n):\"self\"===t?e.getRect(n):(0,_.closest)(n,t)}Object.defineProperty(k,\"__esModule\",{value:!0}),k.addEdges=function(t,e,n){t.left&&(e.left+=n.x),t.right&&(e.right+=n.x),t.top&&(e.top+=n.y),t.bottom&&(e.bottom+=n.y),e.width=e.right-e.left,e.height=e.bottom-e.top},k.getStringOptionResult=D,k.rectToXY=function(t){return t&&{x:\"x\"in t?t.x:t.left,y:\"y\"in t?t.y:t.top}},k.resolveRectLike=function(t,e,n,r){var o,a=t;return i.default.string(a)?a=D(a,e,n):i.default.func(a)&&(a=a.apply(void 0,function(t){if(Array.isArray(t))return I(t)}(o=r)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(o)||function(t,e){if(t){if(\"string\"==typeof t)return I(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?I(t,e):void 0}}(o)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())),i.default.element(a)&&(a=(0,_.getElementRect)(a)),a},k.tlbrToXywh=function(t){return!t||\"x\"in t&&\"y\"in t||((t=(0,j.default)({},t)).x=t.left||0,t.y=t.top||0,t.width=t.width||(t.right||0)-t.x,t.height=t.height||(t.bottom||0)-t.y),t},k.xywhToTlbr=function(t){return!t||\"left\"in t&&\"top\"in t||((t=(0,j.default)({},t)).left=t.x||0,t.top=t.y||0,t.right=t.right||t.left+t.width,t.bottom=t.bottom||t.top+t.height),t};var A={};Object.defineProperty(A,\"__esModule\",{value:!0}),A.default=function(t,e,n){var r=t.options[n],o=r&&r.origin||t.options.origin,i=(0,k.resolveRectLike)(o,t,e,[t&&e]);return(0,k.rectToXY)(i)||{x:0,y:0}};var R={};function z(t){return t.trim().split(/ +/)}Object.defineProperty(R,\"__esModule\",{value:!0}),R.default=function t(e,n,r){if(r=r||{},i.default.string(e)&&-1!==e.search(\" \")&&(e=z(e)),i.default.array(e))return e.reduce((function(e,o){return(0,j.default)(e,t(o,n,r))}),r);if(i.default.object(e)&&(n=e,e=\"\"),i.default.func(n))r[e]=r[e]||[],r[e].push(n);else if(i.default.array(n))for(var o=0;o<n.length;o++){var a;a=n[o],t(e,a,r)}else if(i.default.object(n))for(var s in n){var l=z(s).map((function(t){return\"\".concat(e).concat(t)}));t(l,n[s],r)}return r};var C={};Object.defineProperty(C,\"__esModule\",{value:!0}),C.default=void 0,C.default=function(t,e){return Math.sqrt(t*t+e*e)};var F={};function X(t,e){for(var n in e){var r=X.prefixedPropREs,o=!1;for(var i in r)if(0===n.indexOf(i)&&r[i].test(n)){o=!0;break}o||\"function\"==typeof e[n]||(t[n]=e[n])}return t}Object.defineProperty(F,\"__esModule\",{value:!0}),F.default=void 0,X.prefixedPropREs={webkit:/(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,moz:/(Pressure)$/};var B=X;F.default=B;var Y={};function W(t){return t instanceof h.default.Event||t instanceof h.default.Touch}function L(t,e,n){return t=t||\"page\",(n=n||{}).x=e[t+\"X\"],n.y=e[t+\"Y\"],n}function U(t,e){return e=e||{x:0,y:0},b.default.isOperaMobile&&W(t)?(L(\"screen\",t,e),e.x+=window.scrollX,e.y+=window.scrollY):L(\"page\",t,e),e}function V(t,e){return e=e||{},b.default.isOperaMobile&&W(t)?L(\"screen\",t,e):L(\"client\",t,e),e}function N(t){var e=[];return i.default.array(t)?(e[0]=t[0],e[1]=t[1]):\"touchend\"===t.type?1===t.touches.length?(e[0]=t.touches[0],e[1]=t.changedTouches[0]):0===t.touches.length&&(e[0]=t.changedTouches[0],e[1]=t.changedTouches[1]):(e[0]=t.touches[0],e[1]=t.touches[1]),e}function q(t){for(var e={pageX:0,pageY:0,clientX:0,clientY:0,screenX:0,screenY:0},n=0;n<t.length;n++){var r=t[n];for(var o in e)e[o]+=r[o]}for(var i in e)e[i]/=t.length;return e}Object.defineProperty(Y,\"__esModule\",{value:!0}),Y.coordsToEvent=function(t){return{coords:t,get page(){return this.coords.page},get client(){return this.coords.client},get timeStamp(){return this.coords.timeStamp},get pageX(){return this.coords.page.x},get pageY(){return this.coords.page.y},get clientX(){return this.coords.client.x},get clientY(){return this.coords.client.y},get pointerId(){return this.coords.pointerId},get target(){return this.coords.target},get type(){return this.coords.type},get pointerType(){return this.coords.pointerType},get buttons(){return this.coords.buttons},preventDefault:function(){}}},Y.copyCoords=function(t,e){t.page=t.page||{},t.page.x=e.page.x,t.page.y=e.page.y,t.client=t.client||{},t.client.x=e.client.x,t.client.y=e.client.y,t.timeStamp=e.timeStamp},Y.getClientXY=V,Y.getEventTargets=function(t){var e=i.default.func(t.composedPath)?t.composedPath():t.path;return[_.getActualElement(e?e[0]:t.target),_.getActualElement(t.currentTarget)]},Y.getPageXY=U,Y.getPointerId=function(t){return i.default.number(t.pointerId)?t.pointerId:t.identifier},Y.getPointerType=function(t){return i.default.string(t.pointerType)?t.pointerType:i.default.number(t.pointerType)?[void 0,void 0,\"touch\",\"pen\",\"mouse\"][t.pointerType]:/touch/.test(t.type||\"\")||t instanceof h.default.Touch?\"touch\":\"mouse\"},Y.getTouchPair=N,Y.getXY=L,Y.isNativePointer=W,Y.newCoords=function(){return{page:{x:0,y:0},client:{x:0,y:0},timeStamp:0}},Y.pointerAverage=q,Object.defineProperty(Y,\"pointerExtend\",{enumerable:!0,get:function(){return F.default}}),Y.setCoordDeltas=function(t,e,n){t.page.x=n.page.x-e.page.x,t.page.y=n.page.y-e.page.y,t.client.x=n.client.x-e.client.x,t.client.y=n.client.y-e.client.y,t.timeStamp=n.timeStamp-e.timeStamp},Y.setCoordVelocity=function(t,e){var n=Math.max(e.timeStamp/1e3,.001);t.page.x=e.page.x/n,t.page.y=e.page.y/n,t.client.x=e.client.x/n,t.client.y=e.client.y/n,t.timeStamp=n},Y.setCoords=function(t,e,n){var r=e.length>1?q(e):e[0];U(r,t.page),V(r,t.client),t.timeStamp=n},Y.setZeroCoords=function(t){t.page.x=0,t.page.y=0,t.client.x=0,t.client.y=0},Y.touchAngle=function(t,e){var n=e+\"X\",r=e+\"Y\",o=N(t),i=o[1][n]-o[0][n],a=o[1][r]-o[0][r];return 180*Math.atan2(a,i)/Math.PI},Y.touchBBox=function(t){if(!t.length)return null;var e=N(t),n=Math.min(e[0].pageX,e[1].pageX),r=Math.min(e[0].pageY,e[1].pageY),o=Math.max(e[0].pageX,e[1].pageX),i=Math.max(e[0].pageY,e[1].pageY);return{x:n,y:r,left:n,top:r,right:o,bottom:i,width:o-n,height:i-r}},Y.touchDistance=function(t,e){var n=e+\"X\",r=e+\"Y\",o=N(t),i=o[0][n]-o[1][n],a=o[0][r]-o[1][r];return(0,C.default)(i,a)};var $={};function G(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function H(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty($,\"__esModule\",{value:!0}),$.BaseEvent=void 0;var K=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),H(this,\"immediatePropagationStopped\",!1),H(this,\"propagationStopped\",!1),this._interaction=e}var e,n;return e=t,(n=[{key:\"preventDefault\",value:function(){}},{key:\"stopPropagation\",value:function(){this.propagationStopped=!0}},{key:\"stopImmediatePropagation\",value:function(){this.immediatePropagationStopped=this.propagationStopped=!0}}])&&G(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();$.BaseEvent=K,Object.defineProperty(K.prototype,\"interaction\",{get:function(){return this._interaction._proxy},set:function(){}});var Z={};Object.defineProperty(Z,\"__esModule\",{value:!0}),Z.remove=Z.merge=Z.from=Z.findIndex=Z.find=Z.contains=void 0,Z.contains=function(t,e){return-1!==t.indexOf(e)},Z.remove=function(t,e){return t.splice(t.indexOf(e),1)};var J=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];t.push(r)}return t};Z.merge=J,Z.from=function(t){return J([],t)};var Q=function(t,e){for(var n=0;n<t.length;n++)if(e(t[n],n,t))return n;return-1};Z.findIndex=Q,Z.find=function(t,e){return t[Q(t,e)]};var tt={};function et(t){return(et=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function nt(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function rt(t,e){return(rt=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function ot(t,e){if(e&&(\"object\"===et(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return it(t)}function it(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function at(t){return(at=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function st(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(tt,\"__esModule\",{value:!0}),tt.DropEvent=void 0;var lt=function(t){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&rt(t,e)}(a,t);var e,n,r,o,i=(r=a,o=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,e=at(r);if(o){var n=at(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return ot(this,t)});function a(t,e,n){var r;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,a),st(it(r=i.call(this,e._interaction)),\"dropzone\",void 0),st(it(r),\"dragEvent\",void 0),st(it(r),\"relatedTarget\",void 0),st(it(r),\"draggable\",void 0),st(it(r),\"propagationStopped\",!1),st(it(r),\"immediatePropagationStopped\",!1);var o=\"dragleave\"===n?t.prev:t.cur,s=o.element,l=o.dropzone;return r.type=n,r.target=s,r.currentTarget=s,r.dropzone=l,r.dragEvent=e,r.relatedTarget=e.target,r.draggable=e.interactable,r.timeStamp=e.timeStamp,r}return e=a,(n=[{key:\"reject\",value:function(){var t=this,e=this._interaction.dropState;if(\"dropactivate\"===this.type||this.dropzone&&e.cur.dropzone===this.dropzone&&e.cur.element===this.target)if(e.prev.dropzone=this.dropzone,e.prev.element=this.target,e.rejected=!0,e.events.enter=null,this.stopImmediatePropagation(),\"dropactivate\"===this.type){var n=e.activeDrops,r=Z.findIndex(n,(function(e){var n=e.dropzone,r=e.element;return n===t.dropzone&&r===t.target}));e.activeDrops.splice(r,1);var o=new a(e,this.dragEvent,\"dropdeactivate\");o.dropzone=this.dropzone,o.target=this.target,this.dropzone.fire(o)}else this.dropzone.fire(new a(e,this.dragEvent,\"dragleave\"))}},{key:\"preventDefault\",value:function(){}},{key:\"stopPropagation\",value:function(){this.propagationStopped=!0}},{key:\"stopImmediatePropagation\",value:function(){this.immediatePropagationStopped=this.propagationStopped=!0}}])&&nt(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),a}($.BaseEvent);tt.DropEvent=lt;var ut={};function ct(t,e){for(var n=0;n<t.slice().length;n++){var r=t.slice()[n],o=r.dropzone,i=r.element;e.dropzone=o,e.target=i,o.fire(e),e.propagationStopped=e.immediatePropagationStopped=!1}}function ft(t,e){for(var n=function(t,e){for(var n=t.interactables,r=[],o=0;o<n.list.length;o++){var a=n.list[o];if(a.options.drop.enabled){var s=a.options.drop.accept;if(!(i.default.element(s)&&s!==e||i.default.string(s)&&!_.matchesSelector(e,s)||i.default.func(s)&&!s({dropzone:a,draggableElement:e})))for(var l=i.default.string(a.target)?a._context.querySelectorAll(a.target):i.default.array(a.target)?a.target:[a.target],u=0;u<l.length;u++){var c=l[u];c!==e&&r.push({dropzone:a,element:c,rect:a.getRect(c)})}}}return r}(t,e),r=0;r<n.length;r++){var o=n[r];o.rect=o.dropzone.getRect(o.element)}return n}function dt(t,e,n){for(var r=t.dropState,o=t.interactable,i=t.element,a=[],s=0;s<r.activeDrops.length;s++){var l=r.activeDrops[s],u=l.dropzone,c=l.element,f=l.rect;a.push(u.dropCheck(e,n,o,i,c,f)?c:null)}var d=_.indexOfDeepestElement(a);return r.activeDrops[d]||null}function pt(t,e,n){var r=t.dropState,o={enter:null,leave:null,activate:null,deactivate:null,move:null,drop:null};return\"dragstart\"===n.type&&(o.activate=new tt.DropEvent(r,n,\"dropactivate\"),o.activate.target=null,o.activate.dropzone=null),\"dragend\"===n.type&&(o.deactivate=new tt.DropEvent(r,n,\"dropdeactivate\"),o.deactivate.target=null,o.deactivate.dropzone=null),r.rejected||(r.cur.element!==r.prev.element&&(r.prev.dropzone&&(o.leave=new tt.DropEvent(r,n,\"dragleave\"),n.dragLeave=o.leave.target=r.prev.element,n.prevDropzone=o.leave.dropzone=r.prev.dropzone),r.cur.dropzone&&(o.enter=new tt.DropEvent(r,n,\"dragenter\"),n.dragEnter=r.cur.element,n.dropzone=r.cur.dropzone)),\"dragend\"===n.type&&r.cur.dropzone&&(o.drop=new tt.DropEvent(r,n,\"drop\"),n.dropzone=r.cur.dropzone,n.relatedTarget=r.cur.element),\"dragmove\"===n.type&&r.cur.dropzone&&(o.move=new tt.DropEvent(r,n,\"dropmove\"),o.move.dragmove=n,n.dropzone=r.cur.dropzone)),o}function vt(t,e){var n=t.dropState,r=n.activeDrops,o=n.cur,i=n.prev;e.leave&&i.dropzone.fire(e.leave),e.enter&&o.dropzone.fire(e.enter),e.move&&o.dropzone.fire(e.move),e.drop&&o.dropzone.fire(e.drop),e.deactivate&&ct(r,e.deactivate),n.prev.dropzone=o.dropzone,n.prev.element=o.element}function ht(t,e){var n=t.interaction,r=t.iEvent,o=t.event;if(\"dragmove\"===r.type||\"dragend\"===r.type){var i=n.dropState;e.dynamicDrop&&(i.activeDrops=ft(e,n.element));var a=r,s=dt(n,a,o);i.rejected=i.rejected&&!!s&&s.dropzone===i.cur.dropzone&&s.element===i.cur.element,i.cur.dropzone=s&&s.dropzone,i.cur.element=s&&s.element,i.events=pt(n,0,a)}}Object.defineProperty(ut,\"__esModule\",{value:!0}),ut.default=void 0;var gt={id:\"actions/drop\",install:function(t){var e=t.actions,n=t.interactStatic,r=t.Interactable,o=t.defaults;t.usePlugin(c.default),r.prototype.dropzone=function(t){return function(t,e){if(i.default.object(e)){if(t.options.drop.enabled=!1!==e.enabled,e.listeners){var n=(0,R.default)(e.listeners),r=Object.keys(n).reduce((function(t,e){return t[/^(enter|leave)/.test(e)?\"drag\".concat(e):/^(activate|deactivate|move)/.test(e)?\"drop\".concat(e):e]=n[e],t}),{});t.off(t.options.drop.listeners),t.on(r),t.options.drop.listeners=r}return i.default.func(e.ondrop)&&t.on(\"drop\",e.ondrop),i.default.func(e.ondropactivate)&&t.on(\"dropactivate\",e.ondropactivate),i.default.func(e.ondropdeactivate)&&t.on(\"dropdeactivate\",e.ondropdeactivate),i.default.func(e.ondragenter)&&t.on(\"dragenter\",e.ondragenter),i.default.func(e.ondragleave)&&t.on(\"dragleave\",e.ondragleave),i.default.func(e.ondropmove)&&t.on(\"dropmove\",e.ondropmove),/^(pointer|center)$/.test(e.overlap)?t.options.drop.overlap=e.overlap:i.default.number(e.overlap)&&(t.options.drop.overlap=Math.max(Math.min(1,e.overlap),0)),\"accept\"in e&&(t.options.drop.accept=e.accept),\"checker\"in e&&(t.options.drop.checker=e.checker),t}return i.default.bool(e)?(t.options.drop.enabled=e,t):t.options.drop}(this,t)},r.prototype.dropCheck=function(t,e,n,r,o,a){return function(t,e,n,r,o,a,s){var l=!1;if(!(s=s||t.getRect(a)))return!!t.options.drop.checker&&t.options.drop.checker(e,n,l,t,a,r,o);var u=t.options.drop.overlap;if(\"pointer\"===u){var c=(0,A.default)(r,o,\"drag\"),f=Y.getPageXY(e);f.x+=c.x,f.y+=c.y;var d=f.x>s.left&&f.x<s.right,p=f.y>s.top&&f.y<s.bottom;l=d&&p}var v=r.getRect(o);if(v&&\"center\"===u){var h=v.left+v.width/2,g=v.top+v.height/2;l=h>=s.left&&h<=s.right&&g>=s.top&&g<=s.bottom}return v&&i.default.number(u)&&(l=Math.max(0,Math.min(s.right,v.right)-Math.max(s.left,v.left))*Math.max(0,Math.min(s.bottom,v.bottom)-Math.max(s.top,v.top))/(v.width*v.height)>=u),t.options.drop.checker&&(l=t.options.drop.checker(e,n,l,t,a,r,o)),l}(this,t,e,n,r,o,a)},n.dynamicDrop=function(e){return i.default.bool(e)?(t.dynamicDrop=e,n):t.dynamicDrop},(0,j.default)(e.phaselessTypes,{dragenter:!0,dragleave:!0,dropactivate:!0,dropdeactivate:!0,dropmove:!0,drop:!0}),e.methodDict.drop=\"dropzone\",t.dynamicDrop=!1,o.actions.drop=gt.defaults},listeners:{\"interactions:before-action-start\":function(t){var e=t.interaction;\"drag\"===e.prepared.name&&(e.dropState={cur:{dropzone:null,element:null},prev:{dropzone:null,element:null},rejected:null,events:null,activeDrops:[]})},\"interactions:after-action-start\":function(t,e){var n=t.interaction,r=(t.event,t.iEvent);if(\"drag\"===n.prepared.name){var o=n.dropState;o.activeDrops=null,o.events=null,o.activeDrops=ft(e,n.element),o.events=pt(n,0,r),o.events.activate&&(ct(o.activeDrops,o.events.activate),e.fire(\"actions/drop:start\",{interaction:n,dragEvent:r}))}},\"interactions:action-move\":ht,\"interactions:after-action-move\":function(t,e){var n=t.interaction,r=t.iEvent;\"drag\"===n.prepared.name&&(vt(n,n.dropState.events),e.fire(\"actions/drop:move\",{interaction:n,dragEvent:r}),n.dropState.events={})},\"interactions:action-end\":function(t,e){if(\"drag\"===t.interaction.prepared.name){var n=t.interaction,r=t.iEvent;ht(t,e),vt(n,n.dropState.events),e.fire(\"actions/drop:end\",{interaction:n,dragEvent:r})}},\"interactions:stop\":function(t){var e=t.interaction;if(\"drag\"===e.prepared.name){var n=e.dropState;n&&(n.activeDrops=null,n.events=null,n.cur.dropzone=null,n.cur.element=null,n.prev.dropzone=null,n.prev.element=null,n.rejected=!1)}}},getActiveDrops:ft,getDrop:dt,getDropEvents:pt,fireDropEvents:vt,defaults:{enabled:!1,accept:null,overlap:\"pointer\"}},yt=gt;ut.default=yt;var mt={};function bt(t){var e=t.interaction,n=t.iEvent,r=t.phase;if(\"gesture\"===e.prepared.name){var o=e.pointers.map((function(t){return t.pointer})),a=\"start\"===r,s=\"end\"===r,l=e.interactable.options.deltaSource;if(n.touches=[o[0],o[1]],a)n.distance=Y.touchDistance(o,l),n.box=Y.touchBBox(o),n.scale=1,n.ds=0,n.angle=Y.touchAngle(o,l),n.da=0,e.gesture.startDistance=n.distance,e.gesture.startAngle=n.angle;else if(s){var u=e.prevEvent;n.distance=u.distance,n.box=u.box,n.scale=u.scale,n.ds=0,n.angle=u.angle,n.da=0}else n.distance=Y.touchDistance(o,l),n.box=Y.touchBBox(o),n.scale=n.distance/e.gesture.startDistance,n.angle=Y.touchAngle(o,l),n.ds=n.scale-e.gesture.scale,n.da=n.angle-e.gesture.angle;e.gesture.distance=n.distance,e.gesture.angle=n.angle,i.default.number(n.scale)&&n.scale!==1/0&&!isNaN(n.scale)&&(e.gesture.scale=n.scale)}}Object.defineProperty(mt,\"__esModule\",{value:!0}),mt.default=void 0;var xt={id:\"actions/gesture\",before:[\"actions/drag\",\"actions/resize\"],install:function(t){var e=t.actions,n=t.Interactable,r=t.defaults;n.prototype.gesturable=function(t){return i.default.object(t)?(this.options.gesture.enabled=!1!==t.enabled,this.setPerAction(\"gesture\",t),this.setOnEvents(\"gesture\",t),this):i.default.bool(t)?(this.options.gesture.enabled=t,this):this.options.gesture},e.map.gesture=xt,e.methodDict.gesture=\"gesturable\",r.actions.gesture=xt.defaults},listeners:{\"interactions:action-start\":bt,\"interactions:action-move\":bt,\"interactions:action-end\":bt,\"interactions:new\":function(t){t.interaction.gesture={angle:0,distance:0,scale:1,startAngle:0,startDistance:0}},\"auto-start:check\":function(t){if(!(t.interaction.pointers.length<2)){var e=t.interactable.options.gesture;if(e&&e.enabled)return t.action={name:\"gesture\"},!1}}},defaults:{},getCursor:function(){return\"\"}},wt=xt;mt.default=wt;var _t={};function Pt(t,e,n,r,o,a,s){if(!e)return!1;if(!0===e){var l=i.default.number(a.width)?a.width:a.right-a.left,u=i.default.number(a.height)?a.height:a.bottom-a.top;if(s=Math.min(s,Math.abs((\"left\"===t||\"right\"===t?l:u)/2)),l<0&&(\"left\"===t?t=\"right\":\"right\"===t&&(t=\"left\")),u<0&&(\"top\"===t?t=\"bottom\":\"bottom\"===t&&(t=\"top\")),\"left\"===t)return n.x<(l>=0?a.left:a.right)+s;if(\"top\"===t)return n.y<(u>=0?a.top:a.bottom)+s;if(\"right\"===t)return n.x>(l>=0?a.right:a.left)-s;if(\"bottom\"===t)return n.y>(u>=0?a.bottom:a.top)-s}return!!i.default.element(r)&&(i.default.element(e)?e===r:_.matchesUpTo(r,e,o))}function Ot(t){var e=t.iEvent,n=t.interaction;if(\"resize\"===n.prepared.name&&n.resizeAxes){var r=e;n.interactable.options.resize.square?(\"y\"===n.resizeAxes?r.delta.x=r.delta.y:r.delta.y=r.delta.x,r.axes=\"xy\"):(r.axes=n.resizeAxes,\"x\"===n.resizeAxes?r.delta.y=0:\"y\"===n.resizeAxes&&(r.delta.x=0))}}Object.defineProperty(_t,\"__esModule\",{value:!0}),_t.default=void 0;var Et={id:\"actions/resize\",before:[\"actions/drag\"],install:function(t){var e=t.actions,n=t.browser,r=t.Interactable,o=t.defaults;Et.cursors=function(t){return t.isIe9?{x:\"e-resize\",y:\"s-resize\",xy:\"se-resize\",top:\"n-resize\",left:\"w-resize\",bottom:\"s-resize\",right:\"e-resize\",topleft:\"se-resize\",bottomright:\"se-resize\",topright:\"ne-resize\",bottomleft:\"ne-resize\"}:{x:\"ew-resize\",y:\"ns-resize\",xy:\"nwse-resize\",top:\"ns-resize\",left:\"ew-resize\",bottom:\"ns-resize\",right:\"ew-resize\",topleft:\"nwse-resize\",bottomright:\"nwse-resize\",topright:\"nesw-resize\",bottomleft:\"nesw-resize\"}}(n),Et.defaultMargin=n.supportsTouch||n.supportsPointerEvent?20:10,r.prototype.resizable=function(e){return function(t,e,n){return i.default.object(e)?(t.options.resize.enabled=!1!==e.enabled,t.setPerAction(\"resize\",e),t.setOnEvents(\"resize\",e),i.default.string(e.axis)&&/^x$|^y$|^xy$/.test(e.axis)?t.options.resize.axis=e.axis:null===e.axis&&(t.options.resize.axis=n.defaults.actions.resize.axis),i.default.bool(e.preserveAspectRatio)?t.options.resize.preserveAspectRatio=e.preserveAspectRatio:i.default.bool(e.square)&&(t.options.resize.square=e.square),t):i.default.bool(e)?(t.options.resize.enabled=e,t):t.options.resize}(this,e,t)},e.map.resize=Et,e.methodDict.resize=\"resizable\",o.actions.resize=Et.defaults},listeners:{\"interactions:new\":function(t){t.interaction.resizeAxes=\"xy\"},\"interactions:action-start\":function(t){!function(t){var e=t.iEvent,n=t.interaction;if(\"resize\"===n.prepared.name&&n.prepared.edges){var r=e,o=n.rect;n._rects={start:(0,j.default)({},o),corrected:(0,j.default)({},o),previous:(0,j.default)({},o),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},r.edges=n.prepared.edges,r.rect=n._rects.corrected,r.deltaRect=n._rects.delta}}(t),Ot(t)},\"interactions:action-move\":function(t){!function(t){var e=t.iEvent,n=t.interaction;if(\"resize\"===n.prepared.name&&n.prepared.edges){var r=e,o=n.interactable.options.resize.invert,i=\"reposition\"===o||\"negate\"===o,a=n.rect,s=n._rects,l=s.start,u=s.corrected,c=s.delta,f=s.previous;if((0,j.default)(f,u),i){if((0,j.default)(u,a),\"reposition\"===o){if(u.top>u.bottom){var d=u.top;u.top=u.bottom,u.bottom=d}if(u.left>u.right){var p=u.left;u.left=u.right,u.right=p}}}else u.top=Math.min(a.top,l.bottom),u.bottom=Math.max(a.bottom,l.top),u.left=Math.min(a.left,l.right),u.right=Math.max(a.right,l.left);for(var v in u.width=u.right-u.left,u.height=u.bottom-u.top,u)c[v]=u[v]-f[v];r.edges=n.prepared.edges,r.rect=u,r.deltaRect=c}}(t),Ot(t)},\"interactions:action-end\":function(t){var e=t.iEvent,n=t.interaction;if(\"resize\"===n.prepared.name&&n.prepared.edges){var r=e;r.edges=n.prepared.edges,r.rect=n._rects.corrected,r.deltaRect=n._rects.delta}},\"auto-start:check\":function(t){var e=t.interaction,n=t.interactable,r=t.element,o=t.rect,a=t.buttons;if(o){var s=(0,j.default)({},e.coords.cur.page),l=n.options.resize;if(l&&l.enabled&&(!e.pointerIsDown||!/mouse|pointer/.test(e.pointerType)||0!=(a&l.mouseButtons))){if(i.default.object(l.edges)){var u={left:!1,right:!1,top:!1,bottom:!1};for(var c in u)u[c]=Pt(c,l.edges[c],s,e._latestPointer.eventTarget,r,o,l.margin||Et.defaultMargin);u.left=u.left&&!u.right,u.top=u.top&&!u.bottom,(u.left||u.right||u.top||u.bottom)&&(t.action={name:\"resize\",edges:u})}else{var f=\"y\"!==l.axis&&s.x>o.right-Et.defaultMargin,d=\"x\"!==l.axis&&s.y>o.bottom-Et.defaultMargin;(f||d)&&(t.action={name:\"resize\",axes:(f?\"x\":\"\")+(d?\"y\":\"\")})}return!t.action&&void 0}}}},defaults:{square:!1,preserveAspectRatio:!1,axis:\"xy\",margin:NaN,edges:null,invert:\"none\"},cursors:null,getCursor:function(t){var e=t.edges,n=t.axis,r=t.name,o=Et.cursors,i=null;if(n)i=o[r+n];else if(e){for(var a=\"\",s=[\"top\",\"bottom\",\"left\",\"right\"],l=0;l<s.length;l++){var u=s[l];e[u]&&(a+=u)}i=o[a]}return i},defaultMargin:null},St=Et;_t.default=St;var Tt={};Object.defineProperty(Tt,\"__esModule\",{value:!0}),Tt.default=void 0;var Mt={id:\"actions\",install:function(t){t.usePlugin(mt.default),t.usePlugin(_t.default),t.usePlugin(c.default),t.usePlugin(ut.default)}};Tt.default=Mt;var jt={};Object.defineProperty(jt,\"__esModule\",{value:!0}),jt.default=void 0;var kt,It,Dt=0,At={request:function(t){return kt(t)},cancel:function(t){return It(t)},init:function(t){if(kt=t.requestAnimationFrame,It=t.cancelAnimationFrame,!kt)for(var e=[\"ms\",\"moz\",\"webkit\",\"o\"],n=0;n<e.length;n++){var r=e[n];kt=t[\"\".concat(r,\"RequestAnimationFrame\")],It=t[\"\".concat(r,\"CancelAnimationFrame\")]||t[\"\".concat(r,\"CancelRequestAnimationFrame\")]}kt=kt&&kt.bind(t),It=It&&It.bind(t),kt||(kt=function(e){var n=Date.now(),r=Math.max(0,16-(n-Dt)),o=t.setTimeout((function(){e(n+r)}),r);return Dt=n+r,o},It=function(t){return clearTimeout(t)})}};jt.default=At;var Rt={};Object.defineProperty(Rt,\"__esModule\",{value:!0}),Rt.default=void 0,Rt.getContainer=Ct,Rt.getScroll=Ft,Rt.getScrollSize=function(t){return i.default.window(t)&&(t=window.document.body),{x:t.scrollWidth,y:t.scrollHeight}},Rt.getScrollSizeDelta=function(t,e){var n=t.interaction,r=t.element,o=n&&n.interactable.options[n.prepared.name].autoScroll;if(!o||!o.enabled)return e(),{x:0,y:0};var i=Ct(o.container,n.interactable,r),a=Ft(i);e();var s=Ft(i);return{x:s.x-a.x,y:s.y-a.y}};var zt={defaults:{enabled:!1,margin:60,container:null,speed:300},now:Date.now,interaction:null,i:0,x:0,y:0,isScrolling:!1,prevTime:0,margin:0,speed:0,start:function(t){zt.isScrolling=!0,jt.default.cancel(zt.i),t.autoScroll=zt,zt.interaction=t,zt.prevTime=zt.now(),zt.i=jt.default.request(zt.scroll)},stop:function(){zt.isScrolling=!1,zt.interaction&&(zt.interaction.autoScroll=null),jt.default.cancel(zt.i)},scroll:function(){var t=zt.interaction,e=t.interactable,n=t.element,r=t.prepared.name,o=e.options[r].autoScroll,a=Ct(o.container,e,n),s=zt.now(),l=(s-zt.prevTime)/1e3,u=o.speed*l;if(u>=1){var c={x:zt.x*u,y:zt.y*u};if(c.x||c.y){var f=Ft(a);i.default.window(a)?a.scrollBy(c.x,c.y):a&&(a.scrollLeft+=c.x,a.scrollTop+=c.y);var d=Ft(a),p={x:d.x-f.x,y:d.y-f.y};(p.x||p.y)&&e.fire({type:\"autoscroll\",target:n,interactable:e,delta:p,interaction:t,container:a})}zt.prevTime=s}zt.isScrolling&&(jt.default.cancel(zt.i),zt.i=jt.default.request(zt.scroll))},check:function(t,e){var n;return null==(n=t.options[e].autoScroll)?void 0:n.enabled},onInteractionMove:function(t){var e=t.interaction,n=t.pointer;if(e.interacting()&&zt.check(e.interactable,e.prepared.name))if(e.simulation)zt.x=zt.y=0;else{var r,o,a,s,l=e.interactable,u=e.element,c=e.prepared.name,f=l.options[c].autoScroll,d=Ct(f.container,l,u);if(i.default.window(d))s=n.clientX<zt.margin,r=n.clientY<zt.margin,o=n.clientX>d.innerWidth-zt.margin,a=n.clientY>d.innerHeight-zt.margin;else{var p=_.getElementClientRect(d);s=n.clientX<p.left+zt.margin,r=n.clientY<p.top+zt.margin,o=n.clientX>p.right-zt.margin,a=n.clientY>p.bottom-zt.margin}zt.x=o?1:s?-1:0,zt.y=a?1:r?-1:0,zt.isScrolling||(zt.margin=f.margin,zt.speed=f.speed,zt.start(e))}}};function Ct(t,n,r){return(i.default.string(t)?(0,k.getStringOptionResult)(t,n,r):t)||(0,e.getWindow)(r)}function Ft(t){return i.default.window(t)&&(t=window.document.body),{x:t.scrollLeft,y:t.scrollTop}}var Xt={id:\"auto-scroll\",install:function(t){var e=t.defaults,n=t.actions;t.autoScroll=zt,zt.now=function(){return t.now()},n.phaselessTypes.autoscroll=!0,e.perAction.autoScroll=zt.defaults},listeners:{\"interactions:new\":function(t){t.interaction.autoScroll=null},\"interactions:destroy\":function(t){t.interaction.autoScroll=null,zt.stop(),zt.interaction&&(zt.interaction=null)},\"interactions:stop\":zt.stop,\"interactions:action-move\":function(t){return zt.onInteractionMove(t)}}};Rt.default=Xt;var Bt={};Object.defineProperty(Bt,\"__esModule\",{value:!0}),Bt.copyAction=function(t,e){return t.name=e.name,t.axis=e.axis,t.edges=e.edges,t},Bt.sign=void 0,Bt.warnOnce=function(t,n){var r=!1;return function(){return r||(e.window.console.warn(n),r=!0),t.apply(this,arguments)}},Bt.sign=function(t){return t>=0?1:-1};var Yt={};function Wt(t){return i.default.bool(t)?(this.options.styleCursor=t,this):null===t?(delete this.options.styleCursor,this):this.options.styleCursor}function Lt(t){return i.default.func(t)?(this.options.actionChecker=t,this):null===t?(delete this.options.actionChecker,this):this.options.actionChecker}Object.defineProperty(Yt,\"__esModule\",{value:!0}),Yt.default=void 0;var Ut={id:\"auto-start/interactableMethods\",install:function(t){var e=t.Interactable;e.prototype.getAction=function(e,n,r,o){var i=function(t,e,n,r,o){var i=t.getRect(r),a={action:null,interactable:t,interaction:n,element:r,rect:i,buttons:e.buttons||{0:1,1:4,3:8,4:16}[e.button]};return o.fire(\"auto-start:check\",a),a.action}(this,n,r,o,t);return this.options.actionChecker?this.options.actionChecker(e,n,i,this,o,r):i},e.prototype.ignoreFrom=(0,Bt.warnOnce)((function(t){return this._backCompatOption(\"ignoreFrom\",t)}),\"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).\"),e.prototype.allowFrom=(0,Bt.warnOnce)((function(t){return this._backCompatOption(\"allowFrom\",t)}),\"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).\"),e.prototype.actionChecker=Lt,e.prototype.styleCursor=Wt}};Yt.default=Ut;var Vt={};function Nt(t,e,n,r,o){return e.testIgnoreAllow(e.options[t.name],n,r)&&e.options[t.name].enabled&&Ht(e,n,t,o)?t:null}function qt(t,e,n,r,o,i,a){for(var s=0,l=r.length;s<l;s++){var u=r[s],c=o[s],f=u.getAction(e,n,t,c);if(f){var d=Nt(f,u,c,i,a);if(d)return{action:d,interactable:u,element:c}}}return{action:null,interactable:null,element:null}}function $t(t,e,n,r,o){var a=[],s=[],l=r;function u(t){a.push(t),s.push(l)}for(;i.default.element(l);){a=[],s=[],o.interactables.forEachMatch(l,u);var c=qt(t,e,n,a,s,r,o);if(c.action&&!c.interactable.options[c.action.name].manualStart)return c;l=_.parentNode(l)}return{action:null,interactable:null,element:null}}function Gt(t,e,n){var r=e.action,o=e.interactable,i=e.element;r=r||{name:null},t.interactable=o,t.element=i,(0,Bt.copyAction)(t.prepared,r),t.rect=o&&r.name?o.getRect(i):null,Jt(t,n),n.fire(\"autoStart:prepared\",{interaction:t})}function Ht(t,e,n,r){var o=t.options,i=o[n.name].max,a=o[n.name].maxPerElement,s=r.autoStart.maxInteractions,l=0,u=0,c=0;if(!(i&&a&&s))return!1;for(var f=0;f<r.interactions.list.length;f++){var d=r.interactions.list[f],p=d.prepared.name;if(d.interacting()){if(++l>=s)return!1;if(d.interactable===t){if((u+=p===n.name?1:0)>=i)return!1;if(d.element===e&&(c++,p===n.name&&c>=a))return!1}}}return s>0}function Kt(t,e){return i.default.number(t)?(e.autoStart.maxInteractions=t,this):e.autoStart.maxInteractions}function Zt(t,e,n){var r=n.autoStart.cursorElement;r&&r!==t&&(r.style.cursor=\"\"),t.ownerDocument.documentElement.style.cursor=e,t.style.cursor=e,n.autoStart.cursorElement=e?t:null}function Jt(t,e){var n=t.interactable,r=t.element,o=t.prepared;if(\"mouse\"===t.pointerType&&n&&n.options.styleCursor){var a=\"\";if(o.name){var s=n.options[o.name].cursorChecker;a=i.default.func(s)?s(o,n,r,t._interacting):e.actions.map[o.name].getCursor(o)}Zt(t.element,a||\"\",e)}else e.autoStart.cursorElement&&Zt(e.autoStart.cursorElement,\"\",e)}Object.defineProperty(Vt,\"__esModule\",{value:!0}),Vt.default=void 0;var Qt={id:\"auto-start/base\",before:[\"actions\"],install:function(t){var e=t.interactStatic,n=t.defaults;t.usePlugin(Yt.default),n.base.actionChecker=null,n.base.styleCursor=!0,(0,j.default)(n.perAction,{manualStart:!1,max:1/0,maxPerElement:1,allowFrom:null,ignoreFrom:null,mouseButtons:1}),e.maxInteractions=function(e){return Kt(e,t)},t.autoStart={maxInteractions:1/0,withinInteractionLimit:Ht,cursorElement:null}},listeners:{\"interactions:down\":function(t,e){var n=t.interaction,r=t.pointer,o=t.event,i=t.eventTarget;n.interacting()||Gt(n,$t(n,r,o,i,e),e)},\"interactions:move\":function(t,e){!function(t,e){var n=t.interaction,r=t.pointer,o=t.event,i=t.eventTarget;\"mouse\"!==n.pointerType||n.pointerIsDown||n.interacting()||Gt(n,$t(n,r,o,i,e),e)}(t,e),function(t,e){var n=t.interaction;if(n.pointerIsDown&&!n.interacting()&&n.pointerWasMoved&&n.prepared.name){e.fire(\"autoStart:before-start\",t);var r=n.interactable,o=n.prepared.name;o&&r&&(r.options[o].manualStart||!Ht(r,n.element,n.prepared,e)?n.stop():(n.start(n.prepared,r,n.element),Jt(n,e)))}}(t,e)},\"interactions:stop\":function(t,e){var n=t.interaction,r=n.interactable;r&&r.options.styleCursor&&Zt(n.element,\"\",e)}},maxInteractions:Kt,withinInteractionLimit:Ht,validateAction:Nt};Vt.default=Qt;var te={};Object.defineProperty(te,\"__esModule\",{value:!0}),te.default=void 0;var ee={id:\"auto-start/dragAxis\",listeners:{\"autoStart:before-start\":function(t,e){var n=t.interaction,r=t.eventTarget,o=t.dx,a=t.dy;if(\"drag\"===n.prepared.name){var s=Math.abs(o),l=Math.abs(a),u=n.interactable.options.drag,c=u.startAxis,f=s>l?\"x\":s<l?\"y\":\"xy\";if(n.prepared.axis=\"start\"===u.lockAxis?f[0]:u.lockAxis,\"xy\"!==f&&\"xy\"!==c&&c!==f){n.prepared.name=null;for(var d=r,p=function(t){if(t!==n.interactable){var o=n.interactable.options.drag;if(!o.manualStart&&t.testIgnoreAllow(o,d,r)){var i=t.getAction(n.downPointer,n.downEvent,n,d);if(i&&\"drag\"===i.name&&function(t,e){if(!e)return!1;var n=e.options.drag.startAxis;return\"xy\"===t||\"xy\"===n||n===t}(f,t)&&Vt.default.validateAction(i,t,d,r,e))return t}}};i.default.element(d);){var v=e.interactables.forEachMatch(d,p);if(v){n.prepared.name=\"drag\",n.interactable=v,n.element=d;break}d=(0,_.parentNode)(d)}}}}}};te.default=ee;var ne={};function re(t){var e=t.prepared&&t.prepared.name;if(!e)return null;var n=t.interactable.options;return n[e].hold||n[e].delay}Object.defineProperty(ne,\"__esModule\",{value:!0}),ne.default=void 0;var oe={id:\"auto-start/hold\",install:function(t){var e=t.defaults;t.usePlugin(Vt.default),e.perAction.hold=0,e.perAction.delay=0},listeners:{\"interactions:new\":function(t){t.interaction.autoStartHoldTimer=null},\"autoStart:prepared\":function(t){var e=t.interaction,n=re(e);n>0&&(e.autoStartHoldTimer=setTimeout((function(){e.start(e.prepared,e.interactable,e.element)}),n))},\"interactions:move\":function(t){var e=t.interaction,n=t.duplicate;e.autoStartHoldTimer&&e.pointerWasMoved&&!n&&(clearTimeout(e.autoStartHoldTimer),e.autoStartHoldTimer=null)},\"autoStart:before-start\":function(t){var e=t.interaction;re(e)>0&&(e.prepared.name=null)}},getHoldDuration:re};ne.default=oe;var ie={};Object.defineProperty(ie,\"__esModule\",{value:!0}),ie.default=void 0;var ae={id:\"auto-start\",install:function(t){t.usePlugin(Vt.default),t.usePlugin(ne.default),t.usePlugin(te.default)}};ie.default=ae;var se={};function le(t){return/^(always|never|auto)$/.test(t)?(this.options.preventDefault=t,this):i.default.bool(t)?(this.options.preventDefault=t?\"always\":\"never\",this):this.options.preventDefault}function ue(t){var e=t.interaction,n=t.event;e.interactable&&e.interactable.checkAndPreventDefault(n)}function ce(t){var n=t.Interactable;n.prototype.preventDefault=le,n.prototype.checkAndPreventDefault=function(n){return function(t,n,r){var o=t.options.preventDefault;if(\"never\"!==o)if(\"always\"!==o){if(n.events.supportsPassive&&/^touch(start|move)$/.test(r.type)){var a=(0,e.getWindow)(r.target).document,s=n.getDocOptions(a);if(!s||!s.events||!1!==s.events.passive)return}/^(mouse|pointer|touch)*(down|start)/i.test(r.type)||i.default.element(r.target)&&(0,_.matchesSelector)(r.target,\"input,select,textarea,[contenteditable=true],[contenteditable=true] *\")||r.preventDefault()}else r.preventDefault()}(this,t,n)},t.interactions.docEvents.push({type:\"dragstart\",listener:function(e){for(var n=0;n<t.interactions.list.length;n++){var r=t.interactions.list[n];if(r.element&&(r.element===e.target||(0,_.nodeContains)(r.element,e.target)))return void r.interactable.checkAndPreventDefault(e)}}})}Object.defineProperty(se,\"__esModule\",{value:!0}),se.default=void 0,se.install=ce;var fe={id:\"core/interactablePreventDefault\",install:ce,listeners:[\"down\",\"move\",\"up\",\"cancel\"].reduce((function(t,e){return t[\"interactions:\".concat(e)]=ue,t}),{})};se.default=fe;var de={};Object.defineProperty(de,\"__esModule\",{value:!0}),de.default=void 0,de.default={};var pe,ve={};Object.defineProperty(ve,\"__esModule\",{value:!0}),ve.default=void 0,function(t){t.touchAction=\"touchAction\",t.boxSizing=\"boxSizing\",t.noListeners=\"noListeners\"}(pe||(pe={}));pe.touchAction,pe.boxSizing,pe.noListeners;var he={id:\"dev-tools\",install:function(){}};ve.default=he;var ge={};Object.defineProperty(ge,\"__esModule\",{value:!0}),ge.default=function t(e){var n={};for(var r in e){var o=e[r];i.default.plainObject(o)?n[r]=t(o):i.default.array(o)?n[r]=Z.from(o):n[r]=o}return n};var ye={};function me(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=n){var r,o,i=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{a||null==n.return||n.return()}finally{if(s)throw o}}return i}}(t,e)||function(t,e){if(t){if(\"string\"==typeof t)return be(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?be(t,e):void 0}}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function be(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function xe(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function we(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(ye,\"__esModule\",{value:!0}),ye.default=void 0,ye.getRectOffset=Oe;var _e=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),we(this,\"states\",[]),we(this,\"startOffset\",{left:0,right:0,top:0,bottom:0}),we(this,\"startDelta\",void 0),we(this,\"result\",void 0),we(this,\"endResult\",void 0),we(this,\"edges\",void 0),we(this,\"interaction\",void 0),this.interaction=e,this.result=Pe()}var e,n;return e=t,(n=[{key:\"start\",value:function(t,e){var n=t.phase,r=this.interaction,o=function(t){var e=t.interactable.options[t.prepared.name],n=e.modifiers;return n&&n.length?n:[\"snap\",\"snapSize\",\"snapEdges\",\"restrict\",\"restrictEdges\",\"restrictSize\"].map((function(t){var n=e[t];return n&&n.enabled&&{options:n,methods:n._methods}})).filter((function(t){return!!t}))}(r);this.prepareStates(o),this.edges=(0,j.default)({},r.edges),this.startOffset=Oe(r.rect,e),this.startDelta={x:0,y:0};var i=this.fillArg({phase:n,pageCoords:e,preEnd:!1});return this.result=Pe(),this.startAll(i),this.result=this.setAll(i)}},{key:\"fillArg\",value:function(t){var e=this.interaction;return t.interaction=e,t.interactable=e.interactable,t.element=e.element,t.rect=t.rect||e.rect,t.edges=this.edges,t.startOffset=this.startOffset,t}},{key:\"startAll\",value:function(t){for(var e=0;e<this.states.length;e++){var n=this.states[e];n.methods.start&&(t.state=n,n.methods.start(t))}}},{key:\"setAll\",value:function(t){var e=t.phase,n=t.preEnd,r=t.skipModifiers,o=t.rect;t.coords=(0,j.default)({},t.pageCoords),t.rect=(0,j.default)({},o);for(var i=r?this.states.slice(r):this.states,a=Pe(t.coords,t.rect),s=0;s<i.length;s++){var l,u=i[s],c=u.options,f=(0,j.default)({},t.coords),d=null;null!=(l=u.methods)&&l.set&&this.shouldDo(c,n,e)&&(t.state=u,d=u.methods.set(t),k.addEdges(this.interaction.edges,t.rect,{x:t.coords.x-f.x,y:t.coords.y-f.y})),a.eventProps.push(d)}a.delta.x=t.coords.x-t.pageCoords.x,a.delta.y=t.coords.y-t.pageCoords.y,a.rectDelta.left=t.rect.left-o.left,a.rectDelta.right=t.rect.right-o.right,a.rectDelta.top=t.rect.top-o.top,a.rectDelta.bottom=t.rect.bottom-o.bottom;var p=this.result.coords,v=this.result.rect;if(p&&v){var h=a.rect.left!==v.left||a.rect.right!==v.right||a.rect.top!==v.top||a.rect.bottom!==v.bottom;a.changed=h||p.x!==a.coords.x||p.y!==a.coords.y}return a}},{key:\"applyToInteraction\",value:function(t){var e=this.interaction,n=t.phase,r=e.coords.cur,o=e.coords.start,i=this.result,a=this.startDelta,s=i.delta;\"start\"===n&&(0,j.default)(this.startDelta,i.delta);for(var l=0;l<[[o,a],[r,s]].length;l++){var u=me([[o,a],[r,s]][l],2),c=u[0],f=u[1];c.page.x+=f.x,c.page.y+=f.y,c.client.x+=f.x,c.client.y+=f.y}var d=this.result.rectDelta,p=t.rect||e.rect;p.left+=d.left,p.right+=d.right,p.top+=d.top,p.bottom+=d.bottom,p.width=p.right-p.left,p.height=p.bottom-p.top}},{key:\"setAndApply\",value:function(t){var e=this.interaction,n=t.phase,r=t.preEnd,o=t.skipModifiers,i=this.setAll(this.fillArg({preEnd:r,phase:n,pageCoords:t.modifiedCoords||e.coords.cur.page}));if(this.result=i,!i.changed&&(!o||o<this.states.length)&&e.interacting())return!1;if(t.modifiedCoords){var a=e.coords.cur.page,s={x:t.modifiedCoords.x-a.x,y:t.modifiedCoords.y-a.y};i.coords.x+=s.x,i.coords.y+=s.y,i.delta.x+=s.x,i.delta.y+=s.y}this.applyToInteraction(t)}},{key:\"beforeEnd\",value:function(t){var e=t.interaction,n=t.event,r=this.states;if(r&&r.length){for(var o=!1,i=0;i<r.length;i++){var a=r[i];t.state=a;var s=a.options,l=a.methods,u=l.beforeEnd&&l.beforeEnd(t);if(u)return this.endResult=u,!1;o=o||!o&&this.shouldDo(s,!0,t.phase,!0)}o&&e.move({event:n,preEnd:!0})}}},{key:\"stop\",value:function(t){var e=t.interaction;if(this.states&&this.states.length){var n=(0,j.default)({states:this.states,interactable:e.interactable,element:e.element,rect:null},t);this.fillArg(n);for(var r=0;r<this.states.length;r++){var o=this.states[r];n.state=o,o.methods.stop&&o.methods.stop(n)}this.states=null,this.endResult=null}}},{key:\"prepareStates\",value:function(t){this.states=[];for(var e=0;e<t.length;e++){var n=t[e],r=n.options,o=n.methods,i=n.name;this.states.push({options:r,methods:o,index:e,name:i})}return this.states}},{key:\"restoreInteractionCoords\",value:function(t){var e=t.interaction,n=e.coords,r=e.rect,o=e.modification;if(o.result){for(var i=o.startDelta,a=o.result,s=a.delta,l=a.rectDelta,u=[[n.start,i],[n.cur,s]],c=0;c<u.length;c++){var f=me(u[c],2),d=f[0],p=f[1];d.page.x-=p.x,d.page.y-=p.y,d.client.x-=p.x,d.client.y-=p.y}r.left-=l.left,r.right-=l.right,r.top-=l.top,r.bottom-=l.bottom}}},{key:\"shouldDo\",value:function(t,e,n,r){return!(!t||!1===t.enabled||r&&!t.endOnly||t.endOnly&&!e||\"start\"===n&&!t.setStart)}},{key:\"copyFrom\",value:function(t){this.startOffset=t.startOffset,this.startDelta=t.startDelta,this.edges=t.edges,this.states=t.states.map((function(t){return(0,ge.default)(t)})),this.result=Pe((0,j.default)({},t.result.coords),(0,j.default)({},t.result.rect))}},{key:\"destroy\",value:function(){for(var t in this)this[t]=null}}])&&xe(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();function Pe(t,e){return{rect:e,coords:t,delta:{x:0,y:0},rectDelta:{left:0,right:0,top:0,bottom:0},eventProps:[],changed:!0}}function Oe(t,e){return t?{left:e.x-t.left,top:e.y-t.top,right:t.right-e.x,bottom:t.bottom-e.y}:{left:0,top:0,right:0,bottom:0}}ye.default=_e;var Ee={};function Se(t){var e=t.iEvent,n=t.interaction.modification.result;n&&(e.modifiers=n.eventProps)}Object.defineProperty(Ee,\"__esModule\",{value:!0}),Ee.addEventModifiers=Se,Ee.default=void 0,Ee.makeModifier=function(t,e){var n=t.defaults,r={start:t.start,set:t.set,beforeEnd:t.beforeEnd,stop:t.stop},o=function(t){var o=t||{};for(var i in o.enabled=!1!==o.enabled,n)i in o||(o[i]=n[i]);var a={options:o,methods:r,name:e,enable:function(){return o.enabled=!0,a},disable:function(){return o.enabled=!1,a}};return a};return e&&\"string\"==typeof e&&(o._defaults=n,o._methods=r),o};var Te={id:\"modifiers/base\",before:[\"actions\"],install:function(t){t.defaults.perAction.modifiers=[]},listeners:{\"interactions:new\":function(t){var e=t.interaction;e.modification=new ye.default(e)},\"interactions:before-action-start\":function(t){var e=t.interaction.modification;e.start(t,t.interaction.coords.start.page),t.interaction.edges=e.edges,e.applyToInteraction(t)},\"interactions:before-action-move\":function(t){return t.interaction.modification.setAndApply(t)},\"interactions:before-action-end\":function(t){return t.interaction.modification.beforeEnd(t)},\"interactions:action-start\":Se,\"interactions:action-move\":Se,\"interactions:action-end\":Se,\"interactions:after-action-start\":function(t){return t.interaction.modification.restoreInteractionCoords(t)},\"interactions:after-action-move\":function(t){return t.interaction.modification.restoreInteractionCoords(t)},\"interactions:stop\":function(t){return t.interaction.modification.stop(t)}}};Ee.default=Te;var Me={};Object.defineProperty(Me,\"__esModule\",{value:!0}),Me.defaults=void 0,Me.defaults={base:{preventDefault:\"auto\",deltaSource:\"page\"},perAction:{enabled:!1,origin:{x:0,y:0}},actions:{}};var je={};function ke(t){return(ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Ie(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function De(t,e){return(De=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function Ae(t,e){if(e&&(\"object\"===ke(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return Re(t)}function Re(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function ze(t){return(ze=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function Ce(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(je,\"__esModule\",{value:!0}),je.InteractEvent=void 0;var Fe=function(t){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&De(t,e)}(a,t);var e,n,r,o,i=(r=a,o=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,e=ze(r);if(o){var n=ze(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return Ae(this,t)});function a(t,e,n,r,o,s,l){var u;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,a),Ce(Re(u=i.call(this,t)),\"relatedTarget\",null),Ce(Re(u),\"screenX\",void 0),Ce(Re(u),\"screenY\",void 0),Ce(Re(u),\"button\",void 0),Ce(Re(u),\"buttons\",void 0),Ce(Re(u),\"ctrlKey\",void 0),Ce(Re(u),\"shiftKey\",void 0),Ce(Re(u),\"altKey\",void 0),Ce(Re(u),\"metaKey\",void 0),Ce(Re(u),\"page\",void 0),Ce(Re(u),\"client\",void 0),Ce(Re(u),\"delta\",void 0),Ce(Re(u),\"rect\",void 0),Ce(Re(u),\"x0\",void 0),Ce(Re(u),\"y0\",void 0),Ce(Re(u),\"t0\",void 0),Ce(Re(u),\"dt\",void 0),Ce(Re(u),\"duration\",void 0),Ce(Re(u),\"clientX0\",void 0),Ce(Re(u),\"clientY0\",void 0),Ce(Re(u),\"velocity\",void 0),Ce(Re(u),\"speed\",void 0),Ce(Re(u),\"swipe\",void 0),Ce(Re(u),\"axes\",void 0),Ce(Re(u),\"preEnd\",void 0),o=o||t.element;var c=t.interactable,f=(c&&c.options||Me.defaults).deltaSource,d=(0,A.default)(c,o,n),p=\"start\"===r,v=\"end\"===r,h=p?Re(u):t.prevEvent,g=p?t.coords.start:v?{page:h.page,client:h.client,timeStamp:t.coords.cur.timeStamp}:t.coords.cur;return u.page=(0,j.default)({},g.page),u.client=(0,j.default)({},g.client),u.rect=(0,j.default)({},t.rect),u.timeStamp=g.timeStamp,v||(u.page.x-=d.x,u.page.y-=d.y,u.client.x-=d.x,u.client.y-=d.y),u.ctrlKey=e.ctrlKey,u.altKey=e.altKey,u.shiftKey=e.shiftKey,u.metaKey=e.metaKey,u.button=e.button,u.buttons=e.buttons,u.target=o,u.currentTarget=o,u.preEnd=s,u.type=l||n+(r||\"\"),u.interactable=c,u.t0=p?t.pointers[t.pointers.length-1].downTime:h.t0,u.x0=t.coords.start.page.x-d.x,u.y0=t.coords.start.page.y-d.y,u.clientX0=t.coords.start.client.x-d.x,u.clientY0=t.coords.start.client.y-d.y,u.delta=p||v?{x:0,y:0}:{x:u[f].x-h[f].x,y:u[f].y-h[f].y},u.dt=t.coords.delta.timeStamp,u.duration=u.timeStamp-u.t0,u.velocity=(0,j.default)({},t.coords.velocity[f]),u.speed=(0,C.default)(u.velocity.x,u.velocity.y),u.swipe=v||\"inertiastart\"===r?u.getSwipe():null,u}return e=a,(n=[{key:\"getSwipe\",value:function(){var t=this._interaction;if(t.prevEvent.speed<600||this.timeStamp-t.prevEvent.timeStamp>150)return null;var e=180*Math.atan2(t.prevEvent.velocityY,t.prevEvent.velocityX)/Math.PI;e<0&&(e+=360);var n=112.5<=e&&e<247.5,r=202.5<=e&&e<337.5;return{up:r,down:!r&&22.5<=e&&e<157.5,left:n,right:!n&&(292.5<=e||e<67.5),angle:e,speed:t.prevEvent.speed,velocity:{x:t.prevEvent.velocityX,y:t.prevEvent.velocityY}}}},{key:\"preventDefault\",value:function(){}},{key:\"stopImmediatePropagation\",value:function(){this.immediatePropagationStopped=this.propagationStopped=!0}},{key:\"stopPropagation\",value:function(){this.propagationStopped=!0}}])&&Ie(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),a}($.BaseEvent);je.InteractEvent=Fe,Object.defineProperties(Fe.prototype,{pageX:{get:function(){return this.page.x},set:function(t){this.page.x=t}},pageY:{get:function(){return this.page.y},set:function(t){this.page.y=t}},clientX:{get:function(){return this.client.x},set:function(t){this.client.x=t}},clientY:{get:function(){return this.client.y},set:function(t){this.client.y=t}},dx:{get:function(){return this.delta.x},set:function(t){this.delta.x=t}},dy:{get:function(){return this.delta.y},set:function(t){this.delta.y=t}},velocityX:{get:function(){return this.velocity.x},set:function(t){this.velocity.x=t}},velocityY:{get:function(){return this.velocity.y},set:function(t){this.velocity.y=t}}});var Xe={};function Be(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Ye(t,e,n){return e&&Be(t.prototype,e),n&&Be(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function We(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(Xe,\"__esModule\",{value:!0}),Xe.PointerInfo=void 0;var Le=Ye((function t(e,n,r,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),We(this,\"id\",void 0),We(this,\"pointer\",void 0),We(this,\"event\",void 0),We(this,\"downTime\",void 0),We(this,\"downTarget\",void 0),this.id=e,this.pointer=n,this.event=r,this.downTime=o,this.downTarget=i}));Xe.PointerInfo=Le;var Ue,Ve,Ne={};function qe(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function $e(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(Ne,\"__esModule\",{value:!0}),Ne.Interaction=void 0,Object.defineProperty(Ne,\"PointerInfo\",{enumerable:!0,get:function(){return Xe.PointerInfo}}),Ne.default=Ne._ProxyValues=Ne._ProxyMethods=void 0,Ne._ProxyValues=Ue,function(t){t.interactable=\"\",t.element=\"\",t.prepared=\"\",t.pointerIsDown=\"\",t.pointerWasMoved=\"\",t._proxy=\"\"}(Ue||(Ne._ProxyValues=Ue={})),Ne._ProxyMethods=Ve,function(t){t.start=\"\",t.move=\"\",t.end=\"\",t.stop=\"\",t.interacting=\"\"}(Ve||(Ne._ProxyMethods=Ve={}));var Ge=0,He=function(){function t(e){var n=this,r=e.pointerType,o=e.scopeFire;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),$e(this,\"interactable\",null),$e(this,\"element\",null),$e(this,\"rect\",null),$e(this,\"_rects\",void 0),$e(this,\"edges\",null),$e(this,\"_scopeFire\",void 0),$e(this,\"prepared\",{name:null,axis:null,edges:null}),$e(this,\"pointerType\",void 0),$e(this,\"pointers\",[]),$e(this,\"downEvent\",null),$e(this,\"downPointer\",{}),$e(this,\"_latestPointer\",{pointer:null,event:null,eventTarget:null}),$e(this,\"prevEvent\",null),$e(this,\"pointerIsDown\",!1),$e(this,\"pointerWasMoved\",!1),$e(this,\"_interacting\",!1),$e(this,\"_ending\",!1),$e(this,\"_stopped\",!0),$e(this,\"_proxy\",null),$e(this,\"simulation\",null),$e(this,\"doMove\",(0,Bt.warnOnce)((function(t){this.move(t)}),\"The interaction.doMove() method has been renamed to interaction.move()\")),$e(this,\"coords\",{start:Y.newCoords(),prev:Y.newCoords(),cur:Y.newCoords(),delta:Y.newCoords(),velocity:Y.newCoords()}),$e(this,\"_id\",Ge++),this._scopeFire=o,this.pointerType=r;var i=this;this._proxy={};var a=function(t){Object.defineProperty(n._proxy,t,{get:function(){return i[t]}})};for(var s in Ue)a(s);var l=function(t){Object.defineProperty(n._proxy,t,{value:function(){return i[t].apply(i,arguments)}})};for(var u in Ve)l(u);this._scopeFire(\"interactions:new\",{interaction:this})}var e,n;return e=t,(n=[{key:\"pointerMoveTolerance\",get:function(){return 1}},{key:\"pointerDown\",value:function(t,e,n){var r=this.updatePointer(t,e,n,!0),o=this.pointers[r];this._scopeFire(\"interactions:down\",{pointer:t,event:e,eventTarget:n,pointerIndex:r,pointerInfo:o,type:\"down\",interaction:this})}},{key:\"start\",value:function(t,e,n){return!(this.interacting()||!this.pointerIsDown||this.pointers.length<(\"gesture\"===t.name?2:1)||!e.options[t.name].enabled)&&((0,Bt.copyAction)(this.prepared,t),this.interactable=e,this.element=n,this.rect=e.getRect(n),this.edges=this.prepared.edges?(0,j.default)({},this.prepared.edges):{left:!0,right:!0,top:!0,bottom:!0},this._stopped=!1,this._interacting=this._doPhase({interaction:this,event:this.downEvent,phase:\"start\"})&&!this._stopped,this._interacting)}},{key:\"pointerMove\",value:function(t,e,n){this.simulation||this.modification&&this.modification.endResult||this.updatePointer(t,e,n,!1);var r,o,i=this.coords.cur.page.x===this.coords.prev.page.x&&this.coords.cur.page.y===this.coords.prev.page.y&&this.coords.cur.client.x===this.coords.prev.client.x&&this.coords.cur.client.y===this.coords.prev.client.y;this.pointerIsDown&&!this.pointerWasMoved&&(r=this.coords.cur.client.x-this.coords.start.client.x,o=this.coords.cur.client.y-this.coords.start.client.y,this.pointerWasMoved=(0,C.default)(r,o)>this.pointerMoveTolerance);var a=this.getPointerIndex(t),s={pointer:t,pointerIndex:a,pointerInfo:this.pointers[a],event:e,type:\"move\",eventTarget:n,dx:r,dy:o,duplicate:i,interaction:this};i||Y.setCoordVelocity(this.coords.velocity,this.coords.delta),this._scopeFire(\"interactions:move\",s),i||this.simulation||(this.interacting()&&(s.type=null,this.move(s)),this.pointerWasMoved&&Y.copyCoords(this.coords.prev,this.coords.cur))}},{key:\"move\",value:function(t){t&&t.event||Y.setZeroCoords(this.coords.delta),(t=(0,j.default)({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},t||{})).phase=\"move\",this._doPhase(t)}},{key:\"pointerUp\",value:function(t,e,n,r){var o=this.getPointerIndex(t);-1===o&&(o=this.updatePointer(t,e,n,!1));var i=/cancel$/i.test(e.type)?\"cancel\":\"up\";this._scopeFire(\"interactions:\".concat(i),{pointer:t,pointerIndex:o,pointerInfo:this.pointers[o],event:e,eventTarget:n,type:i,curEventTarget:r,interaction:this}),this.simulation||this.end(e),this.removePointer(t,e)}},{key:\"documentBlur\",value:function(t){this.end(t),this._scopeFire(\"interactions:blur\",{event:t,type:\"blur\",interaction:this})}},{key:\"end\",value:function(t){var e;this._ending=!0,t=t||this._latestPointer.event,this.interacting()&&(e=this._doPhase({event:t,interaction:this,phase:\"end\"})),this._ending=!1,!0===e&&this.stop()}},{key:\"currentAction\",value:function(){return this._interacting?this.prepared.name:null}},{key:\"interacting\",value:function(){return this._interacting}},{key:\"stop\",value:function(){this._scopeFire(\"interactions:stop\",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}},{key:\"getPointerIndex\",value:function(t){var e=Y.getPointerId(t);return\"mouse\"===this.pointerType||\"pen\"===this.pointerType?this.pointers.length-1:Z.findIndex(this.pointers,(function(t){return t.id===e}))}},{key:\"getPointerInfo\",value:function(t){return this.pointers[this.getPointerIndex(t)]}},{key:\"updatePointer\",value:function(t,e,n,r){var o=Y.getPointerId(t),i=this.getPointerIndex(t),a=this.pointers[i];return r=!1!==r&&(r||/(down|start)$/i.test(e.type)),a?a.pointer=t:(a=new Xe.PointerInfo(o,t,e,null,null),i=this.pointers.length,this.pointers.push(a)),Y.setCoords(this.coords.cur,this.pointers.map((function(t){return t.pointer})),this._now()),Y.setCoordDeltas(this.coords.delta,this.coords.prev,this.coords.cur),r&&(this.pointerIsDown=!0,a.downTime=this.coords.cur.timeStamp,a.downTarget=n,Y.pointerExtend(this.downPointer,t),this.interacting()||(Y.copyCoords(this.coords.start,this.coords.cur),Y.copyCoords(this.coords.prev,this.coords.cur),this.downEvent=e,this.pointerWasMoved=!1)),this._updateLatestPointer(t,e,n),this._scopeFire(\"interactions:update-pointer\",{pointer:t,event:e,eventTarget:n,down:r,pointerInfo:a,pointerIndex:i,interaction:this}),i}},{key:\"removePointer\",value:function(t,e){var n=this.getPointerIndex(t);if(-1!==n){var r=this.pointers[n];this._scopeFire(\"interactions:remove-pointer\",{pointer:t,event:e,eventTarget:null,pointerIndex:n,pointerInfo:r,interaction:this}),this.pointers.splice(n,1),this.pointerIsDown=!1}}},{key:\"_updateLatestPointer\",value:function(t,e,n){this._latestPointer.pointer=t,this._latestPointer.event=e,this._latestPointer.eventTarget=n}},{key:\"destroy\",value:function(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}},{key:\"_createPreparedEvent\",value:function(t,e,n,r){return new je.InteractEvent(this,t,this.prepared.name,e,this.element,n,r)}},{key:\"_fireEvent\",value:function(t){this.interactable.fire(t),(!this.prevEvent||t.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=t)}},{key:\"_doPhase\",value:function(t){var e=t.event,n=t.phase,r=t.preEnd,o=t.type,i=this.rect;if(i&&\"move\"===n&&(k.addEdges(this.edges,i,this.coords.delta[this.interactable.options.deltaSource]),i.width=i.right-i.left,i.height=i.bottom-i.top),!1===this._scopeFire(\"interactions:before-action-\".concat(n),t))return!1;var a=t.iEvent=this._createPreparedEvent(e,n,r,o);return this._scopeFire(\"interactions:action-\".concat(n),t),\"start\"===n&&(this.prevEvent=a),this._fireEvent(a),this._scopeFire(\"interactions:after-action-\".concat(n),t),!0}},{key:\"_now\",value:function(){return Date.now()}}])&&qe(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();Ne.Interaction=He;var Ke=He;Ne.default=Ke;var Ze={};function Je(t){t.pointerIsDown&&(nn(t.coords.cur,t.offset.total),t.offset.pending.x=0,t.offset.pending.y=0)}function Qe(t){tn(t.interaction)}function tn(t){if(!function(t){return!(!t.offset.pending.x&&!t.offset.pending.y)}(t))return!1;var e=t.offset.pending;return nn(t.coords.cur,e),nn(t.coords.delta,e),k.addEdges(t.edges,t.rect,e),e.x=0,e.y=0,!0}function en(t){var e=t.x,n=t.y;this.offset.pending.x+=e,this.offset.pending.y+=n,this.offset.total.x+=e,this.offset.total.y+=n}function nn(t,e){var n=t.page,r=t.client,o=e.x,i=e.y;n.x+=o,n.y+=i,r.x+=o,r.y+=i}Object.defineProperty(Ze,\"__esModule\",{value:!0}),Ze.addTotal=Je,Ze.applyPending=tn,Ze.default=void 0,Ne._ProxyMethods.offsetBy=\"\";var rn={id:\"offset\",before:[\"modifiers\",\"pointer-events\",\"actions\",\"inertia\"],install:function(t){t.Interaction.prototype.offsetBy=en},listeners:{\"interactions:new\":function(t){t.interaction.offset={total:{x:0,y:0},pending:{x:0,y:0}}},\"interactions:update-pointer\":function(t){return Je(t.interaction)},\"interactions:before-action-start\":Qe,\"interactions:before-action-move\":Qe,\"interactions:before-action-end\":function(t){var e=t.interaction;if(tn(e))return e.move({offset:!0}),e.end(),!1},\"interactions:stop\":function(t){var e=t.interaction;e.offset.total.x=0,e.offset.total.y=0,e.offset.pending.x=0,e.offset.pending.y=0}}};Ze.default=rn;var on={};function an(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function sn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(on,\"__esModule\",{value:!0}),on.default=on.InertiaState=void 0;var ln=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),sn(this,\"active\",!1),sn(this,\"isModified\",!1),sn(this,\"smoothEnd\",!1),sn(this,\"allowResume\",!1),sn(this,\"modification\",void 0),sn(this,\"modifierCount\",0),sn(this,\"modifierArg\",void 0),sn(this,\"startCoords\",void 0),sn(this,\"t0\",0),sn(this,\"v0\",0),sn(this,\"te\",0),sn(this,\"targetOffset\",void 0),sn(this,\"modifiedOffset\",void 0),sn(this,\"currentOffset\",void 0),sn(this,\"lambda_v0\",0),sn(this,\"one_ve_v0\",0),sn(this,\"timeout\",void 0),sn(this,\"interaction\",void 0),this.interaction=e}var e,n;return e=t,(n=[{key:\"start\",value:function(t){var e=this.interaction,n=un(e);if(!n||!n.enabled)return!1;var r=e.coords.velocity.client,o=(0,C.default)(r.x,r.y),i=this.modification||(this.modification=new ye.default(e));if(i.copyFrom(e.modification),this.t0=e._now(),this.allowResume=n.allowResume,this.v0=o,this.currentOffset={x:0,y:0},this.startCoords=e.coords.cur.page,this.modifierArg=i.fillArg({pageCoords:this.startCoords,preEnd:!0,phase:\"inertiastart\"}),this.t0-e.coords.cur.timeStamp<50&&o>n.minSpeed&&o>n.endSpeed)this.startInertia();else{if(i.result=i.setAll(this.modifierArg),!i.result.changed)return!1;this.startSmoothEnd()}return e.modification.result.rect=null,e.offsetBy(this.targetOffset),e._doPhase({interaction:e,event:t,phase:\"inertiastart\"}),e.offsetBy({x:-this.targetOffset.x,y:-this.targetOffset.y}),e.modification.result.rect=null,this.active=!0,e.simulation=this,!0}},{key:\"startInertia\",value:function(){var t=this,e=this.interaction.coords.velocity.client,n=un(this.interaction),r=n.resistance,o=-Math.log(n.endSpeed/this.v0)/r;this.targetOffset={x:(e.x-o)/r,y:(e.y-o)/r},this.te=o,this.lambda_v0=r/this.v0,this.one_ve_v0=1-n.endSpeed/this.v0;var i=this.modification,a=this.modifierArg;a.pageCoords={x:this.startCoords.x+this.targetOffset.x,y:this.startCoords.y+this.targetOffset.y},i.result=i.setAll(a),i.result.changed&&(this.isModified=!0,this.modifiedOffset={x:this.targetOffset.x+i.result.delta.x,y:this.targetOffset.y+i.result.delta.y}),this.onNextFrame((function(){return t.inertiaTick()}))}},{key:\"startSmoothEnd\",value:function(){var t=this;this.smoothEnd=!0,this.isModified=!0,this.targetOffset={x:this.modification.result.delta.x,y:this.modification.result.delta.y},this.onNextFrame((function(){return t.smoothEndTick()}))}},{key:\"onNextFrame\",value:function(t){var e=this;this.timeout=jt.default.request((function(){e.active&&t()}))}},{key:\"inertiaTick\",value:function(){var t,e,n,r,o,i=this,a=this.interaction,s=un(a).resistance,l=(a._now()-this.t0)/1e3;if(l<this.te){var u,c=1-(Math.exp(-s*l)-this.lambda_v0)/this.one_ve_v0;this.isModified?(0,0,t=this.targetOffset.x,e=this.targetOffset.y,n=this.modifiedOffset.x,r=this.modifiedOffset.y,u={x:cn(o=c,0,t,n),y:cn(o,0,e,r)}):u={x:this.targetOffset.x*c,y:this.targetOffset.y*c};var f={x:u.x-this.currentOffset.x,y:u.y-this.currentOffset.y};this.currentOffset.x+=f.x,this.currentOffset.y+=f.y,a.offsetBy(f),a.move(),this.onNextFrame((function(){return i.inertiaTick()}))}else a.offsetBy({x:this.modifiedOffset.x-this.currentOffset.x,y:this.modifiedOffset.y-this.currentOffset.y}),this.end()}},{key:\"smoothEndTick\",value:function(){var t=this,e=this.interaction,n=e._now()-this.t0,r=un(e).smoothEndDuration;if(n<r){var o={x:fn(n,0,this.targetOffset.x,r),y:fn(n,0,this.targetOffset.y,r)},i={x:o.x-this.currentOffset.x,y:o.y-this.currentOffset.y};this.currentOffset.x+=i.x,this.currentOffset.y+=i.y,e.offsetBy(i),e.move({skipModifiers:this.modifierCount}),this.onNextFrame((function(){return t.smoothEndTick()}))}else e.offsetBy({x:this.targetOffset.x-this.currentOffset.x,y:this.targetOffset.y-this.currentOffset.y}),this.end()}},{key:\"resume\",value:function(t){var e=t.pointer,n=t.event,r=t.eventTarget,o=this.interaction;o.offsetBy({x:-this.currentOffset.x,y:-this.currentOffset.y}),o.updatePointer(e,n,r,!0),o._doPhase({interaction:o,event:n,phase:\"resume\"}),(0,Y.copyCoords)(o.coords.prev,o.coords.cur),this.stop()}},{key:\"end\",value:function(){this.interaction.move(),this.interaction.end(),this.stop()}},{key:\"stop\",value:function(){this.active=this.smoothEnd=!1,this.interaction.simulation=null,jt.default.cancel(this.timeout)}}])&&an(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();function un(t){var e=t.interactable,n=t.prepared;return e&&e.options&&n.name&&e.options[n.name].inertia}function cn(t,e,n,r){var o=1-t;return o*o*e+2*o*t*n+t*t*r}function fn(t,e,n,r){return-n*(t/=r)*(t-2)+e}on.InertiaState=ln;var dn={id:\"inertia\",before:[\"modifiers\",\"actions\"],install:function(t){var e=t.defaults;t.usePlugin(Ze.default),t.usePlugin(Ee.default),t.actions.phases.inertiastart=!0,t.actions.phases.resume=!0,e.perAction.inertia={enabled:!1,resistance:10,minSpeed:100,endSpeed:10,allowResume:!0,smoothEndDuration:300}},listeners:{\"interactions:new\":function(t){var e=t.interaction;e.inertia=new ln(e)},\"interactions:before-action-end\":function(t){var e=t.interaction,n=t.event;return(!e._interacting||e.simulation||!e.inertia.start(n))&&null},\"interactions:down\":function(t){var e=t.interaction,n=t.eventTarget,r=e.inertia;if(r.active)for(var o=n;i.default.element(o);){if(o===e.element){r.resume(t);break}o=_.parentNode(o)}},\"interactions:stop\":function(t){var e=t.interaction.inertia;e.active&&e.stop()},\"interactions:before-action-resume\":function(t){var e=t.interaction.modification;e.stop(t),e.start(t,t.interaction.coords.cur.page),e.applyToInteraction(t)},\"interactions:before-action-inertiastart\":function(t){return t.interaction.modification.setAndApply(t)},\"interactions:action-resume\":Ee.addEventModifiers,\"interactions:action-inertiastart\":Ee.addEventModifiers,\"interactions:after-action-inertiastart\":function(t){return t.interaction.modification.restoreInteractionCoords(t)},\"interactions:after-action-resume\":function(t){return t.interaction.modification.restoreInteractionCoords(t)}}};on.default=dn;var pn={};function vn(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function hn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function gn(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(t.immediatePropagationStopped)break;r(t)}}Object.defineProperty(pn,\"__esModule\",{value:!0}),pn.Eventable=void 0;var yn=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),hn(this,\"options\",void 0),hn(this,\"types\",{}),hn(this,\"propagationStopped\",!1),hn(this,\"immediatePropagationStopped\",!1),hn(this,\"global\",void 0),this.options=(0,j.default)({},e||{})}var e,n;return e=t,(n=[{key:\"fire\",value:function(t){var e,n=this.global;(e=this.types[t.type])&&gn(t,e),!t.propagationStopped&&n&&(e=n[t.type])&&gn(t,e)}},{key:\"on\",value:function(t,e){var n=(0,R.default)(t,e);for(t in n)this.types[t]=Z.merge(this.types[t]||[],n[t])}},{key:\"off\",value:function(t,e){var n=(0,R.default)(t,e);for(t in n){var r=this.types[t];if(r&&r.length)for(var o=0;o<n[t].length;o++){var i=n[t][o],a=r.indexOf(i);-1!==a&&r.splice(a,1)}}}},{key:\"getRect\",value:function(t){return null}}])&&vn(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();pn.Eventable=yn;var mn={};Object.defineProperty(mn,\"__esModule\",{value:!0}),mn.default=function(t,e){if(e.phaselessTypes[t])return!0;for(var n in e.map)if(0===t.indexOf(n)&&t.substr(n.length)in e.phases)return!0;return!1};var bn={};Object.defineProperty(bn,\"__esModule\",{value:!0}),bn.createInteractStatic=function(t){var e=function e(n,r){var o=t.interactables.get(n,r);return o||((o=t.interactables.new(n,r)).events.global=e.globalEvents),o};return e.getPointerAverage=Y.pointerAverage,e.getTouchBBox=Y.touchBBox,e.getTouchDistance=Y.touchDistance,e.getTouchAngle=Y.touchAngle,e.getElementRect=_.getElementRect,e.getElementClientRect=_.getElementClientRect,e.matchesSelector=_.matchesSelector,e.closest=_.closest,e.globalEvents={},e.version=\"1.10.12\",e.scope=t,e.use=function(t,e){return this.scope.usePlugin(t,e),this},e.isSet=function(t,e){return!!this.scope.interactables.get(t,e&&e.context)},e.on=(0,Bt.warnOnce)((function(t,e,n){if(i.default.string(t)&&-1!==t.search(\" \")&&(t=t.trim().split(/ +/)),i.default.array(t)){for(var r=0;r<t.length;r++){var o=t[r];this.on(o,e,n)}return this}if(i.default.object(t)){for(var a in t)this.on(a,t[a],e);return this}return(0,mn.default)(t,this.scope.actions)?this.globalEvents[t]?this.globalEvents[t].push(e):this.globalEvents[t]=[e]:this.scope.events.add(this.scope.document,t,e,{options:n}),this}),\"The interact.on() method is being deprecated\"),e.off=(0,Bt.warnOnce)((function(t,e,n){if(i.default.string(t)&&-1!==t.search(\" \")&&(t=t.trim().split(/ +/)),i.default.array(t)){for(var r=0;r<t.length;r++){var o=t[r];this.off(o,e,n)}return this}if(i.default.object(t)){for(var a in t)this.off(a,t[a],e);return this}var s;return(0,mn.default)(t,this.scope.actions)?t in this.globalEvents&&-1!==(s=this.globalEvents[t].indexOf(e))&&this.globalEvents[t].splice(s,1):this.scope.events.remove(this.scope.document,t,e,n),this}),\"The interact.off() method is being deprecated\"),e.debug=function(){return this.scope},e.supportsTouch=function(){return b.default.supportsTouch},e.supportsPointerEvent=function(){return b.default.supportsPointerEvent},e.stop=function(){for(var t=0;t<this.scope.interactions.list.length;t++)this.scope.interactions.list[t].stop();return this},e.pointerMoveTolerance=function(t){return i.default.number(t)?(this.scope.interactions.pointerMoveTolerance=t,this):this.scope.interactions.pointerMoveTolerance},e.addDocument=function(t,e){this.scope.addDocument(t,e)},e.removeDocument=function(t){this.scope.removeDocument(t)},e};var xn={};function wn(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function _n(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(xn,\"__esModule\",{value:!0}),xn.Interactable=void 0;var Pn=function(){function t(n,r,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),_n(this,\"options\",void 0),_n(this,\"_actions\",void 0),_n(this,\"target\",void 0),_n(this,\"events\",new pn.Eventable),_n(this,\"_context\",void 0),_n(this,\"_win\",void 0),_n(this,\"_doc\",void 0),_n(this,\"_scopeEvents\",void 0),_n(this,\"_rectChecker\",void 0),this._actions=r.actions,this.target=n,this._context=r.context||o,this._win=(0,e.getWindow)((0,_.trySelector)(n)?this._context:n),this._doc=this._win.document,this._scopeEvents=i,this.set(r)}var n,r;return n=t,(r=[{key:\"_defaults\",get:function(){return{base:{},perAction:{},actions:{}}}},{key:\"setOnEvents\",value:function(t,e){return i.default.func(e.onstart)&&this.on(\"\".concat(t,\"start\"),e.onstart),i.default.func(e.onmove)&&this.on(\"\".concat(t,\"move\"),e.onmove),i.default.func(e.onend)&&this.on(\"\".concat(t,\"end\"),e.onend),i.default.func(e.oninertiastart)&&this.on(\"\".concat(t,\"inertiastart\"),e.oninertiastart),this}},{key:\"updatePerActionListeners\",value:function(t,e,n){(i.default.array(e)||i.default.object(e))&&this.off(t,e),(i.default.array(n)||i.default.object(n))&&this.on(t,n)}},{key:\"setPerAction\",value:function(t,e){var n=this._defaults;for(var r in e){var o=r,a=this.options[t],s=e[o];\"listeners\"===o&&this.updatePerActionListeners(t,a.listeners,s),i.default.array(s)?a[o]=Z.from(s):i.default.plainObject(s)?(a[o]=(0,j.default)(a[o]||{},(0,ge.default)(s)),i.default.object(n.perAction[o])&&\"enabled\"in n.perAction[o]&&(a[o].enabled=!1!==s.enabled)):i.default.bool(s)&&i.default.object(n.perAction[o])?a[o].enabled=s:a[o]=s}}},{key:\"getRect\",value:function(t){return t=t||(i.default.element(this.target)?this.target:null),i.default.string(this.target)&&(t=t||this._context.querySelector(this.target)),(0,_.getElementRect)(t)}},{key:\"rectChecker\",value:function(t){var e=this;return i.default.func(t)?(this._rectChecker=t,this.getRect=function(t){var n=(0,j.default)({},e._rectChecker(t));return\"width\"in n||(n.width=n.right-n.left,n.height=n.bottom-n.top),n},this):null===t?(delete this.getRect,delete this._rectChecker,this):this.getRect}},{key:\"_backCompatOption\",value:function(t,e){if((0,_.trySelector)(e)||i.default.object(e)){for(var n in this.options[t]=e,this._actions.map)this.options[n][t]=e;return this}return this.options[t]}},{key:\"origin\",value:function(t){return this._backCompatOption(\"origin\",t)}},{key:\"deltaSource\",value:function(t){return\"page\"===t||\"client\"===t?(this.options.deltaSource=t,this):this.options.deltaSource}},{key:\"context\",value:function(){return this._context}},{key:\"inContext\",value:function(t){return this._context===t.ownerDocument||(0,_.nodeContains)(this._context,t)}},{key:\"testIgnoreAllow\",value:function(t,e,n){return!this.testIgnore(t.ignoreFrom,e,n)&&this.testAllow(t.allowFrom,e,n)}},{key:\"testAllow\",value:function(t,e,n){return!t||!!i.default.element(n)&&(i.default.string(t)?(0,_.matchesUpTo)(n,t,e):!!i.default.element(t)&&(0,_.nodeContains)(t,n))}},{key:\"testIgnore\",value:function(t,e,n){return!(!t||!i.default.element(n))&&(i.default.string(t)?(0,_.matchesUpTo)(n,t,e):!!i.default.element(t)&&(0,_.nodeContains)(t,n))}},{key:\"fire\",value:function(t){return this.events.fire(t),this}},{key:\"_onOff\",value:function(t,e,n,r){i.default.object(e)&&!i.default.array(e)&&(r=n,n=null);var o=\"on\"===t?\"add\":\"remove\",a=(0,R.default)(e,n);for(var s in a){\"wheel\"===s&&(s=b.default.wheelEvent);for(var l=0;l<a[s].length;l++){var u=a[s][l];(0,mn.default)(s,this._actions)?this.events[t](s,u):i.default.string(this.target)?this._scopeEvents[\"\".concat(o,\"Delegate\")](this.target,this._context,s,u,r):this._scopeEvents[o](this.target,s,u,r)}}return this}},{key:\"on\",value:function(t,e,n){return this._onOff(\"on\",t,e,n)}},{key:\"off\",value:function(t,e,n){return this._onOff(\"off\",t,e,n)}},{key:\"set\",value:function(t){var e=this._defaults;for(var n in i.default.object(t)||(t={}),this.options=(0,ge.default)(e.base),this._actions.methodDict){var r=n,o=this._actions.methodDict[r];this.options[r]={},this.setPerAction(r,(0,j.default)((0,j.default)({},e.perAction),e.actions[r])),this[o](t[r])}for(var a in t)i.default.func(this[a])&&this[a](t[a]);return this}},{key:\"unset\",value:function(){if(i.default.string(this.target))for(var t in this._scopeEvents.delegatedEvents)for(var e=this._scopeEvents.delegatedEvents[t],n=e.length-1;n>=0;n--){var r=e[n],o=r.selector,a=r.context,s=r.listeners;o===this.target&&a===this._context&&e.splice(n,1);for(var l=s.length-1;l>=0;l--)this._scopeEvents.removeDelegate(this.target,this._context,t,s[l][0],s[l][1])}else this._scopeEvents.remove(this.target,\"all\")}}])&&wn(n.prototype,r),Object.defineProperty(n,\"prototype\",{writable:!1}),t}();xn.Interactable=Pn;var On={};function En(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Sn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(On,\"__esModule\",{value:!0}),On.InteractableSet=void 0;var Tn=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),Sn(this,\"list\",[]),Sn(this,\"selectorMap\",{}),Sn(this,\"scope\",void 0),this.scope=e,e.addListeners({\"interactable:unset\":function(t){var e=t.interactable,r=e.target,o=e._context,a=i.default.string(r)?n.selectorMap[r]:r[n.scope.id],s=Z.findIndex(a,(function(t){return t.context===o}));a[s]&&(a[s].context=null,a[s].interactable=null),a.splice(s,1)}})}var e,n;return e=t,(n=[{key:\"new\",value:function(t,e){e=(0,j.default)(e||{},{actions:this.scope.actions});var n=new this.scope.Interactable(t,e,this.scope.document,this.scope.events),r={context:n._context,interactable:n};return this.scope.addDocument(n._doc),this.list.push(n),i.default.string(t)?(this.selectorMap[t]||(this.selectorMap[t]=[]),this.selectorMap[t].push(r)):(n.target[this.scope.id]||Object.defineProperty(t,this.scope.id,{value:[],configurable:!0}),t[this.scope.id].push(r)),this.scope.fire(\"interactable:new\",{target:t,options:e,interactable:n,win:this.scope._win}),n}},{key:\"get\",value:function(t,e){var n=e&&e.context||this.scope.document,r=i.default.string(t),o=r?this.selectorMap[t]:t[this.scope.id];if(!o)return null;var a=Z.find(o,(function(e){return e.context===n&&(r||e.interactable.inContext(t))}));return a&&a.interactable}},{key:\"forEachMatch\",value:function(t,e){for(var n=0;n<this.list.length;n++){var r=this.list[n],o=void 0;if((i.default.string(r.target)?i.default.element(t)&&_.matchesSelector(t,r.target):t===r.target)&&r.inContext(t)&&(o=e(r)),void 0!==o)return o}}}])&&En(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();On.InteractableSet=Tn;var Mn={};function jn(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function kn(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function In(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=n){var r,o,i=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{a||null==n.return||n.return()}finally{if(s)throw o}}return i}}(t,e)||function(t,e){if(t){if(\"string\"==typeof t)return Dn(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Dn(t,e):void 0}}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function Dn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}Object.defineProperty(Mn,\"__esModule\",{value:!0}),Mn.default=void 0;var An=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),kn(this,\"currentTarget\",void 0),kn(this,\"originalEvent\",void 0),kn(this,\"type\",void 0),this.originalEvent=e,(0,F.default)(this,e)}var e,n;return e=t,(n=[{key:\"preventOriginalDefault\",value:function(){this.originalEvent.preventDefault()}},{key:\"stopPropagation\",value:function(){this.originalEvent.stopPropagation()}},{key:\"stopImmediatePropagation\",value:function(){this.originalEvent.stopImmediatePropagation()}}])&&jn(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();function Rn(t){if(!i.default.object(t))return{capture:!!t,passive:!1};var e=(0,j.default)({},t);return e.capture=!!t.capture,e.passive=!!t.passive,e}var zn={id:\"events\",install:function(t){var e,n=[],r={},o=[],a={add:s,remove:l,addDelegate:function(t,e,n,i,a){var l=Rn(a);if(!r[n]){r[n]=[];for(var f=0;f<o.length;f++){var d=o[f];s(d,n,u),s(d,n,c,!0)}}var p=r[n],v=Z.find(p,(function(n){return n.selector===t&&n.context===e}));v||(v={selector:t,context:e,listeners:[]},p.push(v)),v.listeners.push([i,l])},removeDelegate:function(t,e,n,o,i){var a,s=Rn(i),f=r[n],d=!1;if(f)for(a=f.length-1;a>=0;a--){var p=f[a];if(p.selector===t&&p.context===e){for(var v=p.listeners,h=v.length-1;h>=0;h--){var g=In(v[h],2),y=g[0],m=g[1],b=m.capture,x=m.passive;if(y===o&&b===s.capture&&x===s.passive){v.splice(h,1),v.length||(f.splice(a,1),l(e,n,u),l(e,n,c,!0)),d=!0;break}}if(d)break}}},delegateListener:u,delegateUseCapture:c,delegatedEvents:r,documents:o,targets:n,supportsOptions:!1,supportsPassive:!1};function s(t,e,r,o){var i=Rn(o),s=Z.find(n,(function(e){return e.eventTarget===t}));s||(s={eventTarget:t,events:{}},n.push(s)),s.events[e]||(s.events[e]=[]),t.addEventListener&&!Z.contains(s.events[e],r)&&(t.addEventListener(e,r,a.supportsOptions?i:i.capture),s.events[e].push(r))}function l(t,e,r,o){var i=Rn(o),s=Z.findIndex(n,(function(e){return e.eventTarget===t})),u=n[s];if(u&&u.events)if(\"all\"!==e){var c=!1,f=u.events[e];if(f){if(\"all\"===r){for(var d=f.length-1;d>=0;d--)l(t,e,f[d],i);return}for(var p=0;p<f.length;p++)if(f[p]===r){t.removeEventListener(e,r,a.supportsOptions?i:i.capture),f.splice(p,1),0===f.length&&(delete u.events[e],c=!0);break}}c&&!Object.keys(u.events).length&&n.splice(s,1)}else for(e in u.events)u.events.hasOwnProperty(e)&&l(t,e,\"all\")}function u(t,e){for(var n=Rn(e),o=new An(t),a=r[t.type],s=In(Y.getEventTargets(t),1)[0],l=s;i.default.element(l);){for(var u=0;u<a.length;u++){var c=a[u],f=c.selector,d=c.context;if(_.matchesSelector(l,f)&&_.nodeContains(d,s)&&_.nodeContains(d,l)){var p=c.listeners;o.currentTarget=l;for(var v=0;v<p.length;v++){var h=In(p[v],2),g=h[0],y=h[1],m=y.capture,b=y.passive;m===n.capture&&b===n.passive&&g(o)}}}l=_.parentNode(l)}}function c(t){return u(t,!0)}return null==(e=t.document)||e.createElement(\"div\").addEventListener(\"test\",null,{get capture(){return a.supportsOptions=!0},get passive(){return a.supportsPassive=!0}}),t.events=a,a}};Mn.default=zn;var Cn={};Object.defineProperty(Cn,\"__esModule\",{value:!0}),Cn.default=void 0;var Fn={methodOrder:[\"simulationResume\",\"mouseOrPen\",\"hasPointer\",\"idle\"],search:function(t){for(var e=0;e<Fn.methodOrder.length;e++){var n;n=Fn.methodOrder[e];var r=Fn[n](t);if(r)return r}return null},simulationResume:function(t){var e=t.pointerType,n=t.eventType,r=t.eventTarget,o=t.scope;if(!/down|start/i.test(n))return null;for(var i=0;i<o.interactions.list.length;i++){var a=o.interactions.list[i],s=r;if(a.simulation&&a.simulation.allowResume&&a.pointerType===e)for(;s;){if(s===a.element)return a;s=_.parentNode(s)}}return null},mouseOrPen:function(t){var e,n=t.pointerId,r=t.pointerType,o=t.eventType,i=t.scope;if(\"mouse\"!==r&&\"pen\"!==r)return null;for(var a=0;a<i.interactions.list.length;a++){var s=i.interactions.list[a];if(s.pointerType===r){if(s.simulation&&!Xn(s,n))continue;if(s.interacting())return s;e||(e=s)}}if(e)return e;for(var l=0;l<i.interactions.list.length;l++){var u=i.interactions.list[l];if(!(u.pointerType!==r||/down/i.test(o)&&u.simulation))return u}return null},hasPointer:function(t){for(var e=t.pointerId,n=t.scope,r=0;r<n.interactions.list.length;r++){var o=n.interactions.list[r];if(Xn(o,e))return o}return null},idle:function(t){for(var e=t.pointerType,n=t.scope,r=0;r<n.interactions.list.length;r++){var o=n.interactions.list[r];if(1===o.pointers.length){var i=o.interactable;if(i&&(!i.options.gesture||!i.options.gesture.enabled))continue}else if(o.pointers.length>=2)continue;if(!o.interacting()&&e===o.pointerType)return o}return null}};function Xn(t,e){return t.pointers.some((function(t){return t.id===e}))}var Bn=Fn;Cn.default=Bn;var Yn={};function Wn(t){return(Wn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Ln(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=n){var r,o,i=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{a||null==n.return||n.return()}finally{if(s)throw o}}return i}}(t,e)||function(t,e){if(t){if(\"string\"==typeof t)return Un(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Un(t,e):void 0}}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function Un(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function Vn(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function Nn(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function qn(t,e){return(qn=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function $n(t,e){if(e&&(\"object\"===Wn(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t)}function Gn(t){return(Gn=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}Object.defineProperty(Yn,\"__esModule\",{value:!0}),Yn.default=void 0;var Hn=[\"pointerDown\",\"pointerMove\",\"pointerUp\",\"updatePointer\",\"removePointer\",\"windowBlur\"];function Kn(t,e){return function(n){var r=e.interactions.list,o=Y.getPointerType(n),i=Ln(Y.getEventTargets(n),2),a=i[0],s=i[1],l=[];if(/^touch/.test(n.type)){e.prevTouchTime=e.now();for(var u=0;u<n.changedTouches.length;u++){var c=n.changedTouches[u],f={pointer:c,pointerId:Y.getPointerId(c),pointerType:o,eventType:n.type,eventTarget:a,curEventTarget:s,scope:e},d=Zn(f);l.push([f.pointer,f.eventTarget,f.curEventTarget,d])}}else{var p=!1;if(!b.default.supportsPointerEvent&&/mouse/.test(n.type)){for(var v=0;v<r.length&&!p;v++)p=\"mouse\"!==r[v].pointerType&&r[v].pointerIsDown;p=p||e.now()-e.prevTouchTime<500||0===n.timeStamp}if(!p){var h={pointer:n,pointerId:Y.getPointerId(n),pointerType:o,eventType:n.type,curEventTarget:s,eventTarget:a,scope:e},g=Zn(h);l.push([h.pointer,h.eventTarget,h.curEventTarget,g])}}for(var y=0;y<l.length;y++){var m=Ln(l[y],4),x=m[0],w=m[1],_=m[2];m[3][t](x,n,w,_)}}}function Zn(t){var e=t.pointerType,n=t.scope,r={interaction:Cn.default.search(t),searchDetails:t};return n.fire(\"interactions:find\",r),r.interaction||n.interactions.new({pointerType:e})}function Jn(t,e){var n=t.doc,r=t.scope,o=t.options,i=r.interactions.docEvents,a=r.events,s=a[e];for(var l in r.browser.isIOS&&!o.events&&(o.events={passive:!1}),a.delegatedEvents)s(n,l,a.delegateListener),s(n,l,a.delegateUseCapture,!0);for(var u=o&&o.events,c=0;c<i.length;c++){var f=i[c];s(n,f.type,f.listener,u)}}var Qn={id:\"core/interactions\",install:function(t){for(var e={},n=0;n<Hn.length;n++){var r=Hn[n];e[r]=Kn(r,t)}var o,i=b.default.pEventTypes;function a(){for(var e=0;e<t.interactions.list.length;e++){var n=t.interactions.list[e];if(n.pointerIsDown&&\"touch\"===n.pointerType&&!n._interacting)for(var r=function(){var e=n.pointers[o];t.documents.some((function(t){var n=t.doc;return(0,_.nodeContains)(n,e.downTarget)}))||n.removePointer(e.pointer,e.event)},o=0;o<n.pointers.length;o++)r()}}(o=h.default.PointerEvent?[{type:i.down,listener:a},{type:i.down,listener:e.pointerDown},{type:i.move,listener:e.pointerMove},{type:i.up,listener:e.pointerUp},{type:i.cancel,listener:e.pointerUp}]:[{type:\"mousedown\",listener:e.pointerDown},{type:\"mousemove\",listener:e.pointerMove},{type:\"mouseup\",listener:e.pointerUp},{type:\"touchstart\",listener:a},{type:\"touchstart\",listener:e.pointerDown},{type:\"touchmove\",listener:e.pointerMove},{type:\"touchend\",listener:e.pointerUp},{type:\"touchcancel\",listener:e.pointerUp}]).push({type:\"blur\",listener:function(e){for(var n=0;n<t.interactions.list.length;n++)t.interactions.list[n].documentBlur(e)}}),t.prevTouchTime=0,t.Interaction=function(e){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&qn(t,e)}(s,e);var n,r,o,i,a=(o=s,i=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,e=Gn(o);if(i){var n=Gn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return $n(this,t)});function s(){return Vn(this,s),a.apply(this,arguments)}return n=s,(r=[{key:\"pointerMoveTolerance\",get:function(){return t.interactions.pointerMoveTolerance},set:function(e){t.interactions.pointerMoveTolerance=e}},{key:\"_now\",value:function(){return t.now()}}])&&Nn(n.prototype,r),Object.defineProperty(n,\"prototype\",{writable:!1}),s}(Ne.default),t.interactions={list:[],new:function(e){e.scopeFire=function(e,n){return t.fire(e,n)};var n=new t.Interaction(e);return t.interactions.list.push(n),n},listeners:e,docEvents:o,pointerMoveTolerance:1},t.usePlugin(se.default)},listeners:{\"scope:add-document\":function(t){return Jn(t,\"add\")},\"scope:remove-document\":function(t){return Jn(t,\"remove\")},\"interactable:unset\":function(t,e){for(var n=t.interactable,r=e.interactions.list.length-1;r>=0;r--){var o=e.interactions.list[r];o.interactable===n&&(o.stop(),e.fire(\"interactions:destroy\",{interaction:o}),o.destroy(),e.interactions.list.length>2&&e.interactions.list.splice(r,1))}}},onDocSignal:Jn,doOnInteractions:Kn,methodNames:Hn};Yn.default=Qn;var tr={};function er(t){return(er=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function nr(){return(nr=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=rr(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(arguments.length<3?t:n):o.value}}).apply(this,arguments)}function rr(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=ar(t)););return t}function or(t,e){return(or=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function ir(t,e){if(e&&(\"object\"===er(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t)}function ar(t){return(ar=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function sr(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function lr(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function ur(t,e,n){return e&&lr(t.prototype,e),n&&lr(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function cr(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(tr,\"__esModule\",{value:!0}),tr.Scope=void 0,tr.initScope=dr;var fr=function(){function t(){var e=this;sr(this,t),cr(this,\"id\",\"__interact_scope_\".concat(Math.floor(100*Math.random()))),cr(this,\"isInitialized\",!1),cr(this,\"listenerMaps\",[]),cr(this,\"browser\",b.default),cr(this,\"defaults\",(0,ge.default)(Me.defaults)),cr(this,\"Eventable\",pn.Eventable),cr(this,\"actions\",{map:{},phases:{start:!0,move:!0,end:!0},methodDict:{},phaselessTypes:{}}),cr(this,\"interactStatic\",(0,bn.createInteractStatic)(this)),cr(this,\"InteractEvent\",je.InteractEvent),cr(this,\"Interactable\",void 0),cr(this,\"interactables\",new On.InteractableSet(this)),cr(this,\"_win\",void 0),cr(this,\"document\",void 0),cr(this,\"window\",void 0),cr(this,\"documents\",[]),cr(this,\"_plugins\",{list:[],map:{}}),cr(this,\"onWindowUnload\",(function(t){return e.removeDocument(t.target)}));var n=this;this.Interactable=function(t){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&or(t,e)}(i,t);var e,r,o=(e=i,r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,n=ar(e);if(r){var o=ar(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return ir(this,t)});function i(){return sr(this,i),o.apply(this,arguments)}return ur(i,[{key:\"_defaults\",get:function(){return n.defaults}},{key:\"set\",value:function(t){return nr(ar(i.prototype),\"set\",this).call(this,t),n.fire(\"interactable:set\",{options:t,interactable:this}),this}},{key:\"unset\",value:function(){nr(ar(i.prototype),\"unset\",this).call(this);var t=n.interactables.list.indexOf(this);t<0||(nr(ar(i.prototype),\"unset\",this).call(this),n.interactables.list.splice(t,1),n.fire(\"interactable:unset\",{interactable:this}))}}]),i}(xn.Interactable)}return ur(t,[{key:\"addListeners\",value:function(t,e){this.listenerMaps.push({id:e,map:t})}},{key:\"fire\",value:function(t,e){for(var n=0;n<this.listenerMaps.length;n++){var r=this.listenerMaps[n].map[t];if(r&&!1===r(e,this,t))return!1}}},{key:\"init\",value:function(t){return this.isInitialized?this:dr(this,t)}},{key:\"pluginIsInstalled\",value:function(t){return this._plugins.map[t.id]||-1!==this._plugins.list.indexOf(t)}},{key:\"usePlugin\",value:function(t,e){if(!this.isInitialized)return this;if(this.pluginIsInstalled(t))return this;if(t.id&&(this._plugins.map[t.id]=t),this._plugins.list.push(t),t.install&&t.install(this,e),t.listeners&&t.before){for(var n=0,r=this.listenerMaps.length,o=t.before.reduce((function(t,e){return t[e]=!0,t[pr(e)]=!0,t}),{});n<r;n++){var i=this.listenerMaps[n].id;if(o[i]||o[pr(i)])break}this.listenerMaps.splice(n,0,{id:t.id,map:t.listeners})}else t.listeners&&this.listenerMaps.push({id:t.id,map:t.listeners});return this}},{key:\"addDocument\",value:function(t,n){if(-1!==this.getDocIndex(t))return!1;var r=e.getWindow(t);n=n?(0,j.default)({},n):{},this.documents.push({doc:t,options:n}),this.events.documents.push(t),t!==this.document&&this.events.add(r,\"unload\",this.onWindowUnload),this.fire(\"scope:add-document\",{doc:t,window:r,scope:this,options:n})}},{key:\"removeDocument\",value:function(t){var n=this.getDocIndex(t),r=e.getWindow(t),o=this.documents[n].options;this.events.remove(r,\"unload\",this.onWindowUnload),this.documents.splice(n,1),this.events.documents.splice(n,1),this.fire(\"scope:remove-document\",{doc:t,window:r,scope:this,options:o})}},{key:\"getDocIndex\",value:function(t){for(var e=0;e<this.documents.length;e++)if(this.documents[e].doc===t)return e;return-1}},{key:\"getDocOptions\",value:function(t){var e=this.getDocIndex(t);return-1===e?null:this.documents[e].options}},{key:\"now\",value:function(){return(this.window.Date||Date).now()}}]),t}();function dr(t,n){return t.isInitialized=!0,i.default.window(n)&&e.init(n),h.default.init(n),b.default.init(n),jt.default.init(n),t.window=n,t.document=n.document,t.usePlugin(Yn.default),t.usePlugin(Mn.default),t}function pr(t){return t&&t.replace(/\\/.*$/,\"\")}tr.Scope=fr;var vr={};Object.defineProperty(vr,\"__esModule\",{value:!0}),vr.default=void 0;var hr=new tr.Scope,gr=hr.interactStatic;vr.default=gr;var yr=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:void 0;hr.init(yr);var mr={};Object.defineProperty(mr,\"__esModule\",{value:!0}),mr.default=void 0,mr.default=function(){};var br={};Object.defineProperty(br,\"__esModule\",{value:!0}),br.default=void 0,br.default=function(){};var xr={};function wr(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=n){var r,o,i=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{a||null==n.return||n.return()}finally{if(s)throw o}}return i}}(t,e)||function(t,e){if(t){if(\"string\"==typeof t)return _r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_r(t,e):void 0}}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function _r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}Object.defineProperty(xr,\"__esModule\",{value:!0}),xr.default=void 0,xr.default=function(t){var e=[[\"x\",\"y\"],[\"left\",\"top\"],[\"right\",\"bottom\"],[\"width\",\"height\"]].filter((function(e){var n=wr(e,2),r=n[0],o=n[1];return r in t||o in t})),n=function(n,r){for(var o=t.range,i=t.limits,a=void 0===i?{left:-1/0,right:1/0,top:-1/0,bottom:1/0}:i,s=t.offset,l=void 0===s?{x:0,y:0}:s,u={range:o,grid:t,x:null,y:null},c=0;c<e.length;c++){var f=wr(e[c],2),d=f[0],p=f[1],v=Math.round((n-l.x)/t[d]),h=Math.round((r-l.y)/t[p]);u[d]=Math.max(a.left,Math.min(a.right,v*t[d]+l.x)),u[p]=Math.max(a.top,Math.min(a.bottom,h*t[p]+l.y))}return u};return n.grid=t,n.coordFields=e,n};var Pr={};Object.defineProperty(Pr,\"__esModule\",{value:!0}),Object.defineProperty(Pr,\"edgeTarget\",{enumerable:!0,get:function(){return mr.default}}),Object.defineProperty(Pr,\"elements\",{enumerable:!0,get:function(){return br.default}}),Object.defineProperty(Pr,\"grid\",{enumerable:!0,get:function(){return xr.default}});var Or={};Object.defineProperty(Or,\"__esModule\",{value:!0}),Or.default=void 0;var Er={id:\"snappers\",install:function(t){var e=t.interactStatic;e.snappers=(0,j.default)(e.snappers||{},Pr),e.createSnapGrid=e.snappers.grid}};Or.default=Er;var Sr={};function Tr(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Mr(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Tr(Object(n),!0).forEach((function(e){jr(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Tr(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function jr(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(Sr,\"__esModule\",{value:!0}),Sr.default=Sr.aspectRatio=void 0;var kr={start:function(t){var e=t.state,n=t.rect,r=t.edges,o=t.pageCoords,i=e.options.ratio,a=e.options,s=a.equalDelta,l=a.modifiers;\"preserve\"===i&&(i=n.width/n.height),e.startCoords=(0,j.default)({},o),e.startRect=(0,j.default)({},n),e.ratio=i,e.equalDelta=s;var u=e.linkedEdges={top:r.top||r.left&&!r.bottom,left:r.left||r.top&&!r.right,bottom:r.bottom||r.right&&!r.top,right:r.right||r.bottom&&!r.left};if(e.xIsPrimaryAxis=!(!r.left&&!r.right),e.equalDelta)e.edgeSign=(u.left?1:-1)*(u.top?1:-1);else{var c=e.xIsPrimaryAxis?u.top:u.left;e.edgeSign=c?-1:1}if((0,j.default)(t.edges,u),l&&l.length){var f=new ye.default(t.interaction);f.copyFrom(t.interaction.modification),f.prepareStates(l),e.subModification=f,f.startAll(Mr({},t))}},set:function(t){var e=t.state,n=t.rect,r=t.coords,o=(0,j.default)({},r),i=e.equalDelta?Ir:Dr;if(i(e,e.xIsPrimaryAxis,r,n),!e.subModification)return null;var a=(0,j.default)({},n);(0,k.addEdges)(e.linkedEdges,a,{x:r.x-o.x,y:r.y-o.y});var s=e.subModification.setAll(Mr(Mr({},t),{},{rect:a,edges:e.linkedEdges,pageCoords:r,prevCoords:r,prevRect:a})),l=s.delta;return s.changed&&(i(e,Math.abs(l.x)>Math.abs(l.y),s.coords,s.rect),(0,j.default)(r,s.coords)),s.eventProps},defaults:{ratio:\"preserve\",equalDelta:!1,modifiers:[],enabled:!1}};function Ir(t,e,n){var r=t.startCoords,o=t.edgeSign;e?n.y=r.y+(n.x-r.x)*o:n.x=r.x+(n.y-r.y)*o}function Dr(t,e,n,r){var o=t.startRect,i=t.startCoords,a=t.ratio,s=t.edgeSign;if(e){var l=r.width/a;n.y=i.y+(l-o.height)*s}else{var u=r.height*a;n.x=i.x+(u-o.width)*s}}Sr.aspectRatio=kr;var Ar=(0,Ee.makeModifier)(kr,\"aspectRatio\");Sr.default=Ar;var Rr={};Object.defineProperty(Rr,\"__esModule\",{value:!0}),Rr.default=void 0;var zr=function(){};zr._defaults={};var Cr=zr;Rr.default=Cr;var Fr={};Object.defineProperty(Fr,\"__esModule\",{value:!0}),Object.defineProperty(Fr,\"default\",{enumerable:!0,get:function(){return Rr.default}});var Xr={};function Br(t,e,n){return i.default.func(t)?k.resolveRectLike(t,e.interactable,e.element,[n.x,n.y,e]):k.resolveRectLike(t,e.interactable,e.element)}Object.defineProperty(Xr,\"__esModule\",{value:!0}),Xr.default=void 0,Xr.getRestrictionRect=Br,Xr.restrict=void 0;var Yr={start:function(t){var e=t.rect,n=t.startOffset,r=t.state,o=t.interaction,i=t.pageCoords,a=r.options,s=a.elementRect,l=(0,j.default)({left:0,top:0,right:0,bottom:0},a.offset||{});if(e&&s){var u=Br(a.restriction,o,i);if(u){var c=u.right-u.left-e.width,f=u.bottom-u.top-e.height;c<0&&(l.left+=c,l.right+=c),f<0&&(l.top+=f,l.bottom+=f)}l.left+=n.left-e.width*s.left,l.top+=n.top-e.height*s.top,l.right+=n.right-e.width*(1-s.right),l.bottom+=n.bottom-e.height*(1-s.bottom)}r.offset=l},set:function(t){var e=t.coords,n=t.interaction,r=t.state,o=r.options,i=r.offset,a=Br(o.restriction,n,e);if(a){var s=k.xywhToTlbr(a);e.x=Math.max(Math.min(s.right-i.right,e.x),s.left+i.left),e.y=Math.max(Math.min(s.bottom-i.bottom,e.y),s.top+i.top)}},defaults:{restriction:null,elementRect:null,offset:null,endOnly:!1,enabled:!1}};Xr.restrict=Yr;var Wr=(0,Ee.makeModifier)(Yr,\"restrict\");Xr.default=Wr;var Lr={};Object.defineProperty(Lr,\"__esModule\",{value:!0}),Lr.restrictEdges=Lr.default=void 0;var Ur={top:1/0,left:1/0,bottom:-1/0,right:-1/0},Vr={top:-1/0,left:-1/0,bottom:1/0,right:1/0};function Nr(t,e){for(var n=[\"top\",\"left\",\"bottom\",\"right\"],r=0;r<n.length;r++){var o=n[r];o in t||(t[o]=e[o])}return t}var qr={noInner:Ur,noOuter:Vr,start:function(t){var e,n=t.interaction,r=t.startOffset,o=t.state,i=o.options;if(i){var a=(0,Xr.getRestrictionRect)(i.offset,n,n.coords.start.page);e=k.rectToXY(a)}e=e||{x:0,y:0},o.offset={top:e.y+r.top,left:e.x+r.left,bottom:e.y-r.bottom,right:e.x-r.right}},set:function(t){var e=t.coords,n=t.edges,r=t.interaction,o=t.state,i=o.offset,a=o.options;if(n){var s=(0,j.default)({},e),l=(0,Xr.getRestrictionRect)(a.inner,r,s)||{},u=(0,Xr.getRestrictionRect)(a.outer,r,s)||{};Nr(l,Ur),Nr(u,Vr),n.top?e.y=Math.min(Math.max(u.top+i.top,s.y),l.top+i.top):n.bottom&&(e.y=Math.max(Math.min(u.bottom+i.bottom,s.y),l.bottom+i.bottom)),n.left?e.x=Math.min(Math.max(u.left+i.left,s.x),l.left+i.left):n.right&&(e.x=Math.max(Math.min(u.right+i.right,s.x),l.right+i.right))}},defaults:{inner:null,outer:null,offset:null,endOnly:!1,enabled:!1}};Lr.restrictEdges=qr;var $r=(0,Ee.makeModifier)(qr,\"restrictEdges\");Lr.default=$r;var Gr={};Object.defineProperty(Gr,\"__esModule\",{value:!0}),Gr.restrictRect=Gr.default=void 0;var Hr=(0,j.default)({get elementRect(){return{top:0,left:0,bottom:1,right:1}},set elementRect(t){}},Xr.restrict.defaults),Kr={start:Xr.restrict.start,set:Xr.restrict.set,defaults:Hr};Gr.restrictRect=Kr;var Zr=(0,Ee.makeModifier)(Kr,\"restrictRect\");Gr.default=Zr;var Jr={};Object.defineProperty(Jr,\"__esModule\",{value:!0}),Jr.restrictSize=Jr.default=void 0;var Qr={width:-1/0,height:-1/0},to={width:1/0,height:1/0},eo={start:function(t){return Lr.restrictEdges.start(t)},set:function(t){var e=t.interaction,n=t.state,r=t.rect,o=t.edges,i=n.options;if(o){var a=k.tlbrToXywh((0,Xr.getRestrictionRect)(i.min,e,t.coords))||Qr,s=k.tlbrToXywh((0,Xr.getRestrictionRect)(i.max,e,t.coords))||to;n.options={endOnly:i.endOnly,inner:(0,j.default)({},Lr.restrictEdges.noInner),outer:(0,j.default)({},Lr.restrictEdges.noOuter)},o.top?(n.options.inner.top=r.bottom-a.height,n.options.outer.top=r.bottom-s.height):o.bottom&&(n.options.inner.bottom=r.top+a.height,n.options.outer.bottom=r.top+s.height),o.left?(n.options.inner.left=r.right-a.width,n.options.outer.left=r.right-s.width):o.right&&(n.options.inner.right=r.left+a.width,n.options.outer.right=r.left+s.width),Lr.restrictEdges.set(t),n.options=i}},defaults:{min:null,max:null,endOnly:!1,enabled:!1}};Jr.restrictSize=eo;var no=(0,Ee.makeModifier)(eo,\"restrictSize\");Jr.default=no;var ro={};Object.defineProperty(ro,\"__esModule\",{value:!0}),Object.defineProperty(ro,\"default\",{enumerable:!0,get:function(){return Rr.default}});var oo={};Object.defineProperty(oo,\"__esModule\",{value:!0}),oo.snap=oo.default=void 0;var io={start:function(t){var e,n=t.interaction,r=t.interactable,o=t.element,i=t.rect,a=t.state,s=t.startOffset,l=a.options,u=l.offsetWithOrigin?function(t){var e=t.interaction.element;return(0,k.rectToXY)((0,k.resolveRectLike)(t.state.options.origin,null,null,[e]))||(0,A.default)(t.interactable,e,t.interaction.prepared.name)}(t):{x:0,y:0};if(\"startCoords\"===l.offset)e={x:n.coords.start.page.x,y:n.coords.start.page.y};else{var c=(0,k.resolveRectLike)(l.offset,r,o,[n]);(e=(0,k.rectToXY)(c)||{x:0,y:0}).x+=u.x,e.y+=u.y}var f=l.relativePoints;a.offsets=i&&f&&f.length?f.map((function(t,n){return{index:n,relativePoint:t,x:s.left-i.width*t.x+e.x,y:s.top-i.height*t.y+e.y}})):[{index:0,relativePoint:null,x:e.x,y:e.y}]},set:function(t){var e=t.interaction,n=t.coords,r=t.state,o=r.options,a=r.offsets,s=(0,A.default)(e.interactable,e.element,e.prepared.name),l=(0,j.default)({},n),u=[];o.offsetWithOrigin||(l.x-=s.x,l.y-=s.y);for(var c=0;c<a.length;c++)for(var f=a[c],d=l.x-f.x,p=l.y-f.y,v=0,h=o.targets.length;v<h;v++){var g,y=o.targets[v];(g=i.default.func(y)?y(d,p,e._proxy,f,v):y)&&u.push({x:(i.default.number(g.x)?g.x:d)+f.x,y:(i.default.number(g.y)?g.y:p)+f.y,range:i.default.number(g.range)?g.range:o.range,source:y,index:v,offset:f})}for(var m={target:null,inRange:!1,distance:0,range:0,delta:{x:0,y:0}},b=0;b<u.length;b++){var x=u[b],w=x.range,_=x.x-l.x,P=x.y-l.y,O=(0,C.default)(_,P),E=O<=w;w===1/0&&m.inRange&&m.range!==1/0&&(E=!1),m.target&&!(E?m.inRange&&w!==1/0?O/w<m.distance/m.range:w===1/0&&m.range!==1/0||O<m.distance:!m.inRange&&O<m.distance)||(m.target=x,m.distance=O,m.range=w,m.inRange=E,m.delta.x=_,m.delta.y=P)}return m.inRange&&(n.x=m.target.x,n.y=m.target.y),r.closest=m,m},defaults:{range:1/0,targets:null,offset:null,offsetWithOrigin:!0,origin:null,relativePoints:null,endOnly:!1,enabled:!1}};oo.snap=io;var ao=(0,Ee.makeModifier)(io,\"snap\");oo.default=ao;var so={};function lo(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}Object.defineProperty(so,\"__esModule\",{value:!0}),so.snapSize=so.default=void 0;var uo={start:function(t){var e=t.state,n=t.edges,r=e.options;if(!n)return null;t.state={options:{targets:null,relativePoints:[{x:n.left?0:1,y:n.top?0:1}],offset:r.offset||\"self\",origin:{x:0,y:0},range:r.range}},e.targetFields=e.targetFields||[[\"width\",\"height\"],[\"x\",\"y\"]],oo.snap.start(t),e.offsets=t.state.offsets,t.state=e},set:function(t){var e,n,r=t.interaction,o=t.state,a=t.coords,s=o.options,l=o.offsets,u={x:a.x-l[0].x,y:a.y-l[0].y};o.options=(0,j.default)({},s),o.options.targets=[];for(var c=0;c<(s.targets||[]).length;c++){var f=(s.targets||[])[c],d=void 0;if(d=i.default.func(f)?f(u.x,u.y,r):f){for(var p=0;p<o.targetFields.length;p++){var v=(e=o.targetFields[p],n=2,function(t){if(Array.isArray(t))return t}(e)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=n){var r,o,i=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(i.push(r.value),!e||i.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{a||null==n.return||n.return()}finally{if(s)throw o}}return i}}(e,n)||function(t,e){if(t){if(\"string\"==typeof t)return lo(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?lo(t,e):void 0}}(e,n)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),h=v[0],g=v[1];if(h in d||g in d){d.x=d[h],d.y=d[g];break}}o.options.targets.push(d)}}var y=oo.snap.set(t);return o.options=s,y},defaults:{range:1/0,targets:null,offset:null,endOnly:!1,enabled:!1}};so.snapSize=uo;var co=(0,Ee.makeModifier)(uo,\"snapSize\");so.default=co;var fo={};Object.defineProperty(fo,\"__esModule\",{value:!0}),fo.snapEdges=fo.default=void 0;var po={start:function(t){var e=t.edges;return e?(t.state.targetFields=t.state.targetFields||[[e.left?\"left\":\"right\",e.top?\"top\":\"bottom\"]],so.snapSize.start(t)):null},set:so.snapSize.set,defaults:(0,j.default)((0,ge.default)(so.snapSize.defaults),{targets:null,range:null,offset:{x:0,y:0}})};fo.snapEdges=po;var vo=(0,Ee.makeModifier)(po,\"snapEdges\");fo.default=vo;var ho={};Object.defineProperty(ho,\"__esModule\",{value:!0}),Object.defineProperty(ho,\"default\",{enumerable:!0,get:function(){return Rr.default}});var go={};Object.defineProperty(go,\"__esModule\",{value:!0}),Object.defineProperty(go,\"default\",{enumerable:!0,get:function(){return Rr.default}});var yo={};Object.defineProperty(yo,\"__esModule\",{value:!0}),yo.default=void 0;var mo={aspectRatio:Sr.default,restrictEdges:Lr.default,restrict:Xr.default,restrictRect:Gr.default,restrictSize:Jr.default,snapEdges:fo.default,snap:oo.default,snapSize:so.default,spring:ho.default,avoid:Fr.default,transform:go.default,rubberband:ro.default};yo.default=mo;var bo={};Object.defineProperty(bo,\"__esModule\",{value:!0}),bo.default=void 0;var xo={id:\"modifiers\",install:function(t){var e=t.interactStatic;for(var n in t.usePlugin(Ee.default),t.usePlugin(Or.default),e.modifiers=yo.default,yo.default){var r=yo.default[n],o=r._defaults,i=r._methods;o._methods=i,t.defaults.perAction[n]=o}}};bo.default=xo;var wo={};function _o(t){return(_o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Po(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Oo(t,e){return(Oo=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function Eo(t,e){if(e&&(\"object\"===_o(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return So(t)}function So(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function To(t){return(To=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}Object.defineProperty(wo,\"__esModule\",{value:!0}),wo.default=wo.PointerEvent=void 0;var Mo=function(t){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Oo(t,e)}(a,t);var e,n,r,o,i=(r=a,o=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,e=To(r);if(o){var n=To(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return Eo(this,t)});function a(t,e,n,r,o,s){var l;if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,a),l=i.call(this,o),Y.pointerExtend(So(l),n),n!==e&&Y.pointerExtend(So(l),e),l.timeStamp=s,l.originalEvent=n,l.type=t,l.pointerId=Y.getPointerId(e),l.pointerType=Y.getPointerType(e),l.target=r,l.currentTarget=null,\"tap\"===t){var u=o.getPointerIndex(e);l.dt=l.timeStamp-o.pointers[u].downTime;var c=l.timeStamp-o.tapTime;l.double=!!(o.prevTap&&\"doubletap\"!==o.prevTap.type&&o.prevTap.target===l.target&&c<500)}else\"doubletap\"===t&&(l.dt=e.timeStamp-o.tapTime);return l}return e=a,(n=[{key:\"_subtractOrigin\",value:function(t){var e=t.x,n=t.y;return this.pageX-=e,this.pageY-=n,this.clientX-=e,this.clientY-=n,this}},{key:\"_addOrigin\",value:function(t){var e=t.x,n=t.y;return this.pageX+=e,this.pageY+=n,this.clientX+=e,this.clientY+=n,this}},{key:\"preventDefault\",value:function(){this.originalEvent.preventDefault()}}])&&Po(e.prototype,n),Object.defineProperty(e,\"prototype\",{writable:!1}),a}($.BaseEvent);wo.PointerEvent=wo.default=Mo;var jo={};Object.defineProperty(jo,\"__esModule\",{value:!0}),jo.default=void 0;var ko={id:\"pointer-events/base\",before:[\"inertia\",\"modifiers\",\"auto-start\",\"actions\"],install:function(t){t.pointerEvents=ko,t.defaults.actions.pointerEvents=ko.defaults,(0,j.default)(t.actions.phaselessTypes,ko.types)},listeners:{\"interactions:new\":function(t){var e=t.interaction;e.prevTap=null,e.tapTime=0},\"interactions:update-pointer\":function(t){var e=t.down,n=t.pointerInfo;!e&&n.hold||(n.hold={duration:1/0,timeout:null})},\"interactions:move\":function(t,e){var n=t.interaction,r=t.pointer,o=t.event,i=t.eventTarget;t.duplicate||n.pointerIsDown&&!n.pointerWasMoved||(n.pointerIsDown&&Ao(t),Io({interaction:n,pointer:r,event:o,eventTarget:i,type:\"move\"},e))},\"interactions:down\":function(t,e){!function(t,e){for(var n=t.interaction,r=t.pointer,o=t.event,i=t.eventTarget,a=t.pointerIndex,s=n.pointers[a].hold,l=_.getPath(i),u={interaction:n,pointer:r,event:o,eventTarget:i,type:\"hold\",targets:[],path:l,node:null},c=0;c<l.length;c++){var f=l[c];u.node=f,e.fire(\"pointerEvents:collect-targets\",u)}if(u.targets.length){for(var d=1/0,p=0;p<u.targets.length;p++){var v=u.targets[p].eventable.options.holdDuration;v<d&&(d=v)}s.duration=d,s.timeout=setTimeout((function(){Io({interaction:n,eventTarget:i,pointer:r,event:o,type:\"hold\"},e)}),d)}}(t,e),Io(t,e)},\"interactions:up\":function(t,e){Ao(t),Io(t,e),function(t,e){var n=t.interaction,r=t.pointer,o=t.event,i=t.eventTarget;n.pointerWasMoved||Io({interaction:n,eventTarget:i,pointer:r,event:o,type:\"tap\"},e)}(t,e)},\"interactions:cancel\":function(t,e){Ao(t),Io(t,e)}},PointerEvent:wo.PointerEvent,fire:Io,collectEventTargets:Do,defaults:{holdDuration:600,ignoreFrom:null,allowFrom:null,origin:{x:0,y:0}},types:{down:!0,move:!0,up:!0,cancel:!0,tap:!0,doubletap:!0,hold:!0}};function Io(t,e){var n=t.interaction,r=t.pointer,o=t.event,i=t.eventTarget,a=t.type,s=t.targets,l=void 0===s?Do(t,e):s,u=new wo.PointerEvent(a,r,o,i,n,e.now());e.fire(\"pointerEvents:new\",{pointerEvent:u});for(var c={interaction:n,pointer:r,event:o,eventTarget:i,targets:l,type:a,pointerEvent:u},f=0;f<l.length;f++){var d=l[f];for(var p in d.props||{})u[p]=d.props[p];var v=(0,A.default)(d.eventable,d.node);if(u._subtractOrigin(v),u.eventable=d.eventable,u.currentTarget=d.node,d.eventable.fire(u),u._addOrigin(v),u.immediatePropagationStopped||u.propagationStopped&&f+1<l.length&&l[f+1].node!==u.currentTarget)break}if(e.fire(\"pointerEvents:fired\",c),\"tap\"===a){var h=u.double?Io({interaction:n,pointer:r,event:o,eventTarget:i,type:\"doubletap\"},e):u;n.prevTap=h,n.tapTime=h.timeStamp}return u}function Do(t,e){var n=t.interaction,r=t.pointer,o=t.event,i=t.eventTarget,a=t.type,s=n.getPointerIndex(r),l=n.pointers[s];if(\"tap\"===a&&(n.pointerWasMoved||!l||l.downTarget!==i))return[];for(var u=_.getPath(i),c={interaction:n,pointer:r,event:o,eventTarget:i,type:a,path:u,targets:[],node:null},f=0;f<u.length;f++){var d=u[f];c.node=d,e.fire(\"pointerEvents:collect-targets\",c)}return\"hold\"===a&&(c.targets=c.targets.filter((function(t){var e;return t.eventable.options.holdDuration===(null==(e=n.pointers[s])?void 0:e.hold.duration)}))),c.targets}function Ao(t){var e=t.interaction,n=t.pointerIndex,r=e.pointers[n].hold;r&&r.timeout&&(clearTimeout(r.timeout),r.timeout=null)}var Ro=ko;jo.default=Ro;var zo={};function Co(t){var e=t.interaction;e.holdIntervalHandle&&(clearInterval(e.holdIntervalHandle),e.holdIntervalHandle=null)}Object.defineProperty(zo,\"__esModule\",{value:!0}),zo.default=void 0;var Fo={id:\"pointer-events/holdRepeat\",install:function(t){t.usePlugin(jo.default);var e=t.pointerEvents;e.defaults.holdRepeatInterval=0,e.types.holdrepeat=t.actions.phaselessTypes.holdrepeat=!0},listeners:[\"move\",\"up\",\"cancel\",\"endall\"].reduce((function(t,e){return t[\"pointerEvents:\".concat(e)]=Co,t}),{\"pointerEvents:new\":function(t){var e=t.pointerEvent;\"hold\"===e.type&&(e.count=(e.count||0)+1)},\"pointerEvents:fired\":function(t,e){var n=t.interaction,r=t.pointerEvent,o=t.eventTarget,i=t.targets;if(\"hold\"===r.type&&i.length){var a=i[0].eventable.options.holdRepeatInterval;a<=0||(n.holdIntervalHandle=setTimeout((function(){e.pointerEvents.fire({interaction:n,eventTarget:o,type:\"hold\",pointer:r,event:r},e)}),a))}}})};zo.default=Fo;var Xo={};function Bo(t){return(0,j.default)(this.events.options,t),this}Object.defineProperty(Xo,\"__esModule\",{value:!0}),Xo.default=void 0;var Yo={id:\"pointer-events/interactableTargets\",install:function(t){var e=t.Interactable;e.prototype.pointerEvents=Bo;var n=e.prototype._backCompatOption;e.prototype._backCompatOption=function(t,e){var r=n.call(this,t,e);return r===this&&(this.events.options[t]=e),r}},listeners:{\"pointerEvents:collect-targets\":function(t,e){var n=t.targets,r=t.node,o=t.type,i=t.eventTarget;e.interactables.forEachMatch(r,(function(t){var e=t.events,a=e.options;e.types[o]&&e.types[o].length&&t.testIgnoreAllow(a,r,i)&&n.push({node:r,eventable:e,props:{interactable:t}})}))},\"interactable:new\":function(t){var e=t.interactable;e.events.getRect=function(t){return e.getRect(t)}},\"interactable:set\":function(t,e){var n=t.interactable,r=t.options;(0,j.default)(n.events.options,e.pointerEvents.defaults),(0,j.default)(n.events.options,r.pointerEvents||{})}}};Xo.default=Yo;var Wo={};Object.defineProperty(Wo,\"__esModule\",{value:!0}),Wo.default=void 0;var Lo={id:\"pointer-events\",install:function(t){t.usePlugin(jo),t.usePlugin(zo.default),t.usePlugin(Xo.default)}};Wo.default=Lo;var Uo={};function Vo(t){var e=t.Interactable;t.actions.phases.reflow=!0,e.prototype.reflow=function(e){return function(t,e,n){for(var r=i.default.string(t.target)?Z.from(t._context.querySelectorAll(t.target)):[t.target],o=n.window.Promise,a=o?[]:null,s=function(){var i=r[l],s=t.getRect(i);if(!s)return\"break\";var u=Z.find(n.interactions.list,(function(n){return n.interacting()&&n.interactable===t&&n.element===i&&n.prepared.name===e.name})),c=void 0;if(u)u.move(),a&&(c=u._reflowPromise||new o((function(t){u._reflowResolve=t})));else{var f=(0,k.tlbrToXywh)(s),d={page:{x:f.x,y:f.y},client:{x:f.x,y:f.y},timeStamp:n.now()},p=Y.coordsToEvent(d);c=function(t,e,n,r,o){var i=t.interactions.new({pointerType:\"reflow\"}),a={interaction:i,event:o,pointer:o,eventTarget:n,phase:\"reflow\"};i.interactable=e,i.element=n,i.prevEvent=o,i.updatePointer(o,o,n,!0),Y.setZeroCoords(i.coords.delta),(0,Bt.copyAction)(i.prepared,r),i._doPhase(a);var s=t.window.Promise,l=s?new s((function(t){i._reflowResolve=t})):void 0;return i._reflowPromise=l,i.start(r,e,n),i._interacting?(i.move(a),i.end(o)):(i.stop(),i._reflowResolve()),i.removePointer(o,o),l}(n,t,i,e,p)}a&&a.push(c)},l=0;l<r.length&&\"break\"!==s();l++);return a&&o.all(a).then((function(){return t}))}(this,e,t)}}Object.defineProperty(Uo,\"__esModule\",{value:!0}),Uo.default=void 0,Uo.install=Vo;var No={id:\"reflow\",install:Vo,listeners:{\"interactions:stop\":function(t,e){var n=t.interaction;\"reflow\"===n.pointerType&&(n._reflowResolve&&n._reflowResolve(),Z.remove(e.interactions.list,n))}}};Uo.default=No;var qo={exports:{}};function $o(t){return($o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}Object.defineProperty(qo.exports,\"__esModule\",{value:!0}),qo.exports.default=void 0,vr.default.use(se.default),vr.default.use(Ze.default),vr.default.use(Wo.default),vr.default.use(on.default),vr.default.use(bo.default),vr.default.use(ie.default),vr.default.use(Tt.default),vr.default.use(Rt.default),vr.default.use(Uo.default);var Go=vr.default;if(qo.exports.default=Go,\"object\"===$o(qo)&&qo)try{qo.exports=vr.default}catch(t){}vr.default.default=vr.default,qo=qo.exports;var Ho={exports:{}};function Ko(t){return(Ko=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}Object.defineProperty(Ho.exports,\"__esModule\",{value:!0}),Ho.exports.default=void 0;var Zo=qo.default;if(Ho.exports.default=Zo,\"object\"===Ko(Ho)&&Ho)try{Ho.exports=qo.default}catch(t){}return qo.default.default=qo.default,Ho.exports}));\n//# sourceMappingURL=interact.min.js.map\n","import type { DropEvent, InteractEvent } from '@interactjs/types/index';\nimport type { ResizeEvent } from '@interactjs/actions/resize/plugin';\nimport { KupBoxRow } from '../../components/kup-box/kup-box-declarations';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataRow,\n} from '../kup-data/kup-data-declarations';\n/**\n * HTML Attribute attached to dialogs.\n * Referenced by kup-theme.css\n */\nexport const kupDialogAttribute = 'kup-dialog';\n/**\n * CSS class attached to resizable dialogs.\n * Referenced by kup-theme.css\n */\nexport const kupDialogResizableClass = 'kup-resizable';\n/**\n * Drag & drop variables.\n */\nexport const kupDropEvent: string = 'kup-drop';\nexport const kupDragActiveAttr: string = 'kup-drag-active';\nexport const kupDragOverAttr: string = 'kup-drag-over';\nexport const kupDraggableAttr: string = 'kup-draggable';\nexport const kupDraggableCellAttr: string = 'kup-draggable-cell';\nexport const kupDraggableColumnAttr: string = 'kup-draggable-column';\nexport const kupDraggableRowAttr: string = 'kup-draggable-row';\n/**\n * Interface for drag & drop elements.\n */\nexport interface KupDraggableElement extends HTMLElement {\n kupDragDrop: KupDraggablePayload;\n}\n/**\n * Drag and drop data transfer.\n */\nexport interface KupDraggablePayload extends KupDropEventSource {\n ghostImage?: HTMLElement;\n}\n/**\n * Available effects fro dragging.\n */\nexport enum KupDragEffect {\n BADGE = 'badge',\n CLONE = 'clone',\n MOVE = 'move',\n NONE = 'none',\n}\n/**\n * Supported types of pointer events.\n */\nexport enum KupPointerEventTypes {\n DOUBLETAP = 'doubletap',\n HOLD = 'hold',\n TAP = 'tap',\n}\n/**\n * Additional callbacks to be made when the related drag event fires.\n */\nexport interface KupDragCallbacks {\n end?: (e?: InteractEvent) => void;\n move?: (e?: InteractEvent) => void;\n start?: (e?: InteractEvent) => void;\n}\n/**\n * Additional callbacks to be made when the related drop event fires.\n */\nexport interface KupDropCallbacks {\n drop?: (e?: DropEvent) => void;\n enter?: (e?: DropEvent) => void;\n leave?: (e?: DropEvent) => void;\n}\n/**\n * Additional callbacks to be made when the related resize event fires.\n */\nexport interface KupResizeCallbacks {\n move?: (e?: ResizeEvent) => void;\n}\n/**\n * Defines the additional data of the drag event.\n */\nexport type KupDragDataTransferCallback = (\n e?: InteractEvent\n) => KupDropEventSource;\nexport interface KupDragEventData {\n callback?: KupDragDataTransferCallback;\n}\n/**\n * Defines the additional data of the drop event.\n */\nexport type KupDropDataTransferCallback = (e?: DropEvent) => KupDropEventTarget;\nexport interface KupDropEventData {\n callback?: KupDropDataTransferCallback;\n dispatcher: HTMLElement;\n type: KupDropEventTypes;\n}\n/**\n * Supported types of drop event.\n */\nexport enum KupDropEventTypes {\n BOX = 'text/kup-box-drag',\n DATATABLE = 'text/kup-data-table-row-drag',\n GENERIC = 'text/generic',\n MAGICBOX = 'text/kup-magic-box-drag',\n}\n/**\n * Drop event payload.\n */\nexport interface KupDropEventPayload {\n dataType: KupDropEventTypes;\n sourceElement: KupDropEventSource;\n targetElement: KupDropEventTarget;\n}\n/**\n * Source of the drop event payload.\n */\nexport interface KupDropEventSource {\n cell?: KupDataCell;\n column?: KupDataColumn;\n id?: string;\n multiple?: boolean;\n row?: KupDataRow | KupBoxRow;\n selectedRows?: KupDataRow[] | KupBoxRow[];\n}\n/**\n * Target of the drop event payload.\n */\nexport interface KupDropEventTarget {\n id?: string;\n row?: KupDataRow | KupBoxRow;\n cell?: KupDataCell;\n column?: KupDataColumn;\n}\n","import type { ResizeEvent } from '@interactjs/actions/resize/plugin';\nimport type { InteractEvent } from '@interactjs/core/InteractEvent';\nimport type { Interaction } from '@interactjs/core/Interaction';\nimport type { ActionMap } from '@interactjs/core/scope';\nimport type {\n DraggableOptions,\n DropEvent,\n DropzoneOptions,\n ListenersArg,\n Point,\n RectResolvable,\n ResizableOptions,\n} from '@interactjs/types/index';\nimport type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport interact from 'interactjs';\nimport {\n kupDialogAttribute,\n kupDialogResizableClass,\n KupDragCallbacks,\n KupDragEffect,\n KupDragEventData,\n kupDraggableAttr,\n kupDraggableCellAttr,\n kupDraggableColumnAttr,\n KupDraggableElement,\n kupDraggableRowAttr,\n kupDragOverAttr,\n KupDropCallbacks,\n kupDropEvent,\n KupDropEventData,\n KupDropEventPayload,\n KupPointerEventTypes,\n KupResizeCallbacks,\n} from './kup-interact-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * This class handles elements as dialogs, making them resizable and movable.\n * @module KupInteract\n */\nexport class KupInteract {\n container: HTMLElement;\n defaultModalCb: (e: MouseEvent) => void = (e) => {\n e.stopPropagation();\n e.preventDefault();\n if (this.modalCb) {\n this.modalCb(e);\n this.modalCb = null;\n }\n };\n managedElements: Set<HTMLElement>;\n modalBackdrop: HTMLElement;\n modalCb: (e: MouseEvent) => unknown;\n restrictContainer: RectResolvable<\n [number, number, Interaction<keyof ActionMap>]\n >;\n zIndex: number;\n /**\n * Initializes KupInteract.\n * @param {number} zIndex - The starting z-index assigned to dialogs.\n * @param {RectResolvable<[number, number, Interaction<keyof ActionMap>]>} restrictContainer - The container setting the restriction's boundary.\n */\n constructor(\n zIndex?: number,\n restrictContainer?: RectResolvable<\n [number, number, Interaction<keyof ActionMap>]\n >\n ) {\n interact.dynamicDrop(true);\n if (this.isMobileDevice()) {\n interact.pointerMoveTolerance(100);\n }\n this.container = document.createElement('div');\n this.container.setAttribute('kup-interact', '');\n this.modalBackdrop = document.createElement('div');\n this.modalBackdrop.setAttribute('kup-modal-backdrop', '');\n this.modalBackdrop.style.zIndex = (zIndex - 1).toString();\n this.modalBackdrop.addEventListener('click', this.defaultModalCb);\n this.modalBackdrop.addEventListener('pointerdown', this.defaultModalCb);\n this.modalBackdrop.addEventListener('touchstart', this.defaultModalCb);\n this.container.appendChild(this.modalBackdrop);\n document.body.appendChild(this.container);\n this.managedElements = new Set();\n this.zIndex = zIndex ? zIndex : 905;\n this.modalBackdrop.style.zIndex = (this.zIndex - 1).toString();\n this.restrictContainer = restrictContainer ? restrictContainer : null;\n }\n /**\n * Sets up a new draggable element.\n * @param {HTMLElement} el - The draggable element.\n * @param {Partial<DraggableOptions>} options - Options of the draggable element.\n * @param {KupDragEventData} eventData - Property used to transfer data for the drop event. The callback is used to return information of the starting item - such as cell, column and row info.\n * @param {KupDragEffect} effect - Visual effect of the drag action.\n * @param {KupDragCallbacks} callbacks - Additional callbacks to invoke.\n * @see https://interactjs.io/docs/action-options/ For more options\n */\n draggable(\n el: HTMLElement,\n options?: Partial<DraggableOptions>,\n eventData?: KupDragEventData,\n effect?: KupDragEffect,\n callbacks?: KupDragCallbacks\n ) {\n el.style.touchAction = 'none';\n el.style.userSelect = 'none';\n if (!options) {\n options = {};\n }\n if (effect === undefined || effect === null) {\n effect = KupDragEffect.MOVE;\n }\n options.listeners = {\n move(e: InteractEvent) {\n if (callbacks && callbacks.move) {\n callbacks.move(e);\n }\n if (effect.toLowerCase() !== KupDragEffect.NONE) {\n const draggable = e.target as KupDraggableElement;\n const ghostImage =\n draggable.kupDragDrop &&\n draggable.kupDragDrop.ghostImage\n ? draggable.kupDragDrop.ghostImage\n : e.target;\n let x = parseFloat(ghostImage.getAttribute('data-x')) || 0;\n let y = parseFloat(ghostImage.getAttribute('data-y')) || 0;\n x = x + e.dx;\n y = y + e.dy;\n ghostImage.style.transform = `translate(${x}px, ${y}px)`;\n ghostImage.setAttribute('data-x', x.toString());\n ghostImage.setAttribute('data-y', y.toString());\n }\n },\n start(e: InteractEvent) {\n if (callbacks && callbacks.start) {\n callbacks.start(e);\n }\n const draggable = e.target as KupDraggableElement;\n const draggableDetails =\n eventData && eventData.callback\n ? eventData.callback(e)\n : {};\n draggable.kupDragDrop = draggableDetails;\n draggable.setAttribute(kupDraggableAttr, '');\n if (draggableDetails.cell) {\n draggable.setAttribute(kupDraggableCellAttr, '');\n }\n if (draggableDetails.column) {\n draggable.setAttribute(kupDraggableColumnAttr, '');\n }\n if (draggableDetails.row) {\n draggable.setAttribute(kupDraggableRowAttr, '');\n }\n let ghostImage = null;\n switch (effect) {\n case KupDragEffect.BADGE:\n ghostImage = document.createElement('kup-badge');\n if (draggable.kupDragDrop.multiple) {\n ghostImage.text = draggable.kupDragDrop.selectedRows\n ? draggable.kupDragDrop.selectedRows.length.toString()\n : '0';\n } else {\n ghostImage.text = '1';\n }\n ghostImage.style.left =\n e.clientX - ghostImage.clientWidth / 2 + 'px';\n ghostImage.style.pointerEvents = 'none';\n ghostImage.style.position = 'fixed';\n ghostImage.style.top =\n e.clientY - ghostImage.clientHeight / 2 + 'px';\n ghostImage.style.transition = 'none';\n ghostImage.style.zIndex =\n 'calc(var(--kup-navbar-zindex) + 1)';\n dom.ketchup.interact.container.appendChild(ghostImage);\n draggable.kupDragDrop.ghostImage = ghostImage;\n break;\n case KupDragEffect.CLONE:\n ghostImage = draggable.cloneNode(true) as HTMLElement;\n ghostImage.id = '';\n ghostImage.style.cursor = 'grabbing';\n ghostImage.style.height = draggable.clientHeight + 'px';\n ghostImage.style.left =\n e.clientX - draggable.clientWidth / 2 + 'px';\n ghostImage.style.margin = '0';\n ghostImage.style.opacity = '0.75';\n ghostImage.style.position = 'fixed';\n ghostImage.style.top =\n e.clientY - draggable.clientHeight / 2 + 'px';\n ghostImage.style.transform = '';\n ghostImage.style.width = draggable.clientWidth + 'px';\n ghostImage.style.zIndex =\n 'calc(var(--kup-navbar-zindex) + 1)';\n draggable.parentElement.appendChild(ghostImage);\n draggable.kupDragDrop.ghostImage = ghostImage;\n break;\n }\n },\n end(e: InteractEvent) {\n if (callbacks && callbacks.end) {\n callbacks.end(e);\n }\n const draggable = e.target as KupDraggableElement;\n const ghostImage = draggable.kupDragDrop\n ? draggable.kupDragDrop.ghostImage\n : null;\n if (ghostImage) {\n ghostImage.setAttribute('style', '');\n ghostImage.remove();\n }\n draggable.removeAttribute(kupDraggableAttr);\n draggable.removeAttribute(kupDraggableCellAttr);\n draggable.removeAttribute(kupDraggableColumnAttr);\n draggable.removeAttribute(kupDraggableRowAttr);\n },\n };\n interact(el).draggable(options);\n this.managedElements.add(el);\n }\n /**\n * Sets up a new dropzone.\n * @param {HTMLElement} el - The dropzone element.\n * @param {DropzoneOptions} options - Options of the dropzone.\n * @param {KupDropEventData} eventData - Argument used to transfer data for the drop event. The callback is used to return information of the receiving item - such as cell, column and row info.\n * @param {KupDropCallbacks} callbacks - Additional callbacks to invoke.\n * @see https://interactjs.io/docs/action-options/ For more options\n */\n dropzone(\n el: HTMLElement,\n options?: DropzoneOptions,\n eventData?: KupDropEventData,\n callbacks?: KupDropCallbacks\n ) {\n if (!options) {\n options = {};\n }\n options.listeners = {\n drop(e: DropEvent) {\n if (callbacks && callbacks.drop) {\n callbacks.drop(e);\n }\n if (eventData) {\n const draggableDetails =\n (e.relatedTarget as KupDraggableElement).kupDragDrop ||\n {};\n const dropzoneDetails = eventData.callback\n ? eventData.callback()\n : {};\n const ketchupDropEvent =\n new CustomEvent<KupDropEventPayload>(kupDropEvent, {\n bubbles: true,\n cancelable: true,\n detail: {\n dataType: eventData.type,\n sourceElement: {\n id: draggableDetails.id\n ? draggableDetails.id\n : '',\n row: draggableDetails.row\n ? draggableDetails.row\n : null,\n selectedRows: draggableDetails.selectedRows\n ? draggableDetails.selectedRows\n : null,\n cell: draggableDetails.cell\n ? draggableDetails.cell\n : null,\n column: draggableDetails.column\n ? draggableDetails.column\n : null,\n },\n targetElement: {\n id: dropzoneDetails.id\n ? dropzoneDetails.id\n : '',\n row: dropzoneDetails.row\n ? dropzoneDetails.row\n : null,\n cell: dropzoneDetails.cell\n ? dropzoneDetails.cell\n : null,\n column: dropzoneDetails.column\n ? dropzoneDetails.column\n : null,\n },\n },\n });\n eventData.dispatcher.dispatchEvent(ketchupDropEvent);\n }\n (e.currentTarget as HTMLElement).removeAttribute(\n kupDragOverAttr\n );\n },\n enter(e: DropEvent) {\n if (callbacks && callbacks.enter) {\n callbacks.enter(e);\n }\n (e.currentTarget as HTMLElement).setAttribute(\n kupDragOverAttr,\n ''\n );\n },\n leave(e: DropEvent) {\n if (callbacks && callbacks.leave) {\n callbacks.leave(e);\n }\n (e.currentTarget as HTMLElement).removeAttribute(\n kupDragOverAttr\n );\n },\n };\n interact(el).dropzone(options);\n this.managedElements.add(el);\n }\n /**\n * Tests whether the current device is mobile or not.\n * @returns {boolean} Returns true when it's a mobile device\n */\n isMobileDevice(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n }\n /**\n * Sets up a new resizable element.\n * @param {HTMLElement} el - The resizable element.\n * @param {Partial<ResizableOptions>} options - Options of the resize action.\n * @param {KupResizeCallbacks} callbacks - Additional callbacks to invoke.\n * @param {boolean} moveOnResize - When true, the element will be moved when resizing in order to keep its position.\n * @param {boolean} autoResize - When true, the element will be automatically resized (usually the behavior is specified in a callback).\n * @see https://interactjs.io/docs/action-options/ For more options\n */\n resizable(\n el: HTMLElement,\n options?: Partial<ResizableOptions>,\n callbacks?: KupResizeCallbacks,\n moveOnResize?: boolean,\n autoResize?: boolean\n ) {\n if (!options || !options.edges) {\n options = {\n ...options,\n edges: {\n left: true,\n right: true,\n bottom: true,\n top: true,\n },\n };\n }\n options.listeners = {\n move(e: ResizeEvent) {\n if (callbacks && callbacks.move) {\n callbacks.move(e);\n }\n if (autoResize) {\n el.style.width = e.rect.width + 'px';\n el.style.height = e.rect.height + 'px';\n }\n if (moveOnResize) {\n const el = e.target as HTMLElement;\n const oldTransform = e.target.style.transform;\n let x = parseFloat(el.getAttribute('data-x')) || 0;\n let y = parseFloat(el.getAttribute('data-y')) || 0;\n x += e.deltaRect.left;\n y += e.deltaRect.top;\n el.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n if (\n dom.ketchup.interact.isInViewport(\n el,\n oldTransform,\n e.delta\n )\n ) {\n el.setAttribute('data-x', x.toString());\n el.setAttribute('data-y', y.toString());\n }\n }\n },\n };\n interact(el).resizable(options);\n this.managedElements.add(el);\n }\n /**\n * Adds a new interact.js event listener to the given argument.\n * @param {HTMLElement} el - The element on which the event listener will be added.\n * @param {KupPointerEventTypes} event - Name of the event.\n * @param {KupResizeCallbacks} callback - Callback to invoke when the event fires.\n */\n on(el: HTMLElement, event: KupPointerEventTypes, callback: ListenersArg) {\n interact(el).on(event, callback);\n this.managedElements.add(el);\n }\n /**\n * This method checks whether the element is breaking the viewport boundaries.\n * @param {HTMLElement} el - Element to check.\n * @param {string} oldTransform - Previously set transform, used to rollback in case element breaks viewport boundaries.\n * @param {Point} delta - X and Y delta values of the last movement.\n */\n isInViewport(el: HTMLElement, oldTransform: string, delta: Point) {\n const style = window.getComputedStyle(el);\n const isFixed = !!(style.position === 'fixed');\n const rect = el.getBoundingClientRect();\n if (\n rect.left < 0 ||\n rect.top < 0 ||\n (isFixed && rect.right > window.innerWidth && delta.x >= 0) ||\n (isFixed && rect.bottom > window.innerHeight && delta.y >= 0)\n ) {\n el.style.transform = oldTransform;\n return false;\n }\n return true;\n }\n /**\n * This method gives the element dialog-like features, by activating moving on drag and, optionally, the resize.\n * @param {HTMLElement} el - Dialog element.\n * @param {HTMLElement} handleEl - Element that must be dragged in order to trigger movement. When not provided, dragging anywhere on \"el\" will move it.\n * @param {boolean} unresizable - When true, the dialog can't be resized.\n * @param {RectResolvable<[number, number, Interaction<keyof ActionMap>]>} restrictContainer - When present, it will set the constraint of \"el\": it can't be moved outside this container.\n */\n dialogify(\n el: HTMLElement,\n handleEl?: HTMLElement,\n unresizable?: boolean,\n restrictContainer?: RectResolvable<\n [number, number, Interaction<keyof ActionMap>]\n >\n ): void {\n el.setAttribute(kupDialogAttribute, '');\n el.style.zIndex = (this.zIndex++).toString();\n const callbacks = {\n start(e: InteractEvent) {\n const el = e.currentTarget as HTMLElement;\n el.style.zIndex = (dom.ketchup.interact.zIndex++).toString();\n },\n };\n this.draggable(\n el,\n {\n allowFrom: handleEl ? handleEl : null,\n modifiers: [\n interact.modifiers.restrictRect({\n restriction: restrictContainer\n ? restrictContainer\n : dom.ketchup.interact.restrictContainer,\n endOnly: true,\n }),\n ],\n },\n null,\n KupDragEffect.MOVE,\n callbacks\n );\n if (!unresizable) {\n el.classList.add(kupDialogResizableClass);\n this.resizable(\n el,\n {\n edges: {\n left: true,\n right: true,\n bottom: true,\n top: false,\n },\n modifiers: [\n interact.modifiers.restrictSize({\n min: { width: 100, height: 100 },\n }),\n ],\n },\n null,\n true,\n true\n );\n }\n }\n /**\n * Hides the modal's backdrop.\n */\n hideModalBackdrop(): void {\n this.modalBackdrop.classList.remove('visible');\n this.modalCb = null;\n }\n /**\n * Displays the modal's backdrop.\n */\n showModalBackdrop(\n cb?: (e: MouseEvent) => unknown,\n responsive = false\n ): void {\n this.modalBackdrop.classList.add('visible');\n if (responsive) {\n this.modalBackdrop.classList.add('responsive');\n }\n if (cb) {\n this.modalCb = cb;\n }\n }\n /**\n * Removes all event listeners from the elements in the array.\n * @param {HTMLElement[]} elements - Elements to handle.\n */\n unregister(elements: HTMLElement[]): void {\n if (this.managedElements) {\n for (let index = 0; index < elements.length; index++) {\n this.managedElements.delete(elements[index]);\n interact(elements[index]).unset();\n }\n }\n }\n /**\n * Checks whether an element is currently registered or not.\n * @param {HTMLElement} el - Element to test.\n * @returns {boolean} True if the element was registered.\n */\n isRegistered(el: HTMLElement): boolean {\n return !this.managedElements ? false : this.managedElements.has(el);\n }\n}\n","import type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport * as languagesJson from './languages.json';\nimport { GenericObject, KupComponent } from '../../types/GenericTypes';\nimport { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport {\n KupLanguageDecode,\n KupLanguageDefaults,\n KupLanguageElement,\n KupLanguageJSON,\n KupLanguageKey,\n} from './kup-language-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Handles the translation to different languages.\n * @module KupLanguage\n */\nexport class KupLanguage {\n list: KupLanguageJSON;\n managedComponents: Set<KupComponent>;\n name: string;\n /**\n * Initializes KupLanguage.\n * @param {KupLanguageJSON} list - Overrides the default languages.json.\n * @param {string} name - Starting language. Can be a combination of language and variant (separated by \"_\").\n */\n constructor(list?: KupLanguageJSON, name?: string) {\n this.list = list ? list : languagesJson['default'];\n this.managedComponents = new Set();\n this.name = name ? name : KupLanguageDefaults.en;\n }\n /**\n * Translates the string to the given language.\n * When translation fails, the key will be displayed in place of the string - this way it will be easier to correct missing string <-> key bounds.\n * @param {KupLanguageKey} key - Key of a string to be translated.\n * @param {string} language - Language to translate the string to. When not provided, KupLanguage current language will be used.\n * @returns {string} Translated string or initial string (when translation failed).\n */\n translate(key: KupLanguageKey, language?: string): string {\n const decodedLanguage: KupLanguageDecode = this.decodeLanguage(\n language ? language : this.name\n );\n const name: string = decodedLanguage.language;\n const variantName: string = decodedLanguage.variant;\n try {\n let translatedString: string = null;\n if (variantName) {\n const variants: GenericObject = this.list[name].variants;\n if (\n variants &&\n variants[variantName] &&\n variants[variantName].keys[key]\n ) {\n translatedString = variants[variantName].keys[key];\n } else {\n translatedString = this.list[name].keys[key];\n }\n } else {\n translatedString = this.list[name].keys[key];\n }\n if (translatedString) {\n return translatedString;\n } else {\n return invalidKey(key);\n }\n } catch (error) {\n return invalidKey(key);\n }\n function invalidKey(key: KupLanguageKey) {\n dom.ketchup.debug.logMessage(\n 'kup-language',\n 'Invalid translation for key (' + key + ')!',\n KupDebugCategory.WARNING\n );\n return key;\n }\n }\n /**\n * Changes the current Ketchup language to the one provided. If the language argument contains a \"_\", a combo of language and variant will be assumed.\n * @param {string} language - The new language. If not present in this.list, this function will keep the previous language.\n */\n set(language: string): void {\n if (language && typeof language === 'string') {\n language = language.toLowerCase();\n } else {\n dom.ketchup.debug.logMessage(\n 'kup-language',\n \"Couldn't set language, invalid string received (\" +\n language +\n ')!',\n KupDebugCategory.WARNING\n );\n return;\n }\n const decodedLanguage: KupLanguageDecode =\n this.decodeLanguage(language);\n const dLanguage: string = decodedLanguage.language;\n const dVariant: string = decodedLanguage.variant;\n if (this.list[dLanguage]) {\n if (dVariant && !this.list[dLanguage].variants[dVariant]) {\n dom.ketchup.debug.logMessage(\n 'kup-language',\n 'Variant not found (' + dVariant + ')!',\n KupDebugCategory.WARNING\n );\n return;\n }\n } else {\n dom.ketchup.debug.logMessage(\n 'kup-language',\n 'Language not found (' + dLanguage + ')!',\n KupDebugCategory.WARNING\n );\n return;\n }\n this.name = language;\n this.managedComponents.forEach(function (comp) {\n if (comp.isConnected) {\n comp.refresh();\n }\n });\n document.dispatchEvent(new CustomEvent('kup-language-change'));\n }\n /**\n * Checks whether the language is a combination of main language and variant (separated by \"_\"), returning them splitted in an object.\n * @param {string} language - Language to check.\n * @returns {KupLanguageDecode} Object containing language and variant.\n */\n decodeLanguage(language: string): KupLanguageDecode {\n const result: KupLanguageDecode = {\n language: null,\n variant: null,\n };\n const separator: number = language.indexOf('_');\n if (separator > -1) {\n result.variant = language.substring(separator + 1);\n result.language = language.substring(0, separator);\n } else {\n result.language = language;\n }\n return result;\n }\n /**\n * Gets the name of available languages and variants.\n * @returns {Array<string>} Array of languages' names.\n */\n getLanguages(): Array<string> {\n const languages: Array<string> = [];\n for (var key in this.list) {\n if (this.list.hasOwnProperty(key)) {\n const language: KupLanguageElement = this.list[key];\n languages.push(key);\n for (const variantKey in language.variants) {\n languages.push(key + '_' + variantKey);\n }\n }\n }\n return languages;\n }\n /**\n * Gets the BCP47 language code of the specified language.\n * @param {string} language - Language to check.\n * @returns {string} BCP47 code\n */\n getBCP47(language: string = this.name?.split('_')[0]): string {\n const bcp47Map: Record<KupLanguageDefaults, string> = {\n chinese: 'zh-CN',\n english: 'en-US',\n spanish: 'es-ES',\n italian: 'it-IT',\n french: 'fr-FR',\n polish: 'pl-PL',\n russian: 'ru-RU',\n };\n return bcp47Map[language];\n }\n /**\n * Registers a KupComponent in KupLanguage, in order to be automatically refreshed whenever the language changes.\n * @param {any} component - The component calling this function.\n */\n register(component: any): void {\n this.managedComponents.add(\n component.rootElement ? component.rootElement : component\n );\n }\n /**\n * Unregisters a KupComponent, so it won't be refreshed when the language changes.\n *\n * @param {any} component - The component calling this function.\n */\n unregister(component: any): void {\n if (this.managedComponents) {\n this.managedComponents.delete(\n component.rootElement ? component.rootElement : component\n );\n }\n }\n}\n","import type { Dayjs } from 'dayjs';\nimport type { GenericObject } from '../../types/GenericTypes';\nimport type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport type { KupObj, KupObjectsJSON } from './kup-objects-declarations';\nimport * as objJson from './obj.json';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Handles objects definition and validation.\n * @module KupObjects\n */\nexport class KupObjects {\n list: KupObjectsJSON;\n /**\n * Initializes KupObjects.\n * @param {KupObjectsJSON} list - Overrides the default obj.json.\n */\n constructor(list?: KupObjectsJSON) {\n this.list = list ? list : objJson['default'];\n }\n /**\n * Checks whether the object can automatically derive columns.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when columns can be automatically derived from the object.\n */\n canHaveAutomaticDerivedColumn(obj: KupObj): boolean {\n if (!this.canObjHaveExtraColumns(obj)) {\n return false;\n }\n return (\n !this.isNumber(obj) &&\n !this.isTime(obj) &&\n !this.isTimestamp(obj) &&\n !this.isPercentage(obj)\n );\n }\n\n /**\n * Checks whether the objects can have extra columns or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object has extra columns.\n */\n canObjsHaveExtraColumns(objs: KupObj[]): boolean {\n if (!objs) return false;\n let result: boolean = false;\n for (let i = 0; i < objs.length; i++) {\n result = result || this.canObjHaveExtraColumns(objs[i]);\n }\n return result;\n }\n\n /**\n * Checks whether the object can have extra columns or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object has extra columns.\n */\n canObjHaveExtraColumns(obj: KupObj): boolean {\n if (this.isEmptyKupObj(obj)) {\n return false;\n }\n\n if ((obj.t as string).trim() == '**') {\n return false;\n }\n return (\n !this.isBar(obj) &&\n !this.isButton(obj) &&\n !this.isCheckbox(obj) &&\n !this.isIcon(obj) &&\n !this.isImage(obj) &&\n !this.isLink(obj) &&\n !this.isProgressBar(obj) &&\n !this.isRadio(obj) &&\n !this.isVoCodver(obj) &&\n !this.isChart(obj)\n );\n }\n\n /**\n * Checks whether the object represents a bar or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a bar.\n */\n isBar(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J4' === obj.t && 'BAR' === obj.p;\n }\n /**\n * Checks whether the object represents a button or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a button.\n */\n isButton(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J4' === obj.t && 'BTN' === obj.p;\n }\n /**\n * Checks whether the object represents a chart or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a chart.\n */\n isChart(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J4' === obj.t && obj.p.toLocaleUpperCase().startsWith('GRA_');\n }\n /**\n * Checks whether the object represents a checkbox or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a checkbox.\n */\n isCheckbox(obj: KupObj): boolean {\n if (!obj) return false;\n return 'V2' === obj.t && 'SI/NO' === obj.p.toUpperCase();\n }\n /**\n * Checks whether the object represents a color or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a color.\n */\n isColor(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J1' === obj.t && 'COL' === obj.p;\n }\n /**\n * Checks whether the object represents a date or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a date.\n */\n isDate(obj: KupObj): boolean {\n if (!obj) return false;\n return 'D8' === obj.t;\n }\n /**\n * Checks whether the object represents an icon or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is an icon.\n */\n isIcon(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J4' === obj.t && 'ICO' === obj.p;\n }\n /**\n * Checks whether the object represents an image or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is an image.\n */\n isImage(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J4' === obj.t && 'IMG' === obj.p;\n }\n /**\n * Checks whether the object represents an object list or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is an object list.\n */\n isKupObjList(obj: KupObj): boolean {\n if (!obj) return false;\n return 'JL' === obj.t;\n }\n /**\n * Checks whether the object represents a link or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a link.\n */\n isLink(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J1' === obj.t && 'URL' === obj.p;\n }\n /**\n * Checks whether the object represents a number or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a number.\n */\n isNumber(obj: KupObj): boolean {\n if (!obj) return false;\n return 'NR' === obj.t || 'NP' === obj.t;\n }\n /**\n * Checks whether the object represents a positive number or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a positive number.\n */\n isPositiveNumber(obj: KupObj): boolean {\n if (!obj) return false;\n return 'NP' === obj.t;\n }\n /**\n * Checks whether the object represents a password or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a password.\n */\n isPassword(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J1' === obj.t && 'PWD' === obj.p;\n }\n /**\n * Checks whether the object represents a percentage or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a percentage.\n */\n isPercentage(obj: KupObj): boolean {\n if (!obj) return false;\n return 'NRP' === obj.t + obj.p;\n }\n /**\n * Checks whether the object represents a progress bar or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a progress bar.\n */\n isProgressBar(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J4' === obj.t && 'PGB' === obj.p;\n }\n /**\n * Checks whether the object represents a radio button or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a radio button.\n */\n isRadio(obj: KupObj): boolean {\n if (!obj) return false;\n return 'V2' === obj.t && 'RADIO' === obj.p;\n }\n /**\n * Checks whether the object can be identifiable as a string.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object can be considered as a string.\n */\n isStringObject(obj: any): boolean {\n if (!obj) return true;\n\n return (\n !this.isVoCodver(obj) &&\n !this.isIcon(obj) &&\n !this.isImage(obj) &&\n !this.isCheckbox(obj) &&\n !this.isRadio(obj) &&\n !this.isChart(obj)\n );\n }\n /**\n * Checks whether the object represents a switch or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a switch.\n */\n isSwitch(obj: KupObj): boolean {\n if (!obj) return false;\n return 'V2' === obj.t && 'ONOFF' === obj.p;\n }\n /**\n * Checks whether the object represents a text field or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a text field.\n */\n isTextField(obj: KupObj): boolean {\n if (!obj) return false;\n return 'J4' === obj.t && 'TEXTFIELD' === obj.p;\n }\n /**\n * Checks whether the object represents a time or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a time.\n */\n isTime(obj: KupObj): boolean {\n if (!obj) return false;\n return 'I1' === obj.t || 'I2' === obj.t;\n }\n /**\n * Checks whether the object represents a timestamp or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a timestamp.\n */\n isTimestamp(obj: KupObj): boolean {\n if (!obj) return false;\n return 'I3' === obj.t && '2' === obj.p;\n }\n /**\n * Checks whether the object represents a time and handles seconds or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a time and handles seconds.\n */\n isTimeWithSeconds(obj: KupObj): boolean {\n if (!this.isTime(obj)) {\n return false;\n }\n return '2' === obj.p;\n }\n /**\n * Checks whether the object represents a verb or not.\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is a verb.\n */\n isVoCodver(obj: KupObj): boolean {\n if (!obj) return false;\n return 'VO' === obj.t && 'COD_VER' === obj.p;\n }\n /**\n * Checks whether the object is null or empty\n * @param {KupObj} obj - Object to check.\n * @returns {boolean} True when the object is null or empty.\n */\n isEmptyKupObj(obj: KupObj): boolean {\n if (this.isEmptyJsObject(obj)) {\n return true;\n }\n return (\n (!obj.t || obj.t.trim() == '') &&\n (!obj.p || obj.p.trim() == '') &&\n (!obj.k || obj.k.trim() == '')\n );\n }\n /**\n * Checks whether the arguments have the same object or not.\n * @param {KupObj[]} objs - Array of KupObj.\n * @returns {boolean} True when it's the same object.\n */\n isSameKupObj(objs: KupObj[]): boolean {\n return objs.every((obj, _, array) => {\n if (!this.isEmptyKupObj(obj)) {\n return obj.t == array[0].t && obj.p == array[0].p;\n } else {\n return false;\n }\n });\n }\n /**\n * Parses a date depending on the object's type.\n * @param {KupObj} obj - Object to check.\n * @returns {Dayjs} Dayjs object.\n */\n parseDate(obj: KupObj): Dayjs {\n if (obj.t === 'D8' && obj.p === '*DMYY') {\n return dom.ketchup.dates.toDayjs(obj.k, 'DDMMYYYY');\n }\n return dom.ketchup.dates.toDayjs(obj.k);\n }\n /**\n * Check whether two JS objects are deeply equal. When the arguments aren't objects, they are tested directly for equity.\n * @param {GenericObject} object1 - First object to test.\n * @param {GenericObject} object2 - Second object to test.\n * @returns {boolean} True if the objects are equal.\n * @see https://dmitripavlutin.com/how-to-compare-objects-in-javascript/#4-deep-equality\n */\n deepEqual(object1: any, object2: any): boolean {\n if (!(this.isJsObject(object1) && this.isJsObject(object2))) {\n return object1 === object2;\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n const val1 = object1[key];\n const val2 = object2[key];\n const areObjects = this.isJsObject(val1) && this.isJsObject(val2);\n if (\n (areObjects && !this.deepEqual(val1, val2)) ||\n (!areObjects && val1 !== val2)\n ) {\n return false;\n }\n }\n return true;\n }\n /**\n * Check whether the argument is a JavaScript object.\n * @param {GenericObject} object - Object to test.\n * @returns {boolean} True if the argument is a JavaScript object.\n * @see https://dmitripavlutin.com/how-to-compare-objects-in-javascript/#4-deep-equality\n */\n isJsObject(object: any): boolean {\n return object != null && typeof object === 'object';\n }\n /**\n * Check whether the object is empty or not.\n * @param {GenericObject} object - Object to check.\n * @returns {boolean} True if the object is empty.\n */\n isEmptyJsObject(obj: GenericObject): boolean {\n return (\n !obj ||\n obj === null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object)\n );\n }\n}\n","/**\n * Element scrollable on mouse over.\n */\nexport interface KupScrollOnHoverElement extends HTMLElement {\n scrollOnHover: {\n active: boolean;\n children: NodeListOf<HTMLElement>;\n percentages: KupScrollOnHoverPercentages;\n rect: DOMRect;\n step?: number;\n vertical: boolean;\n x: number;\n y: number;\n };\n}\nexport interface KupScrollOnHoverPercentages {\n back: number;\n forward: number;\n}\n/**\n * The direction to which ScollableElement can be scrolled.\n */\nexport enum ScrollOnHoverDirection {\n BOTTOM = 'bottom',\n LEFT = 'left',\n RIGHT = 'right',\n TOP = 'top',\n}\n","import type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport {\n KupScrollOnHoverElement,\n KupScrollOnHoverPercentages,\n ScrollOnHoverDirection,\n} from './kup-scroll-on-hover-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Lets the user scroll an element's overflow by hovering with the mouse on its left/right edge.\n * @module KupScrollOnHover\n */\nexport class KupScrollOnHover {\n container: HTMLElement;\n delay: number;\n managedElements: Set<KupScrollOnHoverElement>;\n step: number;\n #arrowsContainer: HTMLElement;\n #leftArrows: HTMLElement[];\n #rightArrows: HTMLElement[];\n #scrollEvent: (event: Event) => void;\n #mousemoveEvent: (event: MouseEvent) => Promise<void>;\n #mouseleaveEvent: (event: MouseEvent) => Promise<void>;\n #rAF: number;\n #timeout: ReturnType<typeof setTimeout>;\n /**\n * Initializes KupScrollOnHover.\n * @param {number} delay - Sets the time in milliseconds before the scrolling starts when mouse-hovering.\n * @param {number} step - The amount in pixels for each scroll recursion.\n */\n constructor(delay?: number, step?: number) {\n this.delay = delay ? delay : 500;\n this.managedElements = new Set();\n this.step = step ? step : 50;\n this.#mouseleaveEvent = (event: MouseEvent) =>\n this.stop(event.target as KupScrollOnHoverElement);\n this.#mousemoveEvent = (event: MouseEvent) => this.start(event);\n this.#rAF = null;\n this.#scrollEvent = (event: Event) =>\n this.updateChildren(event.target as KupScrollOnHoverElement);\n this.#timeout = null;\n }\n /**\n * Initializes the left and right arrow icons.\n */\n #initArrows() {\n this.#arrowsContainer = document.createElement('div');\n this.#leftArrows = [];\n this.#rightArrows = [];\n this.#arrowsContainer.id = 'kup-scrolling-arrows';\n for (let index = 1; index < 4; index++) {\n const arrow: HTMLElement = document.createElement('div');\n arrow.setAttribute(\n 'class',\n 'kup-left-scrolling-arrow kup-arrow-' + index\n );\n this.#leftArrows.push(arrow);\n }\n for (let index = 1; index < 4; index++) {\n const arrow: HTMLElement = document.createElement('div');\n arrow.setAttribute(\n 'class',\n 'kup-right-scrolling-arrow kup-arrow-' + index\n );\n this.#rightArrows.push(arrow);\n }\n this.#arrowsContainer.append(\n this.#leftArrows[2],\n this.#leftArrows[1],\n this.#leftArrows[0],\n this.#rightArrows[0],\n this.#rightArrows[1],\n this.#rightArrows[2]\n );\n this.container = document.createElement('div');\n this.container.setAttribute('kup-scroll-on-hover', '');\n this.container.appendChild(this.#arrowsContainer);\n document.body.appendChild(this.container);\n }\n /**\n * Watches the given element in order to trigger the scroll on hover when conditions are met.\n * Children nodes with the \"hover-scrolling-child\" will be watched and scrolled when el scrolls.\n * @param {KupScrollOnHoverElement} el - Element to watch.\n * @param {boolean} vertical - Enables vertical scroll.\n * @param {KupScrollOnHoverPercentages} percentages - Sets how big is the area in which the scroll is enabled.\n * @param {number} step - The amount in pixels for each scroll recursion.\n */\n register(\n el: KupScrollOnHoverElement,\n vertical?: boolean,\n percentages?: KupScrollOnHoverPercentages,\n step?: number\n ): void {\n if (!this.#arrowsContainer) {\n this.#initArrows();\n }\n el.style.overflowX = 'auto';\n el.scrollOnHover = {\n active: false,\n children: el.querySelectorAll('.hover-scrolling-child'),\n percentages: percentages\n ? percentages\n : { back: 0.1, forward: 0.9 },\n rect: null,\n step: step,\n vertical: vertical || null,\n x: 0,\n y: 0,\n };\n if (el.scrollOnHover.children) {\n el.addEventListener('scroll', this.#scrollEvent);\n }\n el.addEventListener('mousemove', this.#mousemoveEvent);\n el.addEventListener('mouseleave', this.#mouseleaveEvent);\n this.managedElements.add(el);\n }\n /**\n * Removes the given element from ScrollOnHover watchlist.\n * @param {KupScrollOnHoverElement} el - Element to unregister.\n */\n unregister(el: KupScrollOnHoverElement): void {\n if (el) {\n el.removeEventListener('scroll', this.#scrollEvent);\n el.removeEventListener('mousemove', this.#mousemoveEvent);\n el.removeEventListener('mouseleave', this.#mouseleaveEvent);\n if (this.managedElements) {\n this.managedElements.delete(el);\n }\n }\n }\n /**\n * Returns whether an element was previously registered or not.\n * @param {KupScrollOnHoverElement} el - Element to test.\n * @returns {boolean} True if the element was registered.\n */\n isRegistered(el: KupScrollOnHoverElement): boolean {\n return !this.managedElements ? false : this.managedElements.has(el);\n }\n /**\n * When called, this function prepares the class for the scrolling process.\n * @param {MouseEvent} event - The starter event, which should be a MouseMove event.\n */\n async start(event: MouseEvent): Promise<void> {\n const el: KupScrollOnHoverElement =\n event.currentTarget as KupScrollOnHoverElement;\n el.scrollOnHover.rect = el.getBoundingClientRect();\n el.scrollOnHover.x = event.clientX;\n el.scrollOnHover.y = event.clientY;\n this.#arrowsContainer.style.left = event.clientX + 'px';\n this.#arrowsContainer.style.top = event.clientY + 'px';\n if (el.scrollOnHover.active || this.#timeout) {\n return;\n }\n let trueHeight: number = el.clientHeight;\n if (trueHeight === 0) {\n trueHeight = el.offsetHeight;\n }\n let trueWidth: number = el.clientWidth;\n if (trueWidth === 0) {\n trueWidth = el.offsetWidth;\n }\n if (el.scrollWidth > trueWidth + 10) {\n if (trueWidth !== 0 && !el.scrollOnHover.active) {\n const percRight: number =\n trueWidth - trueWidth * el.scrollOnHover.percentages.back;\n const percLeft: number =\n trueWidth -\n trueWidth * el.scrollOnHover.percentages.forward;\n const elOffset: number =\n el.scrollOnHover.x - el.scrollOnHover.rect.left;\n const maxScrollLeft: number = el.scrollWidth - trueWidth;\n const direction: ScrollOnHoverDirection =\n elOffset < percLeft && el.scrollLeft !== 0\n ? ScrollOnHoverDirection.LEFT\n : elOffset > percRight &&\n el.scrollLeft !== maxScrollLeft\n ? ScrollOnHoverDirection.RIGHT\n : null;\n if (direction) {\n for (let i = 0; i < 3; i++) {\n if (direction === ScrollOnHoverDirection.LEFT) {\n this.#leftArrows[i].classList.add('kup-activated');\n } else {\n this.#rightArrows[i].classList.add('kup-activated');\n }\n }\n this.#timeout = setTimeout(() => {\n el.scrollOnHover.active = true;\n this.#rAF = requestAnimationFrame(function () {\n dom.ketchup.scrollOnHover.run(\n el,\n maxScrollLeft,\n percRight,\n percLeft,\n direction\n );\n });\n }, this.delay);\n }\n }\n }\n if (el.scrollOnHover.vertical && el.scrollHeight > trueHeight + 10) {\n if (trueHeight !== 0 && !el.scrollOnHover.active) {\n const percBottom: number =\n trueHeight - trueHeight * el.scrollOnHover.percentages.back;\n const percTop: number =\n trueHeight -\n trueHeight * el.scrollOnHover.percentages.forward;\n const elOffset: number =\n el.scrollOnHover.y - el.scrollOnHover.rect.top;\n const maxScrollTop: number = el.scrollHeight - trueHeight;\n const direction: ScrollOnHoverDirection =\n elOffset < percTop && el.scrollTop !== 0\n ? ScrollOnHoverDirection.TOP\n : elOffset > percBottom && el.scrollTop !== maxScrollTop\n ? ScrollOnHoverDirection.BOTTOM\n : null;\n if (direction) {\n this.#timeout = setTimeout(() => {\n el.scrollOnHover.active = true;\n this.#rAF = requestAnimationFrame(function () {\n dom.ketchup.scrollOnHover.run(\n el,\n maxScrollTop,\n percBottom,\n percTop,\n direction\n );\n });\n }, this.delay);\n }\n }\n }\n }\n /**\n * When called, this function stops the scrolling process.\n * @param {KupScrollOnHoverElement} el - The scrolled element.\n */\n async stop(el: KupScrollOnHoverElement): Promise<void> {\n el.scrollOnHover.active = false;\n cancelAnimationFrame(this.#rAF);\n clearTimeout(this.#timeout);\n this.#timeout = null;\n for (let i = 0; i < this.#leftArrows.length; i++) {\n this.#leftArrows[i].classList.remove('kup-activated');\n this.#leftArrows[i].classList.remove('kup-animated');\n }\n for (let i = 0; i < this.#rightArrows.length; i++) {\n this.#rightArrows[i].classList.remove('kup-activated');\n this.#rightArrows[i].classList.remove('kup-animated');\n }\n }\n /**\n * The actual recursive scroll function.\n * @param {KupScrollOnHoverElement} el - The scrolled element.\n * @param {number} maxScrollLeft - Left coordinates to which the recursiveness must be stopped.\n * @param {number} percForward - Range of the right (or bottom) area.\n * @param {number} percBack - Range of the left (or top) scrollable area.\n * @param {ScrollOnHoverDirection} direction - Direction of the scroll.\n */\n run(\n el: KupScrollOnHoverElement,\n maxScrollLeft: number,\n percForward: number,\n percBack: number,\n direction: ScrollOnHoverDirection\n ): void {\n if (!el.scrollOnHover.active) {\n this.stop(el);\n return;\n }\n let offset: number = 0;\n switch (direction) {\n case ScrollOnHoverDirection.BOTTOM:\n case ScrollOnHoverDirection.TOP: {\n offset = el.scrollOnHover.y - el.scrollOnHover.rect.top;\n if (offset > percBack && offset < percForward) {\n this.stop(el);\n return;\n }\n break;\n }\n case ScrollOnHoverDirection.LEFT:\n case ScrollOnHoverDirection.RIGHT: {\n offset = el.scrollOnHover.x - el.scrollOnHover.rect.left;\n if (offset > percBack && offset < percForward) {\n this.stop(el);\n return;\n }\n break;\n }\n }\n if (\n direction === ScrollOnHoverDirection.RIGHT &&\n percForward > offset\n ) {\n this.stop(el);\n return;\n }\n if (direction === ScrollOnHoverDirection.LEFT && percBack < offset) {\n this.stop(el);\n return;\n }\n if (direction === ScrollOnHoverDirection.TOP && percBack < offset) {\n this.stop(el);\n return;\n }\n if (\n direction === ScrollOnHoverDirection.BOTTOM &&\n percForward > offset\n ) {\n this.stop(el);\n return;\n }\n if (el.scrollOnHover.children) {\n this.updateChildren(el);\n }\n let arrow: HTMLElement[];\n switch (direction) {\n case ScrollOnHoverDirection.BOTTOM: {\n arrow = [];\n if (el.scrollTop === maxScrollLeft) {\n this.stop(el);\n return;\n }\n el.scrollTop += el.scrollOnHover.step\n ? el.scrollOnHover.step\n : this.step;\n break;\n }\n case ScrollOnHoverDirection.LEFT: {\n arrow = this.#leftArrows;\n if (el.scrollLeft === 0) {\n this.stop(el);\n return;\n }\n el.scrollLeft -= el.scrollOnHover.step\n ? el.scrollOnHover.step\n : this.step;\n break;\n }\n case ScrollOnHoverDirection.RIGHT: {\n arrow = this.#rightArrows;\n if (el.scrollLeft === maxScrollLeft) {\n this.stop(el);\n return;\n }\n el.scrollLeft += el.scrollOnHover.step\n ? el.scrollOnHover.step\n : this.step;\n break;\n }\n case ScrollOnHoverDirection.TOP: {\n arrow = [];\n if (el.scrollTop === 0) {\n this.stop(el);\n return;\n }\n el.scrollTop -= el.scrollOnHover.step\n ? el.scrollOnHover.step\n : this.step;\n break;\n }\n }\n\n for (let i = 0; i < arrow.length; i++) {\n arrow[i].classList.add('kup-animated');\n }\n\n this.#rAF = requestAnimationFrame(function () {\n dom.ketchup.scrollOnHover.run(\n el,\n maxScrollLeft,\n percForward,\n percBack,\n direction\n );\n });\n }\n /**\n * Scrolls children of the element having the \"hover-scrolling-child\" class\n * @param {KupScrollOnHoverElement} el - The scrolled element.\n */\n updateChildren(el: KupScrollOnHoverElement): void {\n for (let i = 0; i < el.scrollOnHover.children.length; i++) {\n el.scrollOnHover.children[i].scrollLeft = el.scrollLeft;\n }\n }\n}\n",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}:root{--kup-background-0: var(--kup-gray-color-0);--kup-background-0-hover: var(--kup-gray-color-10-hover);--kup-background-0-active: var(--kup-gray-color-30);--kup-background-0-selected: var(--kup-gray-color-20);--kup-background-0-selected-hover: var(--kup-gray-color-20-hover);--kup-background-brand: var(--kup-primary-color-60);--kup-layer-0: var(--kup-gray-color-0);--kup-layer-0-hover: var(--kup-gray-color-0-hover);--kup-layer-0-selected: var(--kup-gray-color-20);--kup-layer-0-focus: var(--kup-gray-color-30);--kup-layer-0-inverted: var(--kup-gray-color-90);--kup-layer-0-inverted-hover: var(--kup-gray-color-90-hover);--kup-layer-0-inverted-selected: var(--kup-gray-color-80);--kup-layer-0-inverted-focus: var(--kup-gray-color-70);--kup-layer-1: var(--kup-gray-color-10);--kup-layer-1-hover: var(--kup-gray-color-10-hover);--kup-layer-1-selected: var(--kup-gray-color-20);--kup-layer-1-focus: var(--kup-gray-color-30);--kup-layer-1-inverted: var(--kup-gray-color-80);--kup-layer-1-inverted-hover: var(--kup-gray-color-80-hover);--kup-layer-1-inverted-selected: var(--kup-gray-color-70);--kup-layer-1-inverted-focus: var(--kup-gray-color-60);--kup-layer-2: var(--kup-gray-color-20);--kup-layer-2-hover: var(--kup-gray-color-20-hover);--kup-layer-2-selected: var(--kup-gray-color-30);--kup-layer-2-focus: var(--kup-gray-color-40);--kup-layer-3: var(--kup-gray-color-30);--kup-layer-3-hover: var(--kup-gray-color-30-hover);--kup-layer-3-selected: var(--kup-gray-color-40);--kup-layer-3-focus: var(--kup-gray-color-50);--kup-border-interactive: var(--kup-primary-color-60);--kup-border-subtle: var(--kup-gray-color-20);--kup-border-subtle-hover: var(--kup-gray-color-20-hover);--kup-border-subtle-selected: var(--kup-gray-color-30);--kup-border-subtle-focus: var(--kup-gray-color-40);--kup-border-strong: var(--kup-gray-color-50);--kup-border-strong-hover: var(--kup-gray-color-50-hover);--kup-border-strong-focus: var(--kup-gray-color-60);--kup-border-disabled: var(--kup-gray-color-30);--kup-text-main: var(--kup-primary-color-60);--kup-text-primary: var(--kup-gray-color-90);--kup-text-primary-inverted: var(--kup-gray-color-0);--kup-text-secondary: var(--kup-gray-color-70);--kup-text-placeholder: var(--kup-gray-color-40);--kup-text-helper: var(--kup-gray-color-60);--kup-text-error: var(--kup-danger-color-60);--kup-text-disabled: var(--kup-gray-color-50);--kup-button-primary: var(--kup-primary-color-60);--kup-button-primary-hover: var(--kup-primary-color-70);--kup-button-primary-active: var(--kup-primary-color-80);--kup-button-primary: var(--kup-primary-color-60);--kup-button-primary-hover: var(--kup-primary-color-70);--kup-button-primary-active: var(--kup-primary-color-80)}kup-editor{display:block;/*!\n* @toast-ui/editor\n* @version 2.5.4 | Tue Nov 30 2021\n* @author NHN FE Development Lab <dl_javascript@nhn.com>\n* @license MIT\n*/}kup-editor pre{white-space:pre-wrap}kup-editor .kup-editor-save-button{color:#585858;font-weight:600;margin-top:5px}kup-editor .kup-editor-save-button:disabled{opacity:.2}kup-editor .kup-editor-unsaved-changes{animation:pulsealert .75s infinite;border-radius:0;box-sizing:border-box;color:var(--kup-primary-color);float:left;height:22px;margin:5px 3px;padding:3px;width:max-content}kup-editor .auto-height,kup-editor .auto-height .tui-editor-defaultUI{height:auto}kup-editor .auto-height .tui-editor{position:relative}kup-editor :not(.auto-height)>.tui-editor-defaultUI,kup-editor :not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}kup-editor :not(.auto-height)>.tui-editor-defaultUI>.te-editor-section{-ms-flex:1;flex:1}kup-editor .tui-editor:after,kup-editor .tui-editor-defaultUI-toolbar:after{content:\"\";display:block;height:0;clear:both}kup-editor .tui-editor{position:absolute;line-height:1;color:#222;width:100%;height:inherit}kup-editor .te-editor-section{min-height:0px;position:relative;height:inherit}kup-editor .te-md-container{display:none;overflow:hidden;height:100%}kup-editor .te-md-container .te-editor{line-height:1.5}kup-editor .te-md-container .te-editor,kup-editor .te-md-container .te-preview{box-sizing:border-box;padding:0;height:inherit}kup-editor .te-md-container .CodeMirror{font-size:13px;height:inherit}kup-editor .te-md-container .te-preview{overflow:auto;padding:0 25px;height:100%}kup-editor .te-md-container .te-preview>p:first-child{margin-top:0 !important}kup-editor .te-md-container .te-preview .tui-editor-contents{padding-top:8px}kup-editor .tui-editor .te-preview-style-tab>.te-editor,kup-editor .tui-editor .te-preview-style-tab>.te-preview{float:left;width:100%;display:none}kup-editor .tui-editor .te-preview-style-tab>.te-tab-active{display:block}kup-editor .tui-editor .te-preview-style-vertical>.te-tab-section{display:none}kup-editor .tui-editor .te-preview-style-tab>.te-tab-section{display:block}kup-editor .tui-editor .te-preview-style-vertical .te-editor{float:left;width:50%}kup-editor .tui-editor .te-preview-style-vertical .te-preview{float:left;width:50%}kup-editor .tui-editor .te-md-splitter{display:none;position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #e5e5e5}kup-editor .tui-editor .te-preview-style-vertical .te-md-splitter{display:block}kup-editor .te-ww-container{display:none;overflow:hidden;z-index:10;height:inherit;background-color:#fff}kup-editor .te-ww-container>.te-editor{overflow:auto;height:inherit}kup-editor .te-ww-container .tui-editor-contents:focus{outline:none}kup-editor .te-ww-container .tui-editor-contents{padding:0 25px}kup-editor .te-ww-container .tui-editor-contents:first-child{box-sizing:border-box;margin:0px;padding:16px 25px 0px 25px;height:inherit;min-height:max-content !important}kup-editor .te-ww-container .tui-editor-contents:last-child{margin-bottom:16px}kup-editor .te-md-mode .te-md-container{display:block;z-index:100}kup-editor .te-ww-mode .te-ww-container{display:block;z-index:100}kup-editor .tui-editor.te-hide,kup-editor .tui-editor-defaultUI.te-hide{display:none}kup-editor .tui-editor-defaultUI .CodeMirror-lines{padding-top:18px;padding-bottom:18px}kup-editor .tui-editor-defaultUI pre.CodeMirror-line{padding-left:25px;padding-right:25px}kup-editor .tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder{margin:0;padding-left:25px;color:gray}kup-editor .tui-editor-defaultUI .CodeMirror-scroll{cursor:text}kup-editor .tui-editor-contents td.te-cell-selected{background-color:#d8dfec}kup-editor .tui-editor-contents td.te-cell-selected::selection{background-color:#d8dfec}kup-editor .tui-editor-contents th.te-cell-selected{background-color:#908f8f}kup-editor .tui-editor-contents th.te-cell-selected::selection{background-color:#908f8f}kup-editor .tui-editor-defaultUI{position:relative;border:1px solid #e5e5e5;height:100%;font-family:var(--kup-font-family, \"Open Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif)}kup-editor .tui-editor-defaultUI button{color:#fff;padding:0px 14px 0px 15px;height:28px;font-size:12px;border:none;cursor:pointer;outline:none}kup-editor .tui-editor-defaultUI button.te-ok-button{background-color:#4b96e6}kup-editor .tui-editor-defaultUI button.te-close-button{background-color:#777}kup-editor .tui-editor-defaultUI-toolbar{padding:0 25px;height:31px;background-color:#fff;border:0;overflow:hidden}kup-editor .tui-toolbar-divider{float:left;display:inline-block;width:1px;height:14px;background-color:#ddd;margin:9px 6px}kup-editor .tui-toolbar-button-group{height:28px;border-right:1px solid #d9d9d9;float:left}kup-editor .te-toolbar-section{height:32px;box-sizing:border-box;border-bottom:1px solid #e5e5e5}kup-editor .tui-editor-defaultUI-toolbar button{float:left;box-sizing:border-box;outline:none;cursor:pointer;background-color:#fff;width:22px;height:22px;padding:3px;border-radius:0;margin:5px 3px;border:1px solid #fff}kup-editor .tui-editor-defaultUI-toolbar button:hover,kup-editor .tui-editor-defaultUI-toolbar button:active,kup-editor .tui-editor-defaultUI-toolbar button.active{border:1px solid #aaa;background-color:#fff}kup-editor .tui-editor-defaultUI-toolbar button:first-child{margin-left:0}kup-editor .tui-editor-defaultUI-toolbar button:last-child{margin-right:0}kup-editor .tui-editor-defaultUI-toolbar button.tui-scrollsync{width:auto;color:#777;border:0}kup-editor .tui-editor-defaultUI button.tui-scrollsync:after{content:\"Scroll off\"}kup-editor .tui-editor-defaultUI button.tui-scrollsync.active{color:#4b96e6;font-weight:bold}kup-editor .tui-editor-defaultUI button.tui-scrollsync.active:after{content:\"Scroll on\"}kup-editor .tui-editor-defaultUI .te-mode-switch-section{background-color:#f9f9f9;border-top:1px solid #e5e5e5;height:20px;font-size:12px}kup-editor .tui-editor-defaultUI .te-mode-switch{float:right;height:100%}kup-editor .tui-editor-defaultUI .te-switch-button{width:92px;height:inherit;background:#e5e5e5;outline:0;color:#a0aabf;cursor:pointer;border:0;border-left:1px solid #ddd;border-right:1px solid #ddd}kup-editor .tui-editor-defaultUI .te-switch-button.active{background-color:#fff;color:#000}kup-editor .tui-editor-defaultUI .te-markdown-tab-section{float:left;height:31px;background:#fff}kup-editor .te-markdown-tab-section .te-tab{margin:0 -7px 0 24px;background:#fff}kup-editor .tui-editor-defaultUI .te-tab button{box-sizing:border-box;line-height:100%;position:relative;cursor:pointer;z-index:1;font-size:13px;background-color:#f9f9f9;border:solid 1px #e5e5e5;border-top:0;padding:0 9px;color:#777;border-radius:0;outline:0}kup-editor .te-markdown-tab-section .te-tab button:last-child{margin-left:-1px}kup-editor .te-markdown-tab-section .te-tab button.te-tab-active,kup-editor .te-markdown-tab-section .te-tab button:hover.te-tab-active{background-color:#fff;color:#333;border-bottom:1px solid #fff;z-index:2}kup-editor .te-markdown-tab-section .te-tab button:hover{background-color:#fff;color:#333}kup-editor .tui-popup-modal-background{background-color:rgba(202,202,202,.6);position:fixed;margin:0px;left:0px;top:0px;width:100%;height:100%;z-index:9999}kup-editor .tui-popup-wrapper.fit-window,kup-editor .tui-popup-modal-background.fit-window .tui-popup-wrapper{width:100%;height:100%}kup-editor .tui-popup-wrapper{width:500px;margin-right:auto;border:1px solid #cacaca;background:#fff;z-index:9999}kup-editor .tui-popup-modal-background .tui-popup-wrapper{position:absolute;margin:auto;top:0px;right:0px;bottom:0px;left:0px}kup-editor .tui-popup-header{padding:10px;height:auto;line-height:normal;position:relative;border-bottom:1px solid #cacaca}kup-editor .tui-popup-header .tui-popup-header-buttons{float:right}kup-editor .tui-popup-header .tui-popup-header-buttons button{padding:0px;background-color:rgba(0,0,0,0);background-size:cover;float:left}kup-editor .tui-popup-header .tui-popup-close-button{margin:3px;width:13px;height:13px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}kup-editor .tui-popup-header .tui-popup-title{font-size:13px;font-weight:bold;color:#333;vertical-align:bottom}kup-editor .tui-popup-body{padding:15px;font-size:12px}kup-editor .tui-editor-popup{position:absolute;top:30px;left:50%;margin-left:-250px}kup-editor .tui-editor-popup.tui-popup-modal-background{position:fixed;top:0px;left:0px;margin:0px}kup-editor .tui-editor-popup .tui-popup-body label{font-weight:bold;color:#666;display:block;margin:10px 0 5px}kup-editor .tui-editor-popup .tui-popup-body .te-button-section{margin-top:15px}kup-editor .tui-editor-popup .tui-popup-body input[type=text],kup-editor .tui-editor-popup .tui-popup-body input[type=file]{padding:4px 10px;border:1px solid #bfbfbf;box-sizing:border-box;width:100%}kup-editor .tui-editor-popup .tui-popup-body input[type=text].disabled{border-color:#e5e5e5;background-color:#eee;color:#e5e5e5}kup-editor .tui-editor-popup .tui-popup-body input.wrong{border-color:red}kup-editor .te-popup-add-link .tui-popup-wrapper{height:219px}kup-editor .te-popup-add-image .tui-popup-wrapper{height:243px}kup-editor .te-popup-add-image .te-tab{display:block;background:none;border-bottom:1px solid #ebebeb;margin-bottom:8px}kup-editor .te-popup-add-image .te-url-type{display:none}kup-editor .te-popup-add-image .te-file-type{display:none}kup-editor .te-popup-add-image div.te-tab-active,kup-editor .te-popup-add-image form.te-tab-active{display:block}kup-editor .te-popup-add-image .te-tab button{border:1px solid #ccc;background:#eee;min-width:100px;margin-left:-1px;border-bottom:0px;border-radius:3px 3px 0px 0px}kup-editor .te-popup-add-image .te-tab button.te-tab-active{background:#fff}kup-editor .te-popup-add-table .te-table-selection{position:relative}kup-editor .te-popup-add-table .te-table-body{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg==\")}kup-editor .te-popup-add-table .te-table-header{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg==\")}kup-editor .te-popup-add-table .te-selection-area{position:absolute;top:0;left:0;background:#80d2ff;opacity:.3;z-index:999}kup-editor .te-popup-add-table .te-description{margin:10px 0 0 0;text-align:center}kup-editor .te-popup-table-utils{width:auto;min-width:120px}kup-editor .te-popup-table-utils .tui-popup-body{padding:0px}kup-editor .te-popup-table-utils button{display:block;width:100%;background-color:#fff;border:none;outline:0;padding:0px 10px 0px 10px;font-size:12px;line-height:28px;text-align:left;color:#777}kup-editor .te-popup-table-utils button:hover{background-color:#f4f4f4}kup-editor .te-popup-table-utils hr{margin:0;background-color:#cacaca;border-style:none;height:1px}kup-editor .te-popup-table-utils .te-context-menu-disabled{color:#ccc}kup-editor .te-popup-table-utils .te-context-menu-disabled:hover{background-color:#fff}kup-editor .te-heading-add{width:auto}kup-editor .te-heading-add .tui-popup-body{padding:0}kup-editor .te-heading-add h1,kup-editor .te-heading-add h2,kup-editor .te-heading-add h3,kup-editor .te-heading-add h4,kup-editor .te-heading-add h5,kup-editor .te-heading-add h6,kup-editor .te-heading-add ul,kup-editor .te-heading-add p{padding:0;margin:0}kup-editor .te-heading-add ul{list-style:none}kup-editor .te-heading-add ul li{padding:2px 10px;cursor:pointer}kup-editor .te-heading-add ul li:hover{background-color:#eee}kup-editor .te-heading-add h1{font-size:24px}kup-editor .te-heading-add h2{font-size:22px}kup-editor .te-heading-add h3{font-size:20px}kup-editor .te-heading-add h4{font-size:18px}kup-editor .te-heading-add h5{font-size:16px}kup-editor .te-heading-add h6{font-size:14px}kup-editor .te-dropdown-toolbar{position:absolute;width:auto}kup-editor .te-dropdown-toolbar .tui-popup-body{padding:0px}kup-editor .tui-popup-color{padding:0}kup-editor .tui-popup-color .tui-colorpicker-container,kup-editor .tui-popup-color .tui-colorpicker-palette-container{width:144px}kup-editor .tui-popup-color .tui-colorpicker-container ul{width:144px;margin-bottom:8px}kup-editor .tui-popup-color .tui-colorpicker-container li{padding:0 1px 1px 0}kup-editor .tui-popup-color .tui-colorpicker-container li .tui-colorpicker-palette-button{border:0;width:17px;height:17px}kup-editor .tui-popup-color .tui-popup-body{padding:10px}kup-editor .tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-toggle-slider{display:none}kup-editor .tui-popup-color .te-apply-button,kup-editor .tui-popup-color .tui-colorpicker-palette-hex{float:right}kup-editor .tui-popup-color .te-apply-button{height:21px;width:35px;background:#fff;border:1px solid #efefef;position:absolute;bottom:135px;right:10px;color:#000}kup-editor .tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex{border:1px solid #e1e1e1;padding:3px 14px;margin-left:-1px}kup-editor .tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix{display:inline-block}kup-editor .tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview{width:19px;height:19px}kup-editor .tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-slider-right{width:22px}kup-editor .tui-popup-color .tui-colorpicker-slider-container .tui-colorpicker-huebar-handle{display:none}kup-editor .tui-toolbar-icons{background:url(data:image/png;base64,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);background-size:218px 188px;display:inline-block}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){kup-editor .tui-toolbar-icons{background:url(data:image/png;base64,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Xqz8qBcJkED0BGIbcoxe1QtDor4qT80zFpNh01flYWg2e1Fo2C6Me5NnSQLFToAeWpFfITFmxbrCUdCJMeMKxyK/iageCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACQQgkA5QNlTRRYsWZbwEbNu2LTFdnPSAftc6pas06PesihdTmIurXdekOefi6qBfpJyD8rHrk+s4LM+gfHLpY8+P+r6Ngmc6nf7q1q1b6+26RnEcBc/S0tLmLVu2HI5Cn6Ay7Hxz3V9BywfVx17ezjfX/RW0vL29oMclQSuwPAmQAAnkS0A3ZrW1tR9Gh1ebr6w46unGrK6ubiz0GxdHO5QZD4HEDJo8aeBmmWk7jf2SnuspxFYnlkN50pg8efJLNuHdki67LZ2HJEACAQnYjVl/f/+PIeLxYjFqdmPW0dExC/rNpFELeKELWDwxgybn2NfXt1A/V9zg2/XjQsePHz8+StcBN/gZ/ZhxEiCB/Ai4GLMKSCvFXnCj5mTMYHDVNAiNWn6XPfFaZUm2iJt6YSZzfioN8e1Jtp+rLegzUi8Dfdv14yTiixcvbhw7duxdDQ0Nb/ppL2nvdsmSJZfMmzfvQH19fb9P/Qrq3SbNxw8Tvcxg9/6D8pVhRsMzE2OmthJslodJlRE2DMpXhhnFM9OMWVaFsrKyRB/+w573hVo/0YsEg7FQB42nou36caHj8CAtP6qamprEPTQwuq21tfX3GOa4vNA8nNoHo/G7d++eD/2qnPKZRgJuBFyMWQbGbHVTU9NDbvWSSvcwZvs3b958PCk92E7+BBIzaPJkDzVnaKrux0qi17XjgkbXrFkzDAroT43da9eu7SqQUmLMxKjVFah9z2Z7e3sr8TAyb+nSpTWeBZl5wRGQewKjDP/bfuLFYswwslAmhsuuH42ZncjgPE7MoHH+LPANMhw1HpUhyNWrV0u8qDZczxIYthnyoIJOIrH7qKggUBkLATFmuCf+E4k/xsPYCpVZTMZsx44dc86ePXvpypUrxyv9aMwUicEfJjaHxvmz/G4WYwjyOnQQizAf8LJdCpLPT0raMx2Og855OIiwJBlDkCOgx17I7rBk4gDpnu/32csHnfOw1w96HJSfXX7UPO3yg/Kz10+Kp2bMrsQ9m8LvvRG6pzCc2OowZ5b4MKN4ZmLMwCc7VI55sktg1ES/Ppc5s6IYZgx7f9rvh6iPw96fUeuT2JM1589CXToOQYbCx8pxE8CDzbUwYvNVO/i9l4hRKwZjJjrBmI2A8apU+kkoRq2YjZmuK+P+CCRi0Dh/5u9i5CqFDiKQN5ZLXtT55eXlRa1f1OdLeecJ4Msfv4ARq8U92qNSxaghrs9LO3pmGFavV3XiCuGpnsK87z4YNcs96rCacYBnhv5ralx6UW60BBIxaJw/C33RZKjxOnQaj4WWFIMALGnuxDXetX79+hMxiKfIQUIARuMJu1HTVHc1Zqhzr1YutuimTZtanYyaahD3saMxw709RZVhWNwEEplDw1Mb3z/L8z4Au8e83kuLew4nl9roIE7MnTvX9b20pOZwcunpll9ofm56qfRi56f0VCH0fQLzKrIg5HHs8tJ0doNn9En70nzxzJIyZkoPMWrQT16Ytny1qLKy8uCGDRssS/PFMyu0Mct1fxZ6ji3X/Zn0HFsiBg037UJ1Q0mITnC7flzoOG7agr9/5sDgTRizu4rVK8M17K+oqDhAr8zhyl3gSejkmtCRCYWsUYMx+wSM2TodSyGMmWof+p009MsaNcOYHVX5EhaDMdP1YdwfgdiHHDl/5u9C2EpxiNEGhIeDi4AYNWi83MmYyZkk7ZnZ6YlRQ9o+J2MmZQvtmdn15bE/ArF7aLgxFuqqwOvYrh8XOl5s32/MNcRYaF65hhgLrR/bLx4ChlErHoVsmhhGzZbKw8FMIHaDhg6a82cB7hAMMdYFKC7veVlWbeWqix+xzB/kvQX9ukvQMXTo92zeyjlUDMrHQYRnUlieQfl4KuOQGTVPexNx87W3F/Q4br5B9WH5eAnEPuTI+bN4LyClkwAJkAAJnCMQm4fm9uSGIch9yEuFfbINewHdntxaWlquMPSL1FMIqy/rkwAJkAAJeBOI3UPzbp65JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFC8BNJRq7Zo0aKMLnPbtm2ebQQtr8vOJ472rtXrQb9n9WN7PGh5e/24j+38crWX63rkqh80384vV/1c1yNXfXt+UD72+rmOw/IMyieXPvb8qHkq+dB7TDqdvgPHtZlMZrak4/gVBE04fgjtnpI0tfm4Ds2ov728vPwLjz/++CFVL98Q7ZWWlZXV9Pf3j8M+TOSUlJR0YT/Z29t7HPr16bJzXQfI6oF+7T09PYdQt1uvG1fc0Om/bfLf5nRNX5xytaXftdVJvaX5j579sL28n+MVK1aM6OzsnKeXrays3LVhw4azeprEd065xtLv2vPnN//Bsx+2l3c7LnHLYDoJkAAJOBFYvHjxDUh/CYbrO9ivQ3ys7BKXNMkzyiDqe5uCuku7u7ufX758+TTftRwKrlq1ahQM0AIYrmkwZsNRpFR2iUua5EkZh6quSahXDmNWjQKXw9BUuBaMMAMG9E67OKc0e5mkjvv6+mrsbTml2cvEeUyDFiddyiaBIUYAnfn7YXh+jtPyMjrTpMySJUv+Zx6nPw6G4+/yqJetAmM4+uzZs7PFALnJkDwpI2Xdynikl8KL9Dp3j6r+s8B5pBh4ew1Jkzx7etLH0EEeEMbZ25U0ybOnJ3VMg5YUabZDAoOcwK233joFHkITTiM7hOd1Oij3Mzytv+BVxiPvfR55rlmrV68uh4c3C51qzuG10tLSthEjRnS4CvPIgFFJwqAsgwrZdsDy97IbKkma5BV6G4frm7UfGMZ9U3ZRyEgbYOiSUrYsqYbYTjgC+LEOb2trW7d169Y6XRLG03P+ePXyccXr6+tLdu3aNX3Lli2v6204jffr+XHHi4WP23kWmo+bXk7pMBb3ozOXYTd9a0Rn9nUM4x1D/v9Ax3sP9n9oamrapheyx+3XBU/15hwQ2phq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Q4EADMZCdR5O82cqr1BhrvmzQunFdqMhEGr8368KGKb7NDyb7xnl/xHDjWu86sKIrUX+J6UMjMZnMPz3917lw+bJC9dYij/NkHMM+h3wkgn9piM/a2j5TpoXKeaRAAmQQHIEEvHQ9OFGPLW5Djeq09bL6HVVftSh/l4ZPlLsOtyo2tXL6HVVPkMSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESGKwE0oNV8aGq92uvvZaJ89wuvfTSUNd8//7918ap34wZM56NUz5lkwAJDF0CJUP31HhmJEACJEACFxIBGrQL6WrzXEmABEhgCBOgQRvCF5enRgIkQAIXEoGyOE520aJFEyD389jfg33Otm3barzaCVreS5afvNWrV5efPXt2Un9//8je3t5K6PecV72g5b1kRZF3+PDh1AMPPGAR9alPfSo1depUS1qhDg4cOOCo3/Tp0wulEtslARK4AAhEbtBqa2v/DIZiI9iN9MMvaHk/Mr3K1NXVjT19+vTMvr4+X95p0PJebUeV9+yzA9dNSFqxGLQ//OEPA05V0mjQBmBhAgmQQIQEIjVoixcvfi+M2VboVyE6ptPpdRUVFV930zdoeTc5ftNXrVo1Cp7ZLOioVvodq66ubnarH7S8m5wo02GIU889N9ChlLRbbrklVVpaGmVzgWX19PSkXnzxxQH1JO1DH/pQqry8fEAeE0iABLwJjFtx2HP188kNU1Wf5i0oZG4uPQaKT+8vSaV/MnbspHteXZvuGpgfbUpkBg3DhtKTPog9a8wQ/rapqemTMGqOFyJo+bCnnclk0suWLZuujFlZWdnZTZs2HXTTL2j5sPr5rb9r164UjHK2uPLIZAhS0iRvwYIFfkXFUk50OHXqVFa28shkCFLSJO8tb3lLLO1GJbS+vn6iyEJ4NCqZUcr5wQ9+kH0iuPPOO3uilEtZJBAPgcyM/lTmMydP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VSp27NgxTQnDMOHxMWPG7JIhQ5WmhximPIrjl5E/wDhDRzHI+6L8yr5qW7fqKo0hCZAACZBATATgVaXx+ag/QPxVWhP3whB9TR3Da6tAx38zvJp3I03iexD+BwyehPLVEFl08Uns02F85MXm38HA/Ezm4yQ/is3QU96Py3qQIhOGqhlf+zeNqXhtr7/+unx8eCSGJtNY/NGFMqcbGxuzhk7OA9tEyKrAufSgzFn8r7Y2mY+LQke7DBo0OxEekwAJkEDMBLCwYjbmop5BR69/eeNHMAir8RmpwC9Ew3B8ECr/GkaxPUrVjU9dzYNM8zNWMK5t8+fP3w+jZA59+m0TespnsdqhZ2QvU+ttm0rqiYyTAAmQAAnER+DFF188CU/lWXhWS9GK6ocvhxdzB9JHX3nllbteeuml7Ff43bQQD2r37t0LYVxkwUg9ZHVgWPBXbuXzSX/uued6r7766jfR1jhpT2QgrDx27NgE6FmKvevll1/2NE5S7+DBg6Og5wyc3xSsiOx/4YUXIjW86tzooSkSDEmABEggYQIYenwvOvxtaHaiQ9MvI+3XMFSHUOY4PCMZpqtCXIzLfKRfj/BirV4b3hObieE+c4Wilhcqavwjz1kwSOZ7bkqgzKNBl3bo143VjlmvDWkl0K0UexXSR8AbLVflEfbBEL6Uj4enyXCM0qA5YmEiCZAACSRDAP8j7WIYCvmnnjeFbHEf5q8+ijmuP4aU41hd5sNgnC6BrpbVio6FvRO78f7da1HO96nmaNAUCYYkQAIkUEAC8NZugFGThSHvCaIGvKPnUe8HMBIPyftsQermU1a8NXwJZCrqmv9ixqcc+Wr/Mby6cBw66++x+ayeuxgNWm5GLEECJEACiRFYvnz5NAzRfRBG6gPYZ6JhGY6cYChwCsbgOOIvYn8WHtm/RfmlDaMNX4F4bBhaHA19RmP14jAZjoQHp4YW+xDvRV4HzuEszuc0FoKY/4bGVwMsRAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKDgMD/D2WyCk5hENCOAAAAAElFTkSuQmCC);background-size:218px 188px;display:inline-block}}kup-editor .tui-toolbar-icons.tui-heading{background-position:-172px -48px}kup-editor .tui-toolbar-icons.tui-heading:disabled{background-position:-193px -48px}kup-editor .tui-toolbar-icons.tui-bold{background-position:-4px -4px}kup-editor .tui-toolbar-icons.tui-bold:disabled{background-position:-25px -4px}kup-editor .tui-toolbar-icons.tui-italic{background-position:-4px -48px}kup-editor .tui-toolbar-icons.tui-italic:disabled{background-position:-25px -48px}kup-editor .tui-toolbar-icons.tui-color{background-position:-172px -70px}kup-editor .tui-toolbar-icons.tui-color:disabled{background-position:-193px -70px}kup-editor .tui-toolbar-icons.tui-strike{background-position:-4px -26px}kup-editor .tui-toolbar-icons.tui-strike:disabled{background-position:-25px -26px}kup-editor .tui-toolbar-icons.tui-hrline{background-position:-46px -92px}kup-editor .tui-toolbar-icons.tui-hrline:disabled{background-position:-67px -92px}kup-editor .tui-toolbar-icons.tui-quote{background-position:-4px -114px}kup-editor .tui-toolbar-icons.tui-quote:disabled{background-position:-25px -114px}kup-editor .tui-toolbar-icons.tui-ul{background-position:-46px -4px}kup-editor .tui-toolbar-icons.tui-ul:disabled{background-position:-67px -4px}kup-editor .tui-toolbar-icons.tui-ol{background-position:-46px -26px}kup-editor .tui-toolbar-icons.tui-ol:disabled{background-position:-67px -26px}kup-editor .tui-toolbar-icons.tui-task{background-position:-130px -48px}kup-editor .tui-toolbar-icons.tui-task:disabled{background-position:-151px -48px}kup-editor .tui-toolbar-icons.tui-indent{background-position:-46px -48px}kup-editor .tui-toolbar-icons.tui-indent:disabled{background-position:-67px -48px}kup-editor .tui-toolbar-icons.tui-outdent{background-position:-46px -70px}kup-editor .tui-toolbar-icons.tui-outdent:disabled{background-position:-67px -70px}kup-editor .tui-toolbar-icons.tui-table{background-position:-88px -92px}kup-editor .tui-toolbar-icons.tui-table:disabled{background-position:-109px -92px}kup-editor .tui-toolbar-icons.tui-image{background-position:-130px -4px}kup-editor .tui-toolbar-icons.tui-image:disabled{background-position:-151px -4px}kup-editor .tui-toolbar-icons.tui-link{background-position:-130px -26px}kup-editor .tui-toolbar-icons.tui-link:disabled{background-position:-151px -26px}kup-editor .tui-toolbar-icons.tui-code{background-position:-130px -92px}kup-editor .tui-toolbar-icons.tui-code:disabled{background-position:-151px -92px}kup-editor .tui-toolbar-icons.tui-codeblock{background-position:-130px -70px}kup-editor .tui-toolbar-icons.tui-codeblock:disabled{background-position:-151px -70px}kup-editor .tui-toolbar-icons.tui-more{background-position:-172px -92px}kup-editor .tui-toolbar-icons.tui-more:disabled{background-position:-193px -92px}kup-editor .tui-colorpicker-svg-slider{border:1px solid #ebebeb}kup-editor .tui-colorpicker-vml-slider{border:1px solid #ebebeb}kup-editor .tui-colorpicker-svg-huebar{border:1px solid #ebebeb}kup-editor .tui-editor-pseudo-clipboard{position:fixed;left:-1000px;top:-1000px;width:100px;height:100px}kup-editor .te-ww-block-overlay.code-block-header{text-align:right;font-family:var(--kup-font-family, \"Open Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif)}kup-editor .te-ww-block-overlay.code-block-header span{font-size:10px;font-weight:600;padding:0px 10px;color:#333;cursor:default}kup-editor .te-ww-block-overlay.code-block-header button{margin:8px;font-size:10px;color:#333;background-color:#f9f9f9;border:1px solid #ddd;padding:4px;height:auto}kup-editor .te-popup-code-block-languages{position:fixed;box-sizing:border-box;width:130px}kup-editor .te-popup-code-block-languages .tui-popup-body{max-height:169px;overflow:auto;padding:0px}kup-editor .te-popup-code-block-languages button{width:100%;background-color:#fff;border:none;outline:0;padding:0px 10px 0px 10px;font-size:12px;line-height:24px;text-align:left;color:#777}kup-editor .te-popup-code-block-languages button.active{background-color:#f4f4f4}kup-editor .tui-popup-code-block-editor .tui-popup-wrapper{width:70%;height:70%;margin:auto;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}kup-editor .te-input-language{position:relative;margin-left:15px;cursor:pointer}kup-editor .te-input-language input{font-family:var(--kup-font-family, \"Open Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif);font-size:10px;padding:3px 5px;border:1px solid #ddd;background-color:#f9f9f9;box-sizing:border-box;width:130px;outline:none}kup-editor .te-input-language input::-ms-clear{display:none}kup-editor .te-input-language::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==);position:absolute;top:1px;right:3px}kup-editor .te-input-language.active::after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}kup-editor .tui-popup-code-block-editor button{margin:-1px 3px}kup-editor .tui-popup-code-block-editor .tui-popup-header-buttons{height:20px}kup-editor .tui-popup-code-block-editor .popup-editor-toggle-preview::after{content:\"Preview off\";color:#777;margin-right:22px}kup-editor .tui-popup-code-block-editor .popup-editor-toggle-preview.active::after{content:\"Preview on\";color:#4b96e6}kup-editor .tui-popup-code-block-editor .popup-editor-toggle-scroll::after{content:\"Scroll off\";color:#777;margin-right:16px}kup-editor .tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after{content:\"Scroll on\";color:#4b96e6}kup-editor .tui-popup-code-block-editor .popup-editor-toggle-fit{width:18px;height:18px;margin-top:4px;margin-right:14px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+)}kup-editor .tui-popup-code-block-editor .popup-editor-toggle-fit.active{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=)}kup-editor .tui-popup-code-block-editor .tui-popup-close-button{margin-top:6px}kup-editor .tui-popup-code-block-editor .tui-popup-body{z-index:-1;padding:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1;flex:1}kup-editor .tui-popup-code-block-editor .popup-editor-body{position:relative;-ms-flex:1;flex:1;border-bottom:1px solid #cacaca}kup-editor .tui-popup-code-block-editor .te-button-section{padding:15px}kup-editor .tui-popup-code-block-editor .te-button-section button{float:left}kup-editor .tui-popup-code-block-editor .tui-editor-contents pre{margin:0px;background-color:rgba(0,0,0,0)}kup-editor .tui-popup-code-block-editor .CodeMirror{height:auto}kup-editor .tui-popup-code-block-editor .CodeMirror-line{font-family:var(--kup-font-family-monospace, Consolas, Courier, \"Lucida Grande\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif);font-size:13px;line-height:160%;letter-spacing:-0.3px}kup-editor .tui-popup-code-block-editor .popup-editor-editor-wrapper{min-height:100%}kup-editor .tui-split-scroll-wrapper{position:relative}kup-editor .tui-split-scroll{position:absolute}kup-editor .tui-split-scroll,kup-editor .tui-split-scroll-wrapper{width:100%;height:100%}kup-editor .tui-split-scroll .tui-split-content-left,kup-editor .tui-split-scroll .tui-split-content-right{position:absolute;top:0px;width:50%;box-sizing:border-box}kup-editor .tui-split-scroll .tui-split-content-left{left:0px}kup-editor .tui-split-scroll .tui-split-content-right{left:50%}kup-editor .tui-split-scroll .tui-splitter{position:absolute;left:50%;top:0;height:100%;width:1px;border-left:1px solid #cacaca}kup-editor .tui-split-scroll .tui-split-scroll-content{width:100%;height:100%;overflow:hidden;position:relative}kup-editor .tui-split-scroll .tui-split-content-left,kup-editor .tui-split-scroll .tui-split-content-right{height:100%;overflow-x:hidden;overflow-y:auto}kup-editor .tui-split-scroll button.tui-scrollsync{top:10px;opacity:.2}kup-editor .tui-split-scroll button.tui-scrollsync::after{content:\"scroll off\"}kup-editor .tui-split-scroll.scroll-sync button.tui-scrollsync{opacity:.5}kup-editor .tui-split-scroll.scroll-sync .tui-split-content-left,kup-editor .tui-split-scroll.scroll-sync .tui-split-content-right{height:auto;overflow:initial}kup-editor .tui-split-scroll.scroll-sync button.tui-scrollsync::after{content:\"scroll on\"}kup-editor .tui-split-scroll.scroll-sync .tui-split-scroll-content{overflow-y:auto}kup-editor .tui-split-scroll.single-content .tui-splitter{display:none}kup-editor .tui-split-scroll.single-content .tui-split-content-left{width:100%}kup-editor .tui-split-scroll.single-content .tui-split-content-right{display:none}kup-editor .tui-split-scroll.single-content button.tui-scrollsync{display:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){kup-editor .tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@supports(-ms-accelerator: true){kup-editor .tui-split-scroll-wrapper .tui-splitter{left:calc(50% - 9px)}}@media screen and (max-width: 480px){kup-editor .tui-popup-wrapper{max-width:300px}kup-editor .tui-editor-popup{margin-left:-150px}kup-editor .te-dropdown-toolbar{max-width:none}}kup-editor .tui-editor-contents{margin:0;padding:0;font-size:13px;font-family:var(--kup-font-family, \"Open Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif)}kup-editor .tui-editor-contents *:not(table){line-height:160%;box-sizing:content-box}kup-editor .tui-editor-contents i,kup-editor .tui-editor-contents cite,kup-editor .tui-editor-contents em,kup-editor .tui-editor-contents var,kup-editor .tui-editor-contents address,kup-editor .tui-editor-contents dfn{font-style:italic}kup-editor .tui-editor-contents strong{font-weight:bold}kup-editor .tui-editor-contents p{margin:10px 0;color:#222}kup-editor .tui-editor-contents>h1:first-of-type,kup-editor .tui-editor-contents>div>div:first-of-type h1{margin-top:14px}kup-editor .tui-editor-contents h1,kup-editor .tui-editor-contents h2,kup-editor .tui-editor-contents h3,kup-editor .tui-editor-contents h4,kup-editor .tui-editor-contents h5,kup-editor .tui-editor-contents h6{font-weight:bold;color:#222}kup-editor .tui-editor-contents h1{font-size:24px;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px 0;padding-bottom:7px}kup-editor .tui-editor-contents h2{font-size:22px;line-height:23px;border-bottom:1px solid #dbdbdb;margin:20px 0 13px 0;padding-bottom:7px}kup-editor .tui-editor-contents h3{font-size:20px;margin:18px 0 2px}kup-editor .tui-editor-contents h4{font-size:18px;margin:10px 0 2px}kup-editor .tui-editor-contents h3,kup-editor .tui-editor-contents h4{line-height:18px}kup-editor .tui-editor-contents h5{font-size:16px}kup-editor .tui-editor-contents h6{font-size:14px}kup-editor .tui-editor-contents h5,kup-editor .tui-editor-contents h6{line-height:17px;margin:9px 0 -4px}kup-editor .tui-editor-contents del{color:#999}kup-editor .tui-editor-contents blockquote{margin:14px 0;border-left:4px solid #e5e5e5;padding:0 16px;color:#999}kup-editor .tui-editor-contents blockquote p,kup-editor .tui-editor-contents blockquote ul,kup-editor .tui-editor-contents blockquote ol{color:#999}kup-editor .tui-editor-contents blockquote>:first-child{margin-top:0}kup-editor .tui-editor-contents blockquote>:last-child{margin-bottom:0}kup-editor .tui-editor-contents pre,kup-editor .tui-editor-contents code{font-family:var(--kup-font-family-monospace, Consolas, Courier, \"Lucida Grande\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif);border:0;border-radius:0}kup-editor .tui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f5f7f8}kup-editor .tui-editor-contents code{color:#c1798b;background-color:#f9f2f4;padding:2px 3px;letter-spacing:-0.3px;border-radius:2px}kup-editor .tui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:rgba(0,0,0,0)}kup-editor .tui-editor-contents pre.addon{border:1px solid #e8ebed;background-color:#fff}kup-editor .tui-editor-contents img{margin:4px 0 10px;box-sizing:border-box;vertical-align:top;max-width:100%}kup-editor .tui-editor-contents table{border:1px solid rgba(0,0,0,.1);margin:12px 0 14px;color:#222;width:auto;border-collapse:collapse;box-sizing:border-box}kup-editor .tui-editor-contents table th,kup-editor .tui-editor-contents table td{border:1px solid rgba(0,0,0,.1);padding:5px 14px 5px 12px;height:32px}kup-editor .tui-editor-contents table th{background-color:#555;font-weight:300;color:#fff;padding-top:6px}kup-editor .tui-editor-contents ul,kup-editor .tui-editor-contents menu,kup-editor .tui-editor-contents ol,kup-editor .tui-editor-contents dir{display:block;list-style-type:none;padding-left:24px;margin:6px 0 10px;color:#222}kup-editor .tui-editor-contents ol{list-style-type:none;counter-reset:li}kup-editor .tui-editor-contents ol>li{counter-increment:li}kup-editor .tui-editor-contents ul>li::before,kup-editor .tui-editor-contents ol>li::before{display:inline-block;position:absolute}kup-editor .tui-editor-contents ul>li::before{content:\"\";margin-top:6px;margin-left:-17px;width:5px;height:5px;border-radius:50%;background-color:#ccc}kup-editor .tui-editor-contents ol>li::before{content:\".\" counter(li);margin-left:-28px;width:24px;text-align:right;direction:rtl;color:#aaa}kup-editor .tui-editor-contents ul ul,kup-editor .tui-editor-contents ul ol,kup-editor .tui-editor-contents ol ol,kup-editor .tui-editor-contents ol ul{margin-top:0 !important;margin-bottom:0 !important}kup-editor .tui-editor-contents ul li,kup-editor .tui-editor-contents ol li{position:relative}kup-editor .tui-editor-contents ul p,kup-editor .tui-editor-contents ol p{margin:0}kup-editor .tui-editor-contents ul li.task-list-item::before,kup-editor .tui-editor-contents ol li.task-list-item::before,kup-editor .tui-editor-contents pre ul li::before{content:\"\"}kup-editor .tui-editor-contents th ol,kup-editor .tui-editor-contents th ul{color:#fff}kup-editor .tui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}kup-editor .tui-editor-contents a{text-decoration:underline;color:#4b96e6}kup-editor .tui-editor-contents a:hover{color:#1f70de}kup-editor .tui-editor-contents a.image-link{position:relative}kup-editor .tui-editor-contents a.image-link::before{content:\"\";position:absolute;margin:0;width:20px;height:20px;top:2px;right:2px;background-repeat:no-repeat;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACy3fD9AAAA/0lEQVQ4Ee2UIY6FQAyG/91wAQQJDg8SSwI3QIFAcQHuwFHQoOAEEFAELB6H4wIku+9vQgIP9zLyVbTTTufLtJ3MzzRNf1AoGlmu6ypBzvOMXyWkC+QLvDTjw6VM+Xr2OA6UZYmu67Dvu2zleX6zuq7D933EcQxNuyPu3usYYXVdw/M8mKYpIMMwxEZRJHbbNsmhkySJxE71APJmhGVZhnVdURQFlmU585GmKSzLEp+570Dlz+ZxQ/aGJVNYsm3bCIJA/LZtMY4jmqbBMAwIw1DiV/UAstEUltP3vawdxxFbVZVYDoWwM1eCp+LnoErIUt7DL/Ac1edWng1/WlXyD380myY5A34sAAAAAElFTkSuQmCC\");cursor:pointer}kup-editor .tui-editor-contents .task-list-item{border:0;list-style:none;padding-left:24px;margin-left:-24px}kup-editor .tui-editor-contents .task-list-item::before{background-repeat:no-repeat;background-size:18px 18px;background-position:center;content:\"\";margin-left:0;margin-top:0;border-radius:0;height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAAQklEQVQ4EWM8c+bMfwYqABaQGcbGxhQZdfbsWQYmikxA0jxqEFJg4GCOhhGOgEESHg0jpMDAwRx8YQQuj0DlCaUAAEdBCPJ7TaEPAAAAAElFTkSuQmCC\")}kup-editor .tui-editor-contents .task-list-item.checked::before{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAA1ElEQVQ4EWP0nvbsPwMVABMVzAAbMWoQIiT5OJgYvLS5EAJQFguGCB4BkCHt/kIM8kKsYFXbrn6DqyY6sJENefjuN8ORuz/ghoAYWA0COR2kEQbQDanc+I7h049/MGkwjVANFQYZkmXHD/YCyABiDAFpxQgjkJO9dbjA4QAKDxAAhQnIO9hcAlYAJDBcBHIySANII8gAYgwBGYZhEEgQZFjVJohhhFwCUg8CjPgyLT8nE8N/YJZGD1iIVlQSI4yQpT9+R40ZZDl0NlavoSsihj/4DAIAR+hZHUj727YAAAAASUVORK5CYII=\")}kup-editor .tui-editor-contents .task-list-item input[type=checkbox],kup-editor .tui-editor-contents .task-list-item .task-list-item-checkbox{margin-left:-17px;margin-right:3.8px;margin-top:3px}kup-editor .tui-editor-contents-placeholder::before{content:attr(data-placeholder);color:gray;line-height:160%;position:absolute}kup-editor .te-preview .tui-editor-contents h1{min-height:28px}kup-editor .te-preview .tui-editor-contents h2{min-height:23px}kup-editor .te-preview .tui-editor-contents blockquote{min-height:20px}kup-editor .te-preview .tui-editor-contents li{min-height:22px}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){kup-editor .te-ww-container .tui-editor-contents li{vertical-align:middle}kup-editor .te-ww-container .tui-editor-contents ul>li::before,kup-editor .te-ww-container .tui-editor-contents ol>li::before,kup-editor .te-ww-container .tui-editor-contents .task-list-item:before{position:static;vertical-align:middle}kup-editor .te-ww-container .tui-editor-contents ul>li::before{margin-top:-3px;margin-right:12px}kup-editor .te-ww-container .tui-editor-contents ol>li::before{margin-right:6px}kup-editor .te-ww-container .tui-editor-contents .task-list-item{padding-left:2px}}kup-editor .tui-editor-contents .te-preview-highlight{position:relative;z-index:0}kup-editor .tui-editor-contents .te-preview-highlight::after{content:\"\";background-color:rgba(255,245,131,.5);border-radius:4px;z-index:-1;position:absolute;top:-4px;right:-4px;left:-4px;bottom:-4px}kup-editor .tui-editor-contents h1.te-preview-highlight::after,kup-editor .tui-editor-contents h2.te-preview-highlight::after{bottom:0}kup-editor .tui-editor-contents td.te-preview-highlight::after,kup-editor .tui-editor-contents th.te-preview-highlight::after{display:none}kup-editor .tui-editor-contents th.te-preview-highlight,kup-editor .tui-editor-contents td.te-preview-highlight{background-color:rgba(255,245,131,.5)}kup-editor .tui-editor-contents th.te-preview-highlight{color:#222}kup-editor .te-md-container .CodeMirror{font-family:var(--kup-font-family, \"Open Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif);color:#222}kup-editor .tui-md-heading1{font-size:24px}kup-editor .tui-md-heading2{font-size:22px}kup-editor .tui-md-heading3{font-size:20px}kup-editor .tui-md-heading4{font-size:18px}kup-editor .tui-md-heading5{font-size:16px}kup-editor .tui-md-heading6{font-size:14px}kup-editor .tui-md-heading.tui-md-delimiter.setext{line-height:15px}kup-editor .tui-md-strong,kup-editor .tui-md-heading,kup-editor .tui-md-list-item.tui-md-list-item-bullet,kup-editor .tui-md-list-item.tui-md-meta{font-weight:bold}kup-editor .tui-md-emph{font-style:italic}kup-editor .tui-md-strike{text-decoration:line-through}kup-editor .tui-md-strike.tui-md-delimiter{text-decoration:none}kup-editor .tui-md-delimiter,kup-editor .tui-md-thematic-break,kup-editor .tui-md-link,kup-editor .tui-md-table,kup-editor .tui-md-block-quote{color:#ccc}kup-editor .tui-md-code-block.tui-md-meta,kup-editor .tui-md-code.tui-md-delimiter{color:#aaa}kup-editor .tui-md-meta,kup-editor .tui-md-html,kup-editor .tui-md-link.tui-md-link-url.tui-md-marked-text{color:#999}kup-editor .tui-md-block-quote.tui-md-marked-text,kup-editor .tui-md-list-item.tui-md-meta{color:#555}kup-editor .tui-md-table.tui-md-marked-text{color:#222}kup-editor .tui-md-link.tui-md-link-desc.tui-md-marked-text,kup-editor .tui-md-list-item-odd.tui-md-list-item-bullet{color:#4b96e6}kup-editor .tui-md-list-item-even.tui-md-list-item-bullet{color:#cb4848}kup-editor .tui-md-code.tui-md-marked-text{color:#c1798b}kup-editor .tui-md-code{background-color:rgba(243,229,233,.5);padding:2px 0;letter-spacing:-0.3px}kup-editor .tui-md-code.tui-md-delimiter.start{padding-left:2px;border-top-left-radius:2px;border-bottom-left-radius:2px}kup-editor .tui-md-code.tui-md-delimiter.end{padding-right:2px;border-top-right-radius:2px;border-bottom-right-radius:2px}kup-editor .tui-md-code-block.CodeMirror-linebackground{left:20px;right:20px;background-color:#f5f7f8}kup-editor .tui-md-code-block.CodeMirror-linebackground.start{top:2px}kup-editor .tui-md-code-block.CodeMirror-linebackground.end{bottom:2px}kup-editor .tui-md-code,kup-editor .tui-md-code-block{font-family:var(--kup-font-family-monospace, Consolas, Courier, \"Lucida Grande\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif)}kup-editor .CodeMirror{font-family:var(--kup-font-family-monospace, Consolas, Courier, \"Lucida Grande\", \"나눔바른고딕\", \"Nanum Barun Gothic\", \"맑은고딕\", \"Malgun Gothic\", sans-serif);height:300px;color:#000;direction:ltr}kup-editor .CodeMirror-lines{padding:4px 0}kup-editor .CodeMirror pre.CodeMirror-line,kup-editor .CodeMirror pre.CodeMirror-line-like{padding:0 4px}kup-editor .CodeMirror-scrollbar-filler,kup-editor .CodeMirror-gutter-filler{background-color:#fff}kup-editor .CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}kup-editor .CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}kup-editor .CodeMirror-guttermarker{color:#000}kup-editor .CodeMirror-guttermarker-subtle{color:#999}kup-editor .CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}kup-editor .CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}kup-editor .cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}kup-editor .cm-fat-cursor div.CodeMirror-cursors{z-index:1}kup-editor .cm-fat-cursor .CodeMirror-line::selection,kup-editor .cm-fat-cursor .CodeMirror-line>span::selection,kup-editor .cm-fat-cursor .CodeMirror-line>span>span::selection{background:rgba(0,0,0,0)}kup-editor .cm-fat-cursor .CodeMirror-line::-moz-selection,kup-editor .cm-fat-cursor .CodeMirror-line>span::-moz-selection,kup-editor .cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:rgba(0,0,0,0)}kup-editor .cm-fat-cursor{caret-color:rgba(0,0,0,0)}@-moz-keyframes blink{50%{background-color:rgba(0,0,0,0)}}@-webkit-keyframes blink{50%{background-color:rgba(0,0,0,0)}}@keyframes blink{50%{background-color:rgba(0,0,0,0)}}kup-editor .cm-tab{display:inline-block;text-decoration:inherit}kup-editor .CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}kup-editor .CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}kup-editor .cm-s-default .cm-header{color:blue}kup-editor .cm-s-default .cm-quote{color:#090}kup-editor .cm-negative{color:#d44}kup-editor .cm-positive{color:#292}kup-editor .cm-header,kup-editor .cm-strong{font-weight:bold}kup-editor .cm-em{font-style:italic}kup-editor .cm-link{text-decoration:underline}kup-editor .cm-strikethrough{text-decoration:line-through}kup-editor .cm-s-default .cm-keyword{color:#708}kup-editor .cm-s-default .cm-atom{color:#219}kup-editor .cm-s-default .cm-number{color:#164}kup-editor .cm-s-default .cm-def{color:blue}kup-editor .cm-s-default .cm-variable-2{color:#05a}kup-editor .cm-s-default .cm-variable-3,kup-editor .cm-s-default .cm-type{color:#085}kup-editor .cm-s-default .cm-comment{color:#a50}kup-editor .cm-s-default .cm-string{color:#a11}kup-editor .cm-s-default .cm-string-2{color:#f50}kup-editor .cm-s-default .cm-meta{color:#555}kup-editor .cm-s-default .cm-qualifier{color:#555}kup-editor .cm-s-default .cm-builtin{color:#30a}kup-editor .cm-s-default .cm-bracket{color:#997}kup-editor .cm-s-default .cm-tag{color:#170}kup-editor .cm-s-default .cm-attribute{color:#00c}kup-editor .cm-s-default .cm-hr{color:#999}kup-editor .cm-s-default .cm-link{color:#00c}kup-editor .cm-s-default .cm-error{color:red}kup-editor .cm-invalidchar{color:red}kup-editor .CodeMirror-composing{border-bottom:2px solid}kup-editor div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}kup-editor div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}kup-editor .CodeMirror-matchingtag{background:rgba(255,150,0,.3)}kup-editor .CodeMirror-activeline-background{background:#e8f2ff}kup-editor .CodeMirror{background:#fff;min-height:auto !important;overflow:hidden;position:relative}kup-editor .CodeMirror-scroll{overflow:scroll !important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}kup-editor .CodeMirror-sizer{position:relative;border-right:50px solid rgba(0,0,0,0)}kup-editor .CodeMirror-vscrollbar,kup-editor .CodeMirror-hscrollbar,kup-editor .CodeMirror-scrollbar-filler,kup-editor .CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}kup-editor .CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}kup-editor .CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}kup-editor .CodeMirror-scrollbar-filler{right:0;bottom:0}kup-editor .CodeMirror-gutter-filler{left:0;bottom:0}kup-editor .CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}kup-editor .CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}kup-editor .CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}kup-editor .CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}kup-editor .CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}kup-editor .CodeMirror-gutter-wrapper ::selection{background-color:rgba(0,0,0,0)}kup-editor .CodeMirror-gutter-wrapper ::-moz-selection{background-color:rgba(0,0,0,0)}kup-editor .CodeMirror-lines{cursor:text;min-height:1px}kup-editor .CodeMirror pre.CodeMirror-line,kup-editor .CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:rgba(0,0,0,0);font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}kup-editor .CodeMirror-wrap pre.CodeMirror-line,kup-editor .CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}kup-editor .CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}kup-editor .CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}kup-editor .CodeMirror-rtl pre{direction:rtl}kup-editor .CodeMirror-code{outline:none}kup-editor .CodeMirror-scroll,kup-editor .CodeMirror-sizer,kup-editor .CodeMirror-gutter,kup-editor .CodeMirror-gutters,kup-editor .CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}kup-editor .CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}kup-editor .CodeMirror-cursor{position:absolute;pointer-events:none}kup-editor .CodeMirror-measure pre{position:static}kup-editor div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}kup-editor div.CodeMirror-dragcursors{visibility:visible}kup-editor .CodeMirror-focused div.CodeMirror-cursors{visibility:visible}kup-editor .CodeMirror-selected{background:#d9d9d9}kup-editor .CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}kup-editor .CodeMirror-crosshair{cursor:crosshair}kup-editor .CodeMirror-line::selection,kup-editor .CodeMirror-line>span::selection,kup-editor .CodeMirror-line>span>span::selection{background:#d7d4f0}kup-editor .CodeMirror-line::-moz-selection,kup-editor .CodeMirror-line>span::-moz-selection,kup-editor .CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}kup-editor .cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}kup-editor .cm-force-border{padding-right:.1px}@media print{kup-editor .CodeMirror div.CodeMirror-cursors{visibility:hidden}}kup-editor .cm-tab-wrap-hack:after{content:\"\"}kup-editor span.CodeMirror-selectedtext{background:none}.tui-tooltip{position:absolute;background-color:#222;z-index:999;opacity:.8;color:#fff;padding:2px 5px;font-size:10px}.tui-tooltip .arrow{content:\"\";display:inline-block;width:10px;height:10px;background-color:#222;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:-3px;left:6px;z-index:-1}#kup-debug-widget{left:0;position:fixed;top:0;z-index:calc(var(--kup-navbar-zindex) + 1) !important}[kup-dialog]{border-top:4px solid var(--kup-border-strong);animation:fade-in-down .25s ease-out;background-color:var(--kup-layer-0);margin:0;position:absolute;-ms-touch-action:none;touch-action:none;transition:none;will-change:transform;-webkit-box-shadow:rgba(0,0,0,.3) 0 1px 3px;-moz-box-shadow:rgba(0,0,0,.3) 0 1px 3px;box-shadow:rgba(0,0,0,.3) 0 1px 3px}[kup-modal-backdrop]{animation:fade-in-down .25s ease-out;background:rgba(0,0,0,.32);display:none;height:100vh;left:0;position:fixed;top:0;width:100vw}[kup-modal-backdrop].visible:not(.responsive){display:block}@keyframes fade-in{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:1}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-10%)}1%{opacity:0;transform:translateY(-9%)}100%{opacity:1;transform:translateY(0)}}#kup-scrolling-arrows{position:fixed;top:50%;left:50%;pointer-events:none;z-index:9999}#kup-scrolling-arrows .kup-left-scrolling-arrow,#kup-scrolling-arrows .kup-right-scrolling-arrow{position:absolute;width:0;height:0;visibility:hidden}#kup-scrolling-arrows .kup-left-scrolling-arrow{border-top:8px solid rgba(0,0,0,0);border-bottom:8px solid rgba(0,0,0,0);border-right:8px solid var(--kup-primary-color);transform:translate(30px, -10px) translateZ(0)}#kup-scrolling-arrows .kup-left-scrolling-arrow.kup-activated{visibility:visible}#kup-scrolling-arrows .kup-left-scrolling-arrow.kup-activated.kup-animated.kup-arrow-1{animation:kup-pulseleft 1.2s infinite;animation-delay:.4s}#kup-scrolling-arrows .kup-left-scrolling-arrow.kup-activated.kup-animated.kup-arrow-2{animation:kup-pulseleft 1.2s infinite;animation-delay:.2s}#kup-scrolling-arrows .kup-left-scrolling-arrow.kup-activated.kup-animated.kup-arrow-3{animation:kup-pulseleft 1.2s infinite}#kup-scrolling-arrows .kup-right-scrolling-arrow{border-top:8px solid rgba(0,0,0,0);border-bottom:8px solid rgba(0,0,0,0);border-left:8px solid var(--kup-primary-color);transform:translate(-30px, -10px) translateZ(0)}#kup-scrolling-arrows .kup-right-scrolling-arrow.kup-activated{visibility:visible}#kup-scrolling-arrows .kup-right-scrolling-arrow.kup-activated.kup-animated.kup-arrow-1{animation:kup-pulseright 1.2s infinite;animation-delay:.4s}#kup-scrolling-arrows .kup-right-scrolling-arrow.kup-activated.kup-animated.kup-arrow-2{animation:kup-pulseright 1.2s infinite;animation-delay:.2s}#kup-scrolling-arrows .kup-right-scrolling-arrow.kup-activated.kup-animated.kup-arrow-3{animation:kup-pulseright 1.2s infinite}@media screen and (max-width: 600px){[kup-modal-backdrop].responsive.visible{display:block}}@keyframes kup-pulseleft{0%{opacity:.2;transform:translate(30px, -10px)}100%{opacity:1;transform:translate(10px, -10px)}}@keyframes kup-pulseright{0%{opacity:.2;transform:translate(-30px, -10px)}100%{opacity:1;transform:translate(-10px, -10px)}}@keyframes pulsealert{0%{opacity:.5}50%{opacity:1}100%{opacity:.5}}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}[kup-dialog]{border-top:4px solid var(--kup-border-strong);animation:fade-in-down cubic-bezier(0.455, 0.03, 0.515, 0.955) s ease-in-out;background-color:var(--kup-layer-0);margin:0;position:absolute;-ms-touch-action:none;touch-action:none;transition:none;will-change:transform;-webkit-box-shadow:rgba(0,0,0,.3) 0 1px 3px;-moz-box-shadow:rgba(0,0,0,.3) 0 1px 3px;box-shadow:rgba(0,0,0,.3) 0 1px 3px}@keyframes fade-in{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:1}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-10%)}1%{opacity:0;transform:translateY(-9%)}100%{opacity:1;transform:translateY(0)}}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-button{--kup_button_background_color: var( --kup-button-background-color, var(--kup-primary-color-0) );--kup_button_background_color_rgb: var( --kup-button-background-color, var(--kup-primary-color-0-rgb) );--kup_button_text_color: var( --kup-button-text-color, var(--kup-primary-color-60) );--kup_button_text_color_rgb: var( --kup-button-text-color, var(--kup-primary-color-60-rgb) );--kup_button_raised_icon_color_focus: var( --kup-button-raised-icon-color-focus, var(--kup-gray-color-0) );--kup_button_border_color: var( --kup-button-border-color, var(--kup-primary-color-60) );--kup_button_background_color_disabled: var( --kup-button-background-color-disabled, var(--kup-gray-color-30) );--kup_button_text_color_disabled: var( --kup-button-text-color-disabled, var(--kup-gray-color-40) );--kup_button_border_color_disabled: var( --kup-button-border-color-disabled, var(--kup-gray-color-30) );--kup_button_background_color_hover: var( --kup-button-background-color-hover, var(--kup-primary-color-50) );--kup_button_background_color_focus: var( --kup-button-background-color-focus, var(--kup-primary-color-80) );--kup_button_background_color_active: var( --kup-button-background-color-active, var(--kup-primary-color-90) );--kup_button_border_color_focus: var( --kup-button-border-color-focus, var(--kup-primary-color-30) );--kup_button_border_radius: var( --kup-button-border-radius, var(--kup-radius-00) );--kup_button_font_family: var( --kup-button-font-family, var(--kup-font-family) );--kup_button_primary_color_h: var( --kup-button-primary-color-h, var(--kup-primary-color-h) );--kup_button_primary_color_s: var( --kup-button-primary-color-s, var(--kup-primary-color-s) );--kup_button_primary_color_l: var( --kup-button-primary-color-l, var(--kup-primary-color-l) );--kup_button_font_size: var(--kup-button-font-size, var(--kup-font-size));--kup_button_font_weight: var(--kup-button-font-weight, 400);--kup_button_height: var(--kup-button-height, 3em);--kup_button_extra_small_height: var(--kup-button-extra-small-height, 20px);--kup_button_small_height: var(--kup-button-small-height, 32px);--kup_button_medium_height: var(--kup-button-medium-height, 40px);--kup_button_large_height: var(--kup-button-large-height, 48px);--kup_button_extra_large_height: var(--kup-button-extra-large-height, 64px);--kup_button_padding: var(--kup-button-padding, 0 1.25em);--kup_button_gap: var(--kup-button-gap, --kup-space-03);--kup_button_text_transform: var(--kup-button-text-transform, capitalize);--kup-spinner-color: var(--kup_button_text_color)}.f-button .button{-moz-osx-font-smoothing:grayscale;-webkit-appearance:none;appearance:none;-webkit-font-smoothing:antialiased;align-items:center;background-color:rgba(0,0,0,0);border-width:1px;border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--kup_button_border_radius);box-sizing:border-box;color:var(--kup_button_text_color);cursor:pointer;display:inline-flex;height:var(--kup_button_height);justify-content:center;gap:var(--kup_button_gap);min-width:64px;outline:none;overflow:visible;padding:var(--kup_button_padding);position:relative;text-decoration:none;text-transform:var(--kup_button_text_transform);transition:background-color 80ms linear,box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);user-select:none;vertical-align:middle;text-wrap:nowrap;font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.f-button .button:hover{background-color:var(--kup_button_background_color_hover);color:var(--kup-primary-color-0)}.f-button .button:hover .f-image__icon,.f-button .button:hover .f-image__placeholder{background-color:var(--kup-gray-color-0) !important;color:var(--kup-primary-color-0)}.f-button .button:focus .f-image__icon,.f-button .button:focus .f-image__placeholder{background:var(--kup_button_border_color_focus) !important;color:var(--kup-primary-color-60)}.f-button .button:active{background-color:var(--kup_button_background_color_active);color:var(--kup-primary-color-0)}.f-button .button:active .f-image__icon,.f-button .button:active .f-image__placeholder{background:var(--kup-primary-color-0) !important}.f-button .button .button__icon{margin-left:-0.25em;margin-right:.75em}.f-button .button .button__label+.button__icon{margin-left:.75em;margin-right:-0.25em}.f-button .button.button--extra-small{height:var(--kup_button_extra_small_height)}.f-button .button.button--small{height:var(--kup_button_small_height)}.f-button .button.button--medium{height:var(--kup_button_medium_height)}.f-button .button.button--large{height:var(--kup_button_large_height)}.f-button .button.button--extra-large{height:var(--kup_button_extra_large_height)}.f-button .button.button--left{justify-content:left}.f-button .button.button--right{justify-content:right}.f-button .button.button--around{justify-content:space-around}.f-button .button.button--between{justify-content:space-between}.f-button .button.button--evenly{justify-content:space-evenly}.f-button .button.button--floating,.f-button .button.button--raised{--kup-spinner-color: var(--kup_button_text_color);--kup_button_background_color: var(--kup-primary-color-60);--kup_button_text_color: var(--kup-primary-color-0);background-color:var(--kup_button_background_color);color:var(--kup_button_text_color)}.f-button .button.button--floating:not(.button--disabled),.f-button .button.button--raised:not(.button--disabled){--kup-spinner-border-color: hsl( var(--kup_button_primary_color_h), calc(var(--kup_button_primary_color_s) * 0.75), calc(var(--kup_button_primary_color_l) * 0.85) )}.f-button .button.button--floating:hover,.f-button .button.button--raised:hover{--kup_button_background_color_hover: var(--kup-primary-color-70);background-color:var(--kup_button_background_color_hover)}.f-button .button.button--floating:focus,.f-button .button.button--raised:focus{--kup_button_border_color_focus: var(--kup-primary-color-90);background-color:var(--kup-primary-color-80);border-color:var(--kup_button_border_color_focus)}.f-button .button.button--floating:focus .f-image__icon,.f-button .button.button--floating:focus .f-image__placeholder,.f-button .button.button--raised:focus .f-image__icon,.f-button .button.button--raised:focus .f-image__placeholder{background:var(--kup_button_raised_icon_color_focus) !important;color:var(--kup-primary-color-60)}.f-button .button.button--floating:active,.f-button .button.button--raised:active{--kup_button_background_color_active: var(--kup-primary-color-80);background-color:var(--kup_button_background_color_active)}.f-button .button.button--floating.button--disabled,.f-button .button.button--raised.button--disabled{color:var(--kup_button_text_color_disabled);background-color:var(--kup_button_background_color_disabled)}.f-button .button.button--floating{box-shadow:0 .215em .35em -1px rgba(var(--kup-text-color-rgb), 0.2),0 .43em .71em 0 rgba(var(--kup-text-color-rgb), 0.14),0 .07em 1.285em 0 rgba(var(--kup-text-color-rgb), 0.12);font-weight:500;font-size:1em;height:3.4em;width:auto;padding:0 1.5em;justify-content:center}.f-button .button.button--floating.button--no-label{height:4em;padding:0;width:4em}.f-button .button.button--floating:hover,.f-button .button.button--floating:focus{box-shadow:0 5px 5px -3px rgba(var(--kup-text-color-rgb), 0.2),0 8px 10px 1px rgba(var(--kup-text-color-rgb), 0.14),0 3px 14px 2px rgba(var(--kup-text-color-rgb), 0.12)}.f-button .button.button--floating:active{box-shadow:0 7px 8px -4px rgba(var(--kup-text-color-rgb), 0.2),0 12px 17px 2px rgba(var(--kup-text-color-rgb), 0.14),0 5px 22px 4px rgba(var(--kup-text-color-rgb), 0.12)}.f-button .button.button--outlined{--kup_button_text_color: var(--kup-primary-color-60);background-color:rgba(0,0,0,0);color:var(--kup_button_text_color);border-color:var(--kup_button_border_color)}.f-button .button.button--outlined:hover{--kup_button_background_color_hover: var(--kup-primary-color-60);--kup_button_text_color_hover: var(--kup-primary-color-0);--kup_button_text_color: var(--kup-primary-color-0);color:var(--kup_button_text_color_hover);background-color:var(--kup_button_background_color_hover);border-color:rgba(0,0,0,0)}.f-button .button.button--outlined:hover .f-image .f-image__icon,.f-button .button.button--outlined:hover .f-image .f-image__placeholder{--kup_button_background_color_hover: var(--kup-gray-color-0);background-color:var(--kup_button_background_color_hover) !important}.f-button .button.button--outlined:focus{--kup_button_background_color_focus: var(--kup-primary-color-70);--kup_button_text_color_focus: var(--kup-primary-color-0);--kup_button_text_color: var(--kup-primary-color-0);color:var(--kup_button_text_color_focus);background-color:var(--kup_button_background_color_focus)}.f-button .button.button--outlined:focus .f-image .f-image__icon,.f-button .button.button--outlined:focus .f-image .f-image__placeholder{--kup_button_background_color_focus: var(--kup-primary-color-0);background-color:var(--kup_button_background_color_focus) !important}.f-button .button.button--outlined:active{--kup_button_text_color_active: var(--kup-primary-color-0);--kup_button_background_color_active: var(--kup-primary-color-70);color:var(--kup_button_text_color_active);background-color:var(--kup_button_background_color_active)}.f-button .button.button--outlined:active .f-image .f-image__icon,.f-button .button.button--outlined:active .f-image .f-image__placeholder{--kup_button_background_color_active: var(--kup-primary-color-0);background-color:var(--kup_button_background_color_active) !important}.f-button .button.button--outlined.button--disabled{border-color:var(--kup_button_border_color_disabled)}.f-button .button.button--flat{--kup_button_text_color: var(--kup-primary-color-60);color:var(--kup_button_text_color);background-color:rgba(0,0,0,0)}.f-button .button.button--flat:hover{--kup_button_background_color_hover: var(--kup-gray-color-10-hover);background-color:var(--kup_button_background_color_hover)}.f-button .button.button--flat:hover .f-image .f-image__icon,.f-button .button.button--flat:hover .f-image .f-image__placeholder{background-color:var(--kup_button_text_color) !important}.f-button .button.button--flat:focus{border:1px solid var(--kup_button_border_color);background-color:rgba(0,0,0,0)}.f-button .button.button--flat:focus .f-image .f-image__icon,.f-button .button.button--flat:focus .f-image .f-image__placeholder{background-color:var(--kup_button_text_color) !important}.f-button .button.button--flat:active{border:1px solid var(--kup_button_border_color);--kup_button_background_color_active: var(--kup-gray-color-20-hover);background-color:var(--kup_button_background_color_active)}.f-button .button.button--flat:active .f-image .f-image__icon,.f-button .button.button--flat:active .f-image .f-image__placeholder{--kup_button_text_color: var(--kup-primary-color-60)}.f-button .button.button--flat.button--disabled{border-color:var(--kup_button_border_color_disabled)}.f-button .button.button--no-label{min-width:unset;padding:0 .5em}.f-button .button.button--no-label .button__icon{margin:0}.f-button .button.button--disabled{color:var(--kup_button_text_color_disabled);cursor:not-allowed;pointer-events:none}.f-button .button .button__spinner-container{width:100%;height:var(--kup_button_spinner_height);left:0;position:absolute}.f-button .icon-button{background-color:rgba(0,0,0,0);display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;text-decoration:none;cursor:pointer;user-select:none;padding:.75em;font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.f-button .icon-button:hover,.f-button .icon-button:focus{background-color:var(--kup-primary-color-60)}.f-button .icon-button:hover .icon-button__icon .f-image__icon,.f-button .icon-button:hover .icon-button__icon .f-image__placeholder,.f-button .icon-button:focus .icon-button__icon .f-image__icon,.f-button .icon-button:focus .icon-button__icon .f-image__placeholder{background:var(--kup-primary-color-0) !important}.f-button .icon-button .icon-button__icon{display:flex;margin:auto}.f-button .icon-button .icon-button__icon.icon-button__icon--on{display:none}.f-button .icon-button.button--disabled{opacity:.75;pointer-events:none}.f-button .icon-button .icon-button__spinner-container{width:var(--kup_button_spinner_width);height:var(--kup_button_spinner_height)}.f-button .button--with-spinner{opacity:.8;pointer-events:none}.f-button .content--hidden{visibility:hidden}.f-button.kup-neutral .button{--kup_button_background_color: var(--kup-gray-color-70);--kup_button_border_color_focus: var(--kup-text-primary);--kup_button_text_color: var(--kup-text-primary)}.f-button.kup-neutral .button:hover{--kup_button_background_color_hover: var(--kup-gray-color-80);--kup_button_text_color: var(--kup-gray-color-0)}.f-button.kup-neutral .button:hover .button__label{color:var(--kup_button_text_color)}.f-button.kup-neutral .button:focus{--kup_button_background_color_focus: var(--kup-gray-color-90);--kup_button_border_color_focus: var(--kup-gray-color-80);--kup_button_text_color: var(--kup-gray-color-0);background-color:var(--kup_button_background_color_focus)}.f-button.kup-neutral .button:focus .f-image__icon,.f-button.kup-neutral .button:focus .f-image__placeholder{background:#fff !important;color:var(--kup-primary-color-60)}.f-button.kup-neutral .button:active{--kup_button_background_color_active: var(--kup-gray-color-70);--kup_button_text_color: var(--kup-gray-color-0);background-color:var(--kup_button_background_color_active);color:var(--kup_button_text_color)}.f-button.kup-neutral .button.button--floating,.f-button.kup-neutral .button.button--raised{--kup_button_text_color: var(--kup-gray-color-0)}.f-button.kup-neutral .button.button--floating:hover,.f-button.kup-neutral .button.button--raised:hover{--kup_button_background_color_hover: var(--kup-gray-color-80);--kup_button_text_color: var(--kup-gray-color-0)}.f-button.kup-neutral .button.button--floating:active,.f-button.kup-neutral .button.button--raised:active{--kup_button_background_color_active: var(--kup-text-primary);--kup_button_text_color: var(--kup-gray-color-0)}.f-button.kup-neutral .button.button--floating:focus,.f-button.kup-neutral .button.button--raised:focus{--kup_button_background_color_focus: var(--kup-text-primary);--kup_button_text_color: var(--kup-gray-color-0)}.f-button.kup-neutral .button.button--floating.button--disabled,.f-button.kup-neutral .button.button--raised.button--disabled{--kup_button_text_color: var(--kup_button_text_color_disabled)}.f-button.kup-neutral .button.button--outlined{--kup_button_border_color: var(--kup-gray-color-70);--kup_button_text_color: var(--kup-gray-color-70)}.f-button.kup-neutral .button.button--outlined:hover{--kup_button_text_color: var(--kup-gray-color-0);--kup_button_background_color_hover: var(--kup-gray-color-80)}.f-button.kup-neutral .button.button--outlined:focus{background-color:var(--kup-text-primary);color:var(--kup-gray-color-0)}.f-button.kup-neutral .button.button--outlined:active{background-color:var(--kup-text-primary)}.f-button.kup-neutral .button.button--outlined.button--disabled{--kup_button_text_color: var(--kup_button_text_color_disabled);--kup_button_border_color: var(--kup-gray-color-40)}.f-button.kup-neutral .button.button--flat{--kup_button_text_color: var(--kup-gray-color-70)}.f-button.kup-neutral .button.button--flat:hover{--kup_button_background_color_hover: var(--kup-gray-color-10-hover);background-color:var(--kup_button_background_color_hover)}.f-button.kup-neutral .button.button--flat:active{--kup_button_background_color_active: var(--kup-gray-color-20-hover);background-color:var(--kup_button_background_color_active)}.f-button.kup-neutral .button.button--flat:active .f-image .f-image__icon,.f-button.kup-neutral .button.button--flat:active .f-image .f-image__placeholder{background-color:var(--kup-gray-color-70) !important}.f-button.kup-neutral .button.button--flat:focus{border:1px solid var(--kup-gray-color-70);background-color:rgba(0,0,0,0)}.f-button.kup-neutral .button.button--flat.button--disabled{--kup_button_text_color: var(--kup_button_text_color_disabled);--kup_button_border_color: var(--kup-gray-color-40)}.f-button.kup-neutral .icon-button{background-color:rgba(0,0,0,0);display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;text-decoration:none;cursor:pointer;user-select:none;padding:.75em;font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.f-button.kup-neutral .icon-button .icon-button__icon .f-image__icon,.f-button.kup-neutral .icon-button .icon-button__icon .f-image__placeholder{background:var(--kup-gray-color-70)}.f-button.kup-neutral .icon-button:hover,.f-button.kup-neutral .icon-button:focus{background-color:var(--kup-gray-color-60)}.f-button.kup-neutral .icon-button:hover .icon-button__icon .f-image__icon,.f-button.kup-neutral .icon-button:hover .icon-button__icon .f-image__placeholder,.f-button.kup-neutral .icon-button:focus .icon-button__icon .f-image__icon,.f-button.kup-neutral .icon-button:focus .icon-button__icon .f-image__placeholder{background:var(--kup-gray-color-0) !important}.f-button.kup-neutral .icon-button .icon-button__icon{display:flex;margin:auto}.f-button.kup-neutral .icon-button .icon-button__icon.icon-button__icon--on{display:none}.f-button.kup-neutral .icon-button.button--disabled{opacity:.75;pointer-events:none}.f-button.kup-neutral .icon-button .icon-button__spinner-container{width:var(--kup_button_spinner_width);height:var(--kup_button_spinner_height)}.f-button.kup-neutral.kup-black-mode .button{--kup_button_text_color: #fff;--kup_button_background_color_hover: #393939;--kup_button_background_color_focus: #525252;--kup_button_background_color_active: #525252}.f-button.kup-neutral.kup-black-mode .button .f-image .iconWrapper .f-image__icon{background:#fff !important}.f-button.kup-neutral.kup-black-mode .icon-button{--kup_button_text_color: #fff}.f-button.kup-neutral.kup-black-mode .icon-button .f-image .iconWrapper .f-image__icon{background:#fff !important}.f-button.kup-neutral.kup-black-mode .icon-button:hover{background-color:#393939}.f-button.kup-neutral.kup-black-mode .icon-button:focus,.f-button.kup-neutral.kup-black-mode .icon-button:active{background-color:#525252}.f-button.kup-full-height{height:100%}.f-button.kup-full-height .button{height:100%}.f-button.kup-full-width{width:100%}.f-button.kup-full-width .button{width:100%}.f-button.kup-large button{font-size:1.25em}.f-button.kup-slim button{font-size:.675em}.f-button.kup-pulsating .icon-button--on:after{content:\"\";animation:pulsating 1250ms infinite;position:absolute;height:2px;width:2px;top:calc(50% - 1px);left:calc(50% - 1px)}.f-button.kup-danger .button{--kup_button_background_color: transparent;--kup_button_border_color_focus: var(--kup-danger-color-60);--kup_button_text_color: var(--kup-danger-color-60)}.f-button.kup-danger .button:hover{--kup_button_background_color_hover: var(--kup-danger-color-70);--kup_button_text_color: var(--kup-primary-color-0)}.f-button.kup-danger .button:focus{--kup_button_background_color_focus: var(--kup-danger-color-80);--kup_button_border_color_focus: var(--kup-danger-color-80);--kup_button_text_color: var(--kup-primary-color-0);background-color:var(--kup_button_background_color_focus)}.f-button.kup-danger .button:focus .f-image__icon,.f-button.kup-danger .button:focus .f-image__placeholder{background:#fff !important;color:var(--kup-primary-color-60)}.f-button.kup-danger .button:active{--kup_button_background_color_active: var(--kup-danger-color-80);--kup_button_text_color: var(--kup-primary-color-0);background-color:var(--kup_button_background_color_active);color:var(--kup_button_text_color)}.f-button.kup-danger .button.button--floating,.f-button.kup-danger .button.button--raised{--kup_button_text_color: var(--kup-primary-color-0);--kup_button_background_color: var(--kup-danger-color-60)}.f-button.kup-danger .button.button--floating:hover,.f-button.kup-danger .button.button--raised:hover{--kup_button_background_color_hover: var(--kup-danger-color-70)}.f-button.kup-danger .button.button--floating:active,.f-button.kup-danger .button.button--raised:active{--kup_button_background_color_active: var(--kup-danger-color-80)}.f-button.kup-danger .button.button--floating:focus,.f-button.kup-danger .button.button--raised:focus{--kup_button_background_color_focus: var(--kup-danger-color-80);background-color:var(--kup_button_background_color_focus)}.f-button.kup-danger .button.button--floating.button--disabled,.f-button.kup-danger .button.button--raised.button--disabled{--kup_button_text_color: var(--kup_button_text_color_disabled)}.f-button.kup-danger .button.button--outlined{--kup_button_border_color: var(--kup-danger-color-60);--kup_button_text_color: var(--kup-danger-color-60)}.f-button.kup-danger .button.button--outlined:hover{--kup_button_background_color_hover: var(--kup-danger-color-70);--kup_button_text_color_hover: var(--kup-primary-color-0)}.f-button.kup-danger .button.button--outlined:focus{--kup_button_background_color_focus: var(--kup-danger-color-80);--kup_button_text_color: var(--kup-primary-color-0)}.f-button.kup-danger .button.button--outlined:active{--kup_button_background_color_active: var(--kup-danger-color-80)}.f-button.kup-danger .button.button--outlined.button--disabled{--kup_button_text_color: var(--kup_button_text_color_disabled);--kup_button_border_color: var(--kup-gray-color-40)}.f-button.kup-danger .button.button--flat{--kup_button_text_color: var(--kup-danger-color-60)}.f-button.kup-danger .button.button--flat:hover{--kup_button_background_color_hover: var(--kup-danger-color-70);--kup_button_text_color_hover: var(--kup-primary-color-0);color:var(--kup_button_text_color_hover)}.f-button.kup-danger .button.button--flat:hover .f-image__icon,.f-button.kup-danger .button.button--flat:hover .f-image__placeholder{background:var(--kup_button_text_color_hover) !important}.f-button.kup-danger .button.button--flat:active{border:1px solid var(--kup-danger-color-60);--kup_button_background_color_active: var(--kup-danger-color-80)}.f-button.kup-danger .button.button--flat:active .f-image__icon,.f-button.kup-danger .button.button--flat:active .f-image__placeholder{background:var(--kup_button_text_color_hover) !important}.f-button.kup-danger .button.button--flat:focus{--kup_button_background_color_focus: var(--kup-danger-color-80);--kup_button_text_color: var(--kup-primary-color-0)}.f-button.kup-danger .button.button--flat.button--disabled{--kup_button_text_color: var(--kup_button_text_color_disabled);--kup_button_border_color: var(--kup-gray-color-40)}.f-button.kup-info{--kup-button-primary-color: var(--kup-info-color);--kup-button-primary-color-h: var(--kup-info-color-h);--kup-button-primary-color-s: var(--kup-info-color-s);--kup-button-primary-color-l: var(--kup-info-color-l);--kup-button-primary-color-rgb: var(--kup-info-color-rgb);--kup-button-text-on-primary-color: white}.f-button.kup-secondary{--kup_button_text_color: var(--kup-secondary-color);--kup-button-primary-color: var(--kup-secondary-color);--kup-button-primary-color-h: var(--kup-secondary-color-h);--kup-button-primary-color-s: var(--kup-secondary-color-s);--kup-button-primary-color-l: var(--kup-secondary-color-l);--kup-button-primary-color-rgb: var(--kup-secondary-color-rgb);--kup-button-text-on-primary-color: var(--kup-text-on-secondary-color)}.f-button.kup-secondary.f-button .icon-button:focus .icon-button__icon .f-image__icon,.f-button.kup-secondary.f-button .icon-button:focus .icon-button__icon .f-image__placeholder{background:var(--kup-secondary-color) !important}.f-button.kup-success{--kup-button-primary-color: var(--kup-success-color);--kup-button-primary-color-h: var(--kup-success-color-h);--kup-button-primary-color-s: var(--kup-success-color-s);--kup-button-primary-color-l: var(--kup-success-color-l);--kup-button-primary-color-rgb: var(--kup-success-color-rgb);--kup-button-text-on-primary-color: white}.f-button.kup-warning{--kup-button-primary-color: var(--kup-warning-color-50);--kup-button-primary-color-h: var(--kup-warning-color-h);--kup-button-primary-color-s: var(--kup-warning-color-s);--kup-button-primary-color-l: var(--kup-warning-color-l);--kup-button-primary-color-rgb: var(--kup-warning-color-rgb);--kup-button-text-on-primary-color: white}@keyframes pulsating{0%{transform:scale(2);box-shadow:0 0 0 0 rgba(var(--kup_button_primary_color_rgb), 0.7)}70%{transform:scale(2.75);box-shadow:0 0 0 10px rgba(var(--kup_button_primary_color_rgb), 0)}100%{transform:scale(2);box-shadow:0 0 0 0 rgba(var(--kup_button_primary_color_rgb), 0)}}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-cell{--kup_fcell_width: var(--kup-fcell-width, 100%);--kup_cell_background: var(--kup-cell-background);--kup_cell_font_family: var(--kup-cell-font-family);--kup_cell_font_family_monospace: var( --kup-cell-font-family-monospace, var(--kup-font-family-monospace) );--kup_cell_font_size: var(--kup-cell-font-size);--kup_cell_text_color: var(--kup-cell-text-color);--kup_fcell_padding_dense: var( --kup-fcell-padding-dense, var(--kup-space-01) var(--kup-space-03) );--kup_fcell_padding_medium: var( --kup-fcell-padding-medium, var(--kup-space-02) var(--kup-space-03) );--kup_fcell_padding_wide: var( --kup-fcell-padding-wide, var(--kup-space-04) var(--kup-space-03) );background:var(--kup_cell_background);box-sizing:border-box;color:var(--kup_cell_text_color);display:flex;font-family:var(--kup_cell_font_family);font-size:var(--kup_cell_font_size);min-height:100%;width:var(--kup_fcell_width);word-break:break-all;word-wrap:break-word;max-width:100%;align-items:self-start}.f-cell:has(.f-cell__content .f-image .iconWrapper .f-image__icon){max-height:100%}.f-cell:hover .f-image.f-cell__iconfunction.right,.f-cell:hover .f-image.f-cell__iconfunction.left{opacity:1;background-color:var(--kup-gray-color-10-hover);z-index:2}.f-cell .f-cell__content{align-items:center;display:flex;width:100%;position:relative;height:fit-content}.f-cell .f-cell__content .f-image.f-cell__iconfunction{display:block;opacity:0;position:absolute;transition:opacity .3s ease}.f-cell .f-cell__content .f-image.f-cell__iconfunction.right{right:0}.f-cell .f-cell__content .f-image.f-cell__iconfunction.left{left:0}.f-cell .f-cell__content .f-image.f-cell__iconfunction:focus-within{opacity:1}.f-cell .f-cell__content img,.f-cell .f-cell__content .f-image{margin:0}.f-cell .f-cell__content .cell-info{padding:0 .5em 0 .25em}.f-cell .f-cell__content .obj-icon{padding:0 .5em 0 0}.f-cell .f-cell__text{overflow:hidden;text-overflow:ellipsis;word-break:normal}.f-cell.bar-cell .f-image--wrapper{height:100%;margin:auto;min-height:18px;overflow:hidden;position:relative;transition:color .2s ease;width:100%}.f-cell.editor-cell .f-cell__content{margin:0;overflow:hidden}.f-cell.editor-cell .f-cell__content>*{max-width:100%;word-break:normal}.f-cell.icon-cell .f-cell__content{min-height:18px;min-width:18px}.f-cell.icon-cell .f-cell__content .imageWrapIcon{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.f-cell.icon-cell .f-cell__content .imageWrapIcon .f-image{position:absolute;padding-bottom:0px;width:100%;height:100%;overflow:hidden}.f-cell.icon-cell .f-cell__content .imageWrapIcon .f-image .f-image__icon{height:100% !important}.f-cell.image-cell{max-height:100%}.f-cell.image-cell .f-cell__content .imageWrapIcon{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.f-cell.image-cell .f-cell__content .imageWrapIcon .f-image{position:absolute;padding-bottom:0px;width:100%;height:100%;overflow:hidden}.f-cell.image-cell .f-cell__content .imageWrapIcon .f-image .f-image__icon{height:100% !important}.f-cell.number-cell .f-cell__content{--kup-textfield-font-family: var(--kup_cell_font_family_monospace);font-family:var(--kup_cell_font_family_monospace)}.f-cell.switch-cell{min-height:48px}.f-cell .mdc-text-field.mdc-text-field--fullwidth{padding:0px}.f-cell .f-checkbox .checkbox .checkbox__native-control{height:18px;width:18px}.f-cell kup-checkbox,.f-cell kup-image{display:flex}.f-cell kup-button{display:inline-block}.f-cell kup-chip{width:100%}.f-cell kup-button-list{display:flex;margin:auto}.f-cell kup-progress-bar{display:block}.f-cell .input-field{background:none;border:none;border-bottom:1px solid var(--kup-border-strong);height:var(--kup_textfield_fullwidth_height) !important;outline:none;padding:var(--kup-fcell-inputfield-padding, 4px);transition:border 125ms ease;width:100%}.f-cell .input-field:focus{border-bottom:1px solid var(--kup-primary-color)}.f-cell .input-checkbox:checked{accent-color:var(--kup-primary-color)}.f-cell.clickable{cursor:pointer}.f-cell.monospace{--kup-textfield-font-family: var(--kup_cell_font_family_monospace);font-family:var(--kup-font-family-monospace)}.f-cell.display-on-hover{opacity:0;transition:opacity .25s}.f-cell.display-on-hover:hover{opacity:1}.f-cell.expand-on-hover .f-cell__content{transition:transform 125ms}.f-cell.expand-on-hover:hover .f-cell__content{transform:scale(1.25)}.f-cell.obj{cursor:var(--kup-obj-cursor)}.f-cell.reduce-on-hover .f-cell__content{transition:transform 125ms}.f-cell.reduce-on-hover:hover .f-cell__content{transform:scale(0.75)}.f-cell.shaped{border-radius:4px}.f-cell.strong-text{--kup-textfield-font-weight: 600;font-weight:600}.f-cell.underlined{text-decoration:underline}.f-cell.primary-text{--kup-textfield-color: var(--kup-primary-color-60) !important;color:var(--kup-primary-color-60) !important}.f-cell.secondary-text{--kup-textfield-color: var(--kup-secondary-color) !important;color:var(--kup-secondary-color) !important}.f-cell.success-text{--kup-textfield-color: var(--kup-success-color-40) !important;color:var(--kup-success-color-40) !important}.f-cell.warning-text{--kup-textfield-color: var(--kup-warning-color-50) !important;color:var(--kup-warning-color-50) !important}.f-cell.danger-text{--kup-textfield-color: var(--kup-danger-color-60) !important;color:var(--kup-danger-color-60) !important}.f-cell.purple-text{--kup-textfield-color: #8e15bf !important;color:#8e15bf !important}.f-cell.success-bg{background:var(--kup-success-color-40) !important;color:#fff !important}.f-cell.warning-bg{background:var(--kup-warning-color-50) !important;color:var(--kup-gray-color-0) !important}.f-cell.danger-bg{background:var(--kup-danger-color-60) !important;color:#fff !important}.f-cell.teal-bg{background:#00b4bc !important;color:#fff !important}.f-cell.orange-bg{background:#f59729 !important;color:#fff !important}.f-cell.green-bg{background:#00be67 !important;color:#fff !important}.f-cell.grey-bg{background:#8d8d8d !important;color:#fff !important}.f-cell.purple-bg{background:#b88acc !important;color:#fff !important}.f-cell.top-right-indicator{position:relative}.f-cell.top-right-indicator:after{content:\"\";border-width:0 0 .5em .5em;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--kup-secondary-color) rgba(0,0,0,0);border-style:solid;transform:rotate(270deg);position:absolute;right:0;top:0}.f-cell.link .f-cell__content{color:#00e;cursor:pointer;text-decoration:underline}.f-cell.c-vertical-text .f-cell__content{width:auto;margin:auto;min-height:16px;min-width:16px;text-align:center;writing-mode:vertical-lr}.f-cell.c-right-aligned:not(.c-centered){--kup-textfield-text-align: right}.f-cell.c-right-aligned:not(.c-centered) .f-cell__content{justify-content:flex-end;margin:0;margin-left:auto;text-align:right}.f-cell.c-right-aligned:not(.c-centered) .f-cell__content img,.f-cell.c-right-aligned:not(.c-centered) .f-cell__content .f-image{margin-left:auto;margin-right:0}.f-cell.c-pre .f-cell__content{white-space:pre}.f-cell.c-pre .f-cell__content .f-cell__text{font-size:11px}.f-cell.c-centered{--kup-textfield-text-align: center;justify-content:center}.f-cell.c-centered .f-cell__content{justify-content:center}.f-cell.c-centered .f-cell__content img,.f-cell.c-centered .f-cell__content .f-image{margin:auto}.f-cell.c-fitted .f-cell__content{max-width:max-content}.f-cell.c-round .f-cell__content{border-radius:50px}.f-cell.c-shaped .f-cell__content{border-radius:4px}.f-cell.c-padded .f-cell__content{padding:1em}.f-cell.c-hor-padded .f-cell__content{box-sizing:border-box;padding-left:.5em;padding-right:.5em}.f-cell.c-ver-padded .f-cell__content{box-sizing:border-box;padding-top:.5em;padding-bottom:.5em}.f-cell.c-success-bg .f-cell__content{background:var(--kup-success-color-40) !important;color:#fff !important}.f-cell.c-warning-bg .f-cell__content{background:var(--kup-warning-color-50) !important}.f-cell.c-danger-bg .f-cell__content{background:var(--kup-danger-color-60) !important;color:#fff !important}.f-cell.c-teal-bg .f-cell__content{background:#00b4bc !important;color:#fff !important}.f-cell.c-orange-bg .f-cell__content{background:#f59729 !important;color:#fff !important}.f-cell.c-green-bg .f-cell__content{background:#00be67 !important;color:#fff !important}.f-cell.c-grey-bg .f-cell__content{background:#8d8d8d !important;color:#fff !important}.f-cell.c-purple-bg .f-cell__content{background:#b88acc !important;color:#fff !important}.f-cell.c-uppercase .f-cell__content *{text-transform:uppercase}.f-cell.c-lowercase .f-cell__content *{text-transform:lowercase}.f-cell.dense{--kup-textfield-fullwidth-height: 28px;--kup-textfield-fullwidth-padding: 0px;--kup-checkbox-padding: 0px;--kup-chip-margin: 0 4px;padding:var(--kup_fcell_padding_dense)}.f-cell.medium{--kup-textfield-fullwidth-height: 36px;--kup-textfield-fullwidth-padding: 0px;padding:var(--kup_fcell_padding_medium)}.f-cell.wide{--kup-textfield-fullwidth-height: 50px;--kup-textfield-fullwidth-padding: 0px;padding:var(--kup_fcell_padding_wide)}@media screen and (max-width: 899px){.f-cell{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-checkbox{--kup_danger_icon_color: var(--kup-danger-color, var(--kup-danger-color-60));--kup_warning_icon_color: var( --kup-warning-color, var(--kup-warning-color-50) );--kup_checkbox_disabled_checkmark_color: var( --kup-checkbox-disabled-checkmark-color, var(--kup-border-disabled) );--kup_checkbox_padding: var(--kup-checkbox-padding, 11px);--kup_checkbox_primary_color: var( --kup-checkbox-primary-color, var(--kup-text-primary) );--kup_checkbox_text_color: var( --kup-checkbox-text-color, var(--kup-text-primary) );--kup_checkbox_text_on_primary_color: var( --kup-checkbox-text-on-primary-color, var(--kup-layer-1) );--kup_checkbox_text_disabled: var( --kup-checkbox-text-disabled, var(--kup-text-disabled) );font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px;display:flex;flex-direction:column}.f-checkbox .form-field{color:var(--kup_checkbox_text_color);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-decoration:inherit;align-items:center;vertical-align:middle;display:inline-flex}.f-checkbox .form-field label{margin-left:0px;margin-right:auto;order:0;cursor:pointer}.f-checkbox .form-field label:hover{color:var(--kup_checkbox_primary_color)}.f-checkbox .form-field.form-field--align-end label{margin-left:auto;margin-right:0px;order:-1}.f-checkbox .checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;will-change:transform,opacity;z-index:0;padding:var(--kup_checkbox_padding);transition:background-color 125ms linear}.f-checkbox .checkbox:hover label{color:var(--kup_checkbox_primary_color)}.f-checkbox .checkbox .checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;top:0;left:0;right:0;height:40px;width:40px}.f-checkbox .checkbox .checkbox__native-control:checked~.checkbox__background .checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.f-checkbox .checkbox .checkbox__checkmark-path{stroke:var(--kup_checkbox_text_on_primary_color);stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke-width:3.12px;transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.f-checkbox .checkbox .checkbox__background{position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:1px solid var(--kup_checkbox_text_color);border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.f-checkbox .checkbox .checkbox__background .checkbox__checkmark{color:var(--kup_checkbox_text_on_primary_color);position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.f-checkbox .checkbox .checkbox__background .checkbox__mixedmark{position:absolute;top:6px;left:1px;color:var(--kup_checkbox_text_on_primary_color);width:75%;height:0;border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.f-checkbox .checkbox.checkbox--checked .checkbox__background{background-color:var(--kup_checkbox_primary_color);opacity:1}.f-checkbox .checkbox.checkbox--checked .checkbox__checkmark-path{stroke-dashoffset:0}.f-checkbox .checkbox.checkbox--indeterminate .checkbox__background{background-color:var(--kup_checkbox_primary_color)}.f-checkbox .checkbox.checkbox--indeterminate .checkbox__mixedmark{border-color:var(--kup_checkbox_text_on_primary_color);transform:scaleX(1) rotate(0deg);opacity:1}.f-checkbox .checkbox.checkbox--indeterminate .checkbox__checkmark-path{stroke-dashoffset:0}.f-checkbox .checkbox.checkbox--disabled{pointer-events:none;cursor:not-allowed}.f-checkbox .checkbox.checkbox--disabled+label{pointer-events:none;color:var(--kup_checkbox_text_disabled)}.f-checkbox .checkbox.checkbox--disabled .checkbox__background{background-color:rgba(0,0,0,0);border-color:var(--kup_checkbox_disabled_checkmark_color)}.f-checkbox .checkbox.checkbox--disabled.checkbox--checked .checkbox__background{background-color:var(--kup_checkbox_disabled_checkmark_color);border-color:rgba(0,0,0,0)}.f-checkbox .checkbox.checkbox--disabled.checkbox--checked .checkbox__checkmark{color:var(--kup_checkbox_disabled_checkmark_color)}.f-checkbox .checkbox.checkbox--disabled.checkbox--checked .checkbox__mixedmark{color:var(--kup_checkbox_disabled_checkmark_color)}.f-checkbox .checkbox.checkbox--disabled .checkbox__error-message{color:var(--kup_danger_icon_color)}.f-checkbox .checkbox__error-message,.f-checkbox .checkbox__alert-message{padding:0 var(--kup_checkbox_padding);display:inline-flex;align-items:center;gap:8px;font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.f-checkbox .checkbox__error-message .f-image,.f-checkbox .checkbox__alert-message .f-image{margin:unset}.f-checkbox .checkbox__error-message{color:var(--kup_danger_icon_color)}.f-checkbox.checkbox--error .checkbox__background{border-color:var(--kup_danger_icon_color)}.f-checkbox.kup-danger{--kup-checkbox-primary-color: var(--kup_danger_icon_color);--kup-checkbox-primary-color-rgb: var(--kup-danger-color-rgb);--kup-checkbox-text-on-primary-color: white;--kup-checkbox-text-on-primary-color-rgb: 255, 255, 255}.f-checkbox.kup-info{--kup-checkbox-primary-color: var(--kup-info-color-50);--kup-checkbox-primary-color-rgb: var(--kup-info-color-rgb);--kup-checkbox-text-on-primary-color: white;--kup-checkbox-text-on-primary-color-rgb: 255, 255, 255}.f-checkbox.kup-secondary{--kup-checkbox-primary-color: var(--kup-secondary-color);--kup-checkbox-primary-color-rgb: var(--kup-secondary-color-rgb);--kup-checkbox-text-on-primary-color: var(--kup-text-on-secondary-color);--kup-checkbox-text-on-primary-color-rgb: var( --kup-text-on-secondary-color-rgb )}.f-checkbox.kup-success{--kup-checkbox-primary-color: var(--kup-success-color);--kup-checkbox-primary-color-rgb: var(--kup-success-color-rgb);--kup-checkbox-text-on-primary-color: white;--kup-checkbox-text-on-primary-color-rgb: 255, 255, 255}.f-checkbox.kup-warning{--kup-checkbox-primary-color: var(--kup-warning-color-50);--kup-checkbox-primary-color-rgb: var(--kup-warning-color-rgb);--kup-checkbox-text-on-primary-color: white;--kup-checkbox-text-on-primary-color-rgb: 255, 255, 255}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-chip{--kup_chip_background_color: var( --kup-chip-background-color, var(--kup-layer-3) );--kup_chip_border_color: var( --kup-chip-border-color, var(--kup-border-strong) );--kup_chip_border_radius: var( --kup-chip-border-radius, var(--kup-radius-100) );--kup_chip_font_family: var(--kup-chip-font-family, var(--kup-font-family));--kup_chip_font_size: var(--kup-chip-font-size, var(--kup-font-size));--kup_chip_font_weight: var(--kup-chip-font-weight, var(--kup-font-weight));--kup_chip_height: var(--kup-chip-height, 32px);--kup_chip_small_height: var(--kup-chip-small-height, var(--kup-space-05));--kup_chip_medium_height: var(--kup-chip-medium-height, var(--kup-space-06));--kup_chip_indent_multiplier: var(--kup-chip-indent-multiplier, 10);--kup_chip_padding: var(--kup-chip-padding, var(--kup-space-03));--kup_chip_primary_color: var( --kup-chip-primary-color, var(--kup-text-primary) );--kup_chip_primary_color_rgb: var( --kup-chip-primary-color-rgb, var(--kup-primary-color-rgb) );--kup_chip_text_color: var(--kup-chip-text-color, var(--kup-text-primary));--kup_chip_text_color_rgb: var( --kup-chip-text-color-rgb, var(--kup-text-color-rgb) );font-family:var(--kup_chip_font_family);font-size:var(--kup_chip_font_size);font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.f-chip .chip-set{gap:var(--kup-space-03);margin:var(--kup-space-02) var(--kup-space-00) var(--kup-space-02) var(--kup-space-00);display:flex;flex-wrap:wrap;box-sizing:border-box}.f-chip .chip-set .chip-set__item{display:flex;flex-direction:column}.f-chip .chip-set .chip-set__wrapper{display:flex}.f-chip .chip-set .chip-set__wrapper .dropdown-icon{cursor:pointer;margin:auto 0;transform:rotate(180deg);transform-origin:unset}.f-chip .chip-set .chip-set__wrapper .dropdown-icon:hover{opacity:.75}.f-chip .chip-set .chip-set__wrapper--hidden-children .dropdown-icon{transform:unset}.f-chip .chip-set .chip-set__indent{width:calc(var(--kup_chip_margin)*var(--kup_chip_indent_offset)*var(--kup_chip_indent_multiplier))}.f-chip .chip-set.chip--small .chip{height:var(--kup_chip_small_height)}.f-chip .chip-set.chip--medium .chip-set__item .chip-set__wrapper .chip{height:var(--kup_chip_medium_height)}.f-chip .chip-set.chip--outlined .chip-set__item .chip-set__wrapper .chip{background-color:rgba(0,0,0,0);border-color:var(--kup_chip_border_color)}.f-chip .chip-set .chip{align-items:center;background-color:var(--kup_chip_background_color);border-radius:var(--kup_chip_border_radius);border:1px solid rgba(0,0,0,0);box-sizing:border-box;color:var(--kup_chip_text_color);cursor:pointer;display:inline-flex;font-size:.875em;font-weight:var(--kup_chip_font_weight);height:var(--kup_chip_height);letter-spacing:0.0178571429em;margin:var(--kup_chip_margin);max-width:max-content;outline:none;padding:var(--kup_chip_padding);position:relative;text-decoration:inherit;text-transform:inherit}.f-chip .chip-set .chip .chip__icon--leading{color:var(--kup_chip_text_color)}.f-chip .chip-set .chip .chip__icon--leading:not(.chip__icon--leading-hidden){margin:var(--kup-space-00);margin-right:var(--kup-space-03)}.f-chip .chip-set .chip .chip__icon--leading .chip__icon--trailing{position:relative}.f-chip .chip-set .chip--only-icon .chip__icon.f-image{margin:0}.f-chip .chip-set .chip .chip__icon{border-radius:50%;outline:none;vertical-align:middle}.f-chip .chip-set .chip .chip__icon .chip_icon--leading:not(.chip__icon--leading-hidden){width:20px;height:20px;font-size:20px}.f-chip .chip-set .chip .chip__icon .f-image__icon{margin:auto;background:var(--kup_chip_text_color);height:var(--kup_image_height, 100%);width:var(--kup_image_width, 100%)}.f-chip .chip-set .chip .chip__checkmark-svg{width:0;height:20px;transition:width 150ms cubic-bezier(0.4, 0, 0.2, 1)}.f-chip .chip-set .chip .chip__checkmark-path{transition:stroke-dashoffset 150ms 50ms cubic-bezier(0.4, 0, 0.6, 1);stroke-width:2px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.f-chip .chip-set .chip svg path{color:var(--kup_chip_text_color);stroke:var(--kup_chip_text_color)}.f-chip .chip-set .chip .kup-icon{background:var(--kup_chip_text_color);display:block;width:16px;height:16px}.f-chip .chip-set .chip .chip__primary-action{outline:none}.f-chip .chip-set .chip .chip__primary-action .chip__text{white-space:nowrap}.f-chip .chip-set.chip-set--choice .chip--selected{background-color:var(--kup_chip_background_color);color:var(--kup_chip_gray_color)}.f-chip .chip-set.chip-set--filter .chip__icon--leading{opacity:1;transition:opacity 75ms linear;transition-delay:-50ms}.f-chip .chip-set.chip-set--filter .chip__icon--leading+.chip__checkmark{opacity:0;transition:opacity 75ms linear;transition-delay:80ms}.f-chip .chip-set.chip-set--filter .chip__icon--leading+.chip__checkmark .chip__checkmark-svg{transition:width 0ms}.f-chip .chip-set.chip-set--filter .chip__icon--leading.chip__icon--leading-hidden{display:none;width:0;opacity:0}.f-chip .chip-set.chip-set--filter .chip__icon--leading.chip__icon--leading-hidden+.chip__checkmark{height:20px;width:20px;opacity:1}.f-chip .chip-set.chip-set--filter .chip--selected .chip__icon--leading{opacity:0}.f-chip .chip-set.chip-set--filter .chip--selected .chip__checkmark-path{stroke-dashoffset:0}.f-chip .chip-set.chip-set--filter .chip--selected .chip__checkmark{margin-right:var(--kup-space-03)}.f-chip .chip-set.chip-set--filter .chip--selected .chip__checkmark .chip__checkmark-svg{height:20px;width:20px}.f-chip .chip-set.chip-set--input .kup-clear-icon{margin-left:var(--kup-space-03)}.f-chip .chip-set.chip-set--input .kup-clear-icon:hover{opacity:.75}.f-chip :not(svg){transform-origin:0px 0px}.f-chip.kup-primary .chip--outlined .chip-set__item .chip-set__wrapper .chip{--kup_chip_background_color: transparent;--kup_chip_border_color: var(--kup-primary-color-80);--kup_chip_primary_color: var( --kup-chip-primary-color, var(--kup-primary-color-80) );--kup_chip_text_color: var( --kup-chip-text-color, var(--kup-primary-color-80) )}.f-chip.kup-primary .chip--raised .chip-set__item .chip-set__wrapper .chip{--kup_chip_background_color: var(--kup-primary-color-20);--kup_chip_border_color: var(--kup-primary-color-20);--kup_chip_primary_color: var( --kup-chip-primary-color, var(--kup-primary-color-80) );--kup_chip_text_color: var( --kup-chip-text-color, var(--kup-primary-color-80) )}.f-chip.kup-danger{--kup-chip-primary-color: var(--kup-danger-color-60);--kup-chip-primary-color-rgb: var(--kup-danger-color-rgb)}.f-chip.kup-info{--kup-chip-primary-color: var(--kup-info-color-50);--kup-chip-primary-color-rgb: var(--kup-info-color-rgb)}.f-chip.kup-secondary{--kup-chip-primary-color: var(--kup-secondary-color);--kup-chip-primary-color-rgb: var(--kup-secondary-color-rgb)}.f-chip.kup-success{--kup-chip-primary-color: var(--kup-success-color);--kup-chip-primary-color-rgb: var(--kup-success-color-rgb)}.f-chip.kup-warning{--kup-chip-primary-color: var(--kup-warning-color-50);--kup-chip-primary-color-rgb: var(--kup-warning-color-rgb)}.f-chip .kup-icon.kup-dropdown-icon{-webkit-mask:var(--kup-dropdown-icon);mask:var(--kup-dropdown-icon);transition:opacity 125ms,transform .15s}.f-chip .kup-icon.kup-clear-icon{-webkit-mask:var(--kup-clear-icon);mask:var(--kup-clear-icon)}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-image{display:flex;margin:auto;position:relative;height:var(--kup_image_height, 100%);width:var(--kup_image_width, 100%)}.f-image.kup-fit img{max-width:max-content;object-fit:contain}.f-image img{display:block;margin:auto;height:var(--kup_image_height, auto);width:var(--kup_image_width, 100%);object-fit:contain}.f-image .f-image__css{overflow:hidden;height:var(--kup_image_height, 100%);width:var(--kup_image_width, 100%)}.f-image .f-image__icon{margin:auto;height:var(--kup_image_height, 100%);width:var(--kup_image_width, 100%)}.f-image .iconWrapper{display:flex;position:relative;justify-content:space-between;box-sizing:border-box;flex-direction:column;height:auto;width:100%}.f-image .iconWrapper .f-image__icon{width:100%;height:100%;position:absolute}.f-image .f-image__placeholder{height:100%;width:100%;position:absolute}.f-image .f-image__hidden{display:none}.f-image .css-step.bottom-aligned{bottom:0;position:absolute}.f-image.noWidth.noIcon{width:auto}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-paginator{background-color:var(--kup-layer-1);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.f-paginator .load-more-button{padding:0;border-right:1px solid var(--kup-border-subtle);flex:2}.f-paginator .load-more-button button{width:100%}.f-paginator .arrow-wrapper{display:flex}.f-paginator kup-combobox{display:inline-block;z-index:0}.f-paginator kup-combobox.page-selector{padding:0 var(--kup-space-05);border-right:1px solid var(--kup-border-subtle);flex:2}.f-paginator kup-combobox.rows-selector{padding:0 var(--kup-space-05);border-right:1px solid var(--kup-border-subtle);flex:2}@media(max-width: 678px){.f-paginator kup-combobox.rows-selector,.f-paginator kup-combobox.page-selector{padding:0 var(--kup-space-03)}.f-paginator .load-more-button{order:4;width:100%;display:flex;justify-content:center;border-right:none}}@media(max-width: 500px){.f-paginator kup-combobox.rows-selector{order:1;border-right:none}.arrow-wrapper{order:2}.load-more-button{border-left:1px solid var(--kup-border-subtle)}.f-paginator kup-combobox.page-selector{display:none}}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-progress-bar{--kup_progressbar_border_radius: var( --kup-progressbar-border-radius, var(--kup-radius-00) );--kup_progressbar_font_family: var( --kup-progressbar-font-family, var(--kup-font-family) );--kup_progressbar_font_size: var( --kup-progressbar-font-size, var(--kup-font-size) );--kup_progressbar_height: var(--kup-progressbar-height, 1.25em);--kup_progressbar_activebar_color: var( --kup-progressbar-activebar-color, var(--kup-primary-color-60) );--kup_progressbar_text_color: var( --kup-progressbar-text-color, var(--kup-text-secondary) );--kup_progressbar_text_color_rgb: var( --kup-progressbar-text-color-rgb, var(--kup-text-secondary-rgb) );--kup_progressbar_activebar_text_color: var( --kup-progressbar-text-on-primary-color, var(--kup-layer-1) );--kup_progressbar_track_background_color: var( --kup-progressbar-track-background-color, var(--kup-layer-3) );--kup_progressbar_width: var(--kup-progressbar-width, 100%);font-family:var(--kup_progressbar_font_family);font-size:var(--kup_progressbar_font_size);width:var(--kup_progressbar_width)}.f-progress-bar.progress-bar{background:var(--kup_progressbar_track_background_color);border-radius:var(--kup_progressbar_border_radius);overflow:hidden;position:relative;width:var(--kup_progressbar_width)}.f-progress-bar.progress-bar.text-color-on-primary .progress-bar-percentage{color:var(--kup_progressbar_activebar_text_color)}.f-progress-bar.progress-bar.text-color-on-primary .progress-bar-percentage span{color:var(--kup_progressbar_activebar_text_color);font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.f-progress-bar .progress-bar-percentage{background:var(--kup_progressbar_activebar_color);border-radius:var(--kup_progressbar_border_radius);box-sizing:content-box;color:var(--kup_progressbar_text_color);height:var(--kup_progressbar_height);text-align:center;transition:width .2s ease}.f-progress-bar .progress-bar-percentage span{color:var(--kup_progressbar_text_color);display:inline-block;font-size:1em;left:0;line-height:var(--kup_progressbar_height);position:absolute;width:var(--kup_progressbar_width);font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.f-progress-bar .progress-bar-percentage .kup-icon{display:block;height:var(--kup_progressbar_height)}.f-progress-bar .progress-bar-percentage .kup-icon:not(.is-image){background-color:var(--kup_progressbar_activebar_text_color)}.f-progress-bar .progress-bar-percentage .kup-icon img{width:auto;height:100%}.f-progress-bar.is-radial{box-sizing:border-box;display:flex;font-size:10em;margin:auto}.f-progress-bar.is-radial.pie-wrapper{height:1em;width:1em;float:left;margin:auto;position:relative}.f-progress-bar.is-radial.pie-wrapper:nth-child(3n+1){clear:both}.f-progress-bar.is-radial.pie-wrapper .pie{height:1em;width:1em;clip:rect(0, 1em, 1em, 0.5em);left:0;position:absolute;top:0}.f-progress-bar.is-radial.pie-wrapper .pie.has-value .half-circle{border-color:var(--kup_progressbar_activebar_color)}.f-progress-bar.is-radial.pie-wrapper .pie.has-value .half-circle.left-side{transition:transform .2s ease}.f-progress-bar.is-radial.pie-wrapper .pie.has-value.is-less-than-half .right-side{display:none}.f-progress-bar.is-radial.pie-wrapper .pie.has-value.is-more-than-half{clip:rect(auto, auto, auto, auto)}.f-progress-bar.is-radial.pie-wrapper .pie.has-value.is-more-than-half .right-side{transform:rotate(180deg)}.f-progress-bar.is-radial.pie-wrapper .pie .half-circle{height:1em;width:1em;border:.1em solid var(--kup_progressbar_track_background_color);border-radius:50%;clip:rect(0, 0.5em, 1em, 0);left:0;position:absolute;top:0}.f-progress-bar.is-radial.pie-wrapper .label{background:none;bottom:.4em;color:var(--kup_progressbar_text_color);cursor:default;display:block;font-size:.25em;left:.6em;line-height:3em;position:absolute;right:.4em;text-align:center;top:.4em}.f-progress-bar.is-radial.pie-wrapper .label.kup-icon{display:block;height:1.25em;width:1.25em;object-fit:cover;margin:auto}.f-progress-bar.is-radial.pie-wrapper .label.kup-icon:not(.is-image){background-color:var(--kup_progressbar_activebar_color)}.f-progress-bar.is-radial.pie-wrapper .label.kup-icon img{width:auto;height:100%}.f-progress-bar.is-radial.pie-wrapper .label .smaller{color:var(--kup_progressbar_text_color);opacity:.8;font-size:.45em;padding-bottom:20px;vertical-align:super}.f-progress-bar.is-radial.pie-wrapper .shadow{height:1em;width:1em;border:.1em solid var(--kup_progressbar_track_background_color);border-radius:50%}.f-progress-bar.is-radial *,.f-progress-bar.is-radial *:before,.f-progress-bar.is-radial *:after{box-sizing:border-box}.f-progress-bar.kup-animated .progress-bar-percentage{animation:running-stripes 2s linear infinite}.f-progress-bar.kup-padded.progress-bar{padding:.5em;width:calc(100% - 1em)}.f-progress-bar.kup-slim.progress-bar{border-radius:9px}.f-progress-bar.kup-slim.progress-bar .progress-bar-percentage{border-radius:9px;padding:0}.f-progress-bar.kup-slim.pie-wrapper .pie .half-circle{border-width:.05em}.f-progress-bar.kup-slim.pie-wrapper .shadow{border-width:.05em}.f-progress-bar.kup-striped .progress-bar-percentage{background-image:linear-gradient(-45deg, rgba(var(--kup_progressbar_text_color_rgb), 0.125) 25%, transparent 25%, transparent 50%, rgba(var(--kup_progressbar_text_color_rgb), 0.125) 50%, rgba(var(--kup_progressbar_text_color_rgb), 0.125) 75%, transparent 75%, transparent);background-size:3em 3em}.f-progress-bar.kup-danger{--kup-progressbar-primary-color: var(--kup-danger-color);--kup-progressbar-text-on-primary-color: white}.f-progress-bar.kup-info{--kup-progressbar-primary-color: var(--kup-info-color-50);--kup-progressbar-text-on-primary-color: white}.f-progress-bar.kup-secondary{--kup-progressbar-primary-color: var(--kup-secondary-color);--kup-progressbar-text-on-primary-color: var(--kup-text-on-secondary-color)}.f-progress-bar.kup-success{--kup-progressbar-primary-color: var(--kup-success-color);--kup-progressbar-text-on-primary-color: white}.f-progress-bar.kup-warning{--kup-progressbar-primary-color: var(--kup-warning-color-50);--kup-progressbar-text-on-primary-color: white}@keyframes running-stripes{0%{background-position:0 0}100%{background-position:3em 3em}}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-radio{--kup_radio_font_family: var(--kup-radio-font-family, var(--kup-font-family));--kup_radio_font_size: var(--kup-radio-font-size, var(--kup-font-size));--kup_radio_font_weight: var(--kup-radio-font-weight, 400);--kup_radio_outer_circle_color: var( --kup-radio-outer-circle-color, var(--kup-text-primary) );--kup_radio_focus_color: var( --kup-radio-focus-color, var(--kup-primary-color-60) );--kup_radio_primary_color: var( --kup-radio-primary-color, var(--kup-text-primary) );--kup_radio_primary_color_rgb: var( --kup-radio-primary-color-rgb, var(--kup-text-primary-rgb) );--kup_radio_text_color: var(--kup-radio-text-color, var(--kup-text-primary));--kup_radio_text_color_disabled: var( --kup-radio-text-color-disabled, var(--kup-text-disabled) );font-family:var(--kup_radio_font_family);font-size:var(--kup_radio_font_size)}.f-radio .form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875em;font-weight:var(--kup_radio_font_weight);letter-spacing:0.0178571429em;display:inline-flex;align-items:center;vertical-align:middle}.f-radio .form-field label{color:var(--kup_radio_text_color);padding-left:var(--kup-space-03);order:0;font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.f-radio .form-field.form-field--align-end label{margin-left:auto;margin-right:0px;padding-left:0px;padding-right:4px;order:-1 !important}.f-radio.radio-wrapper{display:grid;gap:var(--kup-space-03)}.f-radio.radio-wrapper.radio-wrapper--grid{display:grid;grid-gap:1em;grid-template-columns:var(--kup_radio_columns)}.f-radio.radio-wrapper .radio{border-radius:50%;position:relative;flex:0 0 auto;box-sizing:content-box;width:15px;height:15px;cursor:pointer;will-change:opacity,transform,border-color,color;will-change:transform,opacity;border:1px solid rgba(0,0,0,0)}.f-radio.radio-wrapper .radio:hover{border:1px solid var(--kup_radio_focus_color)}.f-radio.radio-wrapper .radio .radio__native-control{position:absolute;margin:0px;padding:0px;opacity:0;cursor:inherit;z-index:1;top:0px;right:0px;left:0px;width:15px;height:15px}.f-radio.radio-wrapper .radio .radio__background{display:inline-block;position:relative;box-sizing:border-box;width:15px;height:15px;transition:opacity 120ms cubic-bezier(0, 0, 0.2, 1) 0ms,transform 120ms cubic-bezier(0, 0, 0.2, 1) 0ms}.f-radio.radio-wrapper .radio .radio__background .radio__outer-circle{border-color:var(--kup_radio_outer_circle_color);position:absolute;top:0px;left:0px;box-sizing:border-box;width:100%;height:100%;border-width:1px;border-style:solid;border-radius:50%;transition:border-color 120ms cubic-bezier(0.4, 0, 0.6, 1) 0ms}.f-radio.radio-wrapper .radio .radio__background .radio__inner-circle{position:absolute;top:0px;left:0px;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:7.5px;border-style:solid;border-radius:50%;transition:transform 120ms cubic-bezier(0.4, 0, 0.6, 1) 0ms,border-color 120ms cubic-bezier(0.4, 0, 0.6, 1) 0ms}.f-radio.radio-wrapper .radio.radio--checked .radio__outer-circle{border-color:var(--kup_radio_primary_color)}.f-radio.radio-wrapper .radio.radio--checked .radio__inner-circle{border-color:var(--kup_radio_primary_color);transform:scale(0.5);transition:transform 120ms cubic-bezier(0, 0, 0.2, 1) 0ms,border-color 120ms cubic-bezier(0, 0, 0.2, 1) 0ms}.f-radio.radio-wrapper .radio.radio--disabled{--kup_radio_outer_circle_color: var(--kup-border-disabled);--kup_radio_text_color: var(--kup-text-disabled);pointer-events:none}.f-radio.radio-wrapper .radio.radio--disabled+label{color:var(--kup_radio_text_color_disabled);pointer-events:none}.f-radio.radio-wrapper .radio.radio--disabled .radio__outer-circle{border-color:var(--kup_radio_outer_circle_color)}.f-radio.radio-wrapper .radio.radio--disabled .radio__inner-circle{border-color:var(--kup_radio_outer_circle_color)}.f-radio.radio-wrapper .radio.radio--chevron:hover{border:1px solid rgba(0,0,0,0)}.f-radio.radio-wrapper.radio--chevron .radio:hover{border:1px solid rgba(0,0,0,0)}.f-radio.kup-horizontal{display:flex;gap:var(--kup-space-05)}.f-radio.kup-danger{--kup-radio-primary-color: var(--kup-danger-color);--kup-radio-primary-color-rgb: var(--kup-danger-color-rgb)}.f-radio.kup-info{--kup-radio-primary-color: var(--kup-info-color-50);--kup-radio-primary-color-rgb: var(--kup-info-color-rgb)}.f-radio.kup-secondary{--kup-radio-primary-color: var(--kup-secondary-color);--kup-radio-primary-color-rgb: var(--kup-secondary-color-rgb)}.f-radio.kup-success{--kup-radio-primary-color: var(--kup-success-color);--kup-radio-primary-color-rgb: var(--kup-success-color-rgb)}.f-radio.kup-warning{--kup-radio-primary-color: var(--kup-warning-color-50);--kup-radio-primary-color-rgb: var(--kup-warning-color-rgb)}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-rating{--kup_rating_color: var(--kup-rating-color, #ffa000);--kup_rating_font_size: var(--kup-rating-font-size, 20px)}.f-rating .rating{color:var(--kup_rating_color);cursor:pointer;font-size:var(--kup_rating_font_size)}.f-rating.disabled .rating{opacity:.5;cursor:auto}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-switch{--kup_switch_font_family: var( --kup-switch-font-family, var(--kup-font-family) );--kup_switch_track_background_color: var( --kup-switch-background, var(--kup-gray-color-50) );--kup_switch_font_size: var(--kup-switch-font-size, var(--kup-font-size));--kup_switch_font_weight: var(--kup-switch-font-weight, 400);--kup_switch_label_color: var( --kup-switch-label-color, var(--kup-text-color) );--kup_switch_primary_color: var( --kup-switch-primary-color, var(--kup-primary-color) );--kup_switch_primary_color_rgb: var( --kup-switch-primary-color-rgb, var(--kup-primary-color-rgb) );--kup_switch_thumb_background_color: var(--kup-switch-thumb-color, #ffffff);--kup_switch_small_height: var( --kup-switch-small-height, var(--kup-space-05) );--kup_switch_small_width: var(--kup-switch-small-width, var(--kup-space-05));--kup_switch_medium_height: var( --kup-switch-medium-height, var(--kup-space-06) );font-family:var(--kup_switch_font_family);font-size:var(--kup_switch_font_size)}.f-switch .form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875em;line-height:2em;font-weight:var(--kup_switch_font_weight);letter-spacing:0.0178571429em;color:var(--kup_switch_label_color);display:inline-flex;align-items:center;vertical-align:middle}.f-switch .form-field.form-field--align-end>label{margin-left:auto;margin-right:0px;padding-left:0px;padding-right:4px;order:-1 !important}.f-switch .form-field>label{color:var(--kup_switch_label_color);font-family:var(--kup-font-family);margin-left:0px;margin-right:auto;padding-left:4px;padding-right:0px;order:0}.f-switch .form-field .switch{display:inline-block;position:relative;outline:none;user-select:none;margin:0 .75em}.f-switch .form-field .switch .switch__track{box-sizing:border-box;width:48px;height:24px;border:1px solid rgba(0,0,0,0);outline:1px solid rgba(0,0,0,0);border-radius:24px;opacity:1;transition:opacity 90ms cubic-bezier(0.4, 0, 0.2, 1),background-color 90ms cubic-bezier(0.4, 0, 0.2, 1),border-color 90ms cubic-bezier(0.4, 0, 0.2, 1)}.f-switch .form-field .switch .switch__thumb-underlay{border-radius:50%;display:flex;position:absolute;align-items:center;justify-content:center;transform:translateX(0);transition:transform 90ms cubic-bezier(0.4, 0, 0.2, 1),background-color 90ms cubic-bezier(0.4, 0, 0.2, 1),border-color 90ms cubic-bezier(0.4, 0, 0.2, 1);left:-12px;right:initial;top:-12px;width:48px;height:48px}.f-switch .form-field .switch .switch__thumb-underlay:hover{background-color:rgba(var(--kup_switch_primary_color_rgb), 0.125)}.f-switch .form-field .switch .switch__thumb-underlay .switch__thumb{box-sizing:border-box;width:18px;height:18px;border-radius:50%;z-index:1;transition:transform 90ms cubic-bezier(0.4, 0, 0.2, 1),background-color 90ms cubic-bezier(0.4, 0, 0.2, 1),border-color 90ms cubic-bezier(0.4, 0, 0.2, 1)}.f-switch .form-field .switch .switch__thumb-underlay .switch__thumb .switch__native-control{left:0;right:initial;position:absolute;top:0;margin:0;opacity:0;cursor:pointer;transition:transform 90ms cubic-bezier(0.4, 0, 0.2, 1);width:64px;height:48px}.f-switch .form-field .switch:not(.switch--checked) .switch__track{background-color:var(--kup_switch_track_background_color)}.f-switch .form-field .switch:not(.switch--checked) .switch__thumb{background-color:var(--kup_switch_thumb_background_color)}.f-switch .form-field .switch.switch--disabled{cursor:auto;opacity:.5;pointer-events:none}.f-switch .form-field .switch.switch--checked .switch__track{background-color:var(--kup-success-color-60)}.f-switch .form-field .switch.switch--checked .switch__thumb-underlay{transform:translateX(23px)}.f-switch .form-field .switch.switch--checked .switch__thumb{background-color:var(--kup_switch_thumb_background_color);border-color:var(--kup-success-color-60)}.f-switch .form-field .switch.switch--checked .switch__thumb .switch__native-control{transform:translateX(-16px)}.f-switch .form-field .switch.switch--small .switch__track{width:36px;height:18px}.f-switch .form-field .switch.switch--small .switch__thumb-underlay{left:-15px;top:-15px}.f-switch .form-field .switch.switch--small .switch__thumb-underlay .switch__thumb{height:13px;width:13px}.f-switch .form-field .switch.switch--small.switch--checked .switch__thumb-underlay{transform:translate(17px)}.f-switch.kup-danger{--kup-switch-primary-color: var(--kup-danger-color);--kup-switch-primary-color-rgb: var(--kup-danger-color-rgb)}.f-switch.kup-info{--kup-switch-primary-color: var(--kup-info-color-50);--kup-switch-primary-color-rgb: var(--kup-info-color-rgb)}.f-switch.kup-secondary{--kup-switch-primary-color: var(--kup-secondary-color);--kup-switch-primary-color-rgb: var(--kup-secondary-color-rgb)}.f-switch.kup-success{--kup-switch-primary-color: var(--kup-success-color-60);--kup-switch-primary-color-rgb: var(--kup-success-color-60-rgb)}.f-switch.kup-warning{--kup-switch-primary-color: var(--kup-warning-color-50);--kup-switch-primary-color-rgb: var(--kup-warning-color-rgb)}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.875rem;font-size:var(--mdc-typography-body2-font-size, 0.875rem);line-height:1.25rem;line-height:var(--mdc-typography-body2-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:0.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:inherit;text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform, inherit);color:rgba(0, 0, 0, 0.87);color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87));display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-subtitle1-font-size, 1rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:\"*\"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);border-bottom-width:2px;opacity:0;z-index:2}.mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px*2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-text-field--filled{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity}.mdc-text-field--filled .mdc-text-field__ripple::before,.mdc-text-field--filled .mdc-text-field__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-text-field--filled .mdc-text-field__ripple::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-text-field--filled .mdc-text-field__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-text-field--filled.mdc-ripple-upgraded .mdc-text-field__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-text-field--filled.mdc-ripple-upgraded .mdc-text-field__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-text-field--filled.mdc-ripple-upgraded--unbounded .mdc-text-field__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-text-field--filled.mdc-ripple-upgraded--foreground-activation .mdc-text-field__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-text-field--filled.mdc-ripple-upgraded--foreground-deactivation .mdc-text-field__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-text-field--filled .mdc-text-field__ripple::before,.mdc-text-field--filled .mdc-text-field__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-text-field--filled.mdc-ripple-upgraded .mdc-text-field__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-text-field__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:rgba(0, 0, 0, 0.87)}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:rgba(0, 0, 0, 0.54)}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:rgba(0, 0, 0, 0.54)}}.mdc-text-field .mdc-text-field__input{caret-color:#6200ee;caret-color:var(--mdc-theme-primary, #6200ee)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:rgba(0, 0, 0, 0.54)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:rgba(0, 0, 0, 0.54)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:rgba(0, 0, 0, 0.6)}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-subtitle1-font-size, 1rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);height:28px;transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}}.mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-subtitle1-font-size, 1rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);height:28px;transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled .mdc-text-field__ripple::before,.mdc-text-field--filled .mdc-text-field__ripple::after{background-color:rgba(0, 0, 0, 0.87);background-color:var(--mdc-ripple-color, rgba(0, 0, 0, 0.87))}.mdc-text-field--filled:hover .mdc-text-field__ripple::before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:whitesmoke}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.42)}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.87)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-color:#6200ee;border-bottom-color:var(--mdc-theme-primary, #6200ee)}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.38)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.87)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#6200ee;border-color:var(--mdc-theme-primary, #6200ee)}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px,var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-text-field__ripple::before,.mdc-text-field--outlined .mdc-text-field__ripple::after{background-color:transparent;background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0;transition:none}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px;line-height:1.5rem}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\"\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 96px/0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(98, 0, 238, 0.87)}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:#b00020;caret-color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}.mdc-text-field--disabled .mdc-text-field__input{color:rgba(0, 0, 0, 0.38)}@media all{.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:rgba(0, 0, 0, 0.38)}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:rgba(0, 0, 0, 0.38)}}.mdc-text-field--disabled .mdc-floating-label{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field__icon--leading{color:rgba(0, 0, 0, 0.3)}.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:rgba(0, 0, 0, 0.3)}.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.06)}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.06)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-text-field-helper-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.75rem;font-size:var(--mdc-typography-caption-font-size, 0.75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:0.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);text-decoration:inherit;text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform, inherit);display:block;margin-top:0;line-height:normal;margin:0;opacity:0;will-change:opacity;transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-text-field-helper-text::before{display:inline-block;width:0;height:16px;content:\"\";vertical-align:0}.mdc-text-field-helper-text--persistent{transition:none;opacity:1;will-change:initial}.mdc-text-field-character-counter{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.75rem;font-size:var(--mdc-typography-caption-font-size, 0.75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:0.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);text-decoration:inherit;text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform, inherit);display:block;margin-top:0;line-height:normal;margin-left:auto;margin-right:0;padding-left:16px;padding-right:0;white-space:nowrap}.mdc-text-field-character-counter::before{display:inline-block;width:0;height:16px;content:\"\";vertical-align:0}[dir=rtl] .mdc-text-field-character-counter,.mdc-text-field-character-counter[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-text-field-character-counter,.mdc-text-field-character-counter[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field__icon{align-self:center;cursor:pointer}.mdc-text-field__icon:not([tabindex]),.mdc-text-field__icon[tabindex=\"-1\"]{cursor:default;pointer-events:none}.mdc-text-field__icon svg{display:block}.mdc-text-field__icon--leading{margin-left:16px;margin-right:8px}[dir=rtl] .mdc-text-field__icon--leading,.mdc-text-field__icon--leading[dir=rtl]{margin-left:8px;margin-right:16px}.mdc-text-field__icon--trailing{padding:12px;margin-left:0px;margin-right:0px}[dir=rtl] .mdc-text-field__icon--trailing,.mdc-text-field__icon--trailing[dir=rtl]{margin-left:0px;margin-right:0px}.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-subtitle1-font-size, 1rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:\"*\"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\"\"}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);border-bottom-width:2px;opacity:0;z-index:2}.mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px*2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}#kup-component .f-text-field{--kup_textfield_background_color: var( --kup-textfield-background-color, var(--kup-layer-1) );--kup_textfield_background_color: var( --kup-textfield-background-color, var(--kup-layer-1) );--kup_textfield_background_color_hover: var( --kup-textfield-background-color-hover, var(--kup-layer-1-hover) );--kup_textfield_border_color: var( --kup-textfield-border-color, var(--kup-border-strong) );--kup_textfield_border_color_hover: var( --kup-textfield-border-color-hover, var(--kup-border-interactive) );--kup_textfield_outline_color: var( --kup-textfield-outline-color, var(--kup-border-interactive) );--kup_textfield_color: var(--kup-textfield-color, var(--kup-text-primary));--kup_textfield_label_color: var( --kup-textfield-label-color, var(--kup-text-secondary) );--kup_textfield_fullwidth_height: var( --kup-textfield-fullwidth-height, 40px );--kup_textfield_extrasmall_height: var( --kup-textfield-extrasmall-height, 20px );--kup_textfield_small_height: var(--kup-textfield-small-height, 32px);--kup_textfield_medium_height: var(--kup-textfield-medium-height, 40px);--kup_textfield_large_height: var(--kup-textfield-large-height, 48px);--kup_textfield_extra_large_height: var( --kup-textfield-extra-large-height, 64px );--kup_textfield_extrasmall_padding: var( --kup-textfield-extrasmall-padding, 0 4px 0 8px );--kup_textfield_medium_padding: var( --kup-textfield-medium-padding, 0 var(--kup-space-05) );--kup_textfield_extrasmall_font_size: var( --kup-textfield-extrasmall-font-size, 12px );--kup_textfield_fullwidth_padding: var( --kup-textfield-fullwidth-padding, 16px );--kup_textfield_icon_color: var( --kup-textfield-icon-color, var(--kup_textfield_color) );--kup_textfield_primary_color: var( --kup-textfield-primary-color, var(--kup-text-main) );--kup_textfield_text_align: var(--kup-textfield-text-align, start);--kup_textfield_width: var(--kup-textfield-width, 100%);--mdc-theme-primary: var(--kup_textfield_primary_color);--mdc-shape-small: 0px;--kup_textfield_border_radius: var(--kup-textfield-border-radius, unset);width:var(--kup_textfield_width);display:flex;flex-direction:column;gap:4px;font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}#kup-component .f-text-field .mdc-text-field-container{display:flex;flex-direction:column;gap:8px}#kup-component .f-text-field .mdc-text-field__label-container{display:flex;justify-content:space-between;align-items:center;gap:4px}#kup-component .f-text-field .mdc-text-field__label-container .mdc-text-field__label-character-counter{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}#kup-component .f-text-field .mdc-form-field label{color:var(--kup_textfield_label_color);margin:unset}#kup-component .f-text-field .mdc-form-field .mdc-text-field__input{caret-color:var(--kup_textfield_color);box-sizing:border-box;font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px;padding:6px 0px}#kup-component .f-text-field .mdc-form-field .mdc-text-field__input::placeholder{opacity:1}#kup-component .f-text-field .mdc-quantity-buttons{height:100%;display:flex}#kup-component .f-text-field .mdc-quantity-buttons button{height:100%;aspect-ratio:1;background-color:rgba(0,0,0,0);border:unset;display:flex;justify-content:center;align-items:center}#kup-component .f-text-field .mdc-quantity-buttons button:hover{background-color:var(kup_textfield_background_color)}#kup-component .f-text-field .mdc-quantity-buttons button:focus{border:1px solid var(--kup_textfield_primary_color);outline:none}#kup-component .f-text-field .mdc-quantity-buttons button:first-child{position:relative}#kup-component .f-text-field .mdc-quantity-buttons button:first-child::before{content:\"\";width:1px;height:50%;background-color:var(--kup_textfield_background_color);position:absolute;top:50%;right:-0.5px;z-index:-1;transform:translateY(-50%)}#kup-component .f-text-field label,#kup-component .f-text-field .mdc-text-field-helper-text,#kup-component .f-text-field .mdc-error-message,#kup-component .f-text-field .mdc-alert-message{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px;color:var(--kup_textfield_label_color)}#kup-component .f-text-field .mdc-text-field{display:flex;gap:var(--kup-space-03);border-radius:var(--kup_textfield_border_radius);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;border-bottom:1px solid var(--kup_textfield_border_color);background-color:var(--kup_textfield_background_color);align-items:center;padding:var(--kup_textfield_medium_padding)}#kup-component .f-text-field .mdc-text-field input{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px;text-align:var(--kup_textfield_text_align);min-width:max-content}#kup-component .f-text-field .mdc-text-field input::placeholder{color:var(--kup-gray-color-40)}#kup-component .f-text-field .mdc-text-field .kup-icon{background-color:var(--kup_textfield_icon_color);cursor:pointer;height:16px;width:16px;min-width:16px;min-height:16px;outline:none;pointer-events:all}#kup-component .f-text-field .mdc-text-field .kup-icon.kup-clear-icon:hover{background-color:var(--kup-danger-color-60)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--disabled{border:unset}#kup-component .f-text-field .mdc-text-field.mdc-text-field--disabled .kup-icon{pointer-events:none}#kup-component .f-text-field .mdc-text-field.mdc-text-field--read-only{--kup_textfield_border_color: var(--kup-border-disabled);--kup_textfield_background_color: var(--kup-layer-0);pointer-events:none}#kup-component .f-text-field .mdc-text-field.mdc-text-field--read-only .kup-icon,#kup-component .f-text-field .mdc-text-field.mdc-text-field--read-only button{pointer-events:none}#kup-component .f-text-field .mdc-text-field.mdc-text-field--extra-small{height:var(--kup_textfield_extrasmall_height) !important;padding:var(--kup_textfield_extrasmall_padding)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--extra-small input{font-size:var(--kup_textfield_extrasmall_font_size)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--small{height:var(--kup_textfield_small_height) !important}#kup-component .f-text-field .mdc-text-field.mdc-text-field--medium{height:var(--kup_textfield_medium_height)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--large{height:var(--kup_textfield_large_height) !important}#kup-component .f-text-field .mdc-text-field.mdc-text-field--extra-large{height:var(--kup_textfield_extra_large_height) !important}#kup-component .f-text-field .mdc-text-field.mdc-text-field--focused:not(.mdc-text-field--disabled){outline:2px solid var(--kup_textfield_outline_color)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before,#kup-component .f-text-field .mdc-text-field.mdc-text-field--fullwidth:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:rgba(var(--kup_textfield_color_rgb), 0.325)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before:hover,#kup-component .f-text-field .mdc-text-field.mdc-text-field--fullwidth:not(.mdc-text-field--disabled) .mdc-line-ripple:before:hover{border-bottom-color:rgba(var(--kup_textfield_color_rgb), 0.575)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before.mdc-line-ripple--active,#kup-component .f-text-field .mdc-text-field.mdc-text-field--fullwidth:not(.mdc-text-field--disabled) .mdc-line-ripple:before.mdc-line-ripple--active{border-bottom-color:var(--kup_textfield_primary_color)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--with-leading-icon .mdc-floating-label{left:36px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--with-trailing-icon input~.kup-clear-icon{right:26px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--fullwidth.mdc-text-field--focused{color:var(--kup_textfield_primary_color)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--fullwidth{width:100%}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined{border:1px solid var(--kup_textfield_border_color)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--focused:not(.mdc-text-field--disabled){border:1px solid var(--kup_textfield_primary_color)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--with-leading-icon label:not(.mdc-floating-label--float-above){left:20px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined .mdc-notched-outline__leading,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined .mdc-notched-outline__notch,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:rgba(var(--kup_textfield_color_rgb), 0.575);border-bottom-style:inset}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:hover .mdc-notched-outline__leading,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:hover .mdc-notched-outline__notch,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:hover .mdc-notched-outline__trailing,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__leading,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__notch,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--kup_textfield_primary_color)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:rgba(var(--kup_textfield_color_rgb), 0.325)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--disabled{border:unset}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined.mdc-text-field--textarea .mdc-floating-label--float-above{transform:translateY(-160%) scale(0.75)}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea){height:40px}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-text-field__input{height:100%}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-floating-label{display:none}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea)::before{display:none}@supports(-webkit-hyphens: none){#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) label.mdc-floating-label{display:block}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea){height:40px;transition:border-color .25s}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea) .mdc-floating-label--float-above{transform:translateY(-29.25px) scale(1)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea) .mdc-floating-label--float-above{font-size:.75rem}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea).mdc-notched-outline--upgraded .mdc-floating-label--float-above,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea) .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-26.75px) scale(0.75)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea).mdc-notched-outline--upgraded .mdc-floating-label--float-above,#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea) .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea) .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-40px 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-40px{0%{transform:translateX(calc(0 - 0%)) translateY(-26.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-26.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-26.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-26.75px) scale(0.75)}}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea) label.mdc-floating-label{display:block}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea) label.mdc-floating-label.mdc-floating-label--float-above{overflow:visible}#kup-component .f-text-field .mdc-text-field.mdc-text-field--outlined:not(.mdc-text-field--textarea).mdc-text-field--with-leading-icon .mdc-floating-label--float-above{transform:translateY(-26px) scale(0.75) translateX(-42px)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled.mdc-text-field--with-leading-icon label,#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled.mdc-text-field--with-leading-icon input{left:34px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-111%) scale(0.75)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled:not(.mdc-text-field--no-label) input{box-sizing:border-box}#kup-component .f-text-field .mdc-text-field.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--kup_textfield_background_color)}#kup-component .f-text-field .mdc-text-field .mdc-notched-outline{opacity:1}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__label-character-counter,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field__label-character-counter,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:var(--kup_textfield_color)}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--kup-text-placeholder)}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__label-character-counter,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field__label-character-counter,#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{border:unset}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--disabled).mdc-text-field--textarea .mdc-text-field__label-character-counter{position:absolute;bottom:9px;right:15px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--disabled:not(.mdc-text-field--outlined){border:unset}#kup-component .f-text-field .mdc-text-field:not(.mdc-text-field--focused)+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--persistent){opacity:0}#kup-component .f-text-field .mdc-text-field.mdc-text-field--focused:not(.mdc-text-field-disabled) .mdc-floating-label--float-above{color:var(--kup_textfield_primary_color);opacity:1}#kup-component .f-text-field .mdc-text-field.mdc-text-field--with-quantity-buttons{padding:0 0 0 16px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--with-quantity-buttons input::-webkit-inner-spin-button,#kup-component .f-text-field .mdc-text-field.mdc-text-field--with-quantity-buttons input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}#kup-component .f-text-field .mdc-text-field.mdc-text-field--error{outline:2px solid var(--kup-danger-color-60)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea{height:auto;padding:0}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .mdc-text-field__input{margin:0;padding:16px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea.mdc-text-field--focused:not(.mdc-text-field--disabled){border:1px solid var(--kup_textfield_primary_color);padding:0}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea.mdc-text-field--error{padding:0}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea:not(.mdc-text-field--error){border-top-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .kup-clear-icon{position:absolute;top:var(--kup-space-03);right:var(--kup-space-03)}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .mdc-error-icon,#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .mdc-alert-icon{width:16px;height:16px;position:absolute;top:5px;right:5px;display:inline-flex;justify-content:center}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .mdc-error-icon .f-image .f-image__icon,#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .mdc-alert-icon .f-image .f-image__icon{--kup_image_height: 16px;--kup_image_width: 16px;width:16px}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .mdc-error-icon .kup-icon,#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea .mdc-alert-icon .kup-icon{padding:unset}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea.mdc-text-field--read-only{--kup_textfield_border_color: var(--kup-border-disabled);pointer-events:none}#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea.mdc-text-field--read-only .kup-icon,#kup-component .f-text-field .mdc-text-field.mdc-text-field--textarea.mdc-text-field--read-only button{pointer-events:none}#kup-component .f-text-field .mdc-text-field .f-image .f-image__icon{--kup_image_height: 16px;--kup_image_width: 16px;width:16px}#kup-component .f-text-field .mdc-error-icon,#kup-component .f-text-field .mdc-alert-icon{height:100%}#kup-component .f-text-field .mdc-error-icon .kup-icon,#kup-component .f-text-field .mdc-alert-icon .kup-icon{height:100%;background-color:unset;display:inline-flex;cursor:default}#kup-component .f-text-field .mdc-error-message{color:var(--kup-danger-color-60)}#kup-component .f-text-field .mdc-label-container{display:flex;justify-content:space-between;align-items:center;gap:4px}#kup-component .f-text-field.kup-full-height{height:100%}#kup-component .f-text-field.kup-full-height .mdc-text-field-container{height:100%}#kup-component .f-text-field.kup-full-height .mdc-text-field{height:100%;overflow-y:hidden}#kup-component .f-text-field.kup-full-height .mdc-text-field:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea){height:100%}#kup-component .f-text-field.kup-full-height .mdc-text-field .mdc-text-field__input{height:100%}#kup-component .f-text-field.kup-full-width{width:100%}#kup-component .f-text-field.kup-full-width .mdc-text-field.mdc-text-field--with-leading-icon{padding-left:0}#kup-component .f-text-field.kup-full-width .mdc-text-field.mdc-text-field--with-trailing-icon input~.kup-clear-icon{right:40px}#kup-component .f-text-field.kup-light-mode .mdc-text-field-container .mdc-text-field--lightmode{background-color:var(--kup-layer-0)}#kup-component .f-text-field.kup-shaped .mdc-text-field.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:28px}#kup-component .f-text-field.kup-shaped .mdc-text-field.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{width:28px}#kup-component .f-text-field.kup-danger{--kup-textfield-primary-color: var(--kup-danger-color-60);--kup-textfield-primary-color-rgb: var(--kup-danger-color-60-rgb)}#kup-component .f-text-field.kup-info{--kup-textfield-primary-color: var(--kup-info-color-50);--kup-textfield-primary-color-rgb: var(--kup-info-color-50-rgb)}#kup-component .f-text-field.kup-secondary{--kup-textfield-primary-color: var(--kup-secondary-color);--kup-textfield-primary-color-rgb: var(--kup-secondary-color-rgb)}#kup-component .f-text-field.kup-success{--kup-textfield-primary-color: var(--kup-success-color-60);--kup-textfield-primary-color-rgb: var(--kup-success-color-60-rgb)}#kup-component .f-text-field.kup-warning{--kup-textfield-primary-color: var(--kup-warning-color-50);--kup-textfield-primary-color-rgb: var(--kup-warning-color-50-rgb)}#kup-component .f-text-field .kup-icon.kup-clear-icon{-webkit-mask:var(--kup-clear-icon);mask:var(--kup-clear-icon)}#kup-component .f-text-field .kup-icon.kup-search-icon{-webkit-mask:var(--kup-search-icon);mask:var(--kup-search-icon)}#kup-component .f-text-field .mdc-text-field__input::placeholder{opacity:1}#kup-component .f-text-field .mdc-text-field-container--disabled .mdc-text-field__label-container label.mdc-label,#kup-component .f-text-field .mdc-text-field-container--disabled .mdc-text-field__label-container .mdc-text-field__label-character-counter{color:var(--kup-text-disabled)}#kup-component .f-text-field .mdc-text-field-container--disabled .mdc-text-field__input{color:var(--kup-text-disabled)}",".kup-body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.kup-body-01{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.kup-code-01{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-label-01{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.kup-caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}.kup-caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.kup-small-label-01{font-family:var(--kup-font-family);font-size:6px;line-height:9px;font-weight:400;letter-spacing:1px}.kup-heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.kup-heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.kup-heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.kup-heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.kup-heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.kup-heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.kup-heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.kup-heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.kup-heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-typography.f-typography--body{font-family:var(--kup-font-family);font-size:var(--kup-body-01-font-size, 14px);line-height:20px;font-weight:400;letter-spacing:.16px}.f-typography.f-typography--body-compact-01{font-family:var(--kup-font-family);font-size:var(--kup-body-compact-01-font-size, 14px);line-height:18px;font-weight:400;letter-spacing:.16px}.f-typography.f-typography--heading-compact-01{font-family:var(--kup-font-family);font-size:14px;line-height:18px;font-weight:600;letter-spacing:.16px}.f-typography.f-typography--heading-01{font-family:var(--kup-font-family);font-size:14px;line-height:20px;font-weight:600;letter-spacing:.16px}.f-typography.f-typography--heading-02{font-family:var(--kup-font-family);font-size:16px;line-height:24px;font-weight:500;letter-spacing:0}.f-typography.f-typography--heading-03{font-family:var(--kup-font-family);font-size:20px;line-height:28px;font-weight:400;letter-spacing:0}.f-typography.f-typography--heading-04{font-family:var(--kup-font-family);font-size:28px;line-height:36px;font-weight:400;letter-spacing:0}.f-typography.f-typography--heading-05{font-family:var(--kup-font-family);font-size:32px;line-height:40px;font-weight:300;letter-spacing:0}.f-typography.f-typography--heading-06{font-family:var(--kup-font-family);font-size:42px;line-height:50px;font-weight:300;letter-spacing:0}.f-typography.f-typography--heading-07{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:300;letter-spacing:0}.f-typography.f-typography--heading-08{font-family:var(--kup-font-family);font-size:54px;line-height:64px;font-weight:600;letter-spacing:0}.f-typography.f-typography--code{font-family:var(--kup-font-family-monospace);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.f-typography.f-typography--label{font-family:var(--kup-font-family);font-size:12px;line-height:16px;font-weight:400;letter-spacing:.32px}.f-typography.f-typography--caption-01{font-family:var(--kup-font-family);font-size:10px;line-height:13px;font-weight:400;letter-spacing:1px}.f-typography.f-typography--caption-02{font-family:var(--kup-font-family);font-size:12px;line-height:15px;font-weight:500;letter-spacing:1px}","@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity;position:relative;outline:none;overflow:hidden}.mdc-ripple-surface::before,.mdc-ripple-surface::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface::before,.mdc-ripple-surface::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-upgraded--unbounded::before,.mdc-ripple-upgraded--unbounded::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface::before,.mdc-ripple-surface::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-ripple-surface:hover::before,.mdc-ripple-surface.mdc-ripple-surface--hover::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}","/**\n * Generic KupComponent.\n */\nexport interface KupComponent extends HTMLElement {\n customStyle: string;\n customStyleTheme: string;\n debugInfo: {\n endTime: number;\n renderCount: number;\n renderEnd: number;\n renderStart: number;\n startTime: number;\n };\n getProps?: (descriptions?: boolean) => Promise<GenericObject>;\n refresh?: () => Promise<void>;\n rootElement: KupComponent;\n themeChangeCallback: Function;\n}\n/**\n * Resizable KupComponent.\n */\nexport interface ResizableKupComponent extends KupComponent {\n resizeCallback: () => {};\n}\n/**\n * Props in common with every f-component.\n */\nexport interface FComponent {\n danger?: boolean;\n dataSet?: GenericObject;\n id?: string;\n info?: boolean;\n secondary?: boolean;\n success?: boolean;\n title?: string;\n warning?: boolean;\n wrapperClass?: string;\n}\n/**\n * Generic map.\n */\nexport interface GenericMap {\n [index: string]: string;\n}\n/**\n * Generic object.\n */\nexport interface GenericObject {\n [index: string]: any;\n}\n/**\n * Generic payload of a kup event.\n */\nexport interface KupEventPayload {\n comp: any;\n id: string;\n}\n/**\n * Ketchup elements tag names.\n */\nexport enum KupTagNames {\n ACCORDION = 'KUP-ACCORDION',\n ACTIVITY_TIMELINE = 'KUP-ACTIVITY-TIMELINE',\n AUTOCOMPLETE = 'KUP-AUTOCOMPLETE',\n BADGE = 'KUP-BADGE',\n BOX = 'KUP-BOX',\n BUTTON = 'KUP-BUTTON',\n BUTTON_LIST = 'KUP-BUTTON-LIST',\n CALENDAR = 'KUP-CALENDAR',\n CARD = 'KUP-CARD',\n CARD_LIST = 'KUP-CARD-LIST',\n CELL = 'KUP-CELL',\n CHART = 'KUP-CHART',\n CHECKBOX = 'KUP-CHECKBOX',\n CHIP = 'KUP-CHIP',\n COLOR_PICKER = 'KUP-COLOR-PICKER',\n COMBOBOX = 'KUP-COMBOBOX',\n DASHBOARD = 'KUP-DASHBOARD',\n DATA_TABLE = 'KUP-DATA-TABLE',\n DATE_PICKER = 'KUP-DATE-PICKER',\n DIALOG = 'KUP-DIALOG',\n DRAWER = 'KUP-DRAWER',\n DROPDOWN_BUTTON = 'KUP-DROPDOWN-BUTTON',\n FAMILY_TREE = 'KUP-FAMILY-TREE',\n FORM = 'KUP-FORM',\n GAUGE = 'KUP-GAUGE',\n GRID = 'KUP-GRID',\n IFRAME = 'KUP-IFRAME',\n IMAGE = 'KUP-IMAGE',\n IMAGE_LIST = 'KUP-IMAGE-LIST',\n INPUT_PANEL = 'KUP-INPUT-PANEL',\n LAZY = 'KUP-LAZY',\n LIST = 'KUP-LIST',\n MAGIC_BOX = 'KUP-MAGIC-BOX',\n NAV_BAR = 'KUP-NAV-BAR',\n NUMERIC_PICKER = 'KUP-NUMERIC-PICKER',\n PLANNER = 'KUP-PLANNER',\n PROBE = 'KUP-PROBE',\n PROGRESS_BAR = 'KUP-PROGRESS-BAR',\n QLIK = 'KUP-QLIK',\n RADIO = 'KUP-RADIO',\n RATING = 'KUP-RATING',\n SNACKBAR = 'KUP-SNACKBAR',\n SPINNER = 'KUP-SPINNER',\n SWITCH = 'KUP-SWITCH',\n TAB_BAR = 'KUP-TAB-BAR',\n TEXT_FIELD = 'KUP-TEXT-FIELD',\n TOOLBAR = 'KUP-TOOLBAR',\n TYPOGRAPHY = 'KUP-TYPOGRAPHY',\n TYPOGRAPHY_LIST = 'KUP-TYPOGRAPHY-LIST',\n TIME_PICKER = 'KUP-TIME-PICKER',\n TOOLTIP = 'KUP-TOOLTIP',\n TREE = 'KUP-TREE',\n}\n\n/**\n * Sizing options for the button/text-field components.\n * @enum {string}\n * @property {string} EXTRA_SMALL - Small size: height = 20px\n * @property {string} SMALL - Small size: height = 32px\n * @property {string} MEDIUM - Medium size: height = 40px (default)\n * @property {string} LARGE - Large size: height = 48px\n * @property {string} EXTRA_LARGE - Max large size: height = 64px\n */\nexport enum KupComponentSizing {\n EXTRA_SMALL = 'extra-small',\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n EXTRA_LARGE = 'extra-large',\n}\n","import { GenericObject, KupTagNames } from '../../types/GenericTypes';\n\n/**\n * Variable used to fetch the MASTER customStyle (used in every component).\n */\nexport const masterCustomStyle = 'MASTER';\n/**\n * Components using the FButton functional component.\n */\nexport const fButtonUsers = [\n KupTagNames.BUTTON,\n KupTagNames.BUTTON_LIST,\n KupTagNames.BOX,\n KupTagNames.CALENDAR,\n KupTagNames.CARD,\n KupTagNames.CELL,\n KupTagNames.DASHBOARD,\n KupTagNames.DATA_TABLE,\n KupTagNames.DROPDOWN_BUTTON,\n KupTagNames.FAMILY_TREE,\n KupTagNames.FORM,\n KupTagNames.INPUT_PANEL,\n KupTagNames.IMAGE_LIST,\n KupTagNames.SNACKBAR,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the FCell functional component.\n */\nexport const fCellUsers = [\n KupTagNames.BOX,\n KupTagNames.CARD,\n KupTagNames.CELL,\n KupTagNames.DATA_TABLE,\n KupTagNames.FORM,\n KupTagNames.INPUT_PANEL,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the FCheckbox functional component.\n */\nexport const fCheckboxUsers = [\n KupTagNames.BOX,\n KupTagNames.CELL,\n KupTagNames.CHECKBOX,\n KupTagNames.DASHBOARD,\n KupTagNames.DATA_TABLE,\n KupTagNames.FORM,\n KupTagNames.INPUT_PANEL,\n KupTagNames.LIST,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the FChip functional component.\n */\nexport const fChipUsers = [\n KupTagNames.BOX,\n KupTagNames.CALENDAR,\n KupTagNames.CELL,\n KupTagNames.CHIP,\n KupTagNames.DATA_TABLE,\n KupTagNames.FORM,\n KupTagNames.INPUT_PANEL,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the FImage functional component.\n */\nexport const fImageUsers = [\n KupTagNames.ACCORDION,\n KupTagNames.ACTIVITY_TIMELINE,\n KupTagNames.BADGE,\n KupTagNames.BOX,\n KupTagNames.BUTTON,\n KupTagNames.BUTTON_LIST,\n KupTagNames.CALENDAR,\n KupTagNames.CARD,\n KupTagNames.CELL,\n KupTagNames.CHIP,\n KupTagNames.CHECKBOX,\n KupTagNames.DASHBOARD,\n KupTagNames.DATA_TABLE,\n KupTagNames.DIALOG,\n KupTagNames.DROPDOWN_BUTTON,\n KupTagNames.FAMILY_TREE,\n KupTagNames.FORM,\n KupTagNames.IMAGE,\n KupTagNames.IMAGE_LIST,\n KupTagNames.INPUT_PANEL,\n KupTagNames.LIST,\n KupTagNames.MAGIC_BOX,\n KupTagNames.RADIO,\n KupTagNames.SNACKBAR,\n KupTagNames.TAB_BAR,\n KupTagNames.TEXT_FIELD,\n KupTagNames.TOOLBAR,\n KupTagNames.TYPOGRAPHY,\n KupTagNames.TYPOGRAPHY_LIST,\n KupTagNames.TREE,\n];\n/**\n * Components using the FPaginator functional component.\n */\nexport const fPaginatorUsers = [KupTagNames.BOX, KupTagNames.DATA_TABLE];\n/**\n * Components using the FProgressBar functional component.\n */\nexport const fProgressBarUsers = [\n KupTagNames.BOX,\n KupTagNames.CELL,\n KupTagNames.DATA_TABLE,\n KupTagNames.FORM,\n KupTagNames.PROGRESS_BAR,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the FRadio functional component.\n */\nexport const fRadioUsers = [\n KupTagNames.BOX,\n KupTagNames.CELL,\n KupTagNames.DATA_TABLE,\n KupTagNames.FORM,\n KupTagNames.INPUT_PANEL,\n KupTagNames.RADIO,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the FRating functional component.\n */\nexport const fRatingUsers = [\n KupTagNames.BOX,\n KupTagNames.CELL,\n KupTagNames.DATA_TABLE,\n KupTagNames.FORM,\n KupTagNames.RATING,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the FSwitch functional component.\n */\nexport const fSwitchUsers = [\n KupTagNames.BOX,\n KupTagNames.CELL,\n KupTagNames.DATA_TABLE,\n KupTagNames.FORM,\n KupTagNames.INPUT_PANEL,\n KupTagNames.SWITCH,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n\n/**\n * Components using the FSwitch functional component.\n */\nexport const fTypographyUsers = [\n KupTagNames.TYPOGRAPHY,\n KupTagNames.TYPOGRAPHY_LIST,\n KupTagNames.INPUT_PANEL,\n];\n/**\n * Components using the FTextField functional component.\n */\nexport const fTextFieldUsers = [\n KupTagNames.AUTOCOMPLETE,\n KupTagNames.BOX,\n KupTagNames.CELL,\n KupTagNames.COLOR_PICKER,\n KupTagNames.COMBOBOX,\n KupTagNames.DASHBOARD,\n KupTagNames.DATA_TABLE,\n KupTagNames.DATE_PICKER,\n KupTagNames.FORM,\n KupTagNames.INPUT_PANEL,\n KupTagNames.NUMERIC_PICKER,\n KupTagNames.PLANNER,\n KupTagNames.TEXT_FIELD,\n KupTagNames.TIME_PICKER,\n KupTagNames.TREE,\n KupTagNames.TOOLBAR,\n];\n/**\n * Components using the MDC ripple effect.\n */\nexport const rippleUsers = [\n KupTagNames.ACCORDION,\n KupTagNames.CARD,\n KupTagNames.IMAGE_LIST,\n KupTagNames.TAB_BAR,\n KupTagNames.TREE,\n];\n/**\n * Components using the Editor component.\n */\nexport const editorUsers = [KupTagNames.INPUT_PANEL];\n/**\n * Interface of the themes JSON.\n */\nexport interface KupThemeJSON {\n [index: string]: KupThemeElement;\n}\n/**\n * Interface wrapping all the others.\n */\nexport interface KupThemeElement {\n cssVariables: KupThemeCSSVariables;\n icons: KupThemeIcons;\n customStyles?: GenericObject;\n fonts?: KupThemeFonts[];\n}\n/**\n * All CSS variables managed by KupTheme.\n */\nexport interface KupThemeCSSVariables {\n [KupThemeColorValues.PRIMARY]: string;\n [KupThemeColorValues.SECONDARY]: string;\n [KupThemeColorValues.BACKGROUND]: string;\n [KupThemeColorValues.NAV_BAR_BACKGROUND]: string;\n [KupThemeColorValues.NAV_BAR]: string;\n [KupThemeColorValues.DRAWER]: string;\n [KupThemeColorValues.DRAWER_BACKGROUND]: string;\n '--kup-navbar-height': string;\n '--kup-drawer-width': string;\n '--kup-font-family': string;\n '--kup-font-size': string;\n [KupThemeColorValues.TEXT]: string;\n [KupThemeColorValues.TEXT_ON_PRIMARY]: string;\n [KupThemeColorValues.DISABLED_BACKGROUND]: string;\n [KupThemeColorValues.DISABLED]: string;\n [KupThemeColorValues.HOVER_BACKGROUND]: string;\n [KupThemeColorValues.HOVER]: string;\n [KupThemeColorValues.TITLE_BACKGROUND]: string;\n [KupThemeColorValues.TITLE]: string;\n [KupThemeColorValues.ICON]: string;\n [KupThemeColorValues.BORDER]: string;\n '--kup-box-shadow': string;\n [KupThemeColorValues.INFO]: string;\n [KupThemeColorValues.SUCCESS]: string;\n [KupThemeColorValues.WARNING]: string;\n [KupThemeColorValues.DANGER]: string;\n [KupThemeColorValues.SPINNER]: string;\n [KupThemeColorValues.CHART_1]: string;\n [KupThemeColorValues.CHART_2]: string;\n [KupThemeColorValues.CHART_3]: string;\n [KupThemeColorValues.CHART_4]: string;\n '--kup-font-family-monospace': string;\n '--kup-obj-cursor': string;\n [KupThemeColorValues.TEXT_ON_SECONDARY]: string;\n '--kup-card-zindex': number;\n '--kup-drawer-zindex': number;\n '--kup-navbar-zindex': number;\n}\n/**\n * All icons managed by KupTheme.\n */\nexport interface KupThemeIcons {\n [KupThemeIconValues.ASCENDING]: string;\n [KupThemeIconValues.CLEAR]: string;\n [KupThemeIconValues.COLLAPSED]: string;\n [KupThemeIconValues.DESCENDING]: string;\n [KupThemeIconValues.DROPDOWN]: string;\n [KupThemeIconValues.EXPANDED]: string;\n [KupThemeIconValues.FILTER_REMOVE]: string;\n}\n/**\n * Object returned by the colorCheck method, containing hex/rgb/hsl CSS colors and rgb/hsl values.\n */\nexport interface KupThemeColor {\n hexColor: string;\n hslColor: string;\n hslValues: string;\n hue: string;\n lightness: string;\n saturation: string;\n rgbColor: string;\n rgbValues: string;\n}\n/**\n * Interface of a color described by RGB colors.\n */\nexport interface KupThemeRGBValues {\n r: number;\n g: number;\n b: number;\n}\n/**\n * Interface of a color described by HSL colors.\n */\nexport interface KupThemeHSLValues {\n h: number;\n s: number;\n l: number;\n}\n/**\n * List of all colors.\n */\nexport enum KupThemeColorValues {\n PRIMARY = '--kup-primary-color',\n SECONDARY = '--kup-secondary-color',\n BACKGROUND = '--kup-background-color',\n NAV_BAR = '--kup-navbar-color',\n NAV_BAR_BACKGROUND = '--kup-navbar-background-color',\n DRAWER = '--kup-drawer-color',\n DRAWER_BACKGROUND = '--kup-drawer-background-color',\n TEXT = '--kup-text-color',\n TEXT_ON_PRIMARY = '--kup-text-on-primary-color',\n TEXT_ON_SECONDARY = '--kup-text-on-secondary-color',\n DISABLED_BACKGROUND = '--kup-disabled-background-color',\n DISABLED = '--kup-disabled-color',\n HOVER_BACKGROUND = '--kup-hover-background-color',\n HOVER = '--kup-hover-color',\n TITLE_BACKGROUND = '--kup-title-background-color',\n TITLE = '--kup-title-color',\n ICON = '--kup-text-secondary',\n BORDER = '--kup-border-subtle',\n INFO = '--kup-info-color-50',\n SUCCESS = '--kup-success-color-50',\n WARNING = '--kup-warning-color-50',\n DANGER = '--kup-danger-color-50',\n SPINNER = '--kup-spinner-color',\n CHART_1 = '--kup-chart-color-1',\n CHART_2 = '--kup-chart-color-2',\n CHART_3 = '--kup-chart-color-3',\n CHART_4 = '--kup-chart-color-4',\n}\n/**\n * List of all icons.\n */\nexport enum KupThemeIconValues {\n ASCENDING = '--kup-ascending-icon',\n CLEAR = '--kup-clear-icon',\n COLLAPSED = '--kup-collapsed-icon',\n DESCENDING = '--kup-descending-icon',\n DROPDOWN = '--kup-dropdown-icon',\n EXPANDED = '--kup-expanded-icon',\n FILTER_REMOVE = '--kup-filter-remove-icon',\n KEY = '--kup-key-icon',\n SEARCH = '--kup-search-icon',\n}\nexport enum KupThemeFonts {\n IBM_PLEX_MONO = 'IbmPlexMono-Regular',\n IBM_PLEX_SANS = 'IbmPlexSans-Regular',\n}\nexport const KupThemeFontFamilyMap: Record<KupThemeFonts, string> = {\n [KupThemeFonts.IBM_PLEX_MONO]: 'IBM Plex Mono',\n [KupThemeFonts.IBM_PLEX_SANS]: 'IBM Plex Sans',\n};\n","import type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport type {\n GenericObject,\n KupComponent,\n KupTagNames,\n} from '../../types/GenericTypes';\nimport { getAssetPath } from '@stencil/core';\nimport * as themesJson from './themes.json';\nimport * as applicationCSS from './kup-theme-application.css';\nimport * as componentCSS from './kup-theme-component.css';\nimport * as fButtonCSS from '../../f-components/f-button/f-button.css';\nimport * as fCellCSS from '../../f-components/f-cell/f-cell.css';\nimport * as fCheckboxCSS from '../../f-components/f-checkbox/f-checkbox.css';\nimport * as fChipCSS from '../../f-components/f-chip/f-chip.css';\nimport * as fImageCSS from '../../f-components/f-image/f-image.css';\nimport * as fPaginatorCSS from '../../f-components/f-paginator/f-paginator.css';\nimport * as fProgressBarCSS from '../../f-components/f-progress-bar/f-progress-bar.css';\nimport * as fRadioCSS from '../../f-components/f-radio/f-radio.css';\nimport * as fRatingCSS from '../../f-components/f-rating/f-rating.css';\nimport * as fSwitchCSS from '../../f-components/f-switch/f-switch.css';\nimport * as fTextFieldCSS from '../../f-components/f-text-field/f-text-field.css';\nimport * as FTypographyCSS from '../../f-components/f-typography/f-typography.css';\nimport * as rippleCSS from './mdc-ripple.css';\nimport {\n editorUsers,\n fButtonUsers,\n fCellUsers,\n fCheckboxUsers,\n fChipUsers,\n fImageUsers,\n fPaginatorUsers,\n fProgressBarUsers,\n fRadioUsers,\n fRatingUsers,\n fSwitchUsers,\n fTypographyUsers,\n fTextFieldUsers,\n KupThemeColor,\n KupThemeCSSVariables,\n KupThemeHSLValues,\n KupThemeIcons,\n KupThemeJSON,\n KupThemeRGBValues,\n masterCustomStyle,\n rippleUsers,\n KupThemeFontFamilyMap,\n} from './kup-theme-declarations';\nimport { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Theme manager, handles everything about theming, customStyles and color utilities.\n * @module KupTheme\n */\nexport class KupTheme {\n cssVars: Partial<KupThemeCSSVariables>;\n list: KupThemeJSON;\n managedComponents: Set<KupComponent>;\n name: string;\n styleTag: HTMLStyleElement;\n /**\n * Initializes KupTheme.\n */\n constructor(list?: KupThemeJSON, name?: string) {\n this.cssVars = {};\n this.list = list ? list : themesJson['default'];\n this.managedComponents = new Set();\n this.name = name ? name : 'octane';\n this.styleTag = dom\n .querySelector('head')\n .appendChild(document.createElement('style'));\n }\n\n private fonts(): string {\n const theme = this.list[this.name];\n\n let fonts = '';\n if (theme.fonts) {\n theme.fonts.forEach((f) => {\n const fontPath = getAssetPath(`./assets/fonts/${f}`);\n const fontFace = `@font-face {\n font-family: ${KupThemeFontFamilyMap[f]};\n src: url('${fontPath}.woff2') format('woff2'),\n url('${fontPath}.woff') format('woff');\n }`;\n fonts += fontFace;\n });\n }\n\n return fonts;\n }\n /**\n * Sets the CSS variables of the theme.\n */\n private cssVariables(): string {\n const variables: KupThemeCSSVariables =\n this.list[this.name].cssVariables;\n let css: string = '';\n for (let key in variables) {\n if (variables.hasOwnProperty(key)) {\n const val: string = variables[key];\n this.cssVars[key] = val;\n css += key + ': ' + val + ';';\n if (key.indexOf('color') > -1) {\n const computedColor: KupThemeColor = this.colorCheck(val);\n const rgbKey: string = key + '-rgb';\n const hKey: string = key + '-h';\n const sKey: string = key + '-s';\n const lKey: string = key + '-l';\n const rgbVal: string = computedColor.rgbValues;\n const hue: string = computedColor.hue;\n const saturation: string = computedColor.saturation;\n const lightness: string = computedColor.lightness;\n this.cssVars[rgbKey] = rgbVal;\n this.cssVars[hKey] = hue;\n this.cssVars[lKey] = lightness;\n this.cssVars[sKey] = saturation;\n css += rgbKey + ': ' + rgbVal + ';';\n css += hKey + ': ' + hue + ';';\n css += lKey + ': ' + lightness + ';';\n css += sKey + ': ' + saturation + ';';\n }\n }\n }\n return css;\n }\n /**\n * Sets the icon variables of the theme.\n */\n private icons(): string {\n const icons: KupThemeIcons = this.list[this.name].icons;\n let css: string = '';\n for (var key in icons) {\n if (icons.hasOwnProperty(key)) {\n const val = `url('${getAssetPath(\n `./assets/svg/${icons[key]}.svg`\n )}') no-repeat center`;\n this.cssVars[key] = val;\n css += key + ': ' + val + ';';\n }\n }\n return css;\n }\n /**\n * Refreshed managed components to apply theme customStyles.\n */\n private customStyle(): void {\n this.managedComponents.forEach(function (comp) {\n if (comp.isConnected) {\n comp.refresh();\n }\n });\n }\n /**\n * Sets the theme using this.name or the function's argument.\n * @param {string} name - When present, this theme will be set.\n */\n set(name?: string, list?: KupThemeJSON): void {\n if (name) {\n this.name = name;\n }\n if (list) {\n this.list = list;\n }\n dom.ketchup.debug.logMessage(\n 'theme manager',\n 'Setting theme to: ' + this.name + '.'\n );\n if (!this.list[this.name]) {\n dom.ketchup.debug.logMessage(\n 'theme manager',\n 'Invalid theme name, falling back to default (\"ketchup\").'\n );\n this.name = 'ketchup';\n }\n\n this.cssVars = {};\n this.styleTag.innerText =\n this.fonts() +\n ' :root[kup-theme=\"' +\n this.name +\n '\"]{' +\n this.cssVariables() +\n this.icons() +\n '}' +\n applicationCSS['default'];\n this.customStyle();\n\n document.documentElement.setAttribute('kup-theme', this.name);\n document.dispatchEvent(new CustomEvent('kup-theme-change'));\n }\n /**\n * Gets the name of available themes.\n * @returns {Array<string>} Array of themes' names.\n */\n getThemes(): Array<string> {\n const themes: Array<string> = [];\n for (var key in this.list) {\n if (this.list.hasOwnProperty(key)) {\n themes.push(key);\n }\n }\n return themes;\n }\n /**\n * This method will just refresh the current theme.\n */\n refresh(): void {\n try {\n this.styleTag.innerText =\n ':root[kup-theme=\"' +\n this.name +\n '\"]{' +\n this.cssVariables() +\n this.icons() +\n '}';\n this.customStyle();\n dom.ketchup.debug.logMessage(\n 'kup-theme',\n 'Theme ' + dom.getAttribute('kup-theme') + ' refreshed.'\n );\n document.dispatchEvent(new CustomEvent('kup-theme-refresh'));\n } catch (error) {\n dom.ketchup.debug.logMessage(\n 'kup-theme',\n 'Theme not refreshed.',\n KupDebugCategory.WARNING\n );\n }\n }\n /**\n * Registers a KupComponent in KupTheme, in order to be properly refreshed whenever the theme changes.\n * @param {any} comp - The component calling this function.\n */\n register(comp: any): void {\n this.managedComponents.add(comp.rootElement ? comp.rootElement : comp);\n }\n /**\n * Unregisters a KupComponent, so it won't be refreshed when the theme changes.\n * @param {any} comp - The component calling this function.\n */\n unregister(comp: any): void {\n if (this.managedComponents) {\n this.managedComponents.delete(\n comp.rootElement ? comp.rootElement : comp\n );\n }\n }\n /**\n * Combines global (style every component should have), theme's and component's customStyles, returning the result.\n * @param comp - The component calling this function.\n * @returns {string} Combined customStyle.\n */\n setKupStyle(comp: KupComponent): string {\n const styles: GenericObject = this.list[this.name].customStyles;\n const tagName: KupTagNames = comp.tagName as KupTagNames;\n let completeStyle = componentCSS['default'];\n if (styles && styles[masterCustomStyle]) {\n completeStyle += styles[masterCustomStyle];\n }\n if (styles && styles[comp.tagName]) {\n completeStyle += ' ' + styles[comp.tagName];\n }\n if (comp.customStyle) {\n completeStyle += ' ' + comp.customStyle;\n }\n if (tagName) {\n if (fButtonUsers.includes(tagName)) {\n completeStyle += fButtonCSS['default'];\n }\n if (fCellUsers.includes(tagName)) {\n completeStyle += fCellCSS['default'];\n }\n if (fCheckboxUsers.includes(tagName)) {\n completeStyle += fCheckboxCSS['default'];\n }\n if (fChipUsers.includes(tagName)) {\n completeStyle += fChipCSS['default'];\n }\n if (fImageUsers.includes(tagName)) {\n completeStyle += fImageCSS['default'];\n }\n if (fPaginatorUsers.includes(tagName)) {\n completeStyle += fPaginatorCSS['default'];\n }\n if (fProgressBarUsers.includes(tagName)) {\n completeStyle += fProgressBarCSS['default'];\n }\n if (fRadioUsers.includes(tagName)) {\n completeStyle += fRadioCSS['default'];\n }\n if (fRatingUsers.includes(tagName)) {\n completeStyle += fRatingCSS['default'];\n }\n if (fSwitchUsers.includes(tagName)) {\n completeStyle += fSwitchCSS['default'];\n }\n if (fTypographyUsers.includes(tagName)) {\n completeStyle += FTypographyCSS['default'];\n }\n if (fTextFieldUsers.includes(tagName)) {\n completeStyle += fTextFieldCSS['default'];\n }\n if (editorUsers.includes(tagName)) {\n completeStyle += applicationCSS['default'];\n }\n if (rippleUsers.includes(tagName)) {\n completeStyle += rippleCSS['default'];\n }\n }\n return completeStyle ? completeStyle : null;\n }\n /**\n * Checks whether on a given color the text should be white or black.\n * @param {string} color - Color used to check the contrast.\n * @returns {string} \"white\" or \"black\".\n */\n colorContrast(color: string): string {\n color = this.colorCheck(color).rgbColor;\n const colorValues: string[] = color.replace(/[^\\d,.]/g, '').split(',');\n const brightness: number = Math.round(\n (parseInt(colorValues[0]) * 299 +\n parseInt(colorValues[1]) * 587 +\n parseInt(colorValues[2]) * 114) /\n 1000\n );\n return brightness > 125 ? 'black' : 'white';\n }\n /**\n * Generates a random HEX color.\n * @param {number} brightness - Brightness of the color generated (0-255).\n * @returns {string} Random HEX color.\n */\n randomColor(brightness: number): string {\n function randomChannel(brightness: number) {\n var r = 255 - brightness;\n var n = 0 | (Math.random() * r + brightness);\n var s = n.toString(16);\n return s.length == 1 ? '0' + s : s;\n }\n return (\n '#' +\n randomChannel(brightness) +\n randomChannel(brightness) +\n randomChannel(brightness)\n );\n }\n /**\n * Sets a random theme between those specified in this.list (excludes \"print\" and \"test\") and different from the currently used one.\n */\n randomTheme(): void {\n let themes: string[] = [];\n for (var key in this.list) {\n if (this.list.hasOwnProperty(key)) {\n if (key !== 'test' && key !== 'print') {\n themes.push(key);\n }\n }\n }\n if (themes.length > 0) {\n let index = null;\n while (index === null || themes[index] === this.name) {\n index = Math.floor(Math.random() * Math.floor(themes.length));\n }\n this.set(themes[index]);\n } else {\n dom.ketchup.debug.logMessage(\n 'kup-theme',\n \"Couldn't set a random theme: no themes available!\",\n KupDebugCategory.WARNING\n );\n }\n }\n /**\n * Returns HEX, RGB, HSL, HSL values and RGB values from a given color.\n * @param {string} color - Input color.\n * @returns {KupThemeColor} Object of color values: hexColor (\"#ffffff\"), hslColor (\"hsl(255,100%,100%)\"), hslValues (\"255,100%,100%\"), rgbColor (\"rgb(255,255,255)\") and rgbValues (\"255,255,255\").\n */\n colorCheck(color: string): KupThemeColor {\n //Testing whether the color is transparent, if it is a fall back value will be returned matching the background-color\n if (color === 'transparent') {\n color = this.cssVars['--kup-background-color'];\n dom.ketchup.debug.logMessage(\n 'theme manager',\n 'Received TRANSPARENT color, converted to ' +\n color +\n ' (theme background).'\n );\n }\n\n const altRgbRe: RegExp = /R(\\d{1,3})G(\\d{1,3})B(\\d{1,3})/;\n const altRgb: boolean = altRgbRe.test(color);\n if (altRgb) {\n const parts: RegExpMatchArray = color.match(altRgbRe);\n color = 'rgb(' + parts[1] + ',' + parts[2] + ',' + parts[3] + ')';\n }\n\n let isHex: boolean = color.substring(0, 1) === '#';\n const isHsl: boolean = color.substring(0, 3).toLowerCase() === 'hsl';\n const isRgb: boolean = color.substring(0, 3).toLowerCase() === 'rgb';\n\n //If true, supposedly it's a code word\n if (!isHex && !isHsl && !isRgb) {\n const oldColor: string = color;\n color = this.codeToHex(color);\n isHex = color.substring(0, 1) === '#' ? true : false;\n dom.ketchup.debug.logMessage(\n 'theme manager',\n 'Received CODE NAME color ' +\n oldColor +\n ', converted to ' +\n color +\n '.'\n );\n }\n\n //Testing whether the color is \"hex\" value or \"hsl\"\n let hexColor: string = null;\n let rgbColor: string = null;\n let hslColor: string = null;\n let hslValues: string = null;\n let hue: string = null;\n let lightness: string = null;\n let saturation: string = null;\n\n if (isHex || isHsl) {\n const oldColor: string = color;\n let rgbColorObj: KupThemeRGBValues = null;\n if (isHex) {\n hexColor = color;\n rgbColorObj = this.hexToRgb(color);\n } else {\n hslColor = color;\n const regexp: RegExp =\n /hsl\\(\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\)/g;\n const hsl: string[] = regexp.exec(color).slice(1);\n hslValues = hsl[0] + ',' + hsl[1] + ',' + hsl[2];\n hue = hsl[0];\n saturation = hsl[2];\n lightness = hsl[1];\n const h: number = parseInt(hue.replace('deg', ''));\n const s: number = parseInt(saturation.replace('%', '')) / 100;\n const l: number = parseInt(lightness.replace('%', '')) / 100;\n rgbColorObj = this.hslToRgb(h, s, l);\n }\n try {\n color =\n 'rgb(' +\n rgbColorObj.r +\n ',' +\n rgbColorObj.g +\n ',' +\n rgbColorObj.b +\n ')';\n if (isHex) {\n const hsl: KupThemeHSLValues = this.rgbToHsl(\n rgbColorObj.r,\n rgbColorObj.g,\n rgbColorObj.b\n );\n hue = hsl.h.toString();\n saturation = hsl.s.toString() + '%';\n lightness = hsl.l.toString() + '%';\n hslValues = hue + ',' + saturation + ',' + lightness;\n hslColor = 'hsl(' + hslValues + ')';\n } else {\n hexColor = this.rgbToHex(\n rgbColorObj.r,\n rgbColorObj.g,\n rgbColorObj.b\n );\n }\n dom.ketchup.debug.logMessage(\n 'theme-manager',\n 'Received HEX color ' +\n oldColor +\n ', converted to ' +\n color +\n '.'\n );\n } catch (error) {\n dom.ketchup.debug.logMessage(\n 'theme-manager',\n 'Invalid color: ' + color + '.'\n );\n }\n }\n\n let rgbValues: string = null;\n const values: RegExpMatchArray = color.match(\n /rgba?\\((\\d{1,3}), ?(\\d{1,3}), ?(\\d{1,3})\\)?(?:, ?(\\d(?:\\.\\d?))\\))?/\n );\n\n try {\n rgbValues = values[1] + ',' + values[2] + ',' + values[3];\n rgbColor = color;\n } catch (error) {\n dom.ketchup.debug.logMessage(\n 'theme-manager',\n 'Color not converted to rgb values: ' + color + '.'\n );\n }\n\n if (!hexColor) {\n try {\n hexColor = this.rgbToHex(\n parseInt(values[1]),\n parseInt(values[2]),\n parseInt(values[3])\n );\n } catch (error) {\n dom.ketchup.debug.logMessage(\n 'theme-manager',\n 'Color not converted to hex value: ' + color + '.'\n );\n }\n }\n\n if (!hslColor || !hslValues) {\n try {\n const hsl: KupThemeHSLValues = this.rgbToHsl(\n parseInt(values[1]),\n parseInt(values[2]),\n parseInt(values[3])\n );\n hue = hsl.h.toString();\n saturation = hsl.s.toString() + '%';\n lightness = hsl.l.toString() + '%';\n hslValues = hsl.h + ',' + hsl.s + '%,' + hsl.l + '%';\n hslColor = 'hsl(' + hsl.h + ',' + hsl.s + '%,' + hsl.l + '%)';\n } catch (error) {\n dom.ketchup.debug.logMessage(\n 'theme-manager',\n 'Color not converted to hex value: ' + color + '.'\n );\n }\n }\n\n return {\n hexColor: hexColor,\n hslColor: hslColor,\n hslValues: hslValues,\n hue: hue,\n lightness: lightness,\n saturation: saturation,\n rgbColor: rgbColor,\n rgbValues: rgbValues,\n };\n }\n /**\n * Converts an HEX color to its RGB values.\n * @param {string} hex - Hex code.\n * @returns {KupThemeRGBValues} Object containing RGB values.\n */\n hexToRgb(hex: string): KupThemeRGBValues {\n var result: RegExpExecArray =\n /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n }\n /**\n * Converts an HSL color to its RGB values.\n * @param {number} h - Hue (range [0, 360)).\n * @param {number} s - Saturation (range [0, 1)).\n * @param {number} l - Lightness (range [0, 1)).\n * @returns {Array} RGB values.\n */\n hslToRgb(h: number, s: number, l: number): KupThemeRGBValues {\n if (h == undefined) {\n return { r: 0, g: 0, b: 0 };\n }\n\n let huePrime: number = h / 60;\n const chroma: number = (1 - Math.abs(2 * l - 1)) * s;\n const secondComponent: number =\n chroma * (1 - Math.abs((huePrime % 2) - 1));\n\n huePrime = Math.floor(huePrime);\n let red: number, green: number, blue: number;\n\n if (huePrime === 0) {\n red = chroma;\n green = secondComponent;\n blue = 0;\n } else if (huePrime === 1) {\n red = secondComponent;\n green = chroma;\n blue = 0;\n } else if (huePrime === 2) {\n red = 0;\n green = chroma;\n blue = secondComponent;\n } else if (huePrime === 3) {\n red = 0;\n green = secondComponent;\n blue = chroma;\n } else if (huePrime === 4) {\n red = secondComponent;\n green = 0;\n blue = chroma;\n } else if (huePrime === 5) {\n red = chroma;\n green = 0;\n blue = secondComponent;\n }\n\n const lightnessAdjustment: number = l - chroma / 2;\n red += lightnessAdjustment;\n green += lightnessAdjustment;\n blue += lightnessAdjustment;\n return {\n r: Math.round(red * 255),\n g: Math.round(green * 255),\n b: Math.round(blue * 255),\n };\n }\n /**\n * Converts a color in RGB format to the corresponding HEX color.\n * @param {number} r - Red channel value.\n * @param {number} g - Green channel value.\n * @param {number} b - Blue channel value.\n * @returns {string} HEX color.\n */\n rgbToHex(r: number, g: number, b: number): string {\n return (\n '#' + this.valueToHex(r) + this.valueToHex(g) + this.valueToHex(b)\n );\n }\n /**\n * Converts a color in RGB format to the corresponding HSL color.\n * @param {number} r - Red channel value.\n * @param {number} g - Green channel value.\n * @param {number} b - Blue channel value.\n * @returns {KupThemeHSLValues} Object containing HSL values.\n */\n rgbToHsl(r: number, g: number, b: number): KupThemeHSLValues {\n // Make r, g, and b fractions of 1\n r /= 255;\n g /= 255;\n b /= 255;\n\n // Find greatest and smallest channel values\n const cmin: number = Math.min(r, g, b),\n cmax: number = Math.max(r, g, b),\n delta: number = cmax - cmin;\n let h: number = 0,\n s: number = 0,\n l: number = 0;\n\n // Calculate hue\n // No difference\n if (delta == 0) h = 0;\n // Red is max\n else if (cmax == r) h = ((g - b) / delta) % 6;\n // Green is max\n else if (cmax == g) h = (b - r) / delta + 2;\n // Blue is max\n else h = (r - g) / delta + 4;\n\n h = Math.round(h * 60);\n\n // Make negative hues positive behind 360°\n if (h < 0) h += 360;\n\n // Calculate lightness\n l = (cmax + cmin) / 2;\n\n // Calculate saturation\n s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\n\n // Multiply l and s by 100\n s = +(s * 100).toFixed(1);\n l = +(l * 100).toFixed(1);\n\n return { h: h, s: s, l: l };\n }\n /**\n * Converts a single RGB value to the corresponding HEX value.\n * @param {number} c - Color value.\n * @returns {string} HEX value.\n */\n valueToHex(c: number): string {\n const hex: string = c.toString(16);\n return hex.length == 1 ? '0' + hex : hex;\n }\n /**\n * Converts a color code word to the corresponding HEX value.\n * @param {string} color - Color code word.\n * @returns {string} HEX value.\n */\n codeToHex(color: string): string {\n const colorCodes: GenericObject = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n };\n if (colorCodes[color.toLowerCase()]) {\n return colorCodes[color.toLowerCase()];\n } else {\n dom.ketchup.debug.logMessage(\n 'theme manager',\n 'Could not decode color ' + color + '!'\n );\n return color;\n }\n }\n}\n","import { KupEventPayload, KupListNode, KupTreeNode } from '../../components';\n\n/**\n * Modifiers to listen to in Keyboard Event in order to trigger the toolbars.\n */\nexport enum KupToolbarModifierKeys {\n ALT = 'altKey',\n CTRL = 'ctrlKey', // Automatically tests for metaKey as well (iOS compatibility)\n SHIFT = 'shiftKey',\n}\n","import type { KupDom } from '../kup-manager/kup-manager-declarations';\nimport { KupToolbarModifierKeys } from './kup-toolbar-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Handles component's toolbar.\n * @module KupToolbar\n */\nexport class KupToolbar {\n active: boolean;\n modifiers: KupToolbarModifierKeys[];\n managedElements: Set<HTMLElement>;\n #keyEvent: (this: Document, ev: KeyboardEvent) => void;\n /**\n * Initializes KupToolbar.\n */\n constructor() {\n this.active = false;\n this.managedElements = new Set();\n this.modifiers = [\n KupToolbarModifierKeys.ALT,\n KupToolbarModifierKeys.CTRL,\n ];\n this.#keyEvent = function (e: KeyboardEvent) {\n const toolbar: KupToolbar = dom.ketchup.toolbar;\n if (toolbar.managedElements) {\n for (let index = 0; index < toolbar.modifiers.length; index++) {\n if (\n toolbar.modifiers[index] ===\n KupToolbarModifierKeys.CTRL &&\n e.metaKey\n ) {\n continue;\n } else {\n if (!e[toolbar.modifiers[index]]) {\n {\n if (toolbar.active) {\n toolbar.hide();\n }\n return;\n }\n }\n }\n }\n toolbar.show();\n }\n };\n document.addEventListener('keydown', this.#keyEvent);\n document.addEventListener('keyup', this.#keyEvent);\n }\n /**\n * Shows components' toolbar.\n */\n show(): void {\n this.managedElements.forEach(function (comp) {\n if (comp.isConnected) {\n comp.setAttribute('kup-toolbar', '');\n }\n });\n this.active = true;\n }\n /**\n * Hides components' toolbar.\n */\n hide(): void {\n this.managedElements.forEach(function (comp) {\n if (comp.isConnected) {\n comp.removeAttribute('kup-toolbar');\n }\n });\n this.active = false;\n }\n /**\n * Watches the element eligible to move when dragging.\n * @param {HTMLElement} el - Toolbar-supporting element.\n */\n register(el: HTMLElement): void {\n this.managedElements.add(el);\n }\n /**\n * Removes the elements from the KupToolbar class watchlist.\n * @param {HTMLElement[]} elements - Elements to remove.\n */\n unregister(elements: HTMLElement[]): void {\n if (this.managedElements) {\n for (let index = 0; index < elements.length; index++) {\n this.managedElements.delete(elements[index]);\n }\n }\n }\n /**\n * Returns whether an element was previously registered or not.\n * @param {HTMLElement} el - Element to test.\n * @returns {boolean} True if the element was registered.\n */\n isRegistered(el: HTMLElement): boolean {\n return !this.managedElements ? false : this.managedElements.has(el);\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect = function (target) {\n if ('getBBox' in target) {\n var box = target.getBBox();\n return Object.freeze({\n height: box.height,\n left: 0,\n top: 0,\n width: box.width,\n });\n }\n else { // if (target instanceof HTMLElement) { // also includes all other non-SVGGraphicsElements\n var styles = window.getComputedStyle(target);\n return Object.freeze({\n height: parseFloat(styles.height || '0'),\n left: parseFloat(styles.paddingLeft || '0'),\n top: parseFloat(styles.paddingTop || '0'),\n width: parseFloat(styles.width || '0'),\n });\n }\n};\nexports.ContentRect = ContentRect;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29udGVudFJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxJQUFNLFdBQVcsR0FBRyxVQUFDLE1BQWU7SUFDaEMsSUFBSSxTQUFTLElBQUssTUFBNkIsRUFBRTtRQUM3QyxJQUFNLEdBQUcsR0FBSSxNQUE2QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsSUFBSSxFQUFFLENBQUM7WUFDUCxHQUFHLEVBQUUsQ0FBQztZQUNOLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUM7S0FDTjtTQUFNLEVBQUUsMEZBQTBGO1FBQy9GLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDakIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztZQUN4QyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDO1lBQzNDLEdBQUcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFDekMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztTQUN6QyxDQUFDLENBQUM7S0FDTjtBQUNMLENBQUMsQ0FBQztBQUVPLGtDQUFXIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObservation = /** @class */ (function () {\n function ResizeObservation(target) {\n this.target = target;\n this.$$broadcastWidth = this.$$broadcastHeight = 0;\n }\n Object.defineProperty(ResizeObservation.prototype, \"broadcastWidth\", {\n get: function () {\n return this.$$broadcastWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ResizeObservation.prototype, \"broadcastHeight\", {\n get: function () {\n return this.$$broadcastHeight;\n },\n enumerable: true,\n configurable: true\n });\n ResizeObservation.prototype.isActive = function () {\n var cr = ContentRect_1.ContentRect(this.target);\n return !!cr\n && (cr.width !== this.broadcastWidth\n || cr.height !== this.broadcastHeight);\n };\n return ResizeObservation;\n}());\nexports.ResizeObservation = ResizeObservation;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBNEM7QUFFNUM7SUFlSSwyQkFBWSxNQUFlO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFWRCxzQkFBVyw2Q0FBYzthQUF6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pDLENBQUM7OztPQUFBO0lBQ0Qsc0JBQVcsOENBQWU7YUFBMUI7WUFDSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQU9NLG9DQUFRLEdBQWY7UUFDSSxJQUFNLEVBQUUsR0FBRyx5QkFBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQyxPQUFPLENBQUMsQ0FBQyxFQUFFO2VBQ0osQ0FDQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjO21CQUM3QixFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQ3hDLENBQUM7SUFDVixDQUFDO0lBQ0wsd0JBQUM7QUFBRCxDQUFDLEFBN0JELElBNkJDO0FBRVEsOENBQWlCIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObserverEntry = /** @class */ (function () {\n function ResizeObserverEntry(target) {\n this.target = target;\n this.contentRect = ContentRect_1.ContentRect(target);\n }\n return ResizeObserverEntry;\n}());\nexports.ResizeObserverEntry = ResizeObserverEntry;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXJFbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXNpemVPYnNlcnZlckVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQTRDO0FBRTVDO0lBR0ksNkJBQVksTUFBZTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLHlCQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNMLDBCQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFFUSxrREFBbUIifQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeObservation_1 = require(\"./ResizeObservation\");\nvar ResizeObserverEntry_1 = require(\"./ResizeObserverEntry\");\nvar resizeObservers = [];\nvar ResizeObserver = /** @class */ (function () {\n function ResizeObserver(callback) {\n /** @internal */\n this.$$observationTargets = [];\n /** @internal */\n this.$$activeTargets = [];\n /** @internal */\n this.$$skippedTargets = [];\n var message = callbackGuard(callback);\n if (message) {\n throw TypeError(message);\n }\n this.$$callback = callback;\n }\n ResizeObserver.prototype.observe = function (target) {\n var message = targetGuard('observe', target);\n if (message) {\n throw TypeError(message);\n }\n var index = findTargetIndex(this.$$observationTargets, target);\n if (index >= 0) {\n return;\n }\n this.$$observationTargets.push(new ResizeObservation_1.ResizeObservation(target));\n registerResizeObserver(this);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n var message = targetGuard('unobserve', target);\n if (message) {\n throw TypeError(message);\n }\n var index = findTargetIndex(this.$$observationTargets, target);\n if (index < 0) {\n return;\n }\n this.$$observationTargets.splice(index, 1);\n if (this.$$observationTargets.length === 0) {\n deregisterResizeObserver(this);\n }\n };\n ResizeObserver.prototype.disconnect = function () {\n this.$$observationTargets = [];\n this.$$activeTargets = [];\n deregisterResizeObserver(this);\n };\n return ResizeObserver;\n}());\nexports.ResizeObserver = ResizeObserver;\nfunction registerResizeObserver(resizeObserver) {\n var index = resizeObservers.indexOf(resizeObserver);\n if (index < 0) {\n resizeObservers.push(resizeObserver);\n startLoop();\n }\n}\nfunction deregisterResizeObserver(resizeObserver) {\n var index = resizeObservers.indexOf(resizeObserver);\n if (index >= 0) {\n resizeObservers.splice(index, 1);\n checkStopLoop();\n }\n}\nfunction callbackGuard(callback) {\n if (typeof (callback) === 'undefined') {\n return \"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\";\n }\n if (typeof (callback) !== 'function') {\n return \"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\";\n }\n}\nfunction targetGuard(functionName, target) {\n if (typeof (target) === 'undefined') {\n return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': 1 argument required, but only 0 present.\";\n }\n if (!(target && target.nodeType === window.Node.ELEMENT_NODE)) {\n return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': parameter 1 is not of type 'Element'.\";\n }\n}\nfunction findTargetIndex(collection, target) {\n for (var index = 0; index < collection.length; index += 1) {\n if (collection[index].target === target) {\n return index;\n }\n }\n return -1;\n}\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function (ro) {\n ro.$$activeTargets = [];\n ro.$$skippedTargets = [];\n ro.$$observationTargets.forEach(function (ot) {\n if (ot.isActive()) {\n var targetDepth = calculateDepthForNode(ot.target);\n if (targetDepth > depth) {\n ro.$$activeTargets.push(ot);\n }\n else {\n ro.$$skippedTargets.push(ot);\n }\n }\n });\n });\n};\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; });\n};\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; });\n};\nvar broadcastActiveObservations = function () {\n var shallowestTargetDepth = Infinity;\n resizeObservers.forEach(function (ro) {\n if (!ro.$$activeTargets.length) {\n return;\n }\n var entries = [];\n ro.$$activeTargets.forEach(function (obs) {\n var entry = new ResizeObserverEntry_1.ResizeObserverEntry(obs.target);\n entries.push(entry);\n obs.$$broadcastWidth = entry.contentRect.width;\n obs.$$broadcastHeight = entry.contentRect.height;\n var targetDepth = calculateDepthForNode(obs.target);\n if (targetDepth < shallowestTargetDepth) {\n shallowestTargetDepth = targetDepth;\n }\n });\n ro.$$callback(entries, ro);\n ro.$$activeTargets = [];\n });\n return shallowestTargetDepth;\n};\nvar deliverResizeLoopErrorNotification = function () {\n var errorEvent = new window.ErrorEvent('ResizeLoopError', {\n message: 'ResizeObserver loop completed with undelivered notifications.',\n });\n window.dispatchEvent(errorEvent);\n};\nvar calculateDepthForNode = function (target) {\n var depth = 0;\n while (target.parentNode) {\n target = target.parentNode;\n depth += 1;\n }\n return depth;\n};\nvar notificationIteration = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopErrorNotification();\n }\n};\nvar animationFrameCancelToken;\nvar startLoop = function () {\n if (animationFrameCancelToken)\n return;\n runLoop();\n};\nvar runLoop = function () {\n animationFrameCancelToken = window.requestAnimationFrame(function () {\n notificationIteration();\n runLoop();\n });\n};\nvar checkStopLoop = function () {\n if (animationFrameCancelToken && !resizeObservers.some(function (ro) { return !!ro.$$observationTargets.length; })) {\n window.cancelAnimationFrame(animationFrameCancelToken);\n animationFrameCancelToken = undefined;\n }\n};\nvar install = function () {\n return window.ResizeObserver = ResizeObserver;\n};\nexports.install = install;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5REFBd0Q7QUFFeEQsNkRBQTREO0FBRTVELElBQU0sZUFBZSxHQUFHLEVBQXNCLENBQUM7QUFFL0M7SUFVSSx3QkFBWSxRQUFnQztRQVA1QyxnQkFBZ0I7UUFDVCx5QkFBb0IsR0FBRyxFQUF5QixDQUFDO1FBQ3hELGdCQUFnQjtRQUNULG9CQUFlLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxnQkFBZ0I7UUFDVCxxQkFBZ0IsR0FBRyxFQUF5QixDQUFDO1FBR2hELElBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUVNLGdDQUFPLEdBQWQsVUFBZSxNQUFlO1FBQzFCLElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ1osT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUQsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGtDQUFTLEdBQWhCLFVBQWlCLE1BQWU7UUFDNUIsSUFBTSxPQUFPLEdBQUcs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","import {\n FCellInfo,\n FCellShapes,\n} from '../../f-components/f-cell/f-cell-declarations';\nimport { GenericMap, GenericObject } from '../../types/GenericTypes';\nimport { KupObj } from '../kup-objects/kup-objects-declarations';\nimport type { PointerEventType } from '@interactjs/types/index';\n/**\n * Generic dataset interface.\n */\nexport interface KupDataDataset {\n columns?: KupDataColumn[];\n rows?: KupDataRow[];\n}\n/**\n * Generic column interface.\n */\nexport interface KupDataColumn {\n name: string;\n title: string;\n children?: KupDataColumnChild[];\n cssClass?: string;\n decimals?: number;\n formula?: string;\n hideValuesRepetitions?: boolean;\n icon?: string;\n placeholderIcon?: string;\n isEditable?: boolean;\n isKey?: boolean;\n mergedFrom?: string[];\n obj?: KupObj;\n objs?: KupObj[];\n resultOf?: string;\n shape?: FCellShapes;\n size?: string;\n valuesForFilter?: string[];\n visible?: boolean;\n style?: GenericMap;\n cellData?: GenericObject;\n cellSlotData?: GenericObject;\n tooltip?: boolean;\n}\nexport interface KupDataColumnChild {\n name: string;\n obj: KupObj;\n icon?: string;\n}\n/**\n * Generic row interface.\n */\nexport interface KupDataRow {\n cells?: KupDataRowCells;\n actions?: KupDataRowAction[];\n cssClass?: string;\n id?: string;\n readOnly?: boolean;\n transposedColumnName?: string;\n}\nexport interface KupDataRowCells {\n [index: string]: KupDataCell;\n}\nexport interface KupDataRowAction {\n text: string;\n icon: string;\n type:\n | DropDownAction.CODVER\n | DropDownAction.ROWACTION\n | DropDownAction.COMMAND;\n\n index?: number;\n obj?: KupObj;\n cell?: KupDataCell;\n column?: KupDataColumn;\n}\n\n/**\n * Commands for actions\n */\nexport interface KupCommand {\n obj: KupObj;\n icon: string;\n text: string;\n showIcon: boolean;\n}\n\n/**\n * Generic cell interface.\n */\nexport interface KupDataCell {\n value?: string;\n cardID?: number;\n cssClass?: string;\n data?: GenericObject;\n displayedValue?: string;\n element?: HTMLElement;\n icon?: string;\n placeholderIcon?: string;\n info?: FCellInfo;\n isEditable?: boolean;\n obj?: KupObj;\n shape?: FCellShapes;\n slotData?: GenericObject;\n style?: GenericMap;\n styleContent?: GenericMap;\n title?: string;\n}\n\nexport interface KupDataCellOptions extends KupDataCell {\n options?: CellOptions[];\n}\n\nexport interface CellOptions {\n id: string;\n label: string;\n checked?: boolean;\n value?: string;\n}\n/**\n *\n */\nexport interface CellActionProps {\n onClick: (e: PointerEventType) => void;\n}\n\n/**\n * Generic tree node interface.\n */\nexport interface KupDataNode extends KupDataRow {\n value: string;\n children?: KupDataNode[];\n disabled?: boolean;\n expandable?: boolean;\n obj?: KupObj;\n icon?: string;\n placeholderIcon?: string;\n isExpanded?: boolean;\n title?: string;\n data?: GenericObject;\n shape?: FCellShapes;\n isEditable?: boolean;\n options?: CellOptions[];\n}\n\n/**\n * Interface related to smeup data structure setup commands.\n */\nexport interface KupDataCommand extends KupDataCell {\n children?: Array<KupDataCommand>;\n cells?: {\n [key: string]: KupDataCell;\n };\n}\n\n/**\n * Interface related to cells operations.\n */\nexport interface KupDataCellOperations {\n find: (\n dataset: KupDataDataset,\n filters?: KupDataFindCellFilters\n ) => KupDataCell[];\n getValue: (dataset: KupDataDataset, columns?: string[]) => string[];\n replace: (\n dataset: KupDataDataset,\n cell: KupDataCell,\n columns?: string[]\n ) => KupDataCell[];\n}\n/**\n * Interface related to columns operations.\n */\nexport interface KupDataColumnOperations {\n find: (\n dataset: KupDataDataset,\n filters?: Partial<KupDataColumn>\n ) => KupDataColumn[];\n hide: (\n dataset: KupDataDataset | KupDataColumn[],\n columns2hide: string[]\n ) => KupDataColumn[];\n new: (\n dataset: KupDataDataset,\n type: KupDataNewColumnTypes,\n options: KupDataNewColumnOptions\n ) => string | KupDataColumn;\n}\n/**\n * Interface related to nodes operations.\n */\nexport interface KupDataNodeOperations {\n getDrilldownInfo: (nodes: KupDataNode[]) => KupDataNodeDrilldownInfo;\n getParent: (nodes: KupDataNode[], child: KupDataNode) => KupDataNode;\n remove: (nodes: KupDataNode[], node2remove: KupDataNode) => KupDataNode;\n setProperties: (\n nodes: KupDataNode[],\n properties: Partial<KupDataNode>,\n recursively?: boolean,\n exclude?: KupDataNode[]\n ) => KupDataNode[];\n toStream: (nodes: KupDataNode[]) => KupDataNode[];\n}\n/**\n * Interface related to rows operations.\n */\nexport interface KupDataRowOperations {\n find: (\n dataset: KupDataDataset,\n filters?: KupDataFindCellFilters\n ) => KupDataRow[];\n toNode: (dataset: KupDataDataset) => KupDataNode[];\n}\n/**\n * Sets the filters for the cell finder method.\n */\nexport interface KupDataFindCellFilters {\n columns?: string[];\n range?: KupDataFilterRange;\n value?: string;\n}\n/**\n * Interface of the range filter.\n */\nexport interface KupDataFilterRange {\n min?: number | string | String;\n max?: number | string | String;\n}\n/**\n * Interface for the creation of a new column.\n */\nexport interface KupDataNewColumn {\n column: KupDataColumn;\n criteria: KupDataFindCellFilters;\n}\n/**\n * Type to manage sort of the dataset.\n */\nexport type KupDataDatasetSort = 'normalDistribution';\n/**\n * Interface containing the options related to column creation when invoking column.new.\n */\nexport interface KupDataNewColumnOptions {\n columns?: string[];\n newColumn?: KupDataColumn;\n operation?: string;\n separator?: string;\n}\n/**\n * Interface containing the options related to column creation when invoking column.new.\n */\nexport interface KupDataNodeDrilldownInfo {\n maxChildren?: number;\n maxDepth?: number;\n}\n/**\n * Types of column creation when invoking column.new.\n */\nexport enum KupDataNewColumnTypes {\n CONCATENATE = 'concatenate',\n DUPLICATE = 'duplicate',\n MATH = 'math',\n MERGE = 'merge',\n}\n\nexport enum DropDownAction {\n ROWACTION = 'row-action',\n CODVER = 'cod_ver',\n COMMAND = 'command',\n}\n","import { GenericObject, KupEventPayload } from '../../types/GenericTypes';\nimport { KupObj } from '../../managers/kup-objects/kup-objects-declarations';\nimport type { PointerEvent } from '@interactjs/types/index';\nimport { KupCardEventPayload } from '../kup-card/kup-card-declarations';\nimport {\n DropDownAction,\n KupDataCell,\n KupDataColumn,\n KupDataCommand,\n KupDataRow,\n KupDataRowAction,\n} from '../../managers/kup-data/kup-data-declarations';\n\n/**\n * Props of the kup-data-table component.\n * Used to export every prop in an object.\n */\nexport enum KupDataTableProps {\n autoFillMissingCells = 'When true and when a row is missing some columns, the missing cells will be autogenerated.',\n customStyle = 'Custom style of the component.',\n data = 'The data of the table.',\n density = \"The density of the rows, defaults at 'medium' and can be also set to 'large' or 'small'.\",\n dragEnabled = 'Enables drag.',\n dropEnabled = 'Enables drop.',\n editableData = 'When set to true, editable cells will be rendered using input components.',\n emptyDataLabel = 'Defines the label to show when the table is empty.',\n enableColumnsFormula = 'Enables the choice to set formulas on columns by dragging them into different columns.',\n enableMergeColumns = 'Enables the merging of columns by dragging them into different columns.',\n enableExtraColumns = 'Enables adding extra columns.',\n enableSortableColumns = 'Enables the sorting of columns by dragging them into different columns.',\n expandGroups = 'Expands groups when set to true.',\n filters = 'List of filters set by the user.',\n fixedColumns = 'Fixes the given number of columns so that they stay visible when horizontally scrolling the data-table. If grouping is active or the value of the prop is <= 0, this prop will have no effect. Can be combined with fixedRows.',\n fixedColumnsR = 'Fixes the given number of columns to the right so that they stay visible when horizontally scrolling the data-table. If grouping is active or the value of the prop is <= 0, this prop will have no effect. Can be combined with fixedRows.',\n fixedRows = 'Fixes the given number of rows so that they stay visible when vertically scrolling the data-table. If grouping is active or the value of the prop is <= 0, this prop will have no effect. Can be combined with fixedColumns.',\n forceOneLine = 'Forces cells with long text and a fixed column size to have an ellipsis set on their text. The reflect attribute is mandatory to allow styling.',\n globalFilter = 'When set to true it activates the global filter.',\n globalFilterValue = 'The value of the global filter.',\n groupLabelDisplay = 'How the label of a group must be displayed. For available values',\n groups = 'The list of groups.',\n headerIsPersistent = 'When set to true the header will stick on top of the table when scrolling.',\n insertMode = 'Enables insert mode.',\n isFocusable = 'When set to true, clicked-on rows will have a visual feedback.',\n lazyLoadRows = 'When set to true, extra rows will be automatically loaded once the last row enters the viewport. When groups are present, the number of rows is referred to groups and not to their content. Paginator is disabled.',\n legacyLook = 'When enabled, the extra whitespaces will be displayed and the font will be set to monospace by default.',\n lineBreakCharacter = 'Defines the placeholder character which will be replaced by a line break inside table header cells, normal or sticky.',\n loadMoreLimit = 'Sets a maximum limit of new records which can be required by the load more functionality.',\n loadMoreMode = 'Establish the modality of how many new records will be downloaded. This property is regulated also by loadMoreStep.',\n loadMoreStep = 'The number of records which will be requested to be downloaded when clicking on the load more button. This property is regulated also by loadMoreMode.',\n multiSelection = 'When set to true enables rows multi selection.',\n pageSelected = 'Current selected page set on component load',\n paginatorPos = 'Sets the position of the paginator. Available positions: top, bottom or both.',\n removableColumns = 'Sets the possibility to remove the selected column.',\n resizableColumns = 'Gives the possibility to resize columns by dragging on their right edge.',\n rowActions = 'Sets the actions of the rows.',\n commands = 'Sets the vo;cod_row actions',\n rowsPerPage = 'Sets the number of rows per page to display.',\n scrollOnHover = 'Activates the scroll on hover function.',\n showCustomization = 'If set to true, displays the button to open the customization panel.',\n selection = 'Set the type of the rows selection.',\n showDeleteButton = 'Enables the delete row button.',\n showHistoryButton = 'Enables the history datatable button.',\n showFilters = 'When set to true enables the column filters.',\n showFooter = 'When set to true shows the footer.',\n showGrid = 'Can be used to customize the grid view of the table.',\n showGroups = 'When set to true enables the column grouping.',\n showHeader = 'Enables rendering of the table header.',\n showLoadMore = 'If set to true, displays the button to load more records.',\n sort = 'Defines the current sorting options.',\n stateId = '',\n store = '',\n sortableColumnsMutateData = 'If set to true, when a column is dragged to be sorted, the component directly mutates the data.columns property and then fires the event',\n sortEnabled = 'When set to true enables the sorting of the columns by clicking on the column header.',\n tableHeight = 'Sets the height of the table.',\n tableWidth = 'Sets the width of the table.',\n totals = 'Defines the current totals options.',\n transpose = 'Transposes the data of the data table.',\n updatableData = 'When set to true, editable cells will be rendered using input components and update button will appair below the matrix',\n}\nexport interface KupDataTableDataset {\n columns?: KupDataColumn[];\n rows?: KupDataTableRow[];\n setup?: {\n operations?: {\n insert: boolean;\n delete: boolean;\n };\n commands?: Array<KupDataCommand>;\n };\n}\n\nexport interface KupDataTableRow extends KupDataRow {\n cells?: KupDataTableRowCells;\n group?: KupDataTableRowGroup;\n clonedFrom?: KupDataTableRow;\n unselectable?: boolean;\n}\nexport interface KupDataTableRowGroup {\n children: Array<KupDataTableRow>;\n column: string;\n columnLabel: string;\n expanded: boolean;\n id: string;\n label: string;\n obj: KupObj;\n parent: KupDataTableRow;\n totals: GenericObject;\n}\nexport interface KupDataTableRowCells {\n [index: string]: KupDataTableCell;\n}\nexport interface KupDataTableCell extends KupDataCell {\n span?: KupDataTableCellSpan;\n}\nexport interface KupDataTableCellSpan {\n col: number;\n row: number;\n}\n\nexport interface SortObject {\n column: string;\n sortMode: SortMode;\n}\n\nexport enum SortMode {\n A = 'A',\n D = 'D',\n}\n\nexport enum VoCodVerRowEnum {\n P = 'COD_VER',\n T = 'VO',\n}\n\nexport enum DataTableAreasEnum {\n HEADER = 'header',\n BODY = 'body',\n FOOTER = 'footer',\n}\n\nexport type KupDataTableInsertMode = 'form' | 'row' | '';\n\nexport interface TotalsMap {\n [index: string]: TotalMode | string;\n}\n\nexport enum TotalMode {\n COUNT = 'Count',\n SUM = 'Sum',\n MIN = 'Min',\n MAX = 'Max',\n DISTINCT = 'Distinct',\n AVERAGE = 'Average',\n MATH = 'MATH',\n}\n\nexport enum TotalLabel {\n COUNT = 'Count',\n SUM = 'Sum',\n MIN = 'Min',\n MAX = 'Max',\n DISTINCT = 'Distinct',\n AVERAGE = 'Average',\n MATH = 'Formula',\n CANC = 'Cancel',\n CALC = 'Calculate',\n}\n\nexport enum PaginatorPos {\n TOP = 'Top',\n BOTTOM = 'Bottom',\n BOTH = 'Both',\n}\n\nexport interface GroupObject {\n column: string;\n visible: boolean;\n}\n\nexport enum ShowGrid {\n NONE = 'None',\n ROW = 'Row',\n COL = 'Col',\n COMPLETE = 'Complete',\n}\n\n// export enum RowActionType {\n// DEFAULT = 'Default',\n// VARIABLE = 'Variable',\n// }\n\n//---- *NEXT functionality AKA load more ----\nexport enum LoadMoreMode {\n CONSTANT = 'constant',\n CONSTANT_INCREMENT = 'constant_increment',\n PROGRESSIVE_THRESHOLD = 'progressive_threshold',\n}\n\n//---- Sortable Columns Functionality ----\nexport const KupDataTableColumnDragType = 'text/kup-data-table-column-drag';\nexport const KupDataTableColumnDragRemoveType =\n 'text/kup-data-table-column-drag-remove';\nexport const KupDataTableColumnDragGroupType =\n 'text/kup-data-table-column-drag-group';\nexport const KupDataTableRowDragType = 'text/kup-data-table-row-drag';\n\nexport interface KupDataTableSortedColumnIndexes {\n receivingColumnIndex: number;\n sortedColumnIndex: number;\n}\n\n//---- Group label display functionality ----\n/**\n * The possible values the display property can have.\n * @enum\n * @property {string} BOTH - Shows both the column label and the value. This is the default.\n * @property {string} LABEL - Shows only the columns label.\n * @property {string} VALUE - Shows only the value.\n * @readonly\n */\nexport enum GroupLabelDisplayMode {\n BOTH = 'Both',\n LABEL = 'Label',\n VALUE = 'Value',\n}\n\n//---- Fixed rows and cells classes ----\nexport const FixedCellsClasses = {\n columns: 'fixed-column',\n columnsR: 'fixed-column-r',\n rows: 'fixed-row',\n};\n\nexport const FixedCellsCSSVarsBase = {\n columns: '--ddt_column-left-',\n columnsR: '--ddt_column-right-',\n rows: '--ddt_row-top-',\n};\n\nexport const totalMenuOpenID = 'TOMEOPID';\n\n/**\n * Contains all the data of an event.\n */\nexport interface KupDatatableEventHandlerDetails {\n area: string;\n cell: KupDataTableCell;\n column: KupDataColumn;\n filterRemove: HTMLElement;\n isGroupRow: boolean;\n originalEvent: PointerEvent;\n row: KupDataRow;\n td: HTMLElement;\n textfield: HTMLElement;\n th: HTMLElement;\n tr: HTMLElement;\n}\n/**\n * Constants for mocked/premade columns created by data mutations.\n */\nexport const fieldColumn: string = 'Field';\nexport const iconColumn: string = 'Icon';\nexport const keyColumn: string = 'Key';\n\nexport enum SelectionMode {\n SINGLE = 'single',\n MULTIPLE_CHECKBOX = 'multiple-checkbox',\n MULTIPLE = 'multiple',\n NONE = 'none',\n}\n\nexport interface KupDatatableAutoRowSelectEventPayload extends KupEventPayload {\n selectedRow: KupDataRow;\n}\n\nexport interface KupDatatableRowSelectedEventPayload extends KupEventPayload {\n selectedRows: Array<KupDataRow>;\n clickedRow: KupDataRow;\n clickedColumn: string;\n}\n\nexport interface KupDatatableClickEventPayload extends KupEventPayload {\n details: KupDatatableEventHandlerDetails;\n}\n\nexport interface KupDatatableColumnMoveEventPayload extends KupEventPayload {\n sourceColumn: KupDataColumn;\n targetColumn: KupDataColumn;\n}\n\nexport interface KupDatatableColumnRemoveEventPayload extends KupEventPayload {\n column: KupDataColumn;\n}\n\nexport interface KupDatatableColumnMenuEventPayload extends KupEventPayload {\n card: HTMLKupCardElement;\n event: CustomEvent<KupCardEventPayload | KupEventPayload>;\n open: boolean;\n}\n\nexport interface KupDatatableOptionClickEventPayload extends KupEventPayload {\n column: string;\n row: KupDataRow;\n}\n\nexport interface KupDatatableRowActionClickEventPayload\n extends KupEventPayload {\n type: 'default' | 'variable' | 'expander';\n row: KupDataRow;\n action?: KupDataRowAction;\n index?: number;\n}\n\nexport interface KupDatatableRowActionItemClickEventPayload\n extends KupEventPayload {\n row: KupDataRow;\n type:\n | DropDownAction.CODVER\n | DropDownAction.ROWACTION\n | DropDownAction.COMMAND;\n obj?: KupObj;\n column?: KupDataColumn;\n cell?: KupDataCell;\n index?: number;\n}\n\nexport interface KupDataTableCellButtonClickEventPayload\n extends KupEventPayload {\n cell: KupDataTableCell;\n column: KupDataColumn;\n row: KupDataRow;\n}\nexport interface KupDatatableLoadMoreClickEventPayload extends KupEventPayload {\n loadItems: number;\n}\nexport interface KupDatatableDeleteRowEventPayload extends KupEventPayload {\n selectedRows: KupDataTableRow[];\n}\nexport interface KupDatatableInsertRowEventPayload extends KupEventPayload {\n selectedRows: KupDataTableRow[];\n}\n\nexport interface KupDatatableHistoryEventPayload extends KupEventPayload {\n selectedRows: KupDataTableRow[];\n}\n\nexport interface KupDatatableUpdatePayload extends KupEventPayload {\n originalData: KupDataTableDataset;\n updatedData: KupDataTableDataset;\n command?: KupDataCell;\n}\n","import { KupEventPayload } from '../../components';\nimport { KupDataCellOptions } from '../../managers/kup-data/kup-data-declarations';\n\n/**\n * Props of the kup-cell component.\n * Used to export every prop in an object.\n */\nexport enum KupCellProps {\n customStyle = 'Custom style of the component.',\n data = 'The data of the cell.',\n density = \"The density of the cell, defaults at 'dense' and can be also set to 'wide' or 'medium'.\",\n dragEnabled = 'When set to true, the component is draggable.',\n}\n\nexport enum KupCellElementsPosition {\n top = 'top',\n bottom = 'bottom',\n left = 'left',\n right = 'right',\n}\n\nexport interface KupCellSubmitClickEventPayload extends KupEventPayload {\n cell: KupDataCellOptions;\n}\n","import { SortMode } from '../components/kup-data-table/kup-data-table-declarations';\nimport { ValueDisplayedValue } from './filters/filters-declarations';\nimport { KupDom } from '../managers/kup-manager/kup-manager-declarations';\nimport {\n KupDataCell,\n KupDataColumn,\n} from '../managers/kup-data/kup-data-declarations';\nimport { KupDatesFormats } from '../managers/kup-dates/kup-dates-declarations';\nimport { GenericObject } from '../components';\nimport { KupCellElementsPosition } from '../components/kup-cell/kup-cell-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n// -------------\n// COMMONS\n// -------------\n\nexport function getCellValueForDisplay(\n column: KupDataColumn,\n cell: KupDataCell\n): string {\n if (cell != null) {\n if (cell.displayedValue != null) {\n return cell.displayedValue;\n }\n }\n let formattedValue = _getCellValueForDisplay(cell.value, column, cell);\n if (cell != null) {\n cell.displayedValue = formattedValue;\n }\n return formattedValue;\n}\n\nexport function getValueForDisplay2(\n values: ValueDisplayedValue,\n column?: KupDataColumn\n): string {\n if (values == null) {\n return '';\n }\n if (values.displayedValue == null || values.displayedValue.trim() == '') {\n values.displayedValue = _getCellValueForDisplay(\n values.value,\n column,\n null\n );\n }\n return values.displayedValue;\n}\n\nexport function formatToNumber(cell: KupDataCell): number {\n if (cell.obj) {\n return dom.ketchup.math.numberify(cell.obj.k);\n }\n\n return dom.ketchup.math.numberify(cell.value);\n}\n\nfunction _getCellValueForDisplay(\n value,\n column: KupDataColumn,\n cell: KupDataCell\n): string {\n let obj = column != null ? column.obj : null;\n if (cell != null) {\n obj = cell.obj ? cell.obj : obj;\n }\n return getValueForDisplay(\n value,\n obj,\n column != null ? column.decimals : null\n );\n}\n\nexport function getValueForDisplay(value, obj, decimals: number): string {\n if (value == null || value.trim() == '') {\n return value;\n }\n if (dom.ketchup.objects.isNumber(obj)) {\n return dom.ketchup.math.numberStringToFormattedString(\n value,\n decimals ? decimals : -1,\n obj ? obj.p : ''\n );\n }\n if (dom.ketchup.objects.isDate(obj) && dom.ketchup.dates.isIsoDate(value)) {\n return dom.ketchup.dates.format(value);\n }\n if (dom.ketchup.objects.isTime(obj)) {\n return dom.ketchup.dates.timeStringToFormattedString(\n value,\n dom.ketchup.objects.isTimeWithSeconds(obj),\n obj.t + obj.p\n );\n }\n if (dom.ketchup.objects.isTimestamp(obj)) {\n return dom.ketchup.dates.timestampStringToFormattedString(value);\n }\n return value;\n}\n\nexport function getColumnByName(\n columns: KupDataColumn[],\n name: string\n): KupDataColumn {\n if (columns == null) {\n return null;\n }\n for (let column of columns) {\n if (column.name === name) {\n return column;\n }\n }\n\n return null;\n}\n\nexport function compareCell(\n cell1: KupDataCell,\n cell2: KupDataCell,\n sortMode: SortMode\n): number {\n return compareValues(\n cell1.obj,\n cell1.value,\n cell2.obj,\n cell2.value,\n sortMode\n );\n}\n\nexport function compareValues(\n obj1: any,\n value1: any,\n obj2: any,\n value2: any,\n sortMode: SortMode\n): number {\n const sm = sortMode === 'A' ? 1 : -1;\n\n if (obj1 == null || obj2 == null) {\n return sm * localCompareAsInJava(value1, value2);\n }\n\n // If either the type or the parameter of the current object are not equal.\n if (!(obj1.t === obj2.t && obj1.p === obj2.p)) {\n let compare = localCompareAsInJava(obj1.t, obj2.t);\n if (compare === 0) {\n compare = localCompareAsInJava(obj1.p, obj2.p);\n }\n return compare * sm;\n }\n\n let s1: string = value1;\n let s2: string = value2;\n\n if (s1 == s2) {\n return 0;\n }\n\n if (s1 == '') {\n return sm * -1;\n }\n\n if (s2 == '') {\n return sm * 1;\n }\n\n let v1: any = s1;\n let v2: any = s2;\n if (dom.ketchup.objects.isNumber(obj1)) {\n v1 = dom.ketchup.math.numberifySafe(s1);\n v2 = dom.ketchup.math.numberifySafe(s2);\n } else if (dom.ketchup.objects.isDate(obj1)) {\n v1 = dom.ketchup.dates.toDate(\n dom.ketchup.dates.format(s1, KupDatesFormats.ISO_DATE)\n );\n v2 = dom.ketchup.dates.toDate(\n dom.ketchup.dates.format(s2, KupDatesFormats.ISO_DATE)\n );\n } else if (dom.ketchup.objects.isTime(obj1)) {\n // Previous code could not work because dayjs\n // returns an invalid date when it tries to parse a time\n // This solution is simpler and it works because the time format\n // was assumed to be equals to HH:mm:ss or HH:mm\n v1 = Number(s1.replace(/:/g, ''));\n v2 = Number(s2.replace(/:/g, ''));\n } else if (dom.ketchup.objects.isTimestamp(obj1)) {\n v1 = dom.ketchup.dates.toDate(\n dom.ketchup.dates.format(s1, KupDatesFormats.ISO_DATE_TIME),\n KupDatesFormats.ISO_DATE_TIME\n );\n v2 = dom.ketchup.dates.toDate(\n dom.ketchup.dates.format(s2, KupDatesFormats.ISO_DATE_TIME),\n KupDatesFormats.ISO_DATE_TIME\n );\n }\n if (v1 > v2) {\n return sm * 1;\n }\n if (v1 < v2) {\n return sm * -1;\n }\n return 0;\n}\n\n/**\n * Given two strings to compare, the functions decides which string comes before the other or if they are equal.\n * This is meant as a replacement for the JavaScript function localCompare() which produces a slightly different result from\n * the Java version of compareTo().\n *\n * Re-implemented from java source method compareTo() of java.lang.String\n * @param t1 firstString the first string to be compared\n * @param t2 anotherString the another string to be compared to the first one\n * @returns the value 0 if the anotherString is equal to\n * firstString; a value less than 0 if firstString\n * is lexicographically less than the anotherString; and a\n * value greater than 0 if firstString is\n * lexicographically greater than the anotherString.\n */\nfunction localCompareAsInJava(t1: string, t2: string): number {\n let t1Length = t1 == null ? 0 : t1.length;\n let t2Length = t2 == null ? 0 : t2.length;\n const lim = Math.min(t1Length, t2Length);\n\n let k = 0;\n while (k < lim) {\n const c1 = t1[k];\n const c2 = t2[k];\n if (c1 !== c2) {\n return c1.charCodeAt(0) - c2.charCodeAt(0);\n }\n k++;\n }\n return t1Length - t2Length;\n}\n\n// -------------\n// ADAPTERS from SmeupDataTable to FCell data attribute\n// -------------\n\nexport const CMBandACPAdapter = (\n value: string,\n label: string,\n options: GenericObject\n) => ({\n data: {\n 'kup-text-field': {\n trailingIcon: true,\n label,\n },\n 'kup-list': {\n showIcons: true,\n data: options?.length\n ? options.map((option) => ({\n value: option.label,\n id: option.id,\n selected: value === option.id,\n }))\n : [],\n },\n },\n initialValue: value,\n label,\n});\n\nexport const SWTAdapter = (value: string, label: string) => ({\n checked: !!value,\n label,\n leadingLabel: true,\n});\n\nexport const RADAdapter = (value: string, options: GenericObject) => ({\n data: options?.length\n ? options?.map((option) => ({\n value: option.id,\n label: option.label,\n checked: option.id == value,\n }))\n : [],\n});\n\nexport const CHKAdapter = (value: string, label: string) => ({\n checked: value === 'on' || value === '1',\n label,\n});\n\nexport const CHIAdapter = (value: string) => ({\n data: value?.length\n ? value\n .split(';')\n .map((v) => ({ id: v, value: v }))\n .filter((value) => !!value)\n : null,\n});\n\nexport const submitPositionAdapter = (position: KupCellElementsPosition) => {\n const positionAdapterMap = new Map<KupCellElementsPosition, string>([\n [KupCellElementsPosition.top, 'column-reverse'],\n [KupCellElementsPosition.bottom, 'column'],\n [KupCellElementsPosition.left, 'row-reverse'],\n [KupCellElementsPosition.right, 'row'],\n ]);\n\n const buttonPosition = positionAdapterMap.get(position);\n\n return buttonPosition ?? 'row';\n};\n","import { KupListNode } from '../../components/kup-list/kup-list-declarations';\n\n/**\n * Interface for ranged filters.\n */\nexport enum FilterInterval {\n FROM = 0,\n TO = 1,\n}\n\nexport interface GenericFilter {\n [index: string]: Filter;\n}\n\nexport interface ValueDisplayedValue {\n value: string;\n displayedValue?: string;\n // userd for kup-autocomplete and kup-combobox\n node?: KupListNode;\n}\n\nexport interface Filter {\n textField: string;\n textFieldTmp?: string;\n checkBoxes: ValueDisplayedValue[];\n interval: string[];\n intervalTmp?: string[];\n}\n\n/**\n * This regular expressions returns a match like this one:\n * if the string does not match is null, otherwise the indexes are equal to the object below:\n *\n * @property {string} 0 - The entire match of the regexp; is equal to the cellValue.\n * @property {string} 1 - Either !' or ' it's the start of the regexp.\n * @property {string} 2 - Either % or null: means the string must start with the given string.\n * @property {string} 3 - Either \"\" or a string with a length.\n * @property {string} 4 - Either % or null: means the string must finish with the given string.\n * @property {string} 5 - Always equal to ': it's the end of the filter.\n */\nexport const FILTER_ANALIZER = /^('|!')(%){0,1}(.*?)(%){0,1}(')$/;\n\nexport enum KupGlobalFilterMode {\n SIMPLE = 'simple',\n HIGHLIGHT = 'highlight',\n}\n","import { KupTagNames } from '../../types/GenericTypes';\nimport { KupDataTable } from '../../components/kup-data-table/kup-data-table';\nimport { KupTree } from '../../components/kup-tree/kup-tree';\nimport { KupDatesFormats } from '../../managers/kup-dates/kup-dates-declarations';\nimport { KupDom } from '../../managers/kup-manager/kup-manager-declarations';\nimport {\n FilterInterval,\n FILTER_ANALIZER,\n ValueDisplayedValue,\n} from './filters-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Filtering algorithms.\n * @module Filters\n * @todo Should contain EVERY filtering method in common between filtering types (i.e.: global filters and column menu filters).\n */\nexport class Filters {\n /**\n * Function used to check whether the component is a KupTree or KupDataTable.\n * @param {KupDataTable | KupTree} comp - Component using the column menu.\n * @returns {comp is KupTree} Returns true when the component is KupTree.\n */\n static isTree(comp: KupDataTable | KupTree): comp is KupTree {\n return (comp as KupTree).rootElement.tagName === KupTagNames.TREE;\n }\n\n isObjFiltrableByInterval(obj): boolean {\n if (dom.ketchup.objects.isDate(obj)) {\n return true;\n }\n if (dom.ketchup.objects.isTime(obj)) {\n return true;\n }\n if (dom.ketchup.objects.isTimestamp(obj)) {\n return true;\n }\n if (dom.ketchup.objects.isNumber(obj)) {\n return true;\n }\n return false;\n }\n\n normalizeValue(value: string, smeupObj: any): string {\n let newValue = value != null ? value.trim() : value;\n if (newValue == null || newValue == '' || smeupObj == null) {\n return newValue;\n }\n if (dom.ketchup.objects.isDate(smeupObj)) {\n if (dom.ketchup.dates.isIsoDate(value)) {\n return newValue;\n }\n if (dom.ketchup.dates.isValidFormattedStringDate(value)) {\n return dom.ketchup.dates.format(\n dom.ketchup.dates.normalize(value),\n KupDatesFormats.ISO_DATE\n );\n }\n } else if (dom.ketchup.objects.isTime(smeupObj)) {\n let manageSeconds = dom.ketchup.objects.isTimeWithSeconds(smeupObj);\n if (\n dom.ketchup.dates.isValidFormattedStringTime(\n value,\n manageSeconds\n )\n ) {\n return dom.ketchup.dates.formattedStringToCustomDateTime(\n value,\n manageSeconds\n ? KupDatesFormats.ISO_TIME\n : KupDatesFormats.ISO_TIME_WITHOUT_SECONDS,\n manageSeconds\n );\n }\n } else if (dom.ketchup.objects.isTimestamp(smeupObj)) {\n if (dom.ketchup.dates.isIsoDate(value)) {\n return newValue;\n }\n if (dom.ketchup.dates.isValidFormattedStringTime(value, true)) {\n return dom.ketchup.dates.formattedStringToTimestampString(\n value\n );\n }\n } else if (dom.ketchup.objects.isNumber(smeupObj)) {\n if (\n dom.ketchup.math.isStringNumber(\n value,\n smeupObj ? smeupObj.p : ''\n )\n ) {\n return dom.ketchup.math.formattedStringToNumberString(\n value,\n smeupObj ? smeupObj.p : ''\n );\n }\n }\n return newValue;\n }\n\n /**\n * Given a filter value, check if is a negative filter\n * @param filterValue the filter value to use for check\n */\n filterIsNegative(filterValue: string) {\n const analyzedFilter = filterValue.match(FILTER_ANALIZER);\n const filterIsNegative: boolean = analyzedFilter\n ? analyzedFilter[1].indexOf('!') >= 0\n : false;\n return filterIsNegative;\n }\n /**\n * Given a value and a filter value, returns if that value matches the filter.\n *\n * Web filters can also be expressions: by putting strings between single quotes (') it's possible to activate filter expressions.\n * Valid syntax:\n * 'filter' = search for exact phrase;\n * '' = match when value is empty;\n * 'filter%' = match when a string starts with \"filter\";\n * '%filter' = match when a string ends with \"filter\";\n * '%filter%' = match when a string contains \"filter\".\n *\n * It is also possible to negate the expression by prepending \"!\" in front of the expression.\n * For example: !'' = value in the cell must not be empty.\n *\n * With no expression set, the filter is by default set to '%filter%'.\n *\n * @param value - The current value to check.\n * @param filterValue - The value of the current filter.\n * @returns false if value or filterValue are empty; \n true if value contains filterValue; \n true if value matches special filter created on filterValue; \n false otherwise.\n */\n isFilterCompliantForValue(value: string, filterValue: string): boolean {\n if (value == null) {\n return false;\n }\n if (filterValue == null) {\n return false;\n }\n\n const _filterIsNegative: boolean = this.filterIsNegative(filterValue);\n\n // checks if the value of the filter is contained inside value of the object\n // Or is if the filter is a special filter to be matched.\n if (\n value.toLowerCase().includes(filterValue.toLowerCase()) ||\n this.matchSpecialFilter(\n value.toLowerCase(),\n filterValue.toLowerCase().match(FILTER_ANALIZER),\n true\n )\n ) {\n // the element matches the field filter\n if (_filterIsNegative) {\n return false;\n }\n return true;\n }\n if (_filterIsNegative) {\n return true;\n }\n return false;\n }\n\n /**\n * Given a value and a filter value, returns if that value matches the filter.\n *\n * Web filters can also be expressions: by putting strings between single quotes (') it's possible to activate filter expressions.\n * Valid syntax:\n * 'filter' = search for exact phrase;\n * '' = match when value is empty;\n * 'filter%' = match when a string starts with \"filter\";\n * '%filter' = match when a string ends with \"filter\";\n * '%filter%' = match when a string contains \"filter\".\n *\n * It is also possible to negate the expression by prepending \"!\" in front of the expression.\n * For example: !'' = value in the cell must not be empty.\n *\n * With no expression set, the filter is by default set to '%filter%'.\n *\n * @param value - The current value to check.\n * @param parsedFilter - The value of the current filter.\n * @param ignoreNegativeFlag = false - When set to true, the matcher will ignore the (!) operator; useful for global filter.\n * @returns True if the filter is empty and the value of the cell is empty, false otherwise.\n */\n matchSpecialFilter(\n value: string,\n parsedFilter: RegExpMatchArray | null,\n ignoreNegativeFlag: boolean = false\n ): boolean {\n if (parsedFilter != null) {\n // endsWith and startWith are not supported by IE 11\n // Check here https://www.w3schools.com/jsref/jsref_endswith.asp\n const toRet: boolean =\n (parsedFilter[3] === '' && !value.trim()) ||\n (!parsedFilter[2] &&\n parsedFilter[4] &&\n value.startsWith(parsedFilter[3])) ||\n (parsedFilter[2] &&\n !parsedFilter[4] &&\n value.endsWith(parsedFilter[3])) ||\n (!parsedFilter[2] &&\n !parsedFilter[4] &&\n value === parsedFilter[3]) ||\n (parsedFilter[2] &&\n parsedFilter[4] &&\n value.indexOf(parsedFilter[3]) >= 0);\n return !ignoreNegativeFlag\n ? parsedFilter[1].indexOf('!') < 0\n ? toRet\n : !toRet\n : toRet;\n }\n return false;\n }\n\n isFilterCompliantForSimpleValue(\n valueToCheck: string,\n obj: any,\n filterValue: string,\n interval: string[]\n ) {\n if (valueToCheck == null) {\n return false;\n }\n\n filterValue = this.normalizeValue(filterValue, obj);\n let value = valueToCheck;\n\n let from: string = '';\n let to: string = '';\n if (interval != null) {\n from = interval[FilterInterval.FROM];\n to = interval[FilterInterval.TO];\n }\n let checkByRegularExpression = true;\n if (dom.ketchup.objects.isNumber(obj)) {\n let valueNumber: number = dom.ketchup.math.numberifySafe(\n value,\n obj ? obj.p : ''\n );\n if (from != '') {\n if (dom.ketchup.math.isNumber(from)) {\n checkByRegularExpression = false;\n let fromNumber: number =\n dom.ketchup.math.numberifySafe(from);\n if (valueNumber < fromNumber) {\n return false;\n }\n } else {\n filterValue = from;\n }\n }\n if (to != '') {\n if (dom.ketchup.math.isNumber(to)) {\n checkByRegularExpression = false;\n let toNumber: number = dom.ketchup.math.numberifySafe(to);\n if (valueNumber > toNumber) {\n return false;\n }\n } else {\n filterValue = to;\n }\n }\n }\n if (\n dom.ketchup.objects.isDate(obj) ||\n dom.ketchup.objects.isTime(obj) ||\n dom.ketchup.objects.isTimestamp(obj)\n ) {\n let valueDate: Date = null;\n\n let defaultFormat = KupDatesFormats.ISO_DATE;\n if (dom.ketchup.objects.isDate(obj)) {\n defaultFormat = KupDatesFormats.ISO_DATE;\n } else if (dom.ketchup.objects.isTime(obj)) {\n const manageSeconds =\n dom.ketchup.objects.isTimeWithSeconds(obj);\n defaultFormat = manageSeconds\n ? KupDatesFormats.ISO_TIME\n : KupDatesFormats.ISO_TIME_WITHOUT_SECONDS;\n } else if (dom.ketchup.objects.isTimestamp(obj)) {\n defaultFormat = KupDatesFormats.ISO_DATE_TIME;\n }\n\n const normValue = this.normalizeValue(value, obj);\n if (normValue != null) {\n valueDate = dom.ketchup.dates.toDate(value, defaultFormat);\n }\n\n if (from != '') {\n if (\n valueDate != null &&\n dom.ketchup.dates.isValidFormattedStringDate(\n from,\n defaultFormat,\n true\n )\n ) {\n checkByRegularExpression = false;\n let fromDate: Date = dom.ketchup.dates.toDate(\n from,\n defaultFormat\n );\n if (valueDate < fromDate) {\n return false;\n }\n } else {\n filterValue = from;\n }\n }\n if (to != '') {\n if (\n valueDate != null &&\n dom.ketchup.dates.isValidFormattedStringDate(\n to,\n defaultFormat,\n true\n )\n ) {\n checkByRegularExpression = false;\n let toDate: Date = dom.ketchup.dates.toDate(\n to,\n defaultFormat\n );\n if (valueDate > toDate) {\n return false;\n }\n } else {\n filterValue = to;\n }\n }\n if (\n !dom.ketchup.dates.isValidFormattedStringDate(\n filterValue,\n defaultFormat\n ) &&\n !dom.ketchup.dates.isValidFormattedStringDate(filterValue)\n ) {\n value = dom.ketchup.dates.format(value);\n }\n }\n if (checkByRegularExpression) {\n return this.isFilterCompliantForValue(value, filterValue);\n }\n return true;\n }\n\n static valuesArrayContainsValue(\n values: ValueDisplayedValue[],\n value: string\n ): boolean {\n return Filters.indexOfValueInValuesArray(values, value) >= 0;\n }\n\n static indexOfValueInValuesArray(\n values: ValueDisplayedValue[],\n value: string\n ): number {\n if (values == null || values.length < 1) {\n return -1;\n }\n for (let i = 0; i < values.length; i++) {\n if (values[i].value == value) {\n return i;\n }\n }\n return -1;\n }\n}\n","import { SortMode } from '../../components/kup-data-table/kup-data-table-declarations';\nimport {\n compareValues,\n getCellValueForDisplay,\n getValueForDisplay2,\n} from '../../utils/cell-utils';\nimport { Filters } from '../../utils/filters/filters';\nimport { ValueDisplayedValue } from '../../utils/filters/filters-declarations';\nimport { KupDom } from '../kup-manager/kup-manager-declarations';\nimport { KupObjects } from '../kup-objects/kup-objects';\nimport { KupObj } from '../kup-objects/kup-objects-declarations';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataDataset,\n KupDataFindCellFilters,\n KupDataRow,\n} from './kup-data-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\nconst kupObjects: KupObjects = dom.ketchup\n ? dom.ketchup.objects\n : new KupObjects();\n\n/**\n * Finds all the cells matching the filters criteria in the input dataset.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {KupDataFindCellFilters} filters - Filters of the research.\n * @returns {KupDataCell[]} Array of cells fetched after applying the filters.\n */\nexport function findCell(\n dataset: KupDataDataset,\n filters: KupDataFindCellFilters\n): KupDataCell[] {\n return dom.ketchup.data.finder(dataset, filters).cells;\n}\n\n/**\n * Returns all the cells values of the specified column, sorted if required.\n * @param {Array<KupDataRow>} dataset - Input dataset.\n * @param {KupDataColumn} column - Column included in the search. When missing, returns empty array.\n * @returns {ValueDisplayedValue[]} Values of the cells, sorted.\n */\nexport function getCellValue(\n dataset: KupDataDataset,\n column: KupDataColumn,\n sorted?: boolean,\n univocal?: boolean\n): ValueDisplayedValue[] {\n const rows = dataset.rows;\n const values: { value: string; displayedValue?: string; obj?: KupObj }[] =\n new Array();\n const result: ValueDisplayedValue[] = new Array();\n if (!rows || rows.length == 0 || !column) {\n return result;\n }\n extractColumnValues(rows, column, values, univocal);\n if (sorted == true) {\n values.sort((n1, n2) => {\n return compareValues(\n null,\n kupObjects.isDate(n1.obj)\n ? n1.value\n : getValueForDisplay2(n1, column),\n null,\n kupObjects.isDate(n2.obj)\n ? n2.value\n : getValueForDisplay2(n2, column),\n SortMode.A\n );\n });\n }\n for (let i = 0; i < values.length; i++) {\n let v = values[i];\n result.push({ value: v.value, displayedValue: v.displayedValue });\n }\n return result;\n}\n\nfunction extractColumnValues(\n rows: Array<KupDataRow>,\n column: KupDataColumn,\n values: { value: string; displayedValue?: string; obj?: KupObj }[],\n univocal?: boolean\n) {\n /** il valore delle righe attualmente filtrate, formattato */\n rows.forEach((row) =>\n addColumnValueFromRow(values, column, row.cells[column.name], univocal)\n );\n return values;\n}\n\nexport function addColumnValueFromRow(\n values: { value: string; displayedValue?: string; obj?: KupObj }[],\n column: KupDataColumn,\n cell: KupDataCell,\n univocal?: boolean\n) {\n if (cell) {\n let item: { value: string; displayedValue?: string; obj?: KupObj } = {\n value: cell.value,\n displayedValue: getCellValueForDisplay(column, cell),\n obj: cell.obj ? cell.obj : column.obj,\n };\n if (\n univocal != true ||\n !Filters.valuesArrayContainsValue(values, cell.value)\n ) {\n values.push(item);\n }\n }\n}\n\n/**\n * Overrides the given cell attributes for the specified columns.\n * If no columns are provided, the value will be applied to every column of the dataset.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {KupDataCell} cell - New cell.\n * @param {string[]} columns - Columns to be handled.\n * @returns {KupDataCell[]} Replaced cells.\n */\nexport function replaceCell(\n dataset: KupDataDataset,\n cell: KupDataCell,\n columns?: string[]\n): KupDataCell[] {\n const replaced: KupDataCell[] = [];\n for (let index = 0; index < dataset.rows.length; index++) {\n const row = dataset.rows[index];\n const cells = row.cells;\n for (const key in cells) {\n if (!columns || !columns.length || columns.includes(key)) {\n cells[key] = { ...cell };\n replaced.push(cells[key]);\n }\n }\n }\n return replaced;\n}\n","import { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport { KupLanguageTotals } from '../kup-language/kup-language-declarations';\nimport { KupDom } from '../kup-manager/kup-manager-declarations';\nimport { KupObj } from '../kup-objects/kup-objects-declarations';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataDataset,\n KupDataNewColumnOptions,\n KupDataNewColumnTypes,\n KupDataRow,\n} from './kup-data-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Finds the columns matching the criteria specified in the filters argument.\n * @param {KupDataDataset | Column[]} dataset - Input dataset or array of columns.\n * @param {Partial<Column>} filters - Column interface containing the filters to match.\n * @returns {Column[]} Columns matching the criteria.\n */\nexport function findColumns(\n dataset: KupDataDataset | KupDataColumn[],\n filters: Partial<KupDataColumn>\n): KupDataColumn[] {\n const result: KupDataColumn[] = [];\n if (!dataset) {\n return result;\n }\n const columns = (dataset as KupDataDataset).columns\n ? (dataset as KupDataDataset).columns\n : (dataset as KupDataColumn[]);\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n for (const key in filters) {\n const filter = filters[key];\n if (column[key] === filter) {\n result.push(column);\n } else if (dom.ketchup.objects.deepEqual(column[key], filter)) {\n result.push(column);\n }\n }\n }\n return result;\n}\n/**\n * Sets the given columns of the input dataset to be hidden.\n * @param {KupDataDataset | Column[]} dataset - Input dataset or array of columns.\n * @param {string[]} columns2hide - Names of columns to hide.\n * @returns {KupDataColumn[]} Columns that were set to hidden.\n */\nexport function hideColumns(\n dataset: KupDataDataset | KupDataColumn[],\n columns2hide: string[]\n): KupDataColumn[] {\n const columns = (dataset as KupDataDataset).columns\n ? (dataset as KupDataDataset).columns\n : (dataset as KupDataColumn[]);\n const hidden: KupDataColumn[] = [];\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n if (columns2hide.includes(column.name)) {\n column.visible = false;\n hidden.push(column);\n }\n }\n return hidden;\n}\n/**\n * Creates a new column with the specified options.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {KupDataNewColumnTypes} type - Type of column creation.\n * @param {KupDataNewColumnOptions} options - Options used by the submethods to create the column.\n * @returns {string | Column} Returns the new column created or a string containing the error message (if something went wrong).\n */\nexport function newColumn(\n dataset: KupDataDataset,\n type: KupDataNewColumnTypes,\n options: KupDataNewColumnOptions\n): string | KupDataColumn {\n switch (type) {\n case KupDataNewColumnTypes.CONCATENATE:\n return newColumnFromConcatenate(\n dataset,\n options.columns,\n options.separator\n );\n case KupDataNewColumnTypes.DUPLICATE:\n return newColumnFromDuplication(\n dataset,\n options.columns,\n options.newColumn\n );\n case KupDataNewColumnTypes.MATH:\n return newColumnFromMath(\n dataset,\n options.operation,\n options.columns,\n options?.newColumn?.title\n );\n case KupDataNewColumnTypes.MERGE:\n return newColumnFromMerge(\n dataset,\n options.columns,\n options.newColumn\n );\n default:\n const message =\n 'Wrong type used to invoke new column creation!(' + type + ')';\n dom.ketchup.debug.logMessage(\n 'kup-data',\n message,\n KupDebugCategory.WARNING\n );\n return message;\n }\n}\n/**\n * This method concatenates all the columns specified in the argument into a single one.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {string[]} columns - Array of column names.\n * @param {string} separator - Characters used to separate values.\n * @returns {string|KupDataColumn} Returns the new column created or a string containing the error message (if something went wrong).\n */\nfunction newColumnFromConcatenate(\n dataset: KupDataDataset,\n columns: string[],\n separator?: string\n): string | KupDataColumn {\n if (!columns || columns.length === 0) {\n const message =\n 'Invalid array, interrupting column merging!(' + columns + ')';\n dom.ketchup.debug.logMessage(\n 'kup-data',\n message,\n KupDebugCategory.WARNING\n );\n return message;\n }\n let firstColumn: KupDataColumn = null;\n const titles: string[] = [];\n const objs: KupObj[] = [];\n separator = separator ? separator : ' ';\n for (let index = 0; index < dataset.columns.length; index++) {\n const col = dataset.columns[index];\n if (columns.includes(col.name)) {\n objs.push(col.obj);\n titles[columns.indexOf(col.name)] = col.title;\n }\n if (columns[0] === col.name) {\n firstColumn = col;\n }\n if (\n col.mergedFrom &&\n col.mergedFrom.toString() === columns.toString()\n ) {\n const message =\n 'The product of these columns in the same order already exists!(' +\n columns.toString() +\n ')';\n col.visible = true;\n dom.ketchup.debug.logMessage(\n 'kup-data',\n message,\n KupDebugCategory.WARNING\n );\n return message;\n }\n }\n const newName = columns.join('_');\n const newObj =\n objs.length > 0 && dom.ketchup.objects.isSameKupObj(objs)\n ? objs[0]\n : null;\n const newTitle = titles.join(separator);\n dataset.rows.forEach((row) => {\n const cells = row.cells;\n const values: string[] = [];\n let base: KupDataCell = null;\n if (cells) {\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n const cell = cells[column];\n if (cell) {\n if (!base) {\n base = cell;\n }\n values.push(cell.value);\n }\n }\n }\n const value = values.join(separator);\n if (values.length > 0) {\n cells[newName] = {\n ...base,\n displayedValue: null,\n obj: newObj ? { ...newObj, k: value } : null,\n value: value,\n };\n }\n });\n const newColumn: KupDataColumn = {\n ...firstColumn,\n name: newName,\n title: newTitle,\n obj: newObj,\n mergedFrom: columns,\n };\n dataset.columns.splice(\n dataset.columns.indexOf(firstColumn) + 1,\n 0,\n newColumn\n );\n return newColumn;\n}\n/**\n * Creates a duplicate of the specified column.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {string[]} column2duplicate - Name of the column to duplicate (the first occurrence of the array will be used).\n * @param {KupDataColumn} newColumn - Column created.\n * @returns {KupDataColumn} Resulting column.\n */\nexport function newColumnFromDuplication(\n dataset: KupDataDataset,\n column2duplicate: string[],\n newColumn: KupDataColumn\n): KupDataColumn {\n const duplicatedName = column2duplicate[0];\n for (let index = 0; index < dataset.rows.length; index++) {\n const row = dataset.rows[index];\n const cells = row.cells;\n if (cells && cells[duplicatedName]) {\n cells[newColumn.name] = {\n ...cells[duplicatedName],\n };\n }\n }\n dataset.columns.push(newColumn);\n return newColumn;\n}\n/**\n * This method is used to create a new column from a mathematical formula.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {string} operation - Mathematical operation to apply (i.e.: \"sum\", \"average\", ([COL1] - [COL2]) * 100 / [COL3]).\n * @param {string[]} columns - Column names used for the mathematical operation. When missing, they will be extracted from the formula.\n * @returns {string | KupDataColumn} Returns the new column created or a string containing the error message (if something went wrong).\n */\nfunction newColumnFromMath(\n dataset: KupDataDataset,\n operation: string,\n columns?: string[],\n title?: string\n): string | KupDataColumn {\n if (!columns) {\n columns = [];\n }\n if (columns.length === 0) {\n const names = operation.split('[');\n for (let i = 1; i < names.length; i++) {\n columns.push(names[i].split(']')[0]);\n }\n }\n if (columns.length === 0) {\n const message =\n \"Can't apply math formulas without columns!(\" + columns + ')';\n dom.ketchup.debug.logMessage(\n 'kup-data',\n message,\n KupDebugCategory.WARNING\n );\n return message;\n }\n const titles: string[] = [];\n const formulaRow: { [index: string]: number } = {};\n let firstColumn: KupDataColumn = null;\n let formula = '';\n switch (operation) {\n case KupLanguageTotals.AVERAGE:\n formula = `(${columns.join(' + ')}) / ${columns.length}`;\n break;\n case KupLanguageTotals.DIFFERENCE:\n formula = columns.join(' - ');\n break;\n case KupLanguageTotals.PRODUCT:\n formula = columns.join(' * ');\n break;\n case KupLanguageTotals.SUM:\n formula = columns.join(' + ');\n break;\n default:\n formula = operation;\n }\n for (let index = 0; index < dataset.columns.length; index++) {\n const col = dataset.columns[index];\n if (columns.includes(col.name)) {\n titles[columns.indexOf(col.name)] = col.title;\n if (!dom.ketchup.objects.isNumber(col.obj)) {\n const message =\n \"Can't apply math formulas on non-numerical columns!(\" +\n columns +\n ')';\n dom.ketchup.debug.logMessage(\n 'kup-data',\n message,\n KupDebugCategory.WARNING\n );\n return message;\n }\n }\n if (columns[0] === col.name) {\n firstColumn = col;\n }\n if (col.resultOf && col.resultOf === formula) {\n if (col.visible !== true) {\n col.visible = true;\n return;\n } else {\n const message =\n 'This mathematical operation on these columns was already performed!(' +\n formula +\n ')';\n dom.ketchup.debug.logMessage(\n 'kup-data',\n message,\n KupDebugCategory.WARNING\n );\n return message;\n }\n }\n }\n let prog = 0;\n let newName = 'MATH_';\n while (findColumns(dataset, { name: newName + prog }).length > 0) {\n prog++;\n }\n newName = newName + prog;\n const newObj = firstColumn.obj;\n let newTitle = formula;\n for (let i = 0; i < columns.length; i++) {\n const column = columns[i];\n let re: RegExp = new RegExp(column, 'g');\n newTitle = newTitle.replace(re, titles[i]);\n }\n dataset.rows.forEach((row) => {\n const cells = row.cells;\n let base: KupDataCell = null;\n if (cells) {\n for (let index = 0; index < columns.length; index++) {\n const column = columns[index];\n const cell = cells[column];\n if (cell) {\n if (!base) {\n base = cell;\n }\n formulaRow[column] = dom.ketchup.math.numberify(cell.value);\n }\n }\n }\n const value = dom.ketchup.math.formulas\n .custom(formula, formulaRow)\n .toString();\n cells[newName] = {\n ...base,\n displayedValue: null,\n obj: { ...newObj, k: value },\n value: value,\n };\n });\n const newColumn: KupDataColumn = {\n ...firstColumn,\n name: newName,\n title: title ? title : newTitle,\n obj: newObj,\n resultOf: formula,\n };\n dataset.columns.splice(\n dataset.columns.indexOf(firstColumn) + 1,\n 0,\n newColumn\n );\n return newColumn;\n}\n/**\n * Takes the columns to merge and creates a new column with their cells. The merged columns will then be removed.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {string[]} columns2merge - Names of columns to merge.\n * @param {KupDataColumn} newColumn - Column created.\n * @returns {KupDataColumn} Resulting column.\n */\nexport function newColumnFromMerge(\n dataset: KupDataDataset,\n columns2merge: string[],\n newColumn: KupDataColumn\n): KupDataColumn {\n const outputCells: KupDataCell[] = [];\n for (let index = 0; index < dataset.rows.length; index++) {\n const row = dataset.rows[index];\n const cells = row.cells;\n for (const key in cells) {\n const cell = cells[key];\n if (columns2merge.includes(key)) {\n outputCells.push({ ...cell });\n delete cells[key];\n }\n }\n }\n for (let index = 0; index < columns2merge.length; index++) {\n const column2removeIndex = dataset.columns.findIndex(\n (col: KupDataColumn) => col.name === columns2merge[index]\n );\n dataset.columns.splice(column2removeIndex, 1);\n }\n let rowIndex = 0;\n for (let index = 0; index < outputCells.length; index++) {\n const outputCell = outputCells[index];\n let row: KupDataRow = null;\n if (!dataset.rows[rowIndex]) {\n dataset.rows[rowIndex] = { cells: {} };\n }\n row = dataset.rows[rowIndex];\n row.cells[newColumn.name] = outputCell;\n rowIndex++;\n }\n dataset.columns.push(newColumn);\n return newColumn;\n}\n","import { KupDom } from '../kup-manager/kup-manager-declarations';\nimport {\n KupDataDataset,\n KupDataFindCellFilters,\n KupDataNode,\n KupDataRow,\n} from './kup-data-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Finds all the rows containing cells matching the filters criteria in the input dataset.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {KupDataFindCellFilters} filters - Filters of the research.\n * @returns {KupDataRow[]} Array of rows fetched after applying the filters.\n */\nexport function findRow(\n dataset: KupDataDataset,\n filters: KupDataFindCellFilters\n): KupDataRow[] {\n return dom.ketchup.data.finder(dataset, filters).rows;\n}\n/**\n * Converts the rows of the input dataset to tree nodes.\n * @param {KupDataDataset} dataset - Input dataset.\n * @returns {KupDataNode[]} Array of tree nodes.\n */\nexport function toNode(dataset: KupDataDataset): KupDataNode[] {\n const nodes: KupDataNode[] = [];\n for (let index = 0; index < dataset.rows.length; index++) {\n const node: Partial<KupDataNode> = {\n ...dataset.rows[index],\n };\n if (!node.value) {\n node.value = dataset.rows[index].id\n ? dataset.rows[index].id\n : '#' + (index + 1);\n }\n nodes.push(node as KupDataNode);\n }\n return nodes;\n}\n","import { TreeNodePath } from '../../components/kup-tree/kup-tree-declarations';\nimport { KupDataNode, KupDataNodeDrilldownInfo } from './kup-data-declarations';\n\n/**\n * Removes the given node from the input array, by searching even children.\n * @param {KupDataNode[]} nodes - Input array of nodes.\n * @param {KupDataNode} node2remove - Node to remove.\n * @returns {KupDataNode} Copy of the removed node.\n */\nexport function removeNode(\n nodes: KupDataNode[],\n node2remove: KupDataNode\n): KupDataNode {\n let removed: KupDataNode = null;\n for (let index = 0; index < nodes.length; index++) {\n recursive(nodes[index], nodes);\n function recursive(node: KupDataNode, array: KupDataNode[]) {\n const i = array.indexOf(node2remove);\n if (i > -1) {\n removed = { ...node2remove };\n array.splice(i, 1);\n return;\n }\n for (\n let index = 0;\n node.children && index < node.children.length;\n index++\n ) {\n if (node.children[index]) {\n recursive(node.children[index], node.children);\n }\n }\n }\n }\n return removed;\n}\n/**\n * Sets the values specified in the properties to every node of the input array.\n * @param {KupDataNode[]} nodes - Input array of nodes.\n * @param {Partial<KupDataNode>} properties - New properties values to set.\n * @param {boolean} recursively - Sets values to every child node.\n * @param {KupDataNode[]} exclude - Nodes to exclude (they won't be updated).\n * @returns {KupDataNode[]} Array of the updated nodes.\n */\nexport function setPropertiesNode(\n nodes: KupDataNode[],\n properties: Partial<KupDataNode>,\n recursively?: boolean,\n exclude?: KupDataNode[]\n): KupDataNode[] {\n const updated: KupDataNode[] = [];\n if (!exclude) {\n exclude = [];\n }\n if (recursively) {\n nodes = toStreamNode(nodes);\n }\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index];\n for (const key in properties) {\n if (!exclude.includes(node)) {\n node[key] = properties[key];\n updated.push(node);\n }\n }\n }\n return updated;\n}\n/**\n * Streamlines an array of nodes by recursively fetching every child node.\n * @param {KupDataNode[]} nodes - Input array of nodes.\n * @returns {KupDataNode[]} Streamlined array of every node and their children.\n */\nexport function toStreamNode(nodes: KupDataNode[]): KupDataNode[] {\n const streamlined: KupDataNode[] = [];\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index];\n recursive(node);\n\n function recursive(node: KupDataNode) {\n streamlined.push(node);\n for (\n let index = 0;\n node.children && index < node.children.length;\n index++\n ) {\n recursive(node.children[index]);\n }\n }\n }\n return streamlined;\n}\n/**\n * Gets information about the tree depth, such as max number of children and max depth.\n * @param {KupDataNode[]} nodes - Input array of nodes.\n * @returns {KupDataNodeDrilldownInfo} Information about the tree depth.\n */\nexport function getDrilldownInfoNode(\n nodes: KupDataNode[]\n): KupDataNodeDrilldownInfo {\n let maxChildren = 0;\n let maxDepth = 0;\n const getDepth = function (n: KupDataNode) {\n const depth = 0;\n if (n.children) {\n n.children.forEach(function (d) {\n const tmpDepth = getDepth(d);\n if (tmpDepth > depth) {\n maxDepth = tmpDepth;\n }\n });\n }\n return depth;\n };\n const recursive = (arr: KupDataNode[]) => {\n maxDepth++;\n for (let index = 0; index < arr.length; index++) {\n const node = arr[index];\n getDepth(node);\n if (\n Array.isArray(node.children) &&\n maxChildren < node.children.length\n ) {\n maxChildren = node.children.length;\n recursive(node.children);\n }\n }\n };\n\n recursive(nodes);\n return {\n maxChildren,\n maxDepth,\n };\n}\n/**\n * Returns the parent of the given node.\n * @param {KupDataNode[]} nodes - Input array of nodes.\n * @param {KupDataNode} child - Child node.\n * @returns {KupDataNode} Parent node.\n */\nexport function getParentNode(\n nodes: KupDataNode[],\n child: KupDataNode\n): KupDataNode {\n let parent: KupDataNode = null;\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index];\n recursive(node);\n\n function recursive(node: KupDataNode) {\n const hasChildren = !!node.children;\n\n if (hasChildren && node.children.includes(child)) {\n parent = node;\n return;\n }\n for (\n let index = 0;\n !parent && hasChildren && index < node.children.length;\n index++\n ) {\n recursive(node.children[index]);\n }\n }\n }\n return parent;\n}\n\n/**\n * Returns the node with id equal to the given value.\n * @param {KupDataNode[]} nodes - Input array of nodes.\n * @param {string} treeNodePath - Tree node path.\n * @returns {KupDataNode} Node.\n */\nexport function getNodeByPath(\n nodes: KupDataNode[],\n treeNodePath: TreeNodePath\n): KupDataNode {\n if (!nodes || nodes.length == 0) {\n return undefined;\n }\n if (!treeNodePath || treeNodePath.length == 0) {\n return undefined;\n }\n return _getNodeByPath(nodes, treeNodePath);\n}\n\nfunction _getNodeByPath(nodes: KupDataNode[], path: TreeNodePath): KupDataNode {\n let node: KupDataNode = null;\n for (let j = 0; j < path.length; j++) {\n const i = path[j];\n node = _getNode(nodes, node, i);\n }\n return node;\n}\n\nfunction _getNode(\n nodes: KupDataNode[],\n node: KupDataNode,\n index: number\n): KupDataNode {\n if (node == null) {\n return nodes[index];\n } else {\n return node.children[index];\n }\n}\n","import type { VNode } from '@stencil/core';\nimport {\n CellActionProps,\n KupDataCell,\n KupDataCellOptions,\n KupDataColumn,\n KupDataRow,\n} from '../../managers/kup-data/kup-data-declarations';\nimport {\n FComponent,\n KupEventPayload,\n KupTagNames,\n} from '../../types/GenericTypes';\n\nexport const autoCenterComps = [KupTagNames.DATA_TABLE, KupTagNames.TREE];\nexport const fullWidthFieldsComps = [KupTagNames.DATA_TABLE, KupTagNames.TREE];\n/**\n * Props of the f-cell component.\n */\nexport interface FCellProps extends FComponent {\n cell?: KupDataCellOptions;\n column?: KupDataColumn;\n component?: unknown;\n density?: FCellPadding;\n editable?: boolean;\n indents?: VNode[];\n previousValue?: string;\n renderKup?: boolean;\n row?: KupDataRow;\n setSizes?: boolean;\n shape?: FCellShapes;\n cellActionIcon?: CellActionProps;\n}\n\nexport interface FCellOptionsProps extends FCellProps {\n cell?: KupDataCellOptions;\n}\n/**\n * Information about the cell, displayed before the content.\n */\nexport interface FCellInfo {\n color?: string;\n icon?: string;\n placeholderIcon?: string;\n message: string;\n}\n/**\n * Supported cell events.\n */\nexport enum FCellEvents {\n CLICK = 'kup-cell-click',\n ICON_CLICK = 'kup-cell-iconclick',\n INPUT = 'kup-cell-input',\n KEYUP = 'kup-cell-keyup',\n UPDATE = 'kup-cell-update',\n}\n/**\n * Supported cell padding.\n */\nexport enum FCellPadding {\n DENSE = 'dense',\n MEDIUM = 'medium',\n NONE = '',\n WIDE = 'wide',\n}\n/**\n * Supported cell CSS classes.\n */\nexport enum FCellClasses {\n BG_DANGER = 'danger-bg',\n BG_GREEN = 'green-bg',\n BG_GREY = 'grey-bg',\n BG_ORANGE = 'orange-bg',\n BG_PURPLE = 'purple-bg',\n BG_SUCCESS = 'success-bg',\n BG_TEAL = 'teal-bg',\n BG_WARNING = 'warning-bg',\n C_BG_DANGER = 'c-danger-bg',\n C_BG_GREEN = 'c-green-bg',\n C_BG_GREY = 'c-grey-bg',\n C_BG_ORANGE = 'c-orange-bg',\n C_BG_PURPLE = 'c-purple-bg',\n C_BG_SUCCESS = 'c-success-bg',\n C_BG_TEAL = 'c-teal-bg',\n C_BG_WARNING = 'c-warning-bg',\n C_CENTERED = 'c-centered',\n C_FITTED = 'c-fitted',\n C_PADDED = 'c-padded',\n C_PADDED_HOR = 'c-padded-hor',\n C_PADDED_VER = 'c-padded-ver',\n C_ROUND = 'c-round',\n C_RIGHT_ALIGNED = 'c-right-aligned',\n C_SHAPED = 'c-shaped',\n C_TEXT_VERTICAL = 'c-vertical-text',\n CLICKABLE = 'clickable',\n HOVER_DISPLAY = 'display-on-hover',\n HOVER_EXPAND = 'expand-on-hover',\n HOVER_REDUCE = 'reduce-on-hover',\n INDICATOR_TOPRIGHT = 'top-right-indicator',\n LINK = 'link',\n MONOSPACE = 'monospace',\n OBJ = 'obj',\n SHAPED = 'shaped',\n TEXT_DANGER = 'danger-text',\n TEXT_INFO = 'info-text',\n TEXT_PRIMARY = 'primary-text',\n TEXT_PURPLE = 'purple-text',\n TEXT_SECONDARY = 'secondary-text',\n TEXT_STRONG = 'strong-text',\n TEXT_SUCCESS = 'success-text',\n TEXT_WARNING = 'warning-text',\n UNDERLINED = 'underlined',\n}\n/**\n * Supported cell shapes.\n */\nexport enum FCellShapes {\n AUTOCOMPLETE = 'ACP',\n BUTTON_LIST = 'BTN',\n CHART = 'GRA',\n CHECKBOX = 'CHK',\n CHIP = 'CHI',\n COLOR_PICKER = 'CLP',\n COMBOBOX = 'CMB',\n DATE = 'DAT',\n EDITOR = 'EDT',\n GAUGE = 'GAU',\n IMAGE = 'IMG',\n INPUT_CHECKBOX = 'INC',\n INPUT_FIELD = 'INF',\n KNOB = 'KNB',\n LABEL = 'LBL',\n MULTI_AUTOCOMPLETE = 'AML',\n MULTI_COMBOBOX = 'CML',\n OBJECT = 'OBJ',\n PROGRESS_BAR = 'PGB',\n RADIO = 'RAD',\n RATING = 'RTG',\n SWITCH = 'SWT',\n TABLE = 'TBL',\n TEXT_FIELD = 'ITX',\n TIME = 'TIM',\n}\n/**\n * Supported cell types.\n */\nexport enum FCellTypes {\n AUTOCOMPLETE = 'autocomplete',\n BAR = 'bar',\n BUTTON = 'button',\n BUTTON_LIST = 'button-list',\n CHART = 'chart',\n CHECKBOX = 'checkbox',\n CHIP = 'chips',\n COLOR_PICKER = 'color-picker',\n COMBOBOX = 'combobox',\n DATE = 'date',\n DATETIME = 'datetime',\n EDITOR = 'editor',\n GAUGE = 'gauge',\n ICON = 'icon',\n IMAGE = 'image',\n KNOB = 'knob',\n LINK = 'link',\n MULTI_AUTOCOMPLETE = 'multi-autocomplete',\n MULTI_COMBOBOX = 'multi-combobox',\n NUMBER = 'number',\n OBJECT = 'object',\n PROGRESS_BAR = 'progress-bar',\n RADIO = 'radio',\n RATING = 'rating',\n STRING = 'string',\n SWITCH = 'switch',\n TABLE = 'table',\n TIME = 'time',\n}\nexport const editableTypes = [\n FCellTypes.AUTOCOMPLETE,\n FCellTypes.CHECKBOX,\n FCellTypes.CHIP,\n FCellTypes.COLOR_PICKER,\n FCellTypes.COMBOBOX,\n FCellTypes.DATE,\n FCellTypes.LINK,\n FCellTypes.MULTI_AUTOCOMPLETE,\n FCellTypes.MULTI_COMBOBOX,\n FCellTypes.NUMBER,\n FCellTypes.OBJECT,\n FCellTypes.RADIO,\n FCellTypes.RATING,\n FCellTypes.STRING,\n FCellTypes.SWITCH,\n FCellTypes.TIME,\n];\nexport const kupTypes = [\n FCellTypes.BAR,\n FCellTypes.BUTTON,\n FCellTypes.BUTTON_LIST,\n FCellTypes.CHART,\n FCellTypes.CHIP,\n FCellTypes.COLOR_PICKER,\n FCellTypes.GAUGE,\n FCellTypes.KNOB,\n FCellTypes.MULTI_AUTOCOMPLETE,\n FCellTypes.MULTI_COMBOBOX,\n FCellTypes.OBJECT,\n FCellTypes.PROGRESS_BAR,\n FCellTypes.RADIO,\n FCellTypes.RATING,\n];\n/**\n * Payload of the event fired when a cell is updated.\n */\nexport interface FCellEventPayload extends KupEventPayload {\n cell: KupDataCell;\n column: KupDataColumn;\n event: CustomEvent | InputEvent | MouseEvent | KeyboardEvent;\n row: KupDataRow;\n type: FCellTypes;\n}\n","import {\n DropDownAction,\n KupCommand,\n KupDataCell,\n KupDataColumn,\n KupDataDataset,\n KupDataDatasetSort,\n KupDataFindCellFilters,\n KupDataNewColumn,\n KupDataNewColumnOptions,\n KupDataNewColumnTypes,\n KupDataNode,\n KupDataNodeDrilldownInfo,\n KupDataRow,\n KupDataRowAction,\n KupDataRowCells,\n} from './kup-data-declarations';\nimport { findCell, getCellValue, replaceCell } from './kup-data-cell-helper';\nimport { findColumns, hideColumns, newColumn } from './kup-data-column-helper';\nimport { findRow, toNode } from './kup-data-row-helper';\nimport {\n getDrilldownInfoNode,\n getNodeByPath,\n getParentNode,\n removeNode,\n setPropertiesNode,\n toStreamNode,\n} from './kup-data-node-helper';\nimport {\n fieldColumn,\n KupDataTableCell,\n KupDataTableRow,\n KupDataTableRowCells,\n VoCodVerRowEnum,\n} from '../../components/kup-data-table/kup-data-table-declarations';\nimport { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport { KupDom } from '../kup-manager/kup-manager-declarations';\nimport {\n FCellProps,\n FCellShapes,\n FCellTypes,\n} from '../../f-components/f-cell/f-cell-declarations';\nimport { TreeNodePath } from '../../components/kup-tree/kup-tree-declarations';\nimport { ValueDisplayedValue } from '../../utils/filters/filters-declarations';\nimport { FImageProps } from '../../f-components/f-image/f-image-declarations';\nimport { KupThemeColorValues } from '../kup-theme/kup-theme-declarations';\nimport { KupObj } from '../kup-objects/kup-objects-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Handles data operations.\n * @module KupData\n */\nexport class KupData {\n cell = {\n find(\n dataset: KupDataDataset,\n filters: KupDataFindCellFilters\n ): KupDataCell[] {\n return findCell(dataset, filters);\n },\n getValue(\n dataset: KupDataDataset,\n column: KupDataColumn,\n sorted?: boolean\n ): ValueDisplayedValue[] {\n return getCellValue(dataset, column, sorted, false);\n },\n getUnivocalValue(\n dataset: KupDataDataset,\n column: KupDataColumn,\n sorted?: boolean\n ): ValueDisplayedValue[] {\n return getCellValue(dataset, column, sorted, true);\n },\n replace(\n dataset: KupDataDataset,\n cell: KupDataCell,\n columns?: string[]\n ): KupDataCell[] {\n return replaceCell(dataset, cell, columns);\n },\n getType(cell: KupDataCell, shape?: FCellShapes): FCellTypes {\n const obj = cell.obj;\n if (shape) {\n switch (shape.toUpperCase()) {\n case FCellShapes.AUTOCOMPLETE:\n return FCellTypes.AUTOCOMPLETE;\n case FCellShapes.BUTTON_LIST:\n return FCellTypes.BUTTON_LIST;\n case FCellShapes.CHART:\n return FCellTypes.CHART;\n case FCellShapes.CHECKBOX:\n return FCellTypes.CHECKBOX;\n case FCellShapes.CHIP:\n return FCellTypes.CHIP;\n case FCellShapes.COLOR_PICKER:\n return FCellTypes.COLOR_PICKER;\n case FCellShapes.COMBOBOX:\n return FCellTypes.COMBOBOX;\n case FCellShapes.DATE:\n return FCellTypes.DATE;\n case FCellShapes.EDITOR:\n return FCellTypes.EDITOR;\n case FCellShapes.GAUGE:\n return FCellTypes.GAUGE;\n case FCellShapes.IMAGE:\n return FCellTypes.IMAGE;\n case FCellShapes.INPUT_CHECKBOX:\n return FCellTypes.CHECKBOX;\n case FCellShapes.KNOB:\n return FCellTypes.KNOB;\n case FCellShapes.MULTI_AUTOCOMPLETE:\n return FCellTypes.MULTI_AUTOCOMPLETE;\n case FCellShapes.MULTI_COMBOBOX:\n return FCellTypes.MULTI_COMBOBOX;\n case FCellShapes.OBJECT:\n return FCellTypes.OBJECT;\n case FCellShapes.PROGRESS_BAR:\n return FCellTypes.PROGRESS_BAR;\n case FCellShapes.RADIO:\n return FCellTypes.RADIO;\n case FCellShapes.RATING:\n return FCellTypes.RATING;\n case FCellShapes.SWITCH:\n return FCellTypes.SWITCH;\n case FCellShapes.TABLE:\n return FCellTypes.TABLE;\n case FCellShapes.TEXT_FIELD:\n return FCellTypes.STRING;\n case FCellShapes.TIME:\n return FCellTypes.TIME;\n }\n }\n\n if (dom.ketchup.objects.isBar(obj)) {\n return FCellTypes.BAR;\n } else if (dom.ketchup.objects.isButton(obj)) {\n return FCellTypes.BUTTON;\n } else if (dom.ketchup.objects.isChart(obj)) {\n return FCellTypes.CHART;\n } else if (dom.ketchup.objects.isCheckbox(obj)) {\n return FCellTypes.CHECKBOX;\n } else if (dom.ketchup.objects.isColor(obj)) {\n return FCellTypes.COLOR_PICKER;\n } else if (dom.ketchup.objects.isIcon(obj)) {\n return FCellTypes.ICON;\n } else if (dom.ketchup.objects.isImage(obj)) {\n return FCellTypes.IMAGE;\n } else if (dom.ketchup.objects.isLink(obj)) {\n return FCellTypes.LINK;\n } else if (dom.ketchup.objects.isProgressBar(obj)) {\n return FCellTypes.PROGRESS_BAR;\n } else if (dom.ketchup.objects.isRadio(obj)) {\n return FCellTypes.RADIO;\n } else if (dom.ketchup.objects.isSwitch(obj)) {\n return FCellTypes.SWITCH;\n } else if (dom.ketchup.objects.isKupObjList(obj)) {\n return FCellTypes.CHIP;\n } else if (dom.ketchup.objects.isNumber(obj)) {\n return FCellTypes.NUMBER;\n } else if (dom.ketchup.objects.isDate(obj)) {\n return FCellTypes.DATE;\n } else if (dom.ketchup.objects.isTimestamp(obj)) {\n return FCellTypes.DATETIME;\n } else if (dom.ketchup.objects.isTime(obj)) {\n return FCellTypes.TIME;\n } else if (dom.ketchup.objects.isVoCodver(obj)) {\n return FCellTypes.ICON;\n } else {\n return FCellTypes.STRING;\n }\n },\n /**\n * Given some cells, it creates an object with name of column\n * and value\n * @param {KupDataTableRowCells} cells group of cells .\n * @returns { { name: string; value: KupDataTableCell }[]} object with name of the column and cell.\n */\n formatCells(\n cells: KupDataTableRowCells\n ): { name: string; value: KupDataTableCell }[] {\n return Object.entries(cells).map(([key, value]) => ({\n name: key,\n value: value,\n }));\n },\n /**\n * Get COD_VER cells\n * @param {KupDataTableRow} row single row.\n * @returns { { name: string; value: KupDataTableCell }[]} cells founded\n */\n getCodVer: (\n row: KupDataTableRow\n ): { name: string; value: KupDataTableCell }[] => {\n const formattedCells = this.cell.formatCells(row.cells);\n\n return formattedCells.filter(\n (cell) =>\n cell.value.obj.p === VoCodVerRowEnum.P &&\n cell.value.obj.t === VoCodVerRowEnum.T\n );\n },\n /**\n * Build f-cell with its properties\n * @param { KupDatatablecell} cell\n * @param { KupDataColumn} column\n * @param { KupDataRow } row\n * @returns { FCellProps } f-cell with mapped properties\n */\n buildFCell: (\n cell: KupDataTableCell,\n column: KupDataColumn,\n row: KupDataRow\n ): FCellProps => {\n return {\n cell,\n column,\n row,\n setSizes: true,\n };\n },\n /**\n * Build cell actions, that are showed when cell in datatable is clicked through button\n * @param {KupDataRow} row which is being clicked\n * @param {KupDataColumn} column of the cell\n * @param {KupCommand[]} commands array of actions\n * @returns { KupDataRowAction[]} actions showed on f-cell\n */\n buildCellActions: (\n row: KupDataRow,\n column: KupDataColumn,\n commands: KupCommand[]\n ): KupDataRowAction[] => {\n const cellActions: KupDataRowAction[] = [];\n const currentCell = row.cells[column.name];\n\n if (commands) {\n const commandsFiltered = commands.filter(\n (command) =>\n this.object.compareObjects(\n command.obj,\n currentCell.obj\n ) || this.object.isObjectTPKEmpty(command.obj)\n );\n\n commandsFiltered.forEach((command) => {\n const index = commands.findIndex(\n (currentCommand) =>\n currentCommand.icon === command.icon &&\n currentCommand.text === command.text &&\n currentCommand.obj.k === command.obj.k\n );\n\n cellActions.push({\n icon: command.icon,\n text: command.text,\n obj: command.obj,\n cell: currentCell,\n index: index,\n type: DropDownAction.COMMAND,\n column: column,\n });\n });\n }\n\n return cellActions;\n },\n /**\n * Check if row has action cells.\n * @param {KupDataCell} cell to check.\n * @param {KupCommand[]} commands array of actions\n * @returns {boolean} if cell contain action showed on f-cell\n */\n hasActionCell: (cell: KupDataCell, commands: KupCommand[]): boolean => {\n if (\n commands.some((command) =>\n this.object.isObjectTPKEmpty(command.obj)\n )\n ) {\n return true;\n }\n\n const isMatchFound = commands.some((command) => {\n return this.object.compareObjects(command.obj, cell.obj);\n });\n\n return isMatchFound;\n },\n };\n column = {\n find(\n dataset: KupDataDataset | KupDataColumn[],\n filters: Partial<KupDataColumn>\n ): KupDataColumn[] {\n return findColumns(dataset, filters);\n },\n hide(\n dataset: KupDataDataset | KupDataColumn[],\n columns2hide: string[]\n ): KupDataColumn[] {\n return hideColumns(dataset, columns2hide);\n },\n new(\n dataset: KupDataDataset,\n type: KupDataNewColumnTypes,\n options: KupDataNewColumnOptions\n ): string | KupDataColumn {\n return newColumn(dataset, type, options);\n },\n /**\n * Check if column is COD_VER\n * @param {KupDataColumn } column single column.\n * @returns { boolean } if COD_VER founded or not.\n */\n isCodVer(column: KupDataColumn): boolean {\n if (column && column.obj) {\n const hasCodVerCol =\n column.obj.p === VoCodVerRowEnum.P &&\n column.obj.t === VoCodVerRowEnum.T;\n return hasCodVerCol;\n }\n return false;\n },\n /**\n * Check if almost one column has COD_VER\n * @param { KupDataColumn[] } columns single column.\n * @returns { boolean } if COD_VER founded or not.\n */\n hasCodVer: (columns: KupDataColumn[]) => {\n return columns.some((col) => this.column.isCodVer(col));\n },\n };\n node = {\n getDrilldownInfo(nodes: KupDataNode[]): KupDataNodeDrilldownInfo {\n return getDrilldownInfoNode(nodes);\n },\n getParent(nodes: KupDataNode[], child: KupDataNode): KupDataNode {\n return getParentNode(nodes, child);\n },\n find(nodes: KupDataNode[], treeNodePath: TreeNodePath): KupDataNode {\n return getNodeByPath(nodes, treeNodePath);\n },\n findByStrTreeNodePath(\n nodes: KupDataNode[],\n treeNodePath: string\n ): KupDataNode {\n const split = treeNodePath.split(',');\n const path: TreeNodePath = [];\n for (let i = 0; i < split.length; i++) {\n path.push(Number(split[i]));\n }\n return getNodeByPath(nodes, path);\n },\n remove(nodes: KupDataNode[], node2remove: KupDataNode): KupDataNode {\n return removeNode(nodes, node2remove);\n },\n setProperties(\n nodes: KupDataNode[],\n properties: Partial<KupDataNode>,\n recursively?: boolean,\n exclude?: KupDataNode[]\n ): KupDataNode[] {\n return setPropertiesNode(nodes, properties, recursively, exclude);\n },\n toStream(nodes: KupDataNode[]): KupDataNode[] {\n return toStreamNode(nodes);\n },\n };\n row = {\n find(\n dataset: KupDataDataset,\n filters: KupDataFindCellFilters\n ): KupDataRow[] {\n return findRow(dataset, filters);\n },\n toNode(dataset: KupDataDataset): KupDataNode[] {\n return toNode(dataset);\n },\n /**\n * Adapts row actions to corresponding type\n * @param { KupDataRowAction[] } rowActions that must be adapted\n * @returns { KupDataRowAction[] } formatted row actions array\n */\n rowActionsAdapter(rowActions: KupDataRowAction[]): KupDataRowAction[] {\n return rowActions.map((rowAction, index) => ({\n ...rowAction,\n type: DropDownAction.ROWACTION,\n index: index,\n }));\n },\n /**\n * Build actions that must be showed in data table\n * @param { KupDataRow } row current row\n * @param { KupDataColumn[] } columns columns of datatable\n * @param { KupDataRowAction[] } actions actions in component prop\n * @param { KupCommand[] } commands commands in component prop\n * @returns { KupDataRowAction[] } action that must be show on row\n */\n buildRowActions: (\n row: KupDataRow,\n columns: KupDataColumn[],\n actions: KupDataRowAction[],\n commands: KupCommand[]\n ): KupDataRowAction[] => {\n const codVerActions = this.action.createActionsFromVoCodRow(\n row,\n columns,\n commands\n );\n\n const rowActionsWithCodVer =\n actions && actions.length\n ? [...this.row.rowActionsAdapter(actions), ...codVerActions]\n : [...codVerActions];\n\n return rowActionsWithCodVer;\n },\n };\n action = {\n /**\n * Build image to show as action in row\n * @param { resource } icon that must be shown\n * @param { title } title of the ation\n * @param { wrapperClass } type of wrapper class\n * @param { onClick } event that must be fired\n * @returns { FImageProps } single action\n */\n buildImageProp: (\n resource: string,\n title: string,\n wrapperClass: 'action' | 'expander',\n onClick: (e?: MouseEvent) => void\n ): FImageProps => {\n return {\n color: `var(${KupThemeColorValues.PRIMARY})`,\n sizeX: '1.5em',\n sizeY: '1.5em',\n resource,\n title,\n wrapperClass,\n onClick,\n } as FImageProps;\n },\n /**\n * Check if given actions have only icons without text\n * @param { actions } actions on which control is made\n * @returns { boolean } result of check\n */\n checkEveryActionHasOnlyIcon: (actions: KupDataRowAction[]): boolean => {\n return actions.every((action) => action.icon && !action.text);\n },\n /**\n * Creates actions from row with VO COD_VER obj.\n * @param {KupDataTableRow} row single row.\n * @param {KupCommand[]} commands group of commands.\n * @returns { KupDataRowAction[]} Actions founded.\n */\n createActionsFromVoCodRow: (\n row: KupDataTableRow,\n columns: KupDataColumn[],\n commands: KupCommand[]\n ): KupDataRowAction[] => {\n const actions: KupDataRowAction[] = [];\n\n const cellsCodVer = this.cell.getCodVer(row);\n\n cellsCodVer.forEach((codVer) => {\n let hasCommands = false;\n\n const currentColumn = this.column\n .find(columns, {\n name: codVer.name,\n })\n .pop();\n\n if (commands) {\n const commandsFiltered = commands.filter(\n (command) => command.obj.k === codVer.value.obj.k\n );\n hasCommands = commandsFiltered.length > 0;\n commandsFiltered.forEach((commandFilter) => {\n const index = commands.findIndex(\n (command) =>\n command.icon === commandFilter.icon &&\n command.text === commandFilter.text &&\n command.obj.k === commandFilter.obj.k\n );\n if (\n !('visible' in currentColumn) ||\n currentColumn.visible\n ) {\n actions.push({\n icon: commandFilter.icon,\n text: commandFilter.text,\n obj: commandFilter.obj,\n cell: codVer.value,\n index: index,\n type: DropDownAction.COMMAND,\n column: currentColumn,\n });\n }\n });\n }\n\n if (!hasCommands) {\n if (\n !('visible' in currentColumn) ||\n currentColumn.visible\n ) {\n actions.push({\n icon:\n codVer.value.icon ||\n codVer.value.data?.resource ||\n codVer.value.data?.icon ||\n '',\n text: '',\n obj: codVer.value.obj,\n cell: codVer.value,\n type: DropDownAction.CODVER,\n column: currentColumn,\n });\n }\n }\n });\n\n return actions;\n },\n /**\n * Check whenever commands got blank uiPopup obj\n * @param { commands } commands[] on which control is made\n * @returns { boolean } result of check\n */\n hasCommandsWithBlankObj: (commands: KupCommand[]): boolean => {\n return commands\n ? commands.some((c) => !c.obj.k && !c.obj.t && !c.obj.p)\n : false;\n },\n /**\n * When actions must be placed in dropdown, this function maps\n * actions with text\n * @param { rowActions } rowActions[] that must be mapped\n * @returns { KupDataRowAction[] } correctly mapped\n */\n createActionsWithText: (\n rowActions: KupDataRowAction[]\n ): KupDataRowAction[] => {\n return rowActions.map((rowAction) => ({\n ...rowAction,\n text:\n rowAction.text ||\n rowAction.column?.title ||\n rowAction.column?.name,\n }));\n },\n };\n object = {\n /** compare t p k of two objects\n * @param {KupObj} firsObj\n * @param {KupObj} secondObj\n * @returns {boolean} result\n */\n compareObjects: (firstObj: KupObj, secondObj: KupObj): boolean => {\n return (\n firstObj.k === secondObj.k &&\n firstObj.t === secondObj.t &&\n firstObj.p === secondObj.p\n );\n },\n /** check if obj t p k proprieties are empty\n * @param {KupObj} obj\n * @returns {boolean} result\n */\n isObjectTPKEmpty: (obj: KupObj): boolean => {\n return !obj.k && !obj.t && !obj.p;\n },\n };\n /**\n * Utility used by findRow and findCell.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {KupDataFindCellFilters} filters - Filters of the research.\n * @returns {{cells: KupDataCell[], rows: KupDataRow[]}} Object containing rows and cells.\n */\n finder(\n dataset: KupDataDataset,\n filters: KupDataFindCellFilters\n ): { cells: KupDataCell[]; rows: KupDataRow[] } {\n const columns = filters ? filters.columns : null;\n const range = filters ? filters.range : null;\n const value = filters ? filters.value : null;\n const min = range && range.min ? range.min : null;\n const max = range && range.max ? range.max : null;\n const result: { cells: KupDataCell[]; rows: KupDataRow[] } = {\n cells: [],\n rows: [],\n };\n for (let index = 0; index < dataset.rows.length; index++) {\n const row = dataset.rows[index];\n const cells = row.cells;\n for (const key in cells) {\n const cell = cells[key];\n if (!columns || !columns.length || columns.includes(key)) {\n if (min && max) {\n let d: Date = null,\n s = '',\n n = 0;\n if (dom.ketchup.objects.isDate(cell.obj)) {\n d = dom.ketchup.dates.toDate(cell.value);\n const dMax = dom.ketchup.dates.toDate(\n max instanceof String ? max.valueOf() : max\n );\n const dMin = dom.ketchup.dates.toDate(\n min instanceof String ? min.valueOf() : min\n );\n if (\n d === dMax ||\n d === dMin ||\n (d < dMax && d > dMin)\n ) {\n result.cells.push(cell);\n result.rows.push(row);\n }\n } else if (\n typeof min === 'string' ||\n min instanceof String\n ) {\n s = cell.value;\n if (\n s === max ||\n s === min ||\n (s < max && s > min)\n ) {\n result.cells.push(cell);\n result.rows.push(row);\n }\n } else {\n n = dom.ketchup.math.numberify(cell.value);\n const nMax = dom.ketchup.math.numberify(max);\n const nMin = dom.ketchup.math.numberify(min);\n if (\n n === max ||\n n === min ||\n (n < nMax && n > nMin)\n ) {\n result.cells.push(cell);\n result.rows.push(row);\n }\n }\n } else if (\n value &&\n cell.value &&\n value.trim() === cell.value.trim()\n ) {\n result.cells.push(cell);\n result.rows.push(row);\n }\n }\n }\n }\n return result;\n }\n /**\n * Creates a new dataset with an amount of cells equal to a distinct calculation applied to the given columns.\n * The original value of cells will be stored in the title property of the new cells.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {string[]} columns - Column names to manage. When missing, defaults to all columns.\n * @param {KupDataColumn} valuesColumn - When present, this column will be included in the final dataset containing the original values of the cells.\n * @returns {KupDataDataset} New dataset with processed data.\n */\n distinct(\n dataset: KupDataDataset,\n columns?: string[],\n valuesColumn?: KupDataColumn\n ): KupDataDataset {\n const occurrencies: {\n [index: string]: { [index: string]: number };\n } = {};\n const rows = dataset.rows;\n for (let index = 0; index < rows.length; index++) {\n const row = rows[index];\n const cells = row.cells;\n for (const key in cells) {\n const cell = cells[key];\n if (\n !columns ||\n !columns.length ||\n (columns && columns.includes(key))\n ) {\n if (!occurrencies[key]) {\n occurrencies[key] = {};\n }\n const occurrency = occurrencies[key];\n occurrency[cell.value] = occurrency[cell.value]\n ? occurrency[cell.value] + 1\n : 1;\n }\n }\n }\n const newColumns: KupDataColumn[] = [];\n const newRows: KupDataRow[] = [];\n if (valuesColumn) {\n newColumns.push(valuesColumn);\n }\n for (const key in occurrencies) {\n const occurrency = occurrencies[key];\n const column = {\n ...dataset.columns.find(\n (col: KupDataColumn) => col.name === key\n ),\n };\n column.obj = {\n t: 'NR',\n p: '',\n k: '',\n };\n let rowIndex = 0;\n newColumns.push(column);\n for (const j in occurrency) {\n const value = occurrency[j];\n let row: KupDataRow = null;\n if (!newRows[rowIndex]) {\n newRows[rowIndex] = { cells: {} };\n }\n row = newRows[rowIndex];\n row.cells[key] = {\n obj: {\n t: 'NR',\n p: '',\n k: value.toString(),\n },\n title: j,\n value: value.toString(),\n };\n if (valuesColumn) {\n row.cells[valuesColumn.name] = {\n value: j,\n };\n }\n rowIndex++;\n }\n }\n return {\n columns: newColumns,\n rows: newRows,\n };\n }\n /**\n * Creates a new dataset from the input one.\n * The new columns are to be specified in the columns argument along with their creation criteria.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {KupDataNewColumn[]} newColumns - Array containing the specifics of the new columns to be created.\n * @returns {KupDataDataset} Resulting dataset.\n */\n new(\n dataset: KupDataDataset,\n newColumns: KupDataNewColumn[]\n ): KupDataDataset {\n const outputColumns: KupDataColumn[] = [];\n const outputRows: KupDataRow[] = [];\n for (let index = 0; index < newColumns.length; index++) {\n const newColumn = newColumns[index].column;\n const criteria = newColumns[index].criteria;\n const cells = findCell(dataset, criteria);\n let rowIndex = 0;\n for (let index = 0; index < cells.length; index++) {\n const cell = cells[index];\n let outputRow: KupDataRow = null;\n if (!outputRows[rowIndex]) {\n outputRows[rowIndex] = { cells: {} };\n }\n outputRow = outputRows[rowIndex];\n outputRow.cells[newColumn.name] = JSON.parse(\n JSON.stringify(cell)\n );\n rowIndex++;\n }\n outputColumns.push(newColumn);\n }\n return {\n columns: outputColumns,\n rows: outputRows,\n };\n }\n /**\n * Performs a distinct/count after previously grouping columns by ranges.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {KupDataNewColumn[]} rangeColumns - A list of columns coupled with their criteria for creation. These are used to define ranges.\n * @param {KupDataColumn} resultingColumn - The resulting column.\n * @param {KupDataColumn} valuesColumn - When present, this column will be included in the final dataset containing the original values of the cells.\n * @returns {KupDataDataset} New dataset with processed data.\n */\n rangedDistinct(\n dataset: KupDataDataset,\n rangeColumns: KupDataNewColumn[],\n resultingColumn: KupDataColumn,\n valuesColumn?: KupDataColumn\n ): KupDataDataset {\n const newD = this.new(dataset, rangeColumns);\n const columnNames: string[] = [];\n for (let index = 0; index < rangeColumns.length; index++) {\n const newColumn = rangeColumns[index].column;\n columnNames.push(newColumn.name);\n replaceCell(newD, { value: newColumn.title }, [newColumn.name]);\n }\n newColumn(newD, KupDataNewColumnTypes.MERGE, {\n columns: columnNames,\n newColumn: resultingColumn,\n });\n return this.distinct(newD, null, valuesColumn);\n }\n /**\n * Creates a new dataset with sorted elements.\n * @param {KupDataDataset} dataset Input dataset.\n * @param {KupDataDatasetSort} sortType Type of sort to apply.\n * @param {string} headerColumn The column used for sorting.\n * @returns {KupDataDataset} Sorted dataset.\n */\n sort(\n dataset: KupDataDataset,\n sortType: KupDataDatasetSort,\n headerColumn: string\n ): KupDataDataset {\n if (sortType != 'normalDistribution') {\n const message = 'Wrong sort type! (' + sortType + ')';\n dom.ketchup.debug.logMessage(\n 'kup-data',\n message,\n KupDebugCategory.WARNING\n );\n return dataset;\n }\n const output: KupDataDataset = {\n columns: JSON.parse(JSON.stringify(dataset.columns)),\n rows: [],\n };\n\n // sort all columns values by descending\n let values = getCellValue(\n dataset,\n this.column.find(dataset, { name: headerColumn })[0],\n true,\n true\n );\n values.reverse();\n\n const length = dataset.rows.length;\n\n // calculating middle index\n const idx = Math.floor(length / 2);\n let lastIdx = idx - 1;\n let leftIdx = idx - 1;\n let rightIdx = idx + 1;\n\n // sort the rows like a \"mountain\", the greatest is in the middle and the other ones are splitted left and right\n for (let i = 0; i < values.length; i++) {\n const value = values[i].value;\n // looping the rows because we have many rows with same value.\n this.finder(dataset, {\n columns: [headerColumn],\n value: value,\n }).rows.forEach((row) => {\n const xC = output.rows[idx];\n if (xC == null) {\n output.rows[idx] = JSON.parse(JSON.stringify(row));\n } else {\n output.rows[lastIdx] = JSON.parse(JSON.stringify(row));\n\n if (lastIdx > idx) {\n // right from the middle index.\n lastIdx = leftIdx;\n rightIdx++;\n } else {\n // left from the middle index.\n lastIdx = rightIdx;\n leftIdx--;\n }\n }\n });\n }\n return output;\n }\n /**\n * Creates a new dataset with transposed columns and rows.\n * @param {KupDataDataset} dataset - Input dataset.\n * @param {string} headerColumn - When specified, it will be the column used as header. When missing, the header will be a series of progressive numbers.\n * @returns {KupDataDataset} Transposed dataset.\n */\n transpose(dataset: KupDataDataset, headerColumn?: string): KupDataDataset {\n const transposed: KupDataDataset = { columns: [], rows: [] };\n let firstColumn: KupDataColumn = null;\n if (headerColumn) {\n firstColumn = findColumns(dataset, { name: headerColumn })[0];\n transposed.columns.push(firstColumn);\n for (let index = 0; index < dataset.rows.length; index++) {\n const row = dataset.rows[index];\n const cell = row.cells[firstColumn.name];\n const title = cell.displayedValue\n ? cell.displayedValue\n : cell.value;\n transposed.columns.push({\n name: cell.value + '_' + row.id,\n title,\n });\n }\n } else {\n firstColumn = {\n name: fieldColumn.toUpperCase(),\n title: fieldColumn,\n };\n transposed.columns.push(firstColumn);\n for (let index = 0; index < dataset.rows.length; index++) {\n const row = dataset.rows[index];\n transposed.columns.push({\n name: row.id,\n title: '#' + index,\n });\n }\n }\n for (\n let index = headerColumn ? 1 : 0;\n index < dataset.columns.length;\n index++\n ) {\n const oldColumn = dataset.columns[index];\n const cells: KupDataRowCells = {};\n cells[firstColumn.name] = {\n value: oldColumn.title,\n };\n\n for (let index = 1; index < transposed.columns.length; index++) {\n const newColumn = transposed.columns[index];\n const oldRow = dataset.rows[index - 1];\n const cellName = headerColumn ? newColumn.name : oldRow.id;\n cells[cellName] = oldRow.cells[oldColumn.name];\n if (oldColumn.icon && !cells[cellName].icon) {\n cells[cellName].icon = oldColumn.icon;\n }\n if (\n oldColumn.placeholderIcon &&\n !cells[cellName].placeholderIcon\n ) {\n cells[cellName].placeholderIcon = oldColumn.placeholderIcon;\n }\n if (oldColumn.shape && !cells[cellName].shape) {\n cells[cellName].shape = oldColumn.shape;\n }\n }\n // If a record is key and no column argument is provided, it will be placed on top\n if (!headerColumn && oldColumn.isKey) {\n transposed.rows.unshift({\n id: String(index),\n cells,\n transposedColumnName: oldColumn.name,\n });\n } else {\n transposed.rows.push({\n id: String(index),\n cells,\n transposedColumnName: oldColumn.name,\n });\n }\n }\n return transposed;\n }\n}\n","export const searchStartEvent = 'kup-search-start';\n/**\n * Payload of the event fired when a search is launched without props.\n */\nexport interface KupSearchEventPayload {\n card: HTMLKupCardElement;\n}\n","import { KupCard } from '../../components/kup-card/kup-card';\nimport {\n KupCardEventPayload,\n KupCardFamily,\n} from '../../components/kup-card/kup-card-declarations';\nimport {\n KupSearchEventPayload,\n searchStartEvent,\n} from './kup-search-declarations';\n\n/**\n * Handles operations and formatting of dates.\n * @module KupSearch\n */\nexport class KupSearch {\n activeCards: Set<HTMLKupCardElement>;\n container: HTMLElement;\n /**\n * Initializes KupSearch.\n */\n constructor() {\n this.container = document.createElement('div');\n this.container.setAttribute('kup-search', '');\n document.body.appendChild(this.container);\n this.activeCards = new Set();\n }\n /**\n * Starts the search process.\n * @param {Function} callback - The callback that must be invoked when the search is over.\n * @param {Partial<KupCard>} props - The props of the search card. When missing, the search will display a spinner in place of the data table.\n * @returns {HTMLKupCardElement} The search card created by this method.\n */\n start(callback: Function, props?: Partial<KupCard>): HTMLKupCardElement {\n const card = document.createElement('kup-card');\n card.data = {};\n card.isMenu = true;\n card.layoutFamily = KupCardFamily.DIALOG;\n card.layoutNumber = 6;\n card.menuVisible = false;\n card.sizeX = '50vw';\n card.sizeY = '50vh';\n if (props) {\n for (const key in props) {\n const prop = props[key];\n card[key] = prop;\n }\n } else {\n const e = new CustomEvent<KupSearchEventPayload>(searchStartEvent, {\n bubbles: true,\n cancelable: true,\n detail: {\n card: card,\n },\n });\n document.dispatchEvent(e);\n }\n card.style.position = 'fixed';\n card.style.left = '0';\n card.style.top = '0';\n this.activeCards.add(card);\n card.addEventListener('kup-card-close', () => {\n this.activeCards.delete(card);\n });\n card.addEventListener(\n 'kup-card-event',\n (e: CustomEvent<KupCardEventPayload>) => {\n const cardDetail = e.detail;\n const datatableDetail = cardDetail.event.detail;\n if (cardDetail.event.type === 'kup-datatable-rowselected') {\n callback(datatableDetail);\n this.activeCards.delete(card);\n card.remove();\n }\n }\n );\n card.addEventListener('kup-card-ready', () => {\n const x = card.clientWidth / 2;\n const y = card.clientHeight / 2;\n card.setAttribute('data-x', x.toString());\n card.setAttribute('data-y', y.toString());\n card.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n card.menuVisible = true;\n });\n this.container.appendChild(card);\n return card;\n }\n}\n","/**\n * Interface related to the formulas factory function.\n */\nexport interface KupMathFormulas {\n custom: (formula: string, row: { [index: string]: number }) => number;\n normalDistribution: (\n average: number,\n variance: number,\n x: number\n ) => number;\n}\n/**\n * Locales available for KupMath.\n */\nexport enum KupMathLocales {\n cn = 'chs',\n en = 'en',\n es = 'es',\n it = 'it',\n fr = 'fr',\n pl = 'pl',\n ru = 'ru',\n}\n/**\n * Interface related to the numbers factory function.\n */\nexport interface KupMathNumbers {\n toLocaleString: (value: string) => string;\n}\n\nexport interface NumericFieldFormatOptions {\n integer: number;\n decimal: number;\n allowNegative: boolean;\n group: boolean;\n}\n","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n global.numeral = factory();\n }\n}(this, function () {\n /************************************\n Variables\n ************************************/\n\n var numeral,\n _,\n VERSION = '2.0.6',\n formats = {},\n locales = {},\n defaults = {\n currentLocale: 'en',\n zeroFormat: null,\n nullFormat: null,\n defaultFormat: '0,0',\n scalePercentBy100: true\n },\n options = {\n currentLocale: defaults.currentLocale,\n zeroFormat: defaults.zeroFormat,\n nullFormat: defaults.nullFormat,\n defaultFormat: defaults.defaultFormat,\n scalePercentBy100: defaults.scalePercentBy100\n };\n\n\n /************************************\n Constructors\n ************************************/\n\n // Numeral prototype object\n function Numeral(input, number) {\n this._input = input;\n\n this._value = number;\n }\n\n numeral = function(input) {\n var value,\n kind,\n unformatFunction,\n regexp;\n\n if (numeral.isNumeral(input)) {\n value = input.value();\n } else if (input === 0 || typeof input === 'undefined') {\n value = 0;\n } else if (input === null || _.isNaN(input)) {\n value = null;\n } else if (typeof input === 'string') {\n if (options.zeroFormat && input === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n for (kind in formats) {\n regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n if (regexp && input.match(regexp)) {\n unformatFunction = formats[kind].unformat;\n\n break;\n }\n }\n\n unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n value = unformatFunction(input);\n }\n } else {\n value = Number(input)|| null;\n }\n\n return new Numeral(input, value);\n };\n\n // version number\n numeral.version = VERSION;\n\n // compare numeral object\n numeral.isNumeral = function(obj) {\n return obj instanceof Numeral;\n };\n\n // helper functions\n numeral._ = _ = {\n // formats numbers separators, decimals places, signs, abbreviations\n numberToFormat: function(value, format, roundingFunction) {\n var locale = locales[numeral.options.currentLocale],\n negP = false,\n optDec = false,\n leadingCount = 0,\n abbr = '',\n trillion = 1000000000000,\n billion = 1000000000,\n million = 1000000,\n thousand = 1000,\n decimal = '',\n neg = false,\n abbrForce, // force abbreviation\n abs,\n min,\n max,\n power,\n int,\n precision,\n signed,\n thousands,\n output;\n\n // make sure we never format a null value\n value = value || 0;\n\n abs = Math.abs(value);\n\n // see if we should use parentheses for negative number or if we should prefix with a sign\n // if both are present we default to parentheses\n if (numeral._.includes(format, '(')) {\n negP = true;\n format = format.replace(/[\\(|\\)]/g, '');\n } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n format = format.replace(/[\\+|\\-]/g, '');\n }\n\n // see if abbreviation is wanted\n if (numeral._.includes(format, 'a')) {\n abbrForce = format.match(/a(k|m|b|t)?/);\n\n abbrForce = abbrForce ? abbrForce[1] : false;\n\n // check for space before abbreviation\n if (numeral._.includes(format, ' a')) {\n abbr = ' ';\n }\n\n format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n if (abs >= trillion && !abbrForce || abbrForce === 't') {\n // trillion\n abbr += locale.abbreviations.trillion;\n value = value / trillion;\n } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n // billion\n abbr += locale.abbreviations.billion;\n value = value / billion;\n } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n // million\n abbr += locale.abbreviations.million;\n value = value / million;\n } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n // thousand\n abbr += locale.abbreviations.thousand;\n value = value / thousand;\n }\n }\n\n // check for optional decimals\n if (numeral._.includes(format, '[.]')) {\n optDec = true;\n format = format.replace('[.]', '.');\n }\n\n // break number and format\n int = value.toString().split('.')[0];\n precision = format.split('.')[1];\n thousands = format.indexOf(',');\n leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n if (precision) {\n if (numeral._.includes(precision, '[')) {\n precision = precision.replace(']', '');\n precision = precision.split('[');\n decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n } else {\n decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n }\n\n int = decimal.split('.')[0];\n\n if (numeral._.includes(decimal, '.')) {\n decimal = locale.delimiters.decimal + decimal.split('.')[1];\n } else {\n decimal = '';\n }\n\n if (optDec && Number(decimal.slice(1)) === 0) {\n decimal = '';\n }\n } else {\n int = numeral._.toFixed(value, 0, roundingFunction);\n }\n\n // check abbreviation again after rounding\n if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n int = String(Number(int) / 1000);\n\n switch (abbr) {\n case locale.abbreviations.thousand:\n abbr = locale.abbreviations.million;\n break;\n case locale.abbreviations.million:\n abbr = locale.abbreviations.billion;\n break;\n case locale.abbreviations.billion:\n abbr = locale.abbreviations.trillion;\n break;\n }\n }\n\n\n // format number\n if (numeral._.includes(int, '-')) {\n int = int.slice(1);\n neg = true;\n }\n\n if (int.length < leadingCount) {\n for (var i = leadingCount - int.length; i > 0; i--) {\n int = '0' + int;\n }\n }\n\n if (thousands > -1) {\n int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n }\n\n if (format.indexOf('.') === 0) {\n int = '';\n }\n\n output = int + decimal + (abbr ? abbr : '');\n\n if (negP) {\n output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n } else {\n if (signed >= 0) {\n output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n } else if (neg) {\n output = '-' + output;\n }\n }\n\n return output;\n },\n // unformats numbers separators, decimals places, signs, abbreviations\n stringToNumber: function(string) {\n var locale = locales[options.currentLocale],\n stringOriginal = string,\n abbreviations = {\n thousand: 3,\n million: 6,\n billion: 9,\n trillion: 12\n },\n abbreviation,\n value,\n i,\n regexp;\n\n if (options.zeroFormat && string === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n value = 1;\n\n if (locale.delimiters.decimal !== '.') {\n string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n }\n\n for (abbreviation in abbreviations) {\n regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n if (stringOriginal.match(regexp)) {\n value *= Math.pow(10, abbreviations[abbreviation]);\n break;\n }\n }\n\n // check for negative number\n value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n // remove non numbers\n string = string.replace(/[^0-9\\.]+/g, '');\n\n value *= Number(string);\n }\n\n return value;\n },\n isNaN: function(value) {\n return typeof value === 'number' && isNaN(value);\n },\n includes: function(string, search) {\n return string.indexOf(search) !== -1;\n },\n insert: function(string, subString, start) {\n return string.slice(0, start) + subString + string.slice(start);\n },\n reduce: function(array, callback /*, initialValue*/) {\n if (this === null) {\n throw new TypeError('Array.prototype.reduce called on null or undefined');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n var t = Object(array),\n len = t.length >>> 0,\n k = 0,\n value;\n\n if (arguments.length === 3) {\n value = arguments[2];\n } else {\n while (k < len && !(k in t)) {\n k++;\n }\n\n if (k >= len) {\n throw new TypeError('Reduce of empty array with no initial value');\n }\n\n value = t[k++];\n }\n for (; k < len; k++) {\n if (k in t) {\n value = callback(value, t[k], k, t);\n }\n }\n return value;\n },\n /**\n * Computes the multiplier necessary to make x >= 1,\n * effectively eliminating miscalculations caused by\n * finite precision.\n */\n multiplier: function (x) {\n var parts = x.toString().split('.');\n\n return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n },\n /**\n * Given a variable number of arguments, returns the maximum\n * multiplier that must be used to normalize an operation involving\n * all of them.\n */\n correctionFactor: function () {\n var args = Array.prototype.slice.call(arguments);\n\n return args.reduce(function(accum, next) {\n var mn = _.multiplier(next);\n return accum > mn ? accum : mn;\n }, 1);\n },\n /**\n * Implementation of toFixed() that treats floats more like decimals\n *\n * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n * problems for accounting- and finance-related software.\n */\n toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n var splitValue = value.toString().split('.'),\n minDecimals = maxDecimals - (optionals || 0),\n boundedPrecision,\n optionalsRegExp,\n power,\n output;\n\n // Use the smallest precision value possible to avoid errors from floating point representation\n if (splitValue.length === 2) {\n boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n } else {\n boundedPrecision = minDecimals;\n }\n\n power = Math.pow(10, boundedPrecision);\n\n // Multiply up by precision, round accurately, then divide and use native toFixed():\n output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n if (optionals > maxDecimals - boundedPrecision) {\n optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n output = output.replace(optionalsRegExp, '');\n }\n\n return output;\n }\n };\n\n // avaliable options\n numeral.options = options;\n\n // avaliable formats\n numeral.formats = formats;\n\n // avaliable formats\n numeral.locales = locales;\n\n // This function sets the current locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n numeral.locale = function(key) {\n if (key) {\n options.currentLocale = key.toLowerCase();\n }\n\n return options.currentLocale;\n };\n\n // This function provides access to the loaded locale data. If\n // no arguments are passed in, it will simply return the current\n // global locale object.\n numeral.localeData = function(key) {\n if (!key) {\n return locales[options.currentLocale];\n }\n\n key = key.toLowerCase();\n\n if (!locales[key]) {\n throw new Error('Unknown locale : ' + key);\n }\n\n return locales[key];\n };\n\n numeral.reset = function() {\n for (var property in defaults) {\n options[property] = defaults[property];\n }\n };\n\n numeral.zeroFormat = function(format) {\n options.zeroFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.nullFormat = function (format) {\n options.nullFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.defaultFormat = function(format) {\n options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n };\n\n numeral.register = function(type, name, format) {\n name = name.toLowerCase();\n\n if (this[type + 's'][name]) {\n throw new TypeError(name + ' ' + type + ' already registered.');\n }\n\n this[type + 's'][name] = format;\n\n return format;\n };\n\n\n numeral.validate = function(val, culture) {\n var _decimalSep,\n _thousandSep,\n _currSymbol,\n _valArray,\n _abbrObj,\n _thousandRegEx,\n localeData,\n temp;\n\n //coerce val to string\n if (typeof val !== 'string') {\n val += '';\n\n if (console.warn) {\n console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n }\n }\n\n //trim whitespaces from either sides\n val = val.trim();\n\n //if val is just digits return true\n if (!!val.match(/^\\d+$/)) {\n return true;\n }\n\n //if val is empty return false\n if (val === '') {\n return false;\n }\n\n //get the decimal and thousands separator from numeral.localeData\n try {\n //check if the culture is understood by numeral. if not, default it to current locale\n localeData = numeral.localeData(culture);\n } catch (e) {\n localeData = numeral.localeData(numeral.locale());\n }\n\n //setup the delimiters and currency symbol based on culture/locale\n _currSymbol = localeData.currency.symbol;\n _abbrObj = localeData.abbreviations;\n _decimalSep = localeData.delimiters.decimal;\n if (localeData.delimiters.thousands === '.') {\n _thousandSep = '\\\\.';\n } else {\n _thousandSep = localeData.delimiters.thousands;\n }\n\n // validating currency symbol\n temp = val.match(/^[^\\d]+/);\n if (temp !== null) {\n val = val.substr(1);\n if (temp[0] !== _currSymbol) {\n return false;\n }\n }\n\n //validating abbreviation symbol\n temp = val.match(/[^\\d]+$/);\n if (temp !== null) {\n val = val.slice(0, -1);\n if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n return false;\n }\n }\n\n _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n if (!val.match(/[^\\d.,]/g)) {\n _valArray = val.split(_decimalSep);\n if (_valArray.length > 2) {\n return false;\n } else {\n if (_valArray.length < 2) {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n } else {\n if (_valArray[0].length === 1) {\n return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n } else {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n }\n }\n }\n }\n\n return false;\n };\n\n\n /************************************\n Numeral Prototype\n ************************************/\n\n numeral.fn = Numeral.prototype = {\n clone: function() {\n return numeral(this);\n },\n format: function(inputString, roundingFunction) {\n var value = this._value,\n format = inputString || options.defaultFormat,\n kind,\n output,\n formatFunction;\n\n // make sure we have a roundingFunction\n roundingFunction = roundingFunction || Math.round;\n\n // format based on value\n if (value === 0 && options.zeroFormat !== null) {\n output = options.zeroFormat;\n } else if (value === null && options.nullFormat !== null) {\n output = options.nullFormat;\n } else {\n for (kind in formats) {\n if (format.match(formats[kind].regexps.format)) {\n formatFunction = formats[kind].format;\n\n break;\n }\n }\n\n formatFunction = formatFunction || numeral._.numberToFormat;\n\n output = formatFunction(value, format, roundingFunction);\n }\n\n return output;\n },\n value: function() {\n return this._value;\n },\n input: function() {\n return this._input;\n },\n set: function(value) {\n this._value = Number(value);\n\n return this;\n },\n add: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum + Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n return this;\n },\n subtract: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum - Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n return this;\n },\n multiply: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback, 1);\n\n return this;\n },\n divide: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback);\n\n return this;\n },\n difference: function(value) {\n return Math.abs(numeral(this._value).subtract(value).value());\n }\n };\n\n /************************************\n Default Locale && Format\n ************************************/\n\n numeral.register('locale', 'en', {\n delimiters: {\n thousands: ',',\n decimal: '.'\n },\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function(number) {\n var b = number % 10;\n return (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n },\n currency: {\n symbol: '$'\n }\n });\n\n \n\n(function() {\n numeral.register('format', 'bps', {\n regexps: {\n format: /(BPS)/,\n unformat: /(BPS)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n output;\n\n value = value * 10000;\n\n // check for space before BPS\n format = format.replace(/\\s?BPS/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + 'BPS');\n\n output = output.join('');\n } else {\n output = output + space + 'BPS';\n }\n\n return output;\n },\n unformat: function(string) {\n return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n }\n });\n})();\n\n\n(function() {\n var decimal = {\n base: 1000,\n suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n },\n binary = {\n base: 1024,\n suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n };\n\n var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n return decimal.suffixes.indexOf(item) < 0;\n }));\n var unformatRegex = allSuffixes.join('|');\n // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n numeral.register('format', 'bytes', {\n regexps: {\n format: /([0\\s]i?b)/,\n unformat: new RegExp(unformatRegex)\n },\n format: function(value, format, roundingFunction) {\n var output,\n bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n power,\n min,\n max;\n\n // check for space before\n format = format.replace(/\\s?i?b/, '');\n\n for (power = 0; power <= bytes.suffixes.length; power++) {\n min = Math.pow(bytes.base, power);\n max = Math.pow(bytes.base, power + 1);\n\n if (value === null || value === 0 || value >= min && value < max) {\n suffix += bytes.suffixes[power];\n\n if (min > 0) {\n value = value / min;\n }\n\n break;\n }\n }\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + suffix;\n },\n unformat: function(string) {\n var value = numeral._.stringToNumber(string),\n power,\n bytesMultiplier;\n\n if (value) {\n for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n if (numeral._.includes(string, decimal.suffixes[power])) {\n bytesMultiplier = Math.pow(decimal.base, power);\n\n break;\n }\n\n if (numeral._.includes(string, binary.suffixes[power])) {\n bytesMultiplier = Math.pow(binary.base, power);\n\n break;\n }\n }\n\n value *= (bytesMultiplier || 1);\n }\n\n return value;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'currency', {\n regexps: {\n format: /(\\$)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n symbols = {\n before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n },\n output,\n symbol,\n i;\n\n // strip format of spaces and $\n format = format.replace(/\\s?\\$\\s?/, '');\n\n // format the number\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n // update the before and after based on value\n if (value >= 0) {\n symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n symbols.before = '-' + symbols.before;\n }\n\n // loop through each before symbol\n for (i = 0; i < symbols.before.length; i++) {\n symbol = symbols.before[i];\n\n switch (symbol) {\n case '$':\n output = numeral._.insert(output, locale.currency.symbol, i);\n break;\n case ' ':\n output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n break;\n }\n }\n\n // loop through each after symbol\n for (i = symbols.after.length - 1; i >= 0; i--) {\n symbol = symbols.after[i];\n\n switch (symbol) {\n case '$':\n output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n break;\n case ' ':\n output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n break;\n }\n }\n\n\n return output;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'exponential', {\n regexps: {\n format: /(e\\+|e-)/,\n unformat: /(e\\+|e-)/\n },\n format: function(value, format, roundingFunction) {\n var output,\n exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n parts = exponential.split('e');\n\n format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n return output + 'e' + parts[1];\n },\n unformat: function(string) {\n var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n value = Number(parts[0]),\n power = Number(parts[1]);\n\n power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n function cback(accum, curr, currI, O) {\n var corrFactor = numeral._.correctionFactor(accum, curr),\n num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n return num;\n }\n\n return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'ordinal', {\n regexps: {\n format: /(o)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n output,\n ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n // check for space before\n format = format.replace(/\\s?o/, '');\n\n ordinal += locale.ordinal(value);\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + ordinal;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'percentage', {\n regexps: {\n format: /(%)/,\n unformat: /(%)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' %') ? ' ' : '',\n output;\n\n if (numeral.options.scalePercentBy100) {\n value = value * 100;\n }\n\n // check for space before %\n format = format.replace(/\\s?\\%/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + '%');\n\n output = output.join('');\n } else {\n output = output + space + '%';\n }\n\n return output;\n },\n unformat: function(string) {\n var number = numeral._.stringToNumber(string);\n if (numeral.options.scalePercentBy100) {\n return number * 0.01;\n }\n return number;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'time', {\n regexps: {\n format: /(:)/,\n unformat: /(:)/\n },\n format: function(value, format, roundingFunction) {\n var hours = Math.floor(value / 60 / 60),\n minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n },\n unformat: function(string) {\n var timeArray = string.split(':'),\n seconds = 0;\n\n // turn hours and minutes into seconds and add them all up\n if (timeArray.length === 3) {\n // hours\n seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n // minutes\n seconds = seconds + (Number(timeArray[1]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[2]);\n } else if (timeArray.length === 2) {\n // minutes\n seconds = seconds + (Number(timeArray[0]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[1]);\n }\n return Number(seconds);\n }\n });\n})();\n\nreturn numeral;\n}));\n","// numeral.js locale configuration\r\n// locale : simplified chinese (chs)\r\n// author : badplum : https://github.com/badplum\r\n\r\n(function (global, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(['../numeral'], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n factory(require('../numeral'));\r\n } else {\r\n factory(global.numeral);\r\n }\r\n}(this, function (numeral) {\r\n numeral.register('locale', 'chs', {\r\n delimiters: {\r\n thousands: ',',\r\n decimal: '.'\r\n },\r\n abbreviations: {\r\n thousand: '千',\r\n million: '百万',\r\n billion: '十亿',\r\n trillion: '兆'\r\n },\r\n ordinal: function (number) {\r\n return '.';\r\n },\r\n currency: {\r\n symbol: '¥'\r\n }\r\n });\r\n}));\n","// numeral.js locale configuration\n// locale : spanish\n// author : Hernan Garcia : https://github.com/hgarcia\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['../numeral'], factory);\n } else if (typeof module === 'object' && module.exports) {\n factory(require('../numeral'));\n } else {\n factory(global.numeral);\n }\n}(this, function (numeral) {\n numeral.register('locale', 'es', {\n delimiters: {\n thousands: '.',\n decimal: ','\n },\n abbreviations: {\n thousand: 'k',\n million: 'mm',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function (number) {\n var b = number % 10;\n return (b === 1 || b === 3) ? 'er' :\n (b === 2) ? 'do' :\n (b === 7 || b === 0) ? 'mo' :\n\t\t(b === 8) ? 'vo' :\n\t\t(b === 9) ? 'no' : 'to';\n },\n currency: {\n symbol: '$'\n }\n });\n}));\n","// numeral.js locale configuration\n// locale : french (fr)\n// author : Adam Draper : https://github.com/adamwdraper\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['../numeral'], factory);\n } else if (typeof module === 'object' && module.exports) {\n factory(require('../numeral'));\n } else {\n factory(global.numeral);\n }\n}(this, function (numeral) {\n numeral.register('locale', 'fr', {\n delimiters: {\n thousands: ' ',\n decimal: ','\n },\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n ordinal : function (number) {\n return number === 1 ? 'er' : 'e';\n },\n currency: {\n symbol: '€'\n }\n });\n}));\n","// numeral.js locale configuration\n// locale : italian Italy (it)\n// author : Giacomo Trombi : http://cinquepunti.it\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['../numeral'], factory);\n } else if (typeof module === 'object' && module.exports) {\n factory(require('../numeral'));\n } else {\n factory(global.numeral);\n }\n}(this, function (numeral) {\n numeral.register('locale', 'it', {\n delimiters: {\n thousands: '.',\n decimal: ','\n },\n abbreviations: {\n thousand: 'mila',\n million: 'mil',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function (number) {\n return 'º';\n },\n currency: {\n symbol: '€'\n }\n });\n}));\n","// numeral.js locale configuration\n// locale : polish (pl)\n// author : Dominik Bulaj : https://github.com/dominikbulaj\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['../numeral'], factory);\n } else if (typeof module === 'object' && module.exports) {\n factory(require('../numeral'));\n } else {\n factory(global.numeral);\n }\n}(this, function (numeral) {\n numeral.register('locale', 'pl', {\n delimiters: {\n thousands: ' ',\n decimal: ','\n },\n abbreviations: {\n thousand: 'tys.',\n million: 'mln',\n billion: 'mld',\n trillion: 'bln'\n },\n ordinal: function (number) {\n return '.';\n },\n currency: {\n symbol: 'PLN'\n }\n });\n}));\n","// numeral.js locale configuration\n// locale : russian (ru)\n// author : Anatoli Papirovski : https://github.com/apapirovski\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['../numeral'], factory);\n } else if (typeof module === 'object' && module.exports) {\n factory(require('../numeral'));\n } else {\n factory(global.numeral);\n }\n}(this, function (numeral) {\n numeral.register('locale', 'ru', {\n delimiters: {\n thousands: ' ',\n decimal: ','\n },\n abbreviations: {\n thousand: 'тыс.',\n million: 'млн.',\n billion: 'млрд.',\n trillion: 'трлн.'\n },\n ordinal: function () {\n // not ideal, but since in Russian it can taken on\n // different forms (masculine, feminine, neuter)\n // this is all we can do\n return '.';\n },\n currency: {\n symbol: 'руб.'\n }\n });\n}));\n","import { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport { KupDom } from '../kup-manager/kup-manager-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Takes a mathematical formula as string in input, with column names between brackets, and returns the result as a number.\n * @param {string} formula - Mathematical operation (i.e.: ([COL1] - [COL2]) * 100 / [COL3]).\n * @param {{ [index: string]: number }} row - Object containing column names as indexes and the related values as keys.\n * @returns {number} Result of the formula.\n */\nexport function customFormula(\n formula: string,\n row: { [index: string]: number }\n): number {\n const keys = Object.keys(row);\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let value: number = row[key];\n if (value != null && !isNaN(value)) {\n let re: RegExp = new RegExp(key, 'g');\n formula = formula.replace(re, value.toString());\n }\n }\n formula = formula.replace(/[\\[\\]']+/g, '');\n try {\n const result = Function(\n '\"use strict\"; return (' + formula + ')'\n )() as number;\n return result;\n } catch (e) {\n dom.ketchup.debug.logMessage(\n 'kup-data',\n 'Error while evaluating the following formula!(' + formula + ')',\n KupDebugCategory.WARNING\n );\n return NaN;\n }\n}\n/**\n * Calculates a single Y point of a normal distribution.\n * @param {number} average - Average.\n * @param {number} variance - Variance.\n * @param {number} x - X coordinate.\n * @returns {number} Result.\n */\nexport function normalDistributionFormula(\n average: number,\n variance: number,\n x: number\n): number {\n return (\n (1 / Math.sqrt(variance * 2 * Math.PI)) *\n Math.exp(-Math.pow(x - average, 2) / (2 * variance))\n );\n}\n","import { GenericObject } from '../types/GenericTypes';\nimport { KupBoxRow } from '../components/kup-box/kup-box-declarations';\nimport { KupDataRow } from '../managers/kup-data/kup-data-declarations';\n\nexport function identify(array: Array<KupBoxRow | KupDataRow>) {\n if (array) {\n for (let i = 0; i < array.length; i++) {\n array[i].id = i.toString();\n }\n }\n}\n\n/**\n * Fills a string with another string, eventually before\n * @param {string} stringIn initial string\n * @param {string} stringForFill string used for fill\n * @param {number} finalLen final string length\n * @param {boolean} addBefore flag for fill on left\n * @returns the input string filled with stringForFill\n */\nexport function fillString(\n stringIn: string,\n stringForFill: string,\n finalLen: number,\n addBefore: boolean\n): string {\n let initSize = stringIn.length;\n let stringOut: string = '';\n for (let i: number = initSize; i < finalLen; i += stringForFill.length) {\n stringOut += stringForFill;\n }\n if (addBefore) {\n return stringOut + stringIn;\n } else {\n return stringIn + stringOut;\n }\n}\n\n/**\n * Used to retrieve component's props values.\n * @param {any} comp - Component calling this function.\n * @param {GenericObject} list - Prop list, specific for each component.\n * @param {boolean} descriptions - When provided and true, the result will be the list of props with their description.\n * @returns {Promise<GenericObject>} List of props as object, each key will be a prop.\n */\nexport function getProps(\n comp: any,\n list: GenericObject,\n descriptions?: boolean\n): GenericObject {\n let props: GenericObject = {};\n if (descriptions) {\n props = list;\n } else {\n for (const key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key)) {\n props[key] = comp[key];\n }\n }\n }\n return props;\n}\n/**\n * Sets the props to the component.\n * @param {any} comp - Component calling this function.\n * @param {GenericObject} list - Prop list, specific for each component.\n * @param {GenericObject} props - Prop to be set.\n */\nexport function setProps(\n comp: any,\n list: GenericObject,\n props: GenericObject\n): void {\n for (const key in props) {\n // If key is a custom prop it will be set on the component (i.e.: \"data\", \"customStyle\", ecc.)\n if (list[key]) {\n comp[key] = props[key];\n } else {\n // Otherwise, it will be set on its HTML element (i.e.: \"id\", \"style\", ecc.)\n comp.rootElement[key] = props[key];\n }\n }\n}\n\n/**\n * Creates a regular expression object, from a string un-escaped\n * @param s string to use for create regular expression (not escaped)\n * @param flags flags used for the regular expression\n * @returns the regular expression object\n */\nexport function getRegExpFromString(s: string, flags?: string): RegExp {\n return new RegExp(escapeRegExp(s), flags);\n}\n\nfunction escapeRegExp(s: string) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n","import numeral from 'numeral';\nimport 'numeral/locales/chs';\nimport 'numeral/locales/es';\nimport 'numeral/locales/fr';\nimport 'numeral/locales/it';\nimport 'numeral/locales/pl';\nimport 'numeral/locales/ru';\nimport { KupComponent } from '../../types/GenericTypes';\nimport { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport { KupDom } from '../kup-manager/kup-manager-declarations';\nimport {\n KupMathFormulas,\n KupMathLocales,\n KupMathNumbers,\n NumericFieldFormatOptions,\n} from './kup-math-declarations';\nimport { customFormula, normalDistributionFormula } from './kup-math-helper';\nimport { getRegExpFromString } from '../../utils/utils';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Handles mathematical operations and number formatting/conversion.\n * @module KupMath\n */\nexport class KupMath {\n formulas: KupMathFormulas = {\n custom(formula: string, row: { [index: string]: number }): number {\n return customFormula(formula, row);\n },\n normalDistribution(\n average: number,\n variance: number,\n x: number\n ): number {\n return normalDistributionFormula(average, variance, x);\n },\n };\n locale: KupMathLocales;\n managedComponents: Set<KupComponent>;\n numbers: KupMathNumbers = {\n toLocaleString(value: string): string {\n const maximumFractionDigits: number = 14;\n if (value == null || value == '') return value;\n return Number(value).toLocaleString(this.locale, {\n maximumFractionDigits: maximumFractionDigits,\n });\n },\n };\n numeral: typeof numeral;\n\n /**\n * Initializes KupMath.\n */\n constructor(locale?: KupMathLocales) {\n this.locale = locale ? locale : KupMathLocales.en;\n this.managedComponents = new Set();\n this.numeral = numeral;\n this.numeral.locale(this.locale);\n }\n /**\n * Sets the locale of the numeral instance. The locales available must be tied to the KupDates locales.\n * @param {KupMathLocales} locale - Numeraljs locale string.\n */\n setLocale(locale: KupMathLocales): void {\n if (!Object.values(KupMathLocales).includes(locale)) {\n locale = KupMathLocales.en;\n dom.ketchup.debug.logMessage(\n 'kup-math',\n 'Invalid locale (' + locale + ')! Defaulting to english.',\n KupDebugCategory.WARNING\n );\n }\n this.locale = locale;\n this.numeral.locale(locale);\n this.managedComponents.forEach(function (comp) {\n if (comp.isConnected) {\n comp.refresh();\n }\n });\n document.dispatchEvent(new CustomEvent('kup-math-localechange'));\n }\n /**\n * Calculates the normal distribution on a set of values.\n * @param {string[] | number[] | String[]} values - Array of values.\n * @param {number} precision - Number of iterations to run (points). When not specified, defaults to 201.\n * @returns {number[][]} Returns an array of arrays containing numbers, which are the representation of the calculated normal distribution.\n */\n normalDistribution(\n values: string[] | number[] | String[],\n precision?: number\n ): number[][] {\n if (!precision) {\n precision = 201;\n }\n const data: number[][] = [];\n let max = Math.max.apply(Math, values);\n let min = Math.min.apply(Math, values);\n let average = 0;\n let variance = 0;\n for (let index = 0; index < values.length; index++) {\n const value = values[index];\n average += this.numberify(value);\n }\n average = average / values.length;\n for (let index = 0; index < values.length; index++) {\n const value = values[index];\n variance += Math.pow(this.numberify(value) - average, 2);\n }\n variance = variance / values.length;\n if (!variance) {\n variance = 0.001;\n }\n max = max + ((average / 100) * 50 + (variance / average) * 3);\n min = min - ((average / 100) * 50 + (variance / average) * 3);\n for (let i = 0; i < precision; i++) {\n const x = ((max - min) * i) / precision + min;\n data.push([\n x,\n this.formulas.normalDistribution(average, variance, x),\n ]);\n }\n return data;\n }\n /**\n * Formats the input number with the specified format of the currently set locale.\n * @param {string | String | number} input - Input number which will be automatically \"numberified\".\n * @param {string} format - Desired format. Defaults to '0,0.00' (i.e.: 2,000,000.51).\n * @param {boolean} inputIsLocalized Numberifies assuming the input string is in the current KupMath locale's format.\n * @returns {string} Formatted number.\n */\n format(\n input: string | String | number,\n format?: string,\n inputIsLocalized?: boolean\n ): string {\n const n = this.numberify(input, inputIsLocalized);\n if (!format) {\n const positiveN = Math.abs(n);\n const decimals = positiveN - Math.floor(positiveN);\n if (decimals) {\n format = '0,0.00';\n } else {\n format = '0,0';\n }\n }\n return this.numeral(n).format(format);\n }\n /**\n * Create the pattern string for format a number\n * @param {boolean} thousandPoint - show thousandPoint\n * @param {number} decimals - number of decimals\n * @returns {string} - formatter pattern\n */\n createFormatPattern(thousandPoint?: boolean, decimals?: number): string {\n var format = '0';\n if (thousandPoint) {\n format += ',0';\n }\n if (decimals && decimals > 0) {\n format += '.';\n for (let i = 0; i < decimals; i++) {\n format += '0';\n }\n }\n return format;\n }\n\n /**\n * Returns the decimal separator of current browser\n * @returns {string} current decimal separator, by locale\n */\n decimalSeparator(): string {\n const numberWithGroupAndDecimalSeparator = 1000.1;\n return Intl.NumberFormat(this.locale)\n .formatToParts(numberWithGroupAndDecimalSeparator)\n .find((part) => part.type === 'decimal').value;\n }\n\n /**\n * Returns the group separator of current browser\n * @returns {string} current group separator, by locale\n */\n groupSeparator(): string {\n const numberWithGroupAndDecimalSeparator = 1000.1;\n return Intl.NumberFormat(this.locale)\n .formatToParts(numberWithGroupAndDecimalSeparator)\n .find((part) => part.type === 'group').value;\n }\n\n /**\n * Checks if an input string matches options, for desired formatted decimal number (integer digits, decimal digits)\n * @param {string} value the input value to check\n * @param {NumericFieldFormatOptions} options options for customize the check\n * @returns {RegExpMatchArray} an object from applying the regular expression for check\n */\n matchNumericValueWithOptions(\n value: string,\n options: NumericFieldFormatOptions\n ): RegExpMatchArray {\n value = value.replace(\n getRegExpFromString(this.groupSeparator(), 'g'),\n ''\n );\n // see https://github.com/24eme/jquery-input-number-format.git\n let found: RegExpMatchArray = undefined;\n let integerPartSuffix = '+';\n if (options.integer && options.integer > 0) {\n integerPartSuffix = '{0,' + options.integer + '}';\n }\n\n let regexp: string = '^[0-9]' + integerPartSuffix;\n if (options.allowNegative) {\n regexp = '^-{0,1}[0-9]' + integerPartSuffix;\n }\n if (options.decimal && options.decimal > 0) {\n regexp +=\n '([' +\n this.decimalSeparator() +\n '][0-9]{0,' +\n options.decimal +\n '})?';\n let regexpObj = new RegExp(regexp + '$');\n found = value.match(regexpObj);\n if (!found) {\n regexp =\n '^[' +\n this.decimalSeparator() +\n '][0-9]{0,' +\n options.decimal +\n '}';\n regexpObj = new RegExp(regexp + '$');\n found = value.match(regexpObj);\n }\n } else {\n let regexpObj = new RegExp(regexp + '$');\n found = value.match(regexpObj);\n }\n return found;\n }\n\n /**\n * Returns a number from a non-specified input type between string, number, or String.\n * @param {string | String | number} input - Input value to numberify.\n * @param {boolean} inputIsLocalized - Numberifies assuming the input string is in the current KupMath locale's format.\n * @param {string} type - type of number for calculate suffix\n * @param {string} decFmt - decimal format for the input value.\n * @returns {number} Resulting number or NaN (when not a number).\n */\n numberify(\n input: string | String | number,\n inputIsLocalized?: boolean,\n type?: string,\n decFmt?: string\n ): number {\n if (typeof input != 'number') {\n if (type) {\n let suffix = this.getNumericValueSuffix(type);\n if (suffix != '') {\n input = input.replace(getRegExpFromString(suffix, 'g'), '');\n }\n }\n if (!decFmt) {\n decFmt = inputIsLocalized ? this.decimalSeparator() : '.';\n }\n const groupSeparator = decFmt == '.' ? ',' : '.';\n input = input.replace(getRegExpFromString(groupSeparator, 'g'), '');\n if (decFmt != '.') {\n input = input.replace(getRegExpFromString(decFmt, 'g'), '.');\n }\n }\n let n = NaN;\n\n const locale = this.numeral.locale();\n this.numeral.locale(KupMathLocales.en);\n n = this.numeral(input).value();\n this.numeral.locale(locale);\n if (n === null) {\n return NaN;\n }\n return n;\n }\n /**\n * Returns a number from a non-specified input type between string, number, or String.\n * If value in is null, undefined or blank, returns 0\n * @param {string} input number as string, formatted by locale US, decimal separator . (like java decimal numbers)\n * @param {boolean} inputIsLocalized - Numberifies assuming the input string is in the current KupMath locale's format.\n * @param {string} type - type of number for calculate suffix\n * @returns {number} Resulting number\n **/\n numberifySafe(\n input: string,\n inputIsLocalized?: boolean,\n type?: string,\n decFmt?: string\n ): number {\n if (!input || input == null || input.trim() == '') {\n input = '0';\n }\n return this.numberify(input, inputIsLocalized, type, decFmt);\n }\n\n /**\n * Checks if input is a valid number\n * @param {any} value input value to check\n * @returns {boolean} if input value is valid number\n */\n isNumber(value: any): boolean {\n //return typeof value === 'number';\n return !isNaN(value);\n }\n\n /**\n * Checks if string in input is a valid formatted number\n * @param {string} value number as string, formatted by actual browser locale\n * @param {string} type - type of number for calculate suffix\n * @returns {boolean} true if number string in input is a valid number\n */\n isStringNumber(value: string, type: string): boolean {\n if (value == null || value.trim() == '') {\n return false;\n }\n\n let tmpStr = this.formattedStringToNumberString(value, type);\n\n if (this.isNumber(tmpStr)) {\n return true;\n }\n return false;\n }\n\n /**\n * Gets number as string, formatted by locale US, decimal separator . (like java decimal numbers)\n * @param {string} input number as string, formatted by actual browser locale (maybe)\n * @param {string} type - type of number for calculate suffix\n * @param {string} decSeparator - decimal serparator of input string\n * @returns {string} number as string, formatted by locale US, decimal separator . (like java decimal numbers), without group separator\n **/\n formattedStringToNumberString(\n input: string,\n type: string,\n decSeparator?: string\n ): string {\n return numberStringToNumberString(input, type, decSeparator, this);\n\n function numberStringToNumberString(\n input: string,\n type: string,\n decFmt: string,\n kupMath: KupMath\n ): string {\n if (!input || input == null || input.trim() == '') {\n return '';\n }\n let unf: number = kupMath.numberifySafe(\n input,\n !decFmt || decFmt != '.',\n type,\n decFmt\n );\n if (unf == null || isNaN(unf)) {\n return input;\n }\n\n return numberToString(unf, -1, 'en-US', kupMath);\n }\n\n function numberToString(\n input: number,\n decimals: number,\n locale: string,\n kupMath: KupMath\n ): string {\n if (input == null) {\n input = 0;\n }\n if (decimals == null || decimals == -1) {\n decimals = kupMath.countDecimals(input);\n }\n let n: Number = Number(input);\n let f: Intl.NumberFormatOptions =\n decimals > -1\n ? {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n useGrouping: false,\n }\n : { useGrouping: false };\n return n.toLocaleString(locale, f);\n }\n }\n /**\n * Gets the number of decimals for current number\n * @param {number} value numer input\n * @returns {number} the number of decimals\n */\n countDecimals(value: number): number {\n if (Math.floor(value) === value) return 0;\n let stringValue = value.toString().split('.')[1];\n if (stringValue) {\n return stringValue.length ?? 0;\n } else {\n return 0;\n }\n }\n\n /**\n * Gets the suffix for number, by type\n * @param {string} type - type of number for calculate suffix\n * @returns {string} suffix for number, by type\n **/\n getNumericValueSuffix(type: string): string {\n type = type.toUpperCase();\n let nstr = '';\n if (type == 'P') {\n nstr = ' %';\n } else if (type == 'VE') {\n nstr = ' €';\n } else if (type == 'VL') {\n nstr = ' £';\n } else if (type == 'VV') {\n nstr = ' $';\n }\n return nstr;\n }\n\n /**\n * Gets the number as string, formatted by actual browser locale, with suffix by type\n * @param {number} input number\n * @param {number} decimals number of significant decimal digits for output\n * @param {string} type - type of number for calculate suffix\n * @returns {string} number as string, formatted by actual browser locale, with suffix by type\n **/\n numberToFormattedString(\n input: number,\n decimals: number,\n type: string\n ): string {\n if (input == null || isNaN(input)) {\n return '';\n }\n if (decimals == null || decimals == -1) {\n decimals = this.countDecimals(input);\n }\n let nstr = this.format(input, this.createFormatPattern(true, decimals));\n nstr = nstr + this.getNumericValueSuffix(type);\n return nstr;\n }\n\n /**\n * Gets the number as string, formatted by actual browser locale, with suffix by type\n * @param {string} input number as string, formatted by locale US, decimal separator . (like java decimal numbers)\n * @param {number} decimals number of significant decimal digits for output\n * @param {string} type - type of number for calculate suffix\n * @param {string} decSeparator decimal separator for output string\n * @returns {string} number as string, formatted by actual browser locale (or using decimal separator param), with suffix by type\n **/\n numberStringToFormattedString(\n input: string,\n decimals: number,\n type: string,\n decSeparator?: string\n ): string {\n let value = this.numberToFormattedString(\n this.numberifySafe(input),\n decimals,\n type\n );\n\n if (!decSeparator) {\n return value;\n }\n const browserDecSeparator = this.decimalSeparator();\n if (browserDecSeparator == decSeparator) {\n return value;\n }\n const browserGroupSeparator = this.groupSeparator();\n value = value.replace(\n getRegExpFromString(browserGroupSeparator, 'g'),\n ''\n );\n value = value.replace(\n getRegExpFromString(browserDecSeparator, 'g'),\n decSeparator\n );\n\n return value;\n }\n /**\n * Registers a KupComponent in KupMath, in order to be properly handled whenever the locale changes.\n * @param {any} component - The Ketchup component to be registered.\n */\n register(component: any): void {\n this.managedComponents.add(\n component.rootElement ? component.rootElement : component\n );\n }\n /**\n * Unregisters a KupComponent, so it won't be refreshed when the locale changes.\n *\n * @param {any} component - The component calling this function.\n */\n unregister(component: any): void {\n if (this.managedComponents) {\n this.managedComponents.delete(\n component.rootElement ? component.rootElement : component\n );\n }\n }\n}\n","import type {\n KupDom,\n KupManagerClickCb,\n} from '../kup-manager/kup-manager-declarations';\nimport {\n KupDynamicPositionAnchor,\n KupDynamicPositionElement,\n} from '../kup-dynamic-position/kup-dynamic-position-declarations';\nimport { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport {\n KupTooltipAnchor,\n KupTooltipCallbacks,\n} from './kup-tooltip-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * Handles application-wide tooltip using card component.\n * @module KupTooltip\n */\nexport class KupTooltip {\n currentAnchor: KupTooltipAnchor = null;\n delay: number = null;\n element: HTMLKupCardElement = null;\n fCellCallbacks: KupTooltipCallbacks = null;\n managedElements: Set<KupTooltipAnchor> = null;\n modal: boolean = null;\n timeout: ReturnType<typeof setTimeout> = null;\n #clickCb: KupManagerClickCb = null;\n /**\n * Initializes KupTooltip.\n */\n constructor(\n delay?: number,\n fCellCallbacks?: KupTooltipCallbacks,\n modal?: boolean\n ) {\n this.delay = delay ? delay : 125;\n this.fCellCallbacks = fCellCallbacks ? fCellCallbacks : null;\n this.managedElements = new Set();\n this.modal = modal ?? false;\n document.addEventListener('pointermove', (e) => {\n const paths = e.composedPath() as HTMLElement[];\n // Leaving the function when hovering on the tooltip itself\n if (paths.includes(this.element)) {\n return;\n }\n const enterHandler = (anchor: KupTooltipAnchor) => {\n this.timeout = null;\n const callbacks = anchor.classList.contains('f-cell')\n ? this.fCellCallbacks\n : anchor.kupTooltip;\n requestAnimationFrame(\n callbacks.enter.bind(callbacks.enter, e, anchor)\n );\n };\n const overHandler = (anchor: KupTooltipAnchor) => {\n const callbacks = anchor.classList.contains('f-cell')\n ? this.fCellCallbacks\n : anchor.kupTooltip;\n requestAnimationFrame(\n callbacks.over.bind(callbacks.over, e, anchor)\n );\n };\n const leaveHandler = (anchor: KupTooltipAnchor) => {\n const callbacks = this.currentAnchor.classList.contains(\n 'f-cell'\n )\n ? this.fCellCallbacks\n : this.currentAnchor.kupTooltip;\n requestAnimationFrame(\n callbacks.leave.bind(callbacks.leave, e, anchor)\n );\n };\n // If the current anchor exists and is not included in the event path,\n // the leaving callback is fired.\n if (this.currentAnchor && !paths.includes(this.currentAnchor)) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n } else {\n const callbacks = this.currentAnchor.kupTooltip\n ? this.currentAnchor.kupTooltip\n : this.fCellCallbacks;\n if (callbacks.leave) {\n leaveHandler(this.currentAnchor);\n }\n }\n this.currentAnchor = null;\n } else if (!this.timeout) {\n for (let index = 0; index < paths.length; index++) {\n const element = paths[index] as KupTooltipAnchor;\n if (\n element &&\n (this.managedElements.has(element) ||\n (this.fCellCallbacks &&\n element.classList &&\n element.classList.contains('f-cell')))\n ) {\n const callbacks = element.kupTooltip\n ? element.kupTooltip\n : this.fCellCallbacks;\n // If the current anchor is the same as the registered element found\n // in the path, the mouse over function is invoked\n if (this.currentAnchor === element) {\n if (callbacks.over) {\n overHandler(element);\n }\n // Otherwise, the mouse enter callback will be invoked\n } else {\n this.currentAnchor = element;\n if (callbacks.enter) {\n if (this.delay) {\n this.timeout = setTimeout(\n enterHandler.bind(\n enterHandler,\n element\n ),\n this.delay\n );\n } else {\n enterHandler(element);\n }\n }\n }\n }\n }\n }\n });\n }\n #dynPos(anchor: KupDynamicPositionAnchor) {\n if (dom.ketchup.dynamicPosition.isRegistered(this.element)) {\n dom.ketchup.dynamicPosition.changeAnchor(this.element, anchor);\n } else {\n dom.ketchup.dynamicPosition.register(\n this.element as KupDynamicPositionElement,\n anchor,\n null,\n null,\n true\n );\n }\n dom.ketchup.dynamicPosition.start(this.element);\n }\n #create(options?: Partial<HTMLKupCardElement>) {\n this.element = document.createElement('kup-card');\n this.element.id = 'kup-tooltip';\n this.element.isMenu = true;\n this.element.layoutNumber = 15;\n this.element.sizeX = 'auto';\n this.element.sizeY = 'auto';\n if (options) {\n this.#setOptions(options);\n }\n document.body.appendChild(this.element);\n this.#clickCb = {\n cb: () => {\n this.hide();\n },\n el: this.element,\n };\n }\n #setOptions(options: Partial<HTMLKupCardElement>) {\n for (const key in options) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n const prop = options[key];\n this.element[key] = prop;\n }\n }\n }\n /**\n * Destroys the tooltip.\n */\n destroy() {\n if (this.element) {\n this.element.remove();\n this.element = null;\n }\n }\n /**\n * Hides the tooltip.\n */\n hide() {\n if (this.element) {\n this.element.menuVisible = false;\n dom.ketchup.dynamicPosition.stop(this.element);\n dom.ketchup.removeClickCallback(this.#clickCb);\n if (this.modal) {\n dom.ketchup.interact.hideModalBackdrop();\n }\n }\n }\n /**\n * Displays the tooltip.\n * @param {KupDynamicPositionAnchor} anchor - Anchor point of the tooltip: HTML element or x/y coordinates.\n * @param {Partial<HTMLKupCardElement>} options - Props/attributes of the tooltip.\n */\n show(\n anchor?: KupDynamicPositionAnchor,\n options?: Partial<HTMLKupCardElement>\n ) {\n // Creates the card or updates it with new options\n if (!this.element) {\n this.#create(options);\n } else if (options) {\n this.#setOptions(options);\n }\n // If an anchor was provided, initializes or updates dynamic positioning\n if (anchor) {\n this.#dynPos(anchor);\n }\n // If the tooltip is already visible, it's pointless to go on\n if (this.element.menuVisible) {\n return;\n }\n // If the dynamic positioning is still to be registered, a warning is thrown\n if (!dom.ketchup.dynamicPosition.isRegistered(this.element)) {\n dom.ketchup.debug.logMessage(\n 'kup-tooltip',\n 'Unable to display KupTooltip without specifying a valid anchor point.',\n KupDebugCategory.WARNING\n );\n return;\n }\n if (this.modal) {\n dom.ketchup.interact.showModalBackdrop(() => {\n this.#clickCb.cb();\n }, true);\n }\n this.element.menuVisible = true;\n // Adding the click callback for tooltip\n dom.ketchup.addClickCallback(this.#clickCb, true);\n }\n /**\n * Returns whether an element was previously registered or not.\n * @param {KupTooltipAnchor} element - Element to test.\n * @returns {boolean} True if the element was registered.\n */\n isRegistered(element: KupTooltipAnchor): boolean {\n return !this.managedElements\n ? false\n : this.managedElements.has(element);\n }\n /**\n * Registers an HTMLElement as KupTooltipAnchor, triggering callback invocation on mouse over.\n * @param {KupTooltipAnchor} element - The HTML element to be registered.\n * @param {KupTooltipCallbacks} options - Optional callbacks.\n */\n register(element: KupTooltipAnchor, options?: KupTooltipCallbacks): void {\n this.managedElements.add(element);\n if (options !== null && options) {\n element.kupTooltip = options;\n }\n }\n /**\n * Unregisters an HTMLElement, preventing its attached callback from being invoked.\n *\n * @param {KupTooltipAnchor} element - - The HTML element to be unregistered.\n */\n unregister(element: KupTooltipAnchor): void {\n if (this.managedElements) {\n this.managedElements.delete(element);\n }\n }\n}\n","/*!\n * html2canvas 1.4.1 <https://html2canvas.hertzen.com>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n }\r\n\r\n function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n }\n\n var Bounds = /** @class */ (function () {\n function Bounds(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n }\n Bounds.prototype.add = function (x, y, w, h) {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n };\n Bounds.fromClientRect = function (context, clientRect) {\n return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\n };\n Bounds.fromDOMRectList = function (context, domRectList) {\n var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });\n return domRect\n ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)\n : Bounds.EMPTY;\n };\n Bounds.EMPTY = new Bounds(0, 0, 0, 0);\n return Bounds;\n }());\n var parseBounds = function (context, node) {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n };\n var parseDocumentSize = function (document) {\n var body = document.body;\n var documentElement = document.documentElement;\n if (!body || !documentElement) {\n throw new Error(\"Unable to get document size\");\n }\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n return new Bounds(0, 0, width, height);\n };\n\n /*\n * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var toCodePoints$1 = function (str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n codePoints.push(value);\n i--;\n }\n }\n else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n var fromCodePoint$1 = function () {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n var length = codePoints.length;\n if (!length) {\n return '';\n }\n var codeUnits = [];\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n }\n else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\n lookup$2[chars$2.charCodeAt(i$2)] = i$2;\n }\n\n /*\n * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\n lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\n }\n var decode$1 = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var buffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$1$1[base64.charCodeAt(i)];\n encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\n encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\n encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return buffer;\n };\n var polyUint16Array$1 = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n var polyUint32Array$1 = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2$1 = 5;\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1$1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n var UTRIE2_INDEX_SHIFT$1 = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\n var slice16$1 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n var slice32$1 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n var createTrieFromBase64$1 = function (base64, _byteLength) {\n var buffer = decode$1(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2\n ? slice16$1(view16, (headerLength + view32[4]) / 2)\n : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n var Trie$1 = /** @class */ (function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n Trie.prototype.get = function (codePoint) {\n var ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n };\n return Trie;\n }());\n\n /*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$3 = 0; i$3 < chars$3.length; i$3++) {\n lookup$3[chars$3.charCodeAt(i$3)] = i$3;\n }\n\n var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\n\n var LETTER_NUMBER_MODIFIER = 50;\n // Non-tailorable Line Breaking Classes\n var BK = 1; // Cause a line break (after)\n var CR$1 = 2; // Cause a line break (after), except between CR and LF\n var LF$1 = 3; // Cause a line break (after)\n var CM = 4; // Prohibit a line break between the character and the preceding character\n var NL = 5; // Cause a line break (after)\n var WJ = 7; // Prohibit line breaks before and after\n var ZW = 8; // Provide a break opportunity\n var GL = 9; // Prohibit line breaks before and after\n var SP = 10; // Enable indirect line breaks\n var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\n // Break Opportunities\n var B2 = 12; // Provide a line break opportunity before and after the character\n var BA = 13; // Generally provide a line break opportunity after the character\n var BB = 14; // Generally provide a line break opportunity before the character\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\n var CB = 16; // Provide a line break opportunity contingent on additional information\n // Characters Prohibiting Certain Breaks\n var CL = 17; // Prohibit line breaks before\n var CP = 18; // Prohibit line breaks before\n var EX = 19; // Prohibit line breaks before\n var IN = 20; // Allow only indirect line breaks between pairs\n var NS = 21; // Allow only indirect line breaks before\n var OP = 22; // Prohibit line breaks after\n var QU = 23; // Act like they are both opening and closing\n // Numeric Context\n var IS = 24; // Prevent breaks after any and before numeric\n var NU = 25; // Form numeric expressions for line breaking purposes\n var PO = 26; // Do not break following a numeric expression\n var PR = 27; // Do not break in front of a numeric expression\n var SY = 28; // Prevent a break before; and allow a break after\n // Other Characters\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\n var EB = 32; // Do not break from following Emoji Modifier\n var EM = 33; // Do not break from preceding Emoji Base\n var H2 = 34; // Form Korean syllable blocks\n var H3 = 35; // Form Korean syllable blocks\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\n var ID = 37; // Break before or after; except in some numeric context\n var JL = 38; // Form Korean syllable blocks\n var JV = 39; // Form Korean syllable blocks\n var JT = 40; // Form Korean syllable blocks\n var RI$1 = 41; // Keep pairs together. For pairs; break before and after other classes\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n var ea_OP = [0x2329, 0xff08];\n var BREAK_MANDATORY = '!';\n var BREAK_NOT_ALLOWED$1 = '×';\n var BREAK_ALLOWED$1 = '÷';\n var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\n var ALPHABETICS = [AL, HL];\n var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\n var SPACE$1 = [SP, ZW];\n var PREFIX_POSTFIX = [PR, PO];\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n var HYPHEN = [HY, BA];\n var codePointsToCharacterClasses = function (codePoints, lineBreak) {\n if (lineBreak === void 0) { lineBreak = 'strict'; }\n var types = [];\n var indices = [];\n var categories = [];\n codePoints.forEach(function (codePoint, index) {\n var classType = UnicodeTrie$1.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n }\n else {\n categories.push(false);\n }\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n if (classType === CM || classType === ZWJ$1) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n var prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n indices.push(index);\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n if (classType === SA) {\n return types.push(AL);\n }\n if (classType === AI) {\n return types.push(AL);\n }\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n }\n else {\n return types.push(AL);\n }\n }\n types.push(classType);\n });\n return [indices, types, categories];\n };\n var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\n var current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n var i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n var next = classTypes[i];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (current === SP) {\n var i = currentIndex;\n while (i > 0) {\n i--;\n var prev = classTypes[i];\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n var n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n var next = classTypes[n];\n if (next === b) {\n return true;\n }\n if (next !== SP) {\n break;\n }\n }\n }\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n };\n var previousNonSpaceClassType = function (currentIndex, classTypes) {\n var i = currentIndex;\n while (i >= 0) {\n var type = classTypes[i];\n if (type === SP) {\n i--;\n }\n else {\n return type;\n }\n }\n return 0;\n };\n var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n var currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED$1;\n }\n var beforeIndex = currentIndex - 1;\n var afterIndex = currentIndex + 1;\n var current = classTypes[currentIndex];\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n var next = classTypes[afterIndex];\n if (current === CR$1 && next === LF$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB7 Do not break before spaces or zero width space.\n if (SPACE$1.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED$1;\n }\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED$1;\n }\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED$1;\n }\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n var prevIndex = currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n }\n else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n }\n else {\n break;\n }\n }\n }\n // LB26 Do not break a Korean syllable.\n if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB27 Treat a Korean Syllable Block the same as ID.\n if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {\n return BREAK_NOT_ALLOWED$1;\n }\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI$1 && next === RI$1) {\n var i = indicies[currentIndex];\n var count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI$1) {\n count++;\n }\n else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n }\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED$1;\n }\n return BREAK_ALLOWED$1;\n };\n var cssFormattedClasses = function (codePoints, options) {\n if (!options) {\n options = { lineBreak: 'normal', wordBreak: 'normal' };\n }\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });\n }\n var forbiddenBreakpoints = options.wordBreak === 'keep-all'\n ? isLetterNumber.map(function (letterNumber, i) {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n return [indicies, classTypes, forbiddenBreakpoints];\n };\n var Break = /** @class */ (function () {\n function Break(codePoints, lineBreak, start, end) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n Break.prototype.slice = function () {\n return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\n };\n return Break;\n }());\n var LineBreaker = function (str, options) {\n var codePoints = toCodePoints$1(str);\n var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];\n var length = codePoints.length;\n var lastEnd = 0;\n var nextIndex = 0;\n return {\n next: function () {\n if (nextIndex >= length) {\n return { done: true, value: null };\n }\n var lineBreak = BREAK_NOT_ALLOWED$1;\n while (nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED$1) { }\n if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return { value: value, done: false };\n }\n return { done: true, value: null };\n },\n };\n };\n\n // https://www.w3.org/TR/css-syntax-3\n var FLAG_UNRESTRICTED = 1 << 0;\n var FLAG_ID = 1 << 1;\n var FLAG_INTEGER = 1 << 2;\n var FLAG_NUMBER = 1 << 3;\n var LINE_FEED = 0x000a;\n var SOLIDUS = 0x002f;\n var REVERSE_SOLIDUS = 0x005c;\n var CHARACTER_TABULATION = 0x0009;\n var SPACE = 0x0020;\n var QUOTATION_MARK = 0x0022;\n var EQUALS_SIGN = 0x003d;\n var NUMBER_SIGN = 0x0023;\n var DOLLAR_SIGN = 0x0024;\n var PERCENTAGE_SIGN = 0x0025;\n var APOSTROPHE = 0x0027;\n var LEFT_PARENTHESIS = 0x0028;\n var RIGHT_PARENTHESIS = 0x0029;\n var LOW_LINE = 0x005f;\n var HYPHEN_MINUS = 0x002d;\n var EXCLAMATION_MARK = 0x0021;\n var LESS_THAN_SIGN = 0x003c;\n var GREATER_THAN_SIGN = 0x003e;\n var COMMERCIAL_AT = 0x0040;\n var LEFT_SQUARE_BRACKET = 0x005b;\n var RIGHT_SQUARE_BRACKET = 0x005d;\n var CIRCUMFLEX_ACCENT = 0x003d;\n var LEFT_CURLY_BRACKET = 0x007b;\n var QUESTION_MARK = 0x003f;\n var RIGHT_CURLY_BRACKET = 0x007d;\n var VERTICAL_LINE = 0x007c;\n var TILDE = 0x007e;\n var CONTROL = 0x0080;\n var REPLACEMENT_CHARACTER = 0xfffd;\n var ASTERISK = 0x002a;\n var PLUS_SIGN = 0x002b;\n var COMMA = 0x002c;\n var COLON = 0x003a;\n var SEMICOLON = 0x003b;\n var FULL_STOP = 0x002e;\n var NULL = 0x0000;\n var BACKSPACE = 0x0008;\n var LINE_TABULATION = 0x000b;\n var SHIFT_OUT = 0x000e;\n var INFORMATION_SEPARATOR_ONE = 0x001f;\n var DELETE = 0x007f;\n var EOF = -1;\n var ZERO = 0x0030;\n var a = 0x0061;\n var e = 0x0065;\n var f = 0x0066;\n var u = 0x0075;\n var z = 0x007a;\n var A = 0x0041;\n var E = 0x0045;\n var F = 0x0046;\n var U = 0x0055;\n var Z = 0x005a;\n var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };\n var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };\n var isHex = function (codePoint) {\n return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\n };\n var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };\n var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };\n var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };\n var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };\n var isWhiteSpace = function (codePoint) {\n return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\n };\n var isNameStartCodePoint = function (codePoint) {\n return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n };\n var isNameCodePoint = function (codePoint) {\n return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n };\n var isNonPrintableCodePoint = function (codePoint) {\n return ((codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE);\n };\n var isValidEscape = function (c1, c2) {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n return c2 !== LINE_FEED;\n };\n var isIdentifierStart = function (c1, c2, c3) {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n }\n else if (isNameStartCodePoint(c1)) {\n return true;\n }\n else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n };\n var isNumberStart = function (c1, c2, c3) {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n return c2 === FULL_STOP && isDigit(c3);\n }\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n return isDigit(c1);\n };\n var stringToNumber = function (codePoints) {\n var c = 0;\n var sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n var integers = [];\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n var fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n var fracd = fraction.length;\n var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n var expsign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n var exponent = [];\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n };\n var LEFT_PARENTHESIS_TOKEN = {\n type: 2 /* LEFT_PARENTHESIS_TOKEN */\n };\n var RIGHT_PARENTHESIS_TOKEN = {\n type: 3 /* RIGHT_PARENTHESIS_TOKEN */\n };\n var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };\n var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };\n var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };\n var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };\n var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };\n var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };\n var LEFT_CURLY_BRACKET_TOKEN = {\n type: 11 /* LEFT_CURLY_BRACKET_TOKEN */\n };\n var RIGHT_CURLY_BRACKET_TOKEN = {\n type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */\n };\n var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };\n var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };\n var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };\n var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };\n var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };\n var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };\n var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };\n var LEFT_SQUARE_BRACKET_TOKEN = {\n type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */\n };\n var RIGHT_SQUARE_BRACKET_TOKEN = {\n type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\n };\n var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };\n var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };\n var Tokenizer = /** @class */ (function () {\n function Tokenizer() {\n this._value = [];\n }\n Tokenizer.prototype.write = function (chunk) {\n this._value = this._value.concat(toCodePoints$1(chunk));\n };\n Tokenizer.prototype.read = function () {\n var tokens = [];\n var token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n };\n Tokenizer.prototype.consumeToken = function () {\n var codePoint = this.consumeCodePoint();\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n var value = this.consumeName();\n return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n var e1 = codePoint;\n var e2 = this.peekCodePoint(0);\n var e3 = this.peekCodePoint(1);\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n var c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n var a1 = this.peekCodePoint(0);\n var a2 = this.peekCodePoint(1);\n var a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n var value = this.consumeName();\n return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n var u1 = this.peekCodePoint(0);\n var u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };\n };\n Tokenizer.prototype.consumeCodePoint = function () {\n var value = this._value.shift();\n return typeof value === 'undefined' ? -1 : value;\n };\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n this._value.unshift(codePoint);\n };\n Tokenizer.prototype.peekCodePoint = function (delta) {\n if (delta >= this._value.length) {\n return -1;\n }\n return this._value[delta];\n };\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n var digits = [];\n var codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n if (questionMarks) {\n var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);\n var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };\n }\n var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n var endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };\n }\n else {\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };\n }\n };\n Tokenizer.prototype.consumeIdentLikeToken = function () {\n var value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n }\n else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 19 /* FUNCTION_TOKEN */, value: value };\n }\n return { type: 20 /* IDENT_TOKEN */, value: value };\n };\n Tokenizer.prototype.consumeUrlToken = function () {\n var value = [];\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF) {\n return { type: 22 /* URL_TOKEN */, value: '' };\n }\n var next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === 0 /* STRING_TOKEN */) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 22 /* URL_TOKEN */, value: stringToken.value };\n }\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n }\n else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n }\n else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n }\n else {\n value.push(codePoint);\n }\n }\n };\n Tokenizer.prototype.consumeWhiteSpace = function () {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n };\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n };\n Tokenizer.prototype.consumeStringSlice = function (count) {\n var SLICE_STACK_SIZE = 50000;\n var value = '';\n while (count > 0) {\n var amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n return value;\n };\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n var value = '';\n var i = 0;\n do {\n var codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return { type: 0 /* STRING_TOKEN */, value: value };\n }\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n if (codePoint === REVERSE_SOLIDUS) {\n var next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n }\n else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint$1(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n i++;\n } while (true);\n };\n Tokenizer.prototype.consumeNumber = function () {\n var repr = [];\n var type = FLAG_INTEGER;\n var c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n return [stringToNumber(repr), type];\n };\n Tokenizer.prototype.consumeNumericToken = function () {\n var _a = this.consumeNumber(), number = _a[0], flags = _a[1];\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n if (isIdentifierStart(c1, c2, c3)) {\n var unit = this.consumeName();\n return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };\n }\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };\n }\n return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };\n };\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\n var codePoint = this.consumeCodePoint();\n if (isHex(codePoint)) {\n var hex = fromCodePoint$1(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint$1(this.consumeCodePoint());\n }\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n var hexCodePoint = parseInt(hex, 16);\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n return hexCodePoint;\n }\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n return codePoint;\n };\n Tokenizer.prototype.consumeName = function () {\n var result = '';\n while (true) {\n var codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint$1(codePoint);\n }\n else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint$1(this.consumeEscapedCodePoint());\n }\n else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n };\n return Tokenizer;\n }());\n\n var Parser = /** @class */ (function () {\n function Parser(tokens) {\n this._tokens = tokens;\n }\n Parser.create = function (value) {\n var tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n };\n Parser.parseValue = function (value) {\n return Parser.create(value).parseComponentValue();\n };\n Parser.parseValues = function (value) {\n return Parser.create(value).parseComponentValues();\n };\n Parser.prototype.parseComponentValue = function () {\n var token = this.consumeToken();\n while (token.type === 31 /* WHITESPACE_TOKEN */) {\n token = this.consumeToken();\n }\n if (token.type === 32 /* EOF_TOKEN */) {\n throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n }\n this.reconsumeToken(token);\n var value = this.consumeComponentValue();\n do {\n token = this.consumeToken();\n } while (token.type === 31 /* WHITESPACE_TOKEN */);\n if (token.type === 32 /* EOF_TOKEN */) {\n return value;\n }\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n };\n Parser.prototype.parseComponentValues = function () {\n var values = [];\n while (true) {\n var value = this.consumeComponentValue();\n if (value.type === 32 /* EOF_TOKEN */) {\n return values;\n }\n values.push(value);\n values.push();\n }\n };\n Parser.prototype.consumeComponentValue = function () {\n var token = this.consumeToken();\n switch (token.type) {\n case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\n case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\n case 2 /* LEFT_PARENTHESIS_TOKEN */:\n return this.consumeSimpleBlock(token.type);\n case 19 /* FUNCTION_TOKEN */:\n return this.consumeFunction(token);\n }\n return token;\n };\n Parser.prototype.consumeSimpleBlock = function (type) {\n var block = { type: type, values: [] };\n var token = this.consumeToken();\n while (true) {\n if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {\n return block;\n }\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n };\n Parser.prototype.consumeFunction = function (functionToken) {\n var cssFunction = {\n name: functionToken.value,\n values: [],\n type: 18 /* FUNCTION */\n };\n while (true) {\n var token = this.consumeToken();\n if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {\n return cssFunction;\n }\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n };\n Parser.prototype.consumeToken = function () {\n var token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n };\n Parser.prototype.reconsumeToken = function (token) {\n this._tokens.unshift(token);\n };\n return Parser;\n }());\n var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };\n var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };\n var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };\n var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };\n var isIdentWithValue = function (token, value) {\n return isIdentToken(token) && token.value === value;\n };\n var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };\n var nonFunctionArgSeparator = function (token) {\n return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;\n };\n var parseFunctionArgs = function (tokens) {\n var args = [];\n var arg = [];\n tokens.forEach(function (token) {\n if (token.type === 4 /* COMMA_TOKEN */) {\n if (arg.length === 0) {\n throw new Error(\"Error parsing function args, zero tokens for arg\");\n }\n args.push(arg);\n arg = [];\n return;\n }\n if (token.type !== 31 /* WHITESPACE_TOKEN */) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n return args;\n };\n var isEndingTokenFor = function (token, type) {\n if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {\n return true;\n }\n if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {\n return true;\n }\n return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;\n };\n\n var isLength = function (token) {\n return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;\n };\n\n var isLengthPercentage = function (token) {\n return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\n };\n var parseLengthPercentageTuple = function (tokens) {\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n };\n var ZERO_LENGTH = {\n type: 17 /* NUMBER_TOKEN */,\n number: 0,\n flags: FLAG_INTEGER\n };\n var FIFTY_PERCENT = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 50,\n flags: FLAG_INTEGER\n };\n var HUNDRED_PERCENT = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 100,\n flags: FLAG_INTEGER\n };\n var getAbsoluteValueForTuple = function (tuple, width, height) {\n var x = tuple[0], y = tuple[1];\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n };\n var getAbsoluteValue = function (token, parent) {\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n return (token.number / 100) * parent;\n }\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n return token.number;\n };\n\n var DEG = 'deg';\n var GRAD = 'grad';\n var RAD = 'rad';\n var TURN = 'turn';\n var angle = {\n name: 'angle',\n parse: function (_context, value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n throw new Error(\"Unsupported angle type\");\n }\n };\n var isAngle = function (value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n };\n var parseNamedSide = function (tokens) {\n var sideOrCorner = tokens\n .filter(isIdentToken)\n .map(function (ident) { return ident.value; })\n .join(' ');\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n return 0;\n };\n var deg = function (deg) { return (Math.PI * deg) / 180; };\n\n var color$1 = {\n name: 'color',\n parse: function (context, value) {\n if (value.type === 18 /* FUNCTION */) {\n var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n }\n return colorFunction(context, value.values);\n }\n if (value.type === 5 /* HASH_TOKEN */) {\n if (value.value.length === 3) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n if (value.value.length === 4) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n var a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n if (value.value.length === 6) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n if (value.value.length === 8) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n var a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n if (value.type === 20 /* IDENT_TOKEN */) {\n var namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n return COLORS.TRANSPARENT;\n }\n };\n var isTransparent = function (color) { return (0xff & color) === 0; };\n var asString = function (color) {\n var alpha = 0xff & color;\n var blue = 0xff & (color >> 8);\n var green = 0xff & (color >> 16);\n var red = 0xff & (color >> 24);\n return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n };\n var pack = function (r, g, b, a) {\n return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n };\n var getTokenColorValue = function (token, i) {\n if (token.type === 17 /* NUMBER_TOKEN */) {\n return token.number;\n }\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\n var max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n return 0;\n };\n var rgb = function (_context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n if (tokens.length === 3) {\n var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];\n return pack(r, g, b, 1);\n }\n if (tokens.length === 4) {\n var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];\n return pack(r, g, b, a);\n }\n return 0;\n };\n function hue2rgb(t1, t2, hue) {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n }\n else if (hue < 1 / 2) {\n return t2;\n }\n else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n }\n else {\n return t1;\n }\n }\n var hsl = function (context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];\n var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var t1 = l * 2 - t2;\n var r = hue2rgb(t1, t2, h + 1 / 3);\n var g = hue2rgb(t1, t2, h);\n var b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n };\n var SUPPORTED_COLOR_FUNCTIONS = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n };\n var parseColor = function (context, value) {\n return color$1.parse(context, Parser.create(value).parseComponentValue());\n };\n var COLORS = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n };\n\n var backgroundClip = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1 /* PADDING_BOX */;\n case 'content-box':\n return 2 /* CONTENT_BOX */;\n }\n }\n return 0 /* BORDER_BOX */;\n });\n }\n };\n\n var backgroundColor = {\n name: \"background-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var parseColorStop = function (context, args) {\n var color = color$1.parse(context, args[0]);\n var stop = args[1];\n return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };\n };\n var processColorStops = function (stops, lineLength) {\n var first = stops[0];\n var last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n var processStops = [];\n var previous = 0;\n for (var i = 0; i < stops.length; i++) {\n var stop_1 = stops[i].stop;\n if (stop_1 !== null) {\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n }\n else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n }\n else {\n processStops.push(null);\n }\n }\n var gapBegin = null;\n for (var i = 0; i < processStops.length; i++) {\n var stop_2 = processStops[i];\n if (stop_2 === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n }\n else if (gapBegin !== null) {\n var gapLength = i - gapBegin;\n var beforeGap = processStops[gapBegin - 1];\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n for (var g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n return stops.map(function (_a, i) {\n var color = _a.color;\n return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };\n });\n };\n var getAngleFromCorner = function (corner, width, height) {\n var centerX = width / 2;\n var centerY = height / 2;\n var x = getAbsoluteValue(corner[0], width) - centerX;\n var y = centerY - getAbsoluteValue(corner[1], height);\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n };\n var calculateGradientDirection = function (angle, width, height) {\n var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var halfLineLength = lineLength / 2;\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n };\n var distance = function (a, b) { return Math.sqrt(a * a + b * b); };\n var findCorner = function (width, height, x, y, closest) {\n var corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n return corners.reduce(function (stat, corner) {\n var cx = corner[0], cy = corner[1];\n var d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n return stat;\n }, {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }).optimumCorner;\n };\n var calculateRadius = function (gradient, x, y, width, height) {\n var rx = 0;\n var ry = 0;\n switch (gradient.size) {\n case 0 /* CLOSEST_SIDE */:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n case 2 /* CLOSEST_CORNER */:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n case 1 /* FARTHEST_SIDE */:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n case 3 /* FARTHEST_CORNER */:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === 0 /* CIRCLE */) {\n rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n }\n else if (gradient.shape === 1 /* ELLIPSE */) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n return [rx, ry];\n };\n\n var linearGradient = function (context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = angle.parse(context, firstToken);\n return;\n }\n }\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };\n };\n\n var prefixLinearGradient = function (context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n if (firstToken.type === 20 /* IDENT_TOKEN */ &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n angle$1 = parseNamedSide(arg);\n return;\n }\n else if (isAngle(firstToken)) {\n angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: 1 /* LINEAR_GRADIENT */\n };\n };\n\n var webkitGradient = function (context, tokens) {\n var angle = deg(180);\n var stops = [];\n var type = 1 /* LINEAR_GRADIENT */;\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = 1 /* LINEAR_GRADIENT */;\n return;\n }\n else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = 2 /* RADIAL_GRADIENT */;\n return;\n }\n }\n if (firstToken.type === 18 /* FUNCTION */) {\n if (firstToken.name === 'from') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({ stop: ZERO_LENGTH, color: color });\n }\n else if (firstToken.name === 'to') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({ stop: HUNDRED_PERCENT, color: color });\n }\n else if (firstToken.name === 'color-stop') {\n var values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n var color = color$1.parse(context, values[1]);\n var stop_1 = values[0];\n if (isNumberToken(stop_1)) {\n stops.push({\n stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },\n color: color\n });\n }\n }\n }\n }\n });\n return type === 1 /* LINEAR_GRADIENT */\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops: stops,\n type: type\n }\n : { size: size, shape: shape, stops: stops, position: position, type: type };\n };\n\n var CLOSEST_SIDE = 'closest-side';\n var FARTHEST_SIDE = 'farthest-side';\n var CLOSEST_CORNER = 'closest-corner';\n var FARTHEST_CORNER = 'farthest-corner';\n var CIRCLE = 'circle';\n var ELLIPSE = 'ellipse';\n var COVER = 'cover';\n var CONTAIN = 'contain';\n var radialGradient = function (context, tokens) {\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n var isAtPosition_1 = false;\n isColorStop = arg.reduce(function (acc, token) {\n if (isAtPosition_1) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n }\n else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = 0 /* CIRCLE */;\n return false;\n case ELLIPSE:\n shape = 1 /* ELLIPSE */;\n return false;\n case 'at':\n isAtPosition_1 = true;\n return false;\n case CLOSEST_SIDE:\n size = 0 /* CLOSEST_SIDE */;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = 1 /* FARTHEST_SIDE */;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = 2 /* CLOSEST_CORNER */;\n return false;\n case FARTHEST_CORNER:\n size = 3 /* FARTHEST_CORNER */;\n return false;\n }\n }\n else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n };\n\n var prefixRadialGradient = function (context, tokens) {\n var shape = 0 /* CIRCLE */;\n var size = 3 /* FARTHEST_CORNER */;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n }\n else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n else if (i === 1) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = 0 /* CIRCLE */;\n return false;\n case ELLIPSE:\n shape = 1 /* ELLIPSE */;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = 0 /* CLOSEST_SIDE */;\n return false;\n case FARTHEST_SIDE:\n size = 1 /* FARTHEST_SIDE */;\n return false;\n case CLOSEST_CORNER:\n size = 2 /* CLOSEST_CORNER */;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = 3 /* FARTHEST_CORNER */;\n return false;\n }\n }\n else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };\n };\n\n var isLinearGradient = function (background) {\n return background.type === 1 /* LINEAR_GRADIENT */;\n };\n var isRadialGradient = function (background) {\n return background.type === 2 /* RADIAL_GRADIENT */;\n };\n var image = {\n name: 'image',\n parse: function (context, value) {\n if (value.type === 22 /* URL_TOKEN */) {\n var image_1 = { url: value.value, type: 0 /* URL */ };\n context.cache.addImage(value.value);\n return image_1;\n }\n if (value.type === 18 /* FUNCTION */) {\n var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n }\n return imageFunction(context, value.values);\n }\n throw new Error(\"Unsupported image type \" + value.type);\n }\n };\n function isSupportedImage(value) {\n return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&\n (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));\n }\n var SUPPORTED_IMAGE_FUNCTIONS = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n };\n\n var backgroundImage = {\n name: 'background-image',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return [];\n }\n return tokens\n .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })\n .map(function (value) { return image.parse(context, value); });\n }\n };\n\n var backgroundOrigin = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1 /* PADDING_BOX */;\n case 'content-box':\n return 2 /* CONTENT_BOX */;\n }\n }\n return 0 /* BORDER_BOX */;\n });\n }\n };\n\n var backgroundPosition = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) { return values.filter(isLengthPercentage); })\n .map(parseLengthPercentageTuple);\n }\n };\n\n var backgroundRepeat = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens)\n .map(function (values) {\n return values\n .filter(isIdentToken)\n .map(function (token) { return token.value; })\n .join(' ');\n })\n .map(parseBackgroundRepeat);\n }\n };\n var parseBackgroundRepeat = function (value) {\n switch (value) {\n case 'no-repeat':\n return 1 /* NO_REPEAT */;\n case 'repeat-x':\n case 'repeat no-repeat':\n return 2 /* REPEAT_X */;\n case 'repeat-y':\n case 'no-repeat repeat':\n return 3 /* REPEAT_Y */;\n case 'repeat':\n default:\n return 0 /* REPEAT */;\n }\n };\n\n var BACKGROUND_SIZE;\n (function (BACKGROUND_SIZE) {\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\n var backgroundSize = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });\n }\n };\n var isBackgroundSizeInfoToken = function (value) {\n return isIdentToken(value) || isLengthPercentage(value);\n };\n\n var borderColorForSide = function (side) { return ({\n name: \"border-\" + side + \"-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n }); };\n var borderTopColor = borderColorForSide('top');\n var borderRightColor = borderColorForSide('right');\n var borderBottomColor = borderColorForSide('bottom');\n var borderLeftColor = borderColorForSide('left');\n\n var borderRadiusForSide = function (side) { return ({\n name: \"border-radius-\" + side,\n initialValue: '0 0',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n }\n }); };\n var borderTopLeftRadius = borderRadiusForSide('top-left');\n var borderTopRightRadius = borderRadiusForSide('top-right');\n var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n\n var borderStyleForSide = function (side) { return ({\n name: \"border-\" + side + \"-style\",\n initialValue: 'solid',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, style) {\n switch (style) {\n case 'none':\n return 0 /* NONE */;\n case 'dashed':\n return 2 /* DASHED */;\n case 'dotted':\n return 3 /* DOTTED */;\n case 'double':\n return 4 /* DOUBLE */;\n }\n return 1 /* SOLID */;\n }\n }); };\n var borderTopStyle = borderStyleForSide('top');\n var borderRightStyle = borderStyleForSide('right');\n var borderBottomStyle = borderStyleForSide('bottom');\n var borderLeftStyle = borderStyleForSide('left');\n\n var borderWidthForSide = function (side) { return ({\n name: \"border-\" + side + \"-width\",\n initialValue: '0',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n }); };\n var borderTopWidth = borderWidthForSide('top');\n var borderRightWidth = borderWidthForSide('right');\n var borderBottomWidth = borderWidthForSide('bottom');\n var borderLeftWidth = borderWidthForSide('left');\n\n var color = {\n name: \"color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var direction = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, direction) {\n switch (direction) {\n case 'rtl':\n return 1 /* RTL */;\n case 'ltr':\n default:\n return 0 /* LTR */;\n }\n }\n };\n\n var display = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\n return bit | parseDisplayValue(token.value);\n }, 0 /* NONE */);\n }\n };\n var parseDisplayValue = function (display) {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return 2 /* BLOCK */;\n case 'inline':\n return 4 /* INLINE */;\n case 'run-in':\n return 8 /* RUN_IN */;\n case 'flow':\n return 16 /* FLOW */;\n case 'flow-root':\n return 32 /* FLOW_ROOT */;\n case 'table':\n return 64 /* TABLE */;\n case 'flex':\n case '-webkit-flex':\n return 128 /* FLEX */;\n case 'grid':\n case '-ms-grid':\n return 256 /* GRID */;\n case 'ruby':\n return 512 /* RUBY */;\n case 'subgrid':\n return 1024 /* SUBGRID */;\n case 'list-item':\n return 2048 /* LIST_ITEM */;\n case 'table-row-group':\n return 4096 /* TABLE_ROW_GROUP */;\n case 'table-header-group':\n return 8192 /* TABLE_HEADER_GROUP */;\n case 'table-footer-group':\n return 16384 /* TABLE_FOOTER_GROUP */;\n case 'table-row':\n return 32768 /* TABLE_ROW */;\n case 'table-cell':\n return 65536 /* TABLE_CELL */;\n case 'table-column-group':\n return 131072 /* TABLE_COLUMN_GROUP */;\n case 'table-column':\n return 262144 /* TABLE_COLUMN */;\n case 'table-caption':\n return 524288 /* TABLE_CAPTION */;\n case 'ruby-base':\n return 1048576 /* RUBY_BASE */;\n case 'ruby-text':\n return 2097152 /* RUBY_TEXT */;\n case 'ruby-base-container':\n return 4194304 /* RUBY_BASE_CONTAINER */;\n case 'ruby-text-container':\n return 8388608 /* RUBY_TEXT_CONTAINER */;\n case 'contents':\n return 16777216 /* CONTENTS */;\n case 'inline-block':\n return 33554432 /* INLINE_BLOCK */;\n case 'inline-list-item':\n return 67108864 /* INLINE_LIST_ITEM */;\n case 'inline-table':\n return 134217728 /* INLINE_TABLE */;\n case 'inline-flex':\n return 268435456 /* INLINE_FLEX */;\n case 'inline-grid':\n return 536870912 /* INLINE_GRID */;\n }\n return 0 /* NONE */;\n };\n\n var float = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, float) {\n switch (float) {\n case 'left':\n return 1 /* LEFT */;\n case 'right':\n return 2 /* RIGHT */;\n case 'inline-start':\n return 3 /* INLINE_START */;\n case 'inline-end':\n return 4 /* INLINE_END */;\n }\n return 0 /* NONE */;\n }\n };\n\n var letterSpacing = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {\n return 0;\n }\n if (token.type === 17 /* NUMBER_TOKEN */) {\n return token.number;\n }\n if (token.type === 15 /* DIMENSION_TOKEN */) {\n return token.number;\n }\n return 0;\n }\n };\n\n var LINE_BREAK;\n (function (LINE_BREAK) {\n LINE_BREAK[\"NORMAL\"] = \"normal\";\n LINE_BREAK[\"STRICT\"] = \"strict\";\n })(LINE_BREAK || (LINE_BREAK = {}));\n var lineBreak = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, lineBreak) {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n };\n\n var lineHeight = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: 4 /* TOKEN_VALUE */\n };\n var computeLineHeight = function (token, fontSize) {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n }\n else if (token.type === 17 /* NUMBER_TOKEN */) {\n return fontSize * token.number;\n }\n else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n return fontSize;\n };\n\n var listStyleImage = {\n name: 'list-style-image',\n initialValue: 'none',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n return null;\n }\n return image.parse(context, token);\n }\n };\n\n var listStylePosition = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, position) {\n switch (position) {\n case 'inside':\n return 0 /* INSIDE */;\n case 'outside':\n default:\n return 1 /* OUTSIDE */;\n }\n }\n };\n\n var listStyleType = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, type) {\n switch (type) {\n case 'disc':\n return 0 /* DISC */;\n case 'circle':\n return 1 /* CIRCLE */;\n case 'square':\n return 2 /* SQUARE */;\n case 'decimal':\n return 3 /* DECIMAL */;\n case 'cjk-decimal':\n return 4 /* CJK_DECIMAL */;\n case 'decimal-leading-zero':\n return 5 /* DECIMAL_LEADING_ZERO */;\n case 'lower-roman':\n return 6 /* LOWER_ROMAN */;\n case 'upper-roman':\n return 7 /* UPPER_ROMAN */;\n case 'lower-greek':\n return 8 /* LOWER_GREEK */;\n case 'lower-alpha':\n return 9 /* LOWER_ALPHA */;\n case 'upper-alpha':\n return 10 /* UPPER_ALPHA */;\n case 'arabic-indic':\n return 11 /* ARABIC_INDIC */;\n case 'armenian':\n return 12 /* ARMENIAN */;\n case 'bengali':\n return 13 /* BENGALI */;\n case 'cambodian':\n return 14 /* CAMBODIAN */;\n case 'cjk-earthly-branch':\n return 15 /* CJK_EARTHLY_BRANCH */;\n case 'cjk-heavenly-stem':\n return 16 /* CJK_HEAVENLY_STEM */;\n case 'cjk-ideographic':\n return 17 /* CJK_IDEOGRAPHIC */;\n case 'devanagari':\n return 18 /* DEVANAGARI */;\n case 'ethiopic-numeric':\n return 19 /* ETHIOPIC_NUMERIC */;\n case 'georgian':\n return 20 /* GEORGIAN */;\n case 'gujarati':\n return 21 /* GUJARATI */;\n case 'gurmukhi':\n return 22 /* GURMUKHI */;\n case 'hebrew':\n return 22 /* HEBREW */;\n case 'hiragana':\n return 23 /* HIRAGANA */;\n case 'hiragana-iroha':\n return 24 /* HIRAGANA_IROHA */;\n case 'japanese-formal':\n return 25 /* JAPANESE_FORMAL */;\n case 'japanese-informal':\n return 26 /* JAPANESE_INFORMAL */;\n case 'kannada':\n return 27 /* KANNADA */;\n case 'katakana':\n return 28 /* KATAKANA */;\n case 'katakana-iroha':\n return 29 /* KATAKANA_IROHA */;\n case 'khmer':\n return 30 /* KHMER */;\n case 'korean-hangul-formal':\n return 31 /* KOREAN_HANGUL_FORMAL */;\n case 'korean-hanja-formal':\n return 32 /* KOREAN_HANJA_FORMAL */;\n case 'korean-hanja-informal':\n return 33 /* KOREAN_HANJA_INFORMAL */;\n case 'lao':\n return 34 /* LAO */;\n case 'lower-armenian':\n return 35 /* LOWER_ARMENIAN */;\n case 'malayalam':\n return 36 /* MALAYALAM */;\n case 'mongolian':\n return 37 /* MONGOLIAN */;\n case 'myanmar':\n return 38 /* MYANMAR */;\n case 'oriya':\n return 39 /* ORIYA */;\n case 'persian':\n return 40 /* PERSIAN */;\n case 'simp-chinese-formal':\n return 41 /* SIMP_CHINESE_FORMAL */;\n case 'simp-chinese-informal':\n return 42 /* SIMP_CHINESE_INFORMAL */;\n case 'tamil':\n return 43 /* TAMIL */;\n case 'telugu':\n return 44 /* TELUGU */;\n case 'thai':\n return 45 /* THAI */;\n case 'tibetan':\n return 46 /* TIBETAN */;\n case 'trad-chinese-formal':\n return 47 /* TRAD_CHINESE_FORMAL */;\n case 'trad-chinese-informal':\n return 48 /* TRAD_CHINESE_INFORMAL */;\n case 'upper-armenian':\n return 49 /* UPPER_ARMENIAN */;\n case 'disclosure-open':\n return 50 /* DISCLOSURE_OPEN */;\n case 'disclosure-closed':\n return 51 /* DISCLOSURE_CLOSED */;\n case 'none':\n default:\n return -1 /* NONE */;\n }\n }\n };\n\n var marginForSide = function (side) { return ({\n name: \"margin-\" + side,\n initialValue: '0',\n prefix: false,\n type: 4 /* TOKEN_VALUE */\n }); };\n var marginTop = marginForSide('top');\n var marginRight = marginForSide('right');\n var marginBottom = marginForSide('bottom');\n var marginLeft = marginForSide('left');\n\n var overflow = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).map(function (overflow) {\n switch (overflow.value) {\n case 'hidden':\n return 1 /* HIDDEN */;\n case 'scroll':\n return 2 /* SCROLL */;\n case 'clip':\n return 3 /* CLIP */;\n case 'auto':\n return 4 /* AUTO */;\n case 'visible':\n default:\n return 0 /* VISIBLE */;\n }\n });\n }\n };\n\n var overflowWrap = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, overflow) {\n switch (overflow) {\n case 'break-word':\n return \"break-word\" /* BREAK_WORD */;\n case 'normal':\n default:\n return \"normal\" /* NORMAL */;\n }\n }\n };\n\n var paddingForSide = function (side) { return ({\n name: \"padding-\" + side,\n initialValue: '0',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'length-percentage'\n }); };\n var paddingTop = paddingForSide('top');\n var paddingRight = paddingForSide('right');\n var paddingBottom = paddingForSide('bottom');\n var paddingLeft = paddingForSide('left');\n\n var textAlign = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, textAlign) {\n switch (textAlign) {\n case 'right':\n return 2 /* RIGHT */;\n case 'center':\n case 'justify':\n return 1 /* CENTER */;\n case 'left':\n default:\n return 0 /* LEFT */;\n }\n }\n };\n\n var position = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, position) {\n switch (position) {\n case 'relative':\n return 1 /* RELATIVE */;\n case 'absolute':\n return 2 /* ABSOLUTE */;\n case 'fixed':\n return 3 /* FIXED */;\n case 'sticky':\n return 4 /* STICKY */;\n }\n return 0 /* STATIC */;\n }\n };\n\n var textShadow = {\n name: 'text-shadow',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else {\n shadow.blur = token;\n }\n c++;\n }\n else {\n shadow.color = color$1.parse(context, token);\n }\n }\n return shadow;\n });\n }\n };\n\n var textTransform = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, textTransform) {\n switch (textTransform) {\n case 'uppercase':\n return 2 /* UPPERCASE */;\n case 'lowercase':\n return 1 /* LOWERCASE */;\n case 'capitalize':\n return 3 /* CAPITALIZE */;\n }\n return 0 /* NONE */;\n }\n };\n\n var transform$1 = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {\n return null;\n }\n if (token.type === 18 /* FUNCTION */) {\n var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n }\n return transformFunction(token.values);\n }\n return null;\n }\n };\n var matrix = function (args) {\n var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n return values.length === 6 ? values : null;\n };\n // doesn't support 3D transforms at the moment\n var matrix3d = function (args) {\n var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });\n var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15];\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n };\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\n matrix: matrix,\n matrix3d: matrix3d\n };\n\n var DEFAULT_VALUE = {\n type: 16 /* PERCENTAGE_TOKEN */,\n number: 50,\n flags: FLAG_INTEGER\n };\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n var transformOrigin = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var origins = tokens.filter(isLengthPercentage);\n if (origins.length !== 2) {\n return DEFAULT;\n }\n return [origins[0], origins[1]];\n }\n };\n\n var visibility = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, visibility) {\n switch (visibility) {\n case 'hidden':\n return 1 /* HIDDEN */;\n case 'collapse':\n return 2 /* COLLAPSE */;\n case 'visible':\n default:\n return 0 /* VISIBLE */;\n }\n }\n };\n\n var WORD_BREAK;\n (function (WORD_BREAK) {\n WORD_BREAK[\"NORMAL\"] = \"normal\";\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n })(WORD_BREAK || (WORD_BREAK = {}));\n var wordBreak = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, wordBreak) {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n };\n\n var zIndex = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: 0 /* VALUE */,\n parse: function (_context, token) {\n if (token.type === 20 /* IDENT_TOKEN */) {\n return { auto: true, order: 0 };\n }\n if (isNumberToken(token)) {\n return { auto: false, order: token.number };\n }\n throw new Error(\"Invalid z-index number parsed\");\n }\n };\n\n var time = {\n name: 'time',\n parse: function (_context, value) {\n if (value.type === 15 /* DIMENSION_TOKEN */) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n throw new Error(\"Unsupported time type\");\n }\n };\n\n var opacity = {\n name: 'opacity',\n initialValue: '1',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n };\n\n var textDecorationColor = {\n name: \"text-decoration-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var textDecorationLine = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n return tokens\n .filter(isIdentToken)\n .map(function (token) {\n switch (token.value) {\n case 'underline':\n return 1 /* UNDERLINE */;\n case 'overline':\n return 2 /* OVERLINE */;\n case 'line-through':\n return 3 /* LINE_THROUGH */;\n case 'none':\n return 4 /* BLINK */;\n }\n return 0 /* NONE */;\n })\n .filter(function (line) { return line !== 0 /* NONE */; });\n }\n };\n\n var fontFamily = {\n name: \"font-family\",\n initialValue: '',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var accumulator = [];\n var results = [];\n tokens.forEach(function (token) {\n switch (token.type) {\n case 20 /* IDENT_TOKEN */:\n case 0 /* STRING_TOKEN */:\n accumulator.push(token.value);\n break;\n case 17 /* NUMBER_TOKEN */:\n accumulator.push(token.number.toString());\n break;\n case 4 /* COMMA_TOKEN */:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map(function (result) { return (result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\"); });\n }\n };\n\n var fontSize = {\n name: \"font-size\",\n initialValue: '0',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'length'\n };\n\n var fontWeight = {\n name: 'font-weight',\n initialValue: 'normal',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n return 400;\n }\n };\n\n var fontVariant = {\n name: 'font-variant',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n return tokens.filter(isIdentToken).map(function (token) { return token.value; });\n }\n };\n\n var fontStyle = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: 2 /* IDENT_VALUE */,\n parse: function (_context, overflow) {\n switch (overflow) {\n case 'oblique':\n return \"oblique\" /* OBLIQUE */;\n case 'italic':\n return \"italic\" /* ITALIC */;\n case 'normal':\n default:\n return \"normal\" /* NORMAL */;\n }\n }\n };\n\n var contains = function (bit, value) { return (bit & value) !== 0; };\n\n var content = {\n name: 'content',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return [];\n }\n return tokens;\n }\n };\n\n var counterIncrement = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return null;\n }\n var increments = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (counter.type === 20 /* IDENT_TOKEN */) {\n var increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({ counter: counter.value, increment: increment });\n }\n }\n return increments;\n }\n };\n\n var counterReset = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n var resets = [];\n var filtered = tokens.filter(nonWhiteSpace);\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n var reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({ counter: counter.value, reset: reset });\n }\n }\n return resets;\n }\n };\n\n var duration = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (context, tokens) {\n return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });\n }\n };\n\n var quotes = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n var first = tokens[0];\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {\n return null;\n }\n var quotes = [];\n var filtered = tokens.filter(isStringToken);\n if (filtered.length % 2 !== 0) {\n return null;\n }\n for (var i = 0; i < filtered.length; i += 2) {\n var open_1 = filtered[i].value;\n var close_1 = filtered[i + 1].value;\n quotes.push({ open: open_1, close: close_1 });\n }\n return quotes;\n }\n };\n var getQuote = function (quotes, depth, open) {\n if (!quotes) {\n return '';\n }\n var quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n return open ? quote.open : quote.close;\n };\n\n var boxShadow = {\n name: 'box-shadow',\n initialValue: 'none',\n type: 1 /* LIST */,\n prefix: false,\n parse: function (context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n var c = 0;\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n }\n else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n }\n else if (c === 1) {\n shadow.offsetY = token;\n }\n else if (c === 2) {\n shadow.blur = token;\n }\n else {\n shadow.spread = token;\n }\n c++;\n }\n else {\n shadow.color = color$1.parse(context, token);\n }\n }\n return shadow;\n });\n }\n };\n\n var paintOrder = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: 1 /* LIST */,\n parse: function (_context, tokens) {\n var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\n var layers = [];\n tokens.filter(isIdentToken).forEach(function (token) {\n switch (token.value) {\n case 'stroke':\n layers.push(1 /* STROKE */);\n break;\n case 'fill':\n layers.push(0 /* FILL */);\n break;\n case 'markers':\n layers.push(2 /* MARKERS */);\n break;\n }\n });\n DEFAULT_VALUE.forEach(function (value) {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n return layers;\n }\n };\n\n var webkitTextStrokeColor = {\n name: \"-webkit-text-stroke-color\",\n initialValue: 'currentcolor',\n prefix: false,\n type: 3 /* TYPE_VALUE */,\n format: 'color'\n };\n\n var webkitTextStrokeWidth = {\n name: \"-webkit-text-stroke-width\",\n initialValue: '0',\n type: 0 /* VALUE */,\n prefix: false,\n parse: function (_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n };\n\n var CSSParsedDeclaration = /** @class */ (function () {\n function CSSParsedDeclaration(context, declaration) {\n var _a, _b;\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n var overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\n this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform$1, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n CSSParsedDeclaration.prototype.isVisible = function () {\n return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;\n };\n CSSParsedDeclaration.prototype.isTransparent = function () {\n return isTransparent(this.backgroundColor);\n };\n CSSParsedDeclaration.prototype.isTransformed = function () {\n return this.transform !== null;\n };\n CSSParsedDeclaration.prototype.isPositioned = function () {\n return this.position !== 0 /* STATIC */;\n };\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n return this.isPositioned() && !this.zIndex.auto;\n };\n CSSParsedDeclaration.prototype.isFloating = function () {\n return this.float !== 0 /* NONE */;\n };\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\n return (contains(this.display, 4 /* INLINE */) ||\n contains(this.display, 33554432 /* INLINE_BLOCK */) ||\n contains(this.display, 268435456 /* INLINE_FLEX */) ||\n contains(this.display, 536870912 /* INLINE_GRID */) ||\n contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\n contains(this.display, 134217728 /* INLINE_TABLE */));\n };\n return CSSParsedDeclaration;\n }());\n var CSSParsedPseudoDeclaration = /** @class */ (function () {\n function CSSParsedPseudoDeclaration(context, declaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n return CSSParsedPseudoDeclaration;\n }());\n var CSSParsedCounterDeclaration = /** @class */ (function () {\n function CSSParsedCounterDeclaration(context, declaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n return CSSParsedCounterDeclaration;\n }());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parse = function (context, descriptor, style) {\n var tokenizer = new Tokenizer();\n var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n var parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case 2 /* IDENT_VALUE */:\n var token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case 0 /* VALUE */:\n return descriptor.parse(context, parser.parseComponentValue());\n case 1 /* LIST */:\n return descriptor.parse(context, parser.parseComponentValues());\n case 4 /* TOKEN_VALUE */:\n return parser.parseComponentValue();\n case 3 /* TYPE_VALUE */:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return color$1.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n var length_1 = parser.parseComponentValue();\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\n case 'length-percentage':\n var value_1 = parser.parseComponentValue();\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n };\n\n var elementDebuggerAttribute = 'data-html2canvas-debug';\n var getElementDebugType = function (element) {\n var attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return 1 /* ALL */;\n case 'clone':\n return 2 /* CLONE */;\n case 'parse':\n return 3 /* PARSE */;\n case 'render':\n return 4 /* RENDER */;\n default:\n return 0 /* NONE */;\n }\n };\n var isDebugging = function (element, type) {\n var elementType = getElementDebugType(element);\n return elementType === 1 /* ALL */ || type === elementType;\n };\n\n var ElementContainer = /** @class */ (function () {\n function ElementContainer(context, element) {\n this.context = context;\n this.textNodes = [];\n this.elements = [];\n this.flags = 0;\n if (isDebugging(element, 3 /* PARSE */)) {\n debugger;\n }\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {\n element.style.animationDuration = '0s';\n }\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n this.bounds = parseBounds(this.context, element);\n if (isDebugging(element, 4 /* RENDER */)) {\n this.flags |= 16 /* DEBUG_RENDER */;\n }\n }\n return ElementContainer;\n }());\n\n /*\n * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\n\n /*\n * utrie 1.0.2 <https://github.com/niklasvh/utrie>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\n lookup$1[chars$1.charCodeAt(i$1)] = i$1;\n }\n var decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var buffer = typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$1[base64.charCodeAt(i)];\n encoded2 = lookup$1[base64.charCodeAt(i + 1)];\n encoded3 = lookup$1[base64.charCodeAt(i + 2)];\n encoded4 = lookup$1[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return buffer;\n };\n var polyUint16Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n var polyUint32Array = function (buffer) {\n var length = buffer.length;\n var bytes = [];\n for (var i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n };\n\n /** Shift size for getting the index-2 table offset. */\n var UTRIE2_SHIFT_2 = 5;\n /** Shift size for getting the index-1 table offset. */\n var UTRIE2_SHIFT_1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n var UTRIE2_INDEX_SHIFT = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n /** Number of entries in a data block. 32=0x20 */\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n /** Mask for getting the lower bits for the in-data-block offset. */\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n /** Number of entries in an index-2 block. 64=0x40 */\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n var slice16 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n var slice32 = function (view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n var createTrieFromBase64 = function (base64, _byteLength) {\n var buffer = decode(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n var Trie = /** @class */ (function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n Trie.prototype.get = function (codePoint) {\n var ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n };\n return Trie;\n }());\n\n /*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n var Prepend = 1;\n var CR = 2;\n var LF = 3;\n var Control = 4;\n var Extend = 5;\n var SpacingMark = 7;\n var L = 8;\n var V = 9;\n var T = 10;\n var LV = 11;\n var LVT = 12;\n var ZWJ = 13;\n var Extended_Pictographic = 14;\n var RI = 15;\n var toCodePoints = function (str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n while (i < length) {\n var value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n }\n else {\n codePoints.push(value);\n i--;\n }\n }\n else {\n codePoints.push(value);\n }\n }\n return codePoints;\n };\n var fromCodePoint = function () {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n var length = codePoints.length;\n if (!length) {\n return '';\n }\n var codeUnits = [];\n var index = -1;\n var result = '';\n while (++index < length) {\n var codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n }\n else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n var UnicodeTrie = createTrieFromBase64(base64);\n var BREAK_NOT_ALLOWED = '×';\n var BREAK_ALLOWED = '÷';\n var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };\n var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\n var prevIndex = index - 2;\n var prev = classTypes[prevIndex];\n var current = classTypes[index - 1];\n var next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n var countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n return BREAK_ALLOWED;\n };\n var GraphemeBreaker = function (str) {\n var codePoints = toCodePoints(str);\n var length = codePoints.length;\n var index = 0;\n var lastEnd = 0;\n var classTypes = codePoints.map(codePointToClass);\n return {\n next: function () {\n if (index >= length) {\n return { done: true, value: null };\n }\n var graphemeBreak = BREAK_NOT_ALLOWED;\n while (index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return { value: value, done: false };\n }\n return { done: true, value: null };\n },\n };\n };\n var splitGraphemes = function (str) {\n var breaker = GraphemeBreaker(str);\n var graphemes = [];\n var bk;\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n return graphemes;\n };\n\n var testRangeBounds = function (document) {\n var TEST_HEIGHT = 123;\n if (document.createRange) {\n var range = document.createRange();\n if (range.getBoundingClientRect) {\n var testElement = document.createElement('boundtest');\n testElement.style.height = TEST_HEIGHT + \"px\";\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n range.selectNode(testElement);\n var rangeBounds = range.getBoundingClientRect();\n var rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n return false;\n };\n var testIOSLineBreak = function (document) {\n var testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n var range = document.createRange();\n testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n var node = testElement.firstChild;\n var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });\n var offset = 0;\n var prev = {};\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n var supports = textList.every(function (text, i) {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n var rect = range.getBoundingClientRect();\n offset += text.length;\n var boundAhead = rect.x > prev.x || rect.y > prev.y;\n prev = rect;\n if (i === 0) {\n return true;\n }\n return boundAhead;\n });\n document.body.removeChild(testElement);\n return supports;\n };\n var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };\n var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };\n var testSVG = function (document) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n img.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n }\n catch (e) {\n return false;\n }\n return true;\n };\n var isGreenPixel = function (data) {\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n };\n var testForeignObject = function (document) {\n var canvas = document.createElement('canvas');\n var size = 100;\n canvas.width = size;\n canvas.height = size;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n var img = new Image();\n var greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n return loadSerializedSVG$1(svg)\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n var data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n var node = document.createElement('div');\n node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n node.style.height = size + \"px\";\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(function () { return false; });\n };\n var createForeignObjectSVG = function (width, height, x, y, node) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svg;\n };\n var loadSerializedSVG$1 = function (svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n var FEATURES = {\n get SUPPORT_RANGE_BOUNDS() {\n var value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });\n return value;\n },\n get SUPPORT_WORD_BREAKING() {\n var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });\n return value;\n },\n get SUPPORT_SVG_DRAWING() {\n var value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });\n return value;\n },\n get SUPPORT_CORS_IMAGES() {\n var value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });\n return value;\n },\n get SUPPORT_RESPONSE_TYPE() {\n var value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });\n return value;\n },\n get SUPPORT_CORS_XHR() {\n var value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });\n return value;\n }\n };\n\n var TextBounds = /** @class */ (function () {\n function TextBounds(text, bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n return TextBounds;\n }());\n var parseTextBounds = function (context, value, styles, node) {\n var textList = breakText(value, styles);\n var textBounds = [];\n var offset = 0;\n textList.forEach(function (text) {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n var clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n var subSegments = segmentGraphemes(text);\n var subOffset_1 = 0;\n subSegments.forEach(function (subSegment) {\n textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));\n subOffset_1 += subSegment.length;\n });\n }\n else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n }\n else {\n var replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n }\n else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n return textBounds;\n };\n var getWrapperBounds = function (context, node) {\n var ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n var wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n var parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n var bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n return Bounds.EMPTY;\n };\n var createRange = function (node, offset, length) {\n var ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n var range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n };\n var segmentGraphemes = function (value) {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n }\n return splitGraphemes(value);\n };\n var segmentWords = function (value, styles) {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var segmenter = new Intl.Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });\n }\n return breakWords(value, styles);\n };\n var breakText = function (value, styles) {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n };\n // https://drafts.csswg.org/css-text/#word-separator\n var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n var breakWords = function (str, styles) {\n var breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === \"break-word\" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak\n });\n var words = [];\n var bk;\n var _loop_1 = function () {\n if (bk.value) {\n var value = bk.value.slice();\n var codePoints = toCodePoints$1(value);\n var word_1 = '';\n codePoints.forEach(function (codePoint) {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word_1 += fromCodePoint$1(codePoint);\n }\n else {\n if (word_1.length) {\n words.push(word_1);\n }\n words.push(fromCodePoint$1(codePoint));\n word_1 = '';\n }\n });\n if (word_1.length) {\n words.push(word_1);\n }\n }\n };\n while (!(bk = breaker.next()).done) {\n _loop_1();\n }\n return words;\n };\n\n var TextContainer = /** @class */ (function () {\n function TextContainer(context, node, styles) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n return TextContainer;\n }());\n var transform = function (text, transform) {\n switch (transform) {\n case 1 /* LOWERCASE */:\n return text.toLowerCase();\n case 3 /* CAPITALIZE */:\n return text.replace(CAPITALIZE, capitalize);\n case 2 /* UPPERCASE */:\n return text.toUpperCase();\n default:\n return text;\n }\n };\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n var capitalize = function (m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n return m;\n };\n\n var ImageElementContainer = /** @class */ (function (_super) {\n __extends(ImageElementContainer, _super);\n function ImageElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n _this.src = img.currentSrc || img.src;\n _this.intrinsicWidth = img.naturalWidth;\n _this.intrinsicHeight = img.naturalHeight;\n _this.context.cache.addImage(_this.src);\n return _this;\n }\n return ImageElementContainer;\n }(ElementContainer));\n\n var CanvasElementContainer = /** @class */ (function (_super) {\n __extends(CanvasElementContainer, _super);\n function CanvasElementContainer(context, canvas) {\n var _this = _super.call(this, context, canvas) || this;\n _this.canvas = canvas;\n _this.intrinsicWidth = canvas.width;\n _this.intrinsicHeight = canvas.height;\n return _this;\n }\n return CanvasElementContainer;\n }(ElementContainer));\n\n var SVGElementContainer = /** @class */ (function (_super) {\n __extends(SVGElementContainer, _super);\n function SVGElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n var s = new XMLSerializer();\n var bounds = parseBounds(context, img);\n img.setAttribute('width', bounds.width + \"px\");\n img.setAttribute('height', bounds.height + \"px\");\n _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n _this.intrinsicWidth = img.width.baseVal.value;\n _this.intrinsicHeight = img.height.baseVal.value;\n _this.context.cache.addImage(_this.svg);\n return _this;\n }\n return SVGElementContainer;\n }(ElementContainer));\n\n var LIElementContainer = /** @class */ (function (_super) {\n __extends(LIElementContainer, _super);\n function LIElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.value = element.value;\n return _this;\n }\n return LIElementContainer;\n }(ElementContainer));\n\n var OLElementContainer = /** @class */ (function (_super) {\n __extends(OLElementContainer, _super);\n function OLElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.start = element.start;\n _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n return _this;\n }\n return OLElementContainer;\n }(ElementContainer));\n\n var CHECKBOX_BORDER_RADIUS = [\n {\n type: 15 /* DIMENSION_TOKEN */,\n flags: 0,\n unit: 'px',\n number: 3\n }\n ];\n var RADIO_BORDER_RADIUS = [\n {\n type: 16 /* PERCENTAGE_TOKEN */,\n flags: 0,\n number: 50\n }\n ];\n var reformatInputBounds = function (bounds) {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n }\n else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n };\n var getInputValue = function (node) {\n var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n return value.length === 0 ? node.placeholder || '' : value;\n };\n var CHECKBOX = 'checkbox';\n var RADIO = 'radio';\n var PASSWORD = 'password';\n var INPUT_COLOR = 0x2a2a2aff;\n var InputElementContainer = /** @class */ (function (_super) {\n __extends(InputElementContainer, _super);\n function InputElementContainer(context, input) {\n var _this = _super.call(this, context, input) || this;\n _this.type = input.type.toLowerCase();\n _this.checked = input.checked;\n _this.value = getInputValue(input);\n if (_this.type === CHECKBOX || _this.type === RADIO) {\n _this.styles.backgroundColor = 0xdededeff;\n _this.styles.borderTopColor =\n _this.styles.borderRightColor =\n _this.styles.borderBottomColor =\n _this.styles.borderLeftColor =\n 0xa5a5a5ff;\n _this.styles.borderTopWidth =\n _this.styles.borderRightWidth =\n _this.styles.borderBottomWidth =\n _this.styles.borderLeftWidth =\n 1;\n _this.styles.borderTopStyle =\n _this.styles.borderRightStyle =\n _this.styles.borderBottomStyle =\n _this.styles.borderLeftStyle =\n 1 /* SOLID */;\n _this.styles.backgroundClip = [0 /* BORDER_BOX */];\n _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\n _this.bounds = reformatInputBounds(_this.bounds);\n }\n switch (_this.type) {\n case CHECKBOX:\n _this.styles.borderTopRightRadius =\n _this.styles.borderTopLeftRadius =\n _this.styles.borderBottomRightRadius =\n _this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n _this.styles.borderTopRightRadius =\n _this.styles.borderTopLeftRadius =\n _this.styles.borderBottomRightRadius =\n _this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n return _this;\n }\n return InputElementContainer;\n }(ElementContainer));\n\n var SelectElementContainer = /** @class */ (function (_super) {\n __extends(SelectElementContainer, _super);\n function SelectElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n var option = element.options[element.selectedIndex || 0];\n _this.value = option ? option.text || '' : '';\n return _this;\n }\n return SelectElementContainer;\n }(ElementContainer));\n\n var TextareaElementContainer = /** @class */ (function (_super) {\n __extends(TextareaElementContainer, _super);\n function TextareaElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n _this.value = element.value;\n return _this;\n }\n return TextareaElementContainer;\n }(ElementContainer));\n\n var IFrameElementContainer = /** @class */ (function (_super) {\n __extends(IFrameElementContainer, _super);\n function IFrameElementContainer(context, iframe) {\n var _this = _super.call(this, context, iframe) || this;\n _this.src = iframe.src;\n _this.width = parseInt(iframe.width, 10) || 0;\n _this.height = parseInt(iframe.height, 10) || 0;\n _this.backgroundColor = _this.styles.backgroundColor;\n try {\n if (iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement) {\n _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)\n : COLORS.TRANSPARENT;\n var bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)\n : COLORS.TRANSPARENT;\n _this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? _this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n }\n catch (e) { }\n return _this;\n }\n return IFrameElementContainer;\n }(ElementContainer));\n\n var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n var parseNodeTree = function (context, node, parent, root) {\n for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n }\n else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });\n }\n else {\n var container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n }\n else if (createsStackingContext(container.styles)) {\n container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\n }\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= 8 /* IS_LIST_OWNER */;\n }\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n }\n else if (!isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n };\n var createContainer = function (context, element) {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n return new ElementContainer(context, element);\n };\n var parseTree = function (context, element) {\n var container = createContainer(context, element);\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\n parseNodeTree(context, element, container, container);\n return container;\n };\n var createsRealStackingContext = function (node, container, root) {\n return (container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent()));\n };\n var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };\n var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\n var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\n var isHTMLElementNode = function (node) {\n return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n };\n var isSVGElementNode = function (element) {\n return typeof element.className === 'object';\n };\n var isLIElement = function (node) { return node.tagName === 'LI'; };\n var isOLElement = function (node) { return node.tagName === 'OL'; };\n var isInputElement = function (node) { return node.tagName === 'INPUT'; };\n var isHTMLElement = function (node) { return node.tagName === 'HTML'; };\n var isSVGElement = function (node) { return node.tagName === 'svg'; };\n var isBodyElement = function (node) { return node.tagName === 'BODY'; };\n var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };\n var isVideoElement = function (node) { return node.tagName === 'VIDEO'; };\n var isImageElement = function (node) { return node.tagName === 'IMG'; };\n var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };\n var isStyleElement = function (node) { return node.tagName === 'STYLE'; };\n var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };\n var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };\n var isSelectElement = function (node) { return node.tagName === 'SELECT'; };\n var isSlotElement = function (node) { return node.tagName === 'SLOT'; };\n // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };\n\n var CounterState = /** @class */ (function () {\n function CounterState() {\n this.counters = {};\n }\n CounterState.prototype.getCounterValue = function (name) {\n var counter = this.counters[name];\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n };\n CounterState.prototype.getCounterValues = function (name) {\n var counter = this.counters[name];\n return counter ? counter : [];\n };\n CounterState.prototype.pop = function (counters) {\n var _this = this;\n counters.forEach(function (counter) { return _this.counters[counter].pop(); });\n };\n CounterState.prototype.parse = function (style) {\n var _this = this;\n var counterIncrement = style.counterIncrement;\n var counterReset = style.counterReset;\n var canReset = true;\n if (counterIncrement !== null) {\n counterIncrement.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n var counterNames = [];\n if (canReset) {\n counterReset.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = _this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n return counterNames;\n };\n return CounterState;\n }());\n var ROMAN_UPPER = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n };\n var ARMENIAN = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n };\n var HEBREW = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n };\n var GEORGIAN = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n };\n var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n return (symbols.integers.reduce(function (string, integer, index) {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix);\n };\n var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {\n var string = '';\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n return string;\n };\n var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n return ((value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n }) +\n suffix));\n };\n var createCounterStyleFromSymbols = function (value, symbols, suffix) {\n if (suffix === void 0) { suffix = '. '; }\n var codePointRangeLength = symbols.length;\n return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);\n };\n var CJK_ZEROS = 1 << 0;\n var CJK_TEN_COEFFICIENTS = 1 << 1;\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\n }\n var tmp = Math.abs(value);\n var string = suffix;\n if (tmp === 0) {\n return numbers[0] + string;\n }\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n var coefficient = tmp % 10;\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n }\n else if (coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n }\n else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n return (value < 0 ? negativeSign : '') + string;\n };\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n var JAPANESE_NEGATIVE = 'マイナス';\n var KOREAN_NEGATIVE = '마이너스';\n var createCounterText = function (value, type, appendSuffix) {\n var defaultSuffix = appendSuffix ? '. ' : '';\n var cjkSuffix = appendSuffix ? '、' : '';\n var koreanSuffix = appendSuffix ? ', ' : '';\n var spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case 0 /* DISC */:\n return '•' + spaceSuffix;\n case 1 /* CIRCLE */:\n return '◦' + spaceSuffix;\n case 2 /* SQUARE */:\n return '◾' + spaceSuffix;\n case 5 /* DECIMAL_LEADING_ZERO */:\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? \"0\" + string : string;\n case 4 /* CJK_DECIMAL */:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case 6 /* LOWER_ROMAN */:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n case 7 /* UPPER_ROMAN */:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);\n case 8 /* LOWER_GREEK */:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case 9 /* LOWER_ALPHA */:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case 10 /* UPPER_ALPHA */:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case 11 /* ARABIC_INDIC */:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case 12 /* ARMENIAN */:\n case 49 /* UPPER_ARMENIAN */:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);\n case 35 /* LOWER_ARMENIAN */:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();\n case 13 /* BENGALI */:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case 14 /* CAMBODIAN */:\n case 30 /* KHMER */:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case 15 /* CJK_EARTHLY_BRANCH */:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case 16 /* CJK_HEAVENLY_STEM */:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case 17 /* CJK_IDEOGRAPHIC */:\n case 48 /* TRAD_CHINESE_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 47 /* TRAD_CHINESE_FORMAL */:\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 42 /* SIMP_CHINESE_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 41 /* SIMP_CHINESE_FORMAL */:\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n case 26 /* JAPANESE_INFORMAL */:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case 25 /* JAPANESE_FORMAL */:\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 31 /* KOREAN_HANGUL_FORMAL */:\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 33 /* KOREAN_HANJA_INFORMAL */:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case 32 /* KOREAN_HANJA_FORMAL */:\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n case 18 /* DEVANAGARI */:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case 20 /* GEORGIAN */:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);\n case 21 /* GUJARATI */:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case 22 /* GURMUKHI */:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case 22 /* HEBREW */:\n return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);\n case 23 /* HIRAGANA */:\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n case 24 /* HIRAGANA_IROHA */:\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n case 27 /* KANNADA */:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case 28 /* KATAKANA */:\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n case 29 /* KATAKANA_IROHA */:\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n case 34 /* LAO */:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case 37 /* MONGOLIAN */:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case 38 /* MYANMAR */:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case 39 /* ORIYA */:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case 40 /* PERSIAN */:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case 43 /* TAMIL */:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case 44 /* TELUGU */:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case 45 /* THAI */:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case 46 /* TIBETAN */:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case 3 /* DECIMAL */:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n };\n\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n var DocumentCloner = /** @class */ (function () {\n function DocumentCloner(context, element, options) {\n this.context = context;\n this.options = options;\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);\n }\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n var _this = this;\n var iframe = createIFrameContainer(ownerDocument, windowSize);\n if (!iframe.contentWindow) {\n return Promise.reject(\"Unable to find iframe window\");\n }\n var scrollX = ownerDocument.defaultView.pageXOffset;\n var scrollY = ownerDocument.defaultView.pageYOffset;\n var cloneWindow = iframe.contentWindow;\n var documentClone = cloneWindow.document;\n /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {\n var onclone, referenceElement;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);\n }\n }\n onclone = this.options.onclone;\n referenceElement = this.clonedReferenceElement;\n if (typeof referenceElement === 'undefined') {\n return [2 /*return*/, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")];\n }\n if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];\n return [4 /*yield*/, documentClone.fonts.ready];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];\n return [4 /*yield*/, imagesReady(documentClone)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n if (typeof onclone === 'function') {\n return [2 /*return*/, Promise.resolve()\n .then(function () { return onclone(documentClone, referenceElement); })\n .then(function () { return iframe; })];\n }\n return [2 /*return*/, iframe];\n }\n });\n }); });\n documentClone.open();\n documentClone.write(serializeDoctype(document.doctype) + \"<html></html>\");\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n documentClone.close();\n return iframeLoad;\n };\n DocumentCloner.prototype.createElementClone = function (node) {\n if (isDebugging(node, 2 /* CLONE */)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n var clone = node.cloneNode(false);\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n return clone;\n };\n DocumentCloner.prototype.createCustomElementClone = function (node) {\n var clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n return clone;\n };\n DocumentCloner.prototype.createStyleClone = function (node) {\n try {\n var sheet = node.sheet;\n if (sheet && sheet.cssRules) {\n var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n var style = node.cloneNode(false);\n style.textContent = css;\n return style;\n }\n }\n catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false);\n };\n DocumentCloner.prototype.createCanvasClone = function (canvas) {\n var _a;\n if (this.options.inlineImages && canvas.ownerDocument) {\n var img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n }\n catch (e) {\n this.context.logger.info(\"Unable to inline canvas contents, canvas is tainted\", canvas);\n }\n }\n var clonedCanvas = canvas.cloneNode(false);\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n var ctx = canvas.getContext('2d');\n var clonedCtx = clonedCanvas.getContext('2d');\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n }\n else {\n var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');\n if (gl) {\n var attribs = gl.getContextAttributes();\n if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {\n this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);\n }\n }\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n }\n catch (e) {\n this.context.logger.info(\"Unable to clone canvas as it is tainted\", canvas);\n }\n return clonedCanvas;\n };\n DocumentCloner.prototype.createVideoClone = function (video) {\n var canvas = video.ownerDocument.createElement('canvas');\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n var ctx = canvas.getContext('2d');\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n catch (e) {\n this.context.logger.info(\"Unable to clone video as it is tainted\", video);\n }\n var blankCanvas = video.ownerDocument.createElement('canvas');\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n };\n DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {\n if (!isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n };\n DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {\n var _this = this;\n for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n var assignedNodes = child.assignedNodes();\n if (assignedNodes.length) {\n assignedNodes.forEach(function (assignedNode) { return _this.appendChildNode(clone, assignedNode, copyStyles); });\n }\n }\n else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n };\n DocumentCloner.prototype.cloneNode = function (node, copyStyles) {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n var window = node.ownerDocument.defaultView;\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n var clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n var style = window.getComputedStyle(node);\n var styleBefore = window.getComputedStyle(node, ':before');\n var styleAfter = window.getComputedStyle(node, ':after');\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n this.counters.pop(counters);\n if ((style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles) {\n copyCSSStyles(style, clone);\n }\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n if ((isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))) {\n clone.value = node.value;\n }\n return clone;\n }\n return node.cloneNode(false);\n };\n DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {\n var _this = this;\n if (!style) {\n return;\n }\n var value = style.content;\n var document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n var declaration = new CSSParsedPseudoDeclaration(this.context, style);\n var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n declaration.content.forEach(function (token) {\n if (token.type === 0 /* STRING_TOKEN */) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n else if (token.type === 22 /* URL_TOKEN */) {\n var img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n }\n else if (token.type === 18 /* FUNCTION */) {\n if (token.name === 'attr') {\n var attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));\n }\n }\n else if (token.name === 'counter') {\n var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];\n if (counter && isIdentToken(counter)) {\n var counterState = _this.counters.getCounterValue(counter.value);\n var counterType = counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(_this.context, counterStyle.value)\n : 3 /* DECIMAL */;\n anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));\n }\n }\n else if (token.name === 'counters') {\n var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];\n if (counter && isIdentToken(counter)) {\n var counterStates = _this.counters.getCounterValues(counter.value);\n var counterType_1 = counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(_this.context, counterStyle.value)\n : 3 /* DECIMAL */;\n var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';\n var text = counterStates\n .map(function (value) { return createCounterText(value, counterType_1, false); })\n .join(separator);\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n }\n else ;\n }\n else if (token.type === 20 /* IDENT_TOKEN */) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n var newClassName = pseudoElt === PseudoElementType.BEFORE\n ? \" \" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE\n : \" \" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n }\n else {\n clone.className += newClassName;\n }\n return anonymousReplacedElement;\n };\n DocumentCloner.destroy = function (container) {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n };\n return DocumentCloner;\n }());\n var PseudoElementType;\n (function (PseudoElementType) {\n PseudoElementType[PseudoElementType[\"BEFORE\"] = 0] = \"BEFORE\";\n PseudoElementType[PseudoElementType[\"AFTER\"] = 1] = \"AFTER\";\n })(PseudoElementType || (PseudoElementType = {}));\n var createIFrameContainer = function (ownerDocument, bounds) {\n var cloneIframeContainer = ownerDocument.createElement('iframe');\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n return cloneIframeContainer;\n };\n var imageReady = function (img) {\n return new Promise(function (resolve) {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n };\n var imagesReady = function (document) {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n };\n var iframeLoader = function (iframe) {\n return new Promise(function (resolve, reject) {\n var cloneWindow = iframe.contentWindow;\n if (!cloneWindow) {\n return reject(\"No window assigned for iframe\");\n }\n var documentClone = cloneWindow.document;\n cloneWindow.onload = iframe.onload = function () {\n cloneWindow.onload = iframe.onload = null;\n var interval = setInterval(function () {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n };\n var ignoredStyleProperties = [\n 'all',\n 'd',\n 'content' // Safari shows pseudoelements if content is set\n ];\n var copyCSSStyles = function (style, target) {\n // Edge does not provide value for cssText\n for (var i = style.length - 1; i >= 0; i--) {\n var property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n };\n var serializeDoctype = function (doctype) {\n var str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n if (doctype.publicId) {\n str += \"\\\"\" + doctype.publicId + \"\\\"\";\n }\n if (doctype.systemId) {\n str += \"\\\"\" + doctype.systemId + \"\\\"\";\n }\n str += '>';\n }\n return str;\n };\n var restoreOwnerScroll = function (ownerDocument, x, y) {\n if (ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n };\n var restoreNodeScroll = function (_a) {\n var element = _a[0], x = _a[1], y = _a[2];\n element.scrollLeft = x;\n element.scrollTop = y;\n };\n var PSEUDO_BEFORE = ':before';\n var PSEUDO_AFTER = ':after';\n var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\n var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n var PSEUDO_HIDE_ELEMENT_STYLE = \"{\\n content: \\\"\\\" !important;\\n display: none !important;\\n}\";\n var createPseudoHideStyles = function (body) {\n createStyles(body, \".\" + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + \"\\n .\" + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);\n };\n var createStyles = function (body, styles) {\n var document = body.ownerDocument;\n if (document) {\n var style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n };\n\n var CacheStorage = /** @class */ (function () {\n function CacheStorage() {\n }\n CacheStorage.getOrigin = function (url) {\n var link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n };\n CacheStorage.isSameOrigin = function (src) {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n };\n CacheStorage.setContext = function (window) {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n };\n CacheStorage._origin = 'about:blank';\n return CacheStorage;\n }());\n var Cache = /** @class */ (function () {\n function Cache(context, _options) {\n this.context = context;\n this._options = _options;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._cache = {};\n }\n Cache.prototype.addImage = function (src) {\n var result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(function () {\n // prevent unhandled rejection\n });\n return result;\n }\n return result;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Cache.prototype.match = function (src) {\n return this._cache[src];\n };\n Cache.prototype.loadImage = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var isSameOrigin, useCORS, useProxy, src;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isSameOrigin = CacheStorage.isSameOrigin(key);\n useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n useProxy = !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (!isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS) {\n return [2 /*return*/];\n }\n src = key;\n if (!useProxy) return [3 /*break*/, 2];\n return [4 /*yield*/, this.proxy(src)];\n case 1:\n src = _a.sent();\n _a.label = 2;\n case 2:\n this.context.logger.debug(\"Added image \" + key.substring(0, 256));\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(function () { return resolve(img); }, 500);\n }\n if (_this._options.imageTimeout > 0) {\n setTimeout(function () { return reject(\"Timed out (\" + _this._options.imageTimeout + \"ms) loading image\"); }, _this._options.imageTimeout);\n }\n })];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Cache.prototype.has = function (key) {\n return typeof this._cache[key] !== 'undefined';\n };\n Cache.prototype.keys = function () {\n return Promise.resolve(Object.keys(this._cache));\n };\n Cache.prototype.proxy = function (src) {\n var _this = this;\n var proxy = this._options.proxy;\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n var key = src.substring(0, 256);\n return new Promise(function (resolve, reject) {\n var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n }\n else {\n var reader_1 = new FileReader();\n reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);\n reader_1.addEventListener('error', function (e) { return reject(e); }, false);\n reader_1.readAsDataURL(xhr.response);\n }\n }\n else {\n reject(\"Failed to proxy resource \" + key + \" with status code \" + xhr.status);\n }\n };\n xhr.onerror = reject;\n var queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', \"\" + proxy + queryString + \"url=\" + encodeURIComponent(src) + \"&responseType=\" + responseType);\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n if (_this._options.imageTimeout) {\n var timeout_1 = _this._options.imageTimeout;\n xhr.timeout = timeout_1;\n xhr.ontimeout = function () { return reject(\"Timed out (\" + timeout_1 + \"ms) proxying \" + key); };\n }\n xhr.send();\n });\n };\n return Cache;\n }());\n var INLINE_SVG = /^data:image\\/svg\\+xml/i;\n var INLINE_BASE64 = /^data:image\\/.*;base64,/i;\n var INLINE_IMG = /^data:image\\/.*/i;\n var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };\n var isInlineImage = function (src) { return INLINE_IMG.test(src); };\n var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };\n var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };\n var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };\n\n var Vector = /** @class */ (function () {\n function Vector(x, y) {\n this.type = 0 /* VECTOR */;\n this.x = x;\n this.y = y;\n }\n Vector.prototype.add = function (deltaX, deltaY) {\n return new Vector(this.x + deltaX, this.y + deltaY);\n };\n return Vector;\n }());\n\n var lerp = function (a, b, t) {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n };\n var BezierCurve = /** @class */ (function () {\n function BezierCurve(start, startControl, endControl, end) {\n this.type = 1 /* BEZIER_CURVE */;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n BezierCurve.prototype.subdivide = function (t, firstHalf) {\n var ab = lerp(this.start, this.startControl, t);\n var bc = lerp(this.startControl, this.endControl, t);\n var cd = lerp(this.endControl, this.end, t);\n var abbc = lerp(ab, bc, t);\n var bccd = lerp(bc, cd, t);\n var dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n };\n BezierCurve.prototype.add = function (deltaX, deltaY) {\n return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));\n };\n BezierCurve.prototype.reverse = function () {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n };\n return BezierCurve;\n }());\n var isBezierCurve = function (path) { return path.type === 1 /* BEZIER_CURVE */; };\n\n var BoundCurves = /** @class */ (function () {\n function BoundCurves(element) {\n var styles = element.styles;\n var bounds = element.bounds;\n var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];\n var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];\n var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];\n var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];\n var factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n var maxFactor = Math.max.apply(Math, factors);\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n var topWidth = bounds.width - trh;\n var rightHeight = bounds.height - brv;\n var bottomWidth = bounds.width - brh;\n var leftHeight = bounds.height - blv;\n var borderTopWidth = styles.borderTopWidth;\n var borderRightWidth = styles.borderRightWidth;\n var borderBottomWidth = styles.borderBottomWidth;\n var borderLeftWidth = styles.borderLeftWidth;\n var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3, tlh - (borderLeftWidth * 2) / 3, tlv - (borderTopWidth * 2) / 3, CORNER.TOP_LEFT)\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top + (borderTopWidth * 2) / 3, trh - (borderRightWidth * 2) / 3, trv - (borderTopWidth * 2) / 3, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - (borderRightWidth * 2) / 3, brv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + leftHeight, blh - (borderLeftWidth * 2) / 3, blv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));\n }\n return BoundCurves;\n }());\n var CORNER;\n (function (CORNER) {\n CORNER[CORNER[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n CORNER[CORNER[\"TOP_RIGHT\"] = 1] = \"TOP_RIGHT\";\n CORNER[CORNER[\"BOTTOM_RIGHT\"] = 2] = \"BOTTOM_RIGHT\";\n CORNER[CORNER[\"BOTTOM_LEFT\"] = 3] = \"BOTTOM_LEFT\";\n })(CORNER || (CORNER = {}));\n var getCurvePoints = function (x, y, r1, r2, position) {\n var kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n var ox = r1 * kappa; // control point offset horizontal\n var oy = r2 * kappa; // control point offset vertical\n var xm = x + r1; // x-middle\n var ym = y + r2; // y-middle\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));\n case CORNER.TOP_RIGHT:\n return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));\n }\n };\n var calculateBorderBoxPath = function (curves) {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n };\n var calculateContentBoxPath = function (curves) {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n };\n var calculatePaddingBoxPath = function (curves) {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n };\n\n var TransformEffect = /** @class */ (function () {\n function TransformEffect(offsetX, offsetY, matrix) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.matrix = matrix;\n this.type = 0 /* TRANSFORM */;\n this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n }\n return TransformEffect;\n }());\n var ClipEffect = /** @class */ (function () {\n function ClipEffect(path, target) {\n this.path = path;\n this.target = target;\n this.type = 1 /* CLIP */;\n }\n return ClipEffect;\n }());\n var OpacityEffect = /** @class */ (function () {\n function OpacityEffect(opacity) {\n this.opacity = opacity;\n this.type = 2 /* OPACITY */;\n this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;\n }\n return OpacityEffect;\n }());\n var isTransformEffect = function (effect) {\n return effect.type === 0 /* TRANSFORM */;\n };\n var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };\n var isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };\n\n var equalPath = function (a, b) {\n if (a.length === b.length) {\n return a.some(function (v, i) { return v === b[i]; });\n }\n return false;\n };\n var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {\n return path.map(function (point, index) {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n };\n\n var StackingContext = /** @class */ (function () {\n function StackingContext(container) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n return StackingContext;\n }());\n var ElementPaint = /** @class */ (function () {\n function ElementPaint(container, parent) {\n this.container = container;\n this.parent = parent;\n this.effects = [];\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n if (this.container.styles.transform !== null) {\n var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n var matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n if (this.container.styles.overflowX !== 0 /* VISIBLE */) {\n var borderBox = calculateBorderBoxPath(this.curves);\n var paddingBox = calculatePaddingBoxPath(this.curves);\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n }\n else {\n this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));\n this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));\n }\n }\n }\n ElementPaint.prototype.getEffects = function (target) {\n var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;\n var parent = this.parent;\n var effects = this.effects.slice(0);\n while (parent) {\n var croplessEffects = parent.effects.filter(function (effect) { return !isClipEffect(effect); });\n if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {\n effects.unshift.apply(effects, croplessEffects);\n inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {\n var borderBox = calculateBorderBoxPath(parent.curves);\n var paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));\n }\n }\n }\n else {\n effects.unshift.apply(effects, croplessEffects);\n }\n parent = parent.parent;\n }\n return effects.filter(function (effect) { return contains(effect.target, target); });\n };\n return ElementPaint;\n }());\n var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {\n parent.container.elements.forEach(function (child) {\n var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);\n var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);\n var paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {\n listItems.push(paintContainer);\n }\n var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;\n if (treatAsRealStackingContext || createsStackingContext) {\n var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n var stack = new StackingContext(paintContainer);\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n var order_1 = child.styles.zIndex.order;\n if (order_1 < 0) {\n var index_1 = 0;\n parentStack.negativeZIndex.some(function (current, i) {\n if (order_1 > current.element.container.styles.zIndex.order) {\n index_1 = i;\n return false;\n }\n else if (index_1 > 0) {\n return true;\n }\n return false;\n });\n parentStack.negativeZIndex.splice(index_1, 0, stack);\n }\n else if (order_1 > 0) {\n var index_2 = 0;\n parentStack.positiveZIndex.some(function (current, i) {\n if (order_1 >= current.element.container.styles.zIndex.order) {\n index_2 = i + 1;\n return false;\n }\n else if (index_2 > 0) {\n return true;\n }\n return false;\n });\n parentStack.positiveZIndex.splice(index_2, 0, stack);\n }\n else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n }\n else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n }\n else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);\n }\n else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n }\n else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {\n processListItems(child, listOwnerItems);\n }\n });\n };\n var processListItems = function (owner, elements) {\n var numbering = owner instanceof OLElementContainer ? owner.start : 1;\n var reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (var i = 0; i < elements.length; i++) {\n var item = elements[i];\n if (item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0) {\n numbering = item.container.value;\n }\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n numbering += reversed ? -1 : 1;\n }\n };\n var parseStackingContexts = function (container) {\n var paintContainer = new ElementPaint(container, null);\n var root = new StackingContext(paintContainer);\n var listItems = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n };\n\n var parsePathForBorder = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);\n case 1:\n return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);\n case 2:\n return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);\n case 3:\n default:\n return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);\n }\n };\n var parsePathForBorderDoubleOuter = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);\n case 1:\n return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);\n case 2:\n return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);\n case 3:\n default:\n return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);\n }\n };\n var parsePathForBorderDoubleInner = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);\n case 1:\n return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);\n case 2:\n return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);\n case 3:\n default:\n return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);\n }\n };\n var parsePathForBorderStroke = function (curves, borderSide) {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n };\n var createStrokePathFromCurves = function (outer1, outer2) {\n var path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n }\n else {\n path.push(outer1);\n }\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n }\n else {\n path.push(outer2);\n }\n return path;\n };\n var createPathFromCurves = function (outer1, inner1, outer2, inner2) {\n var path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n }\n else {\n path.push(outer1);\n }\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n }\n else {\n path.push(outer2);\n }\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n }\n else {\n path.push(inner2);\n }\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n }\n else {\n path.push(inner1);\n }\n return path;\n };\n\n var paddingBox = function (element) {\n var bounds = element.bounds;\n var styles = element.styles;\n return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));\n };\n var contentBox = function (element) {\n var styles = element.styles;\n var bounds = element.bounds;\n var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));\n };\n\n var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {\n if (backgroundOrigin === 0 /* BORDER_BOX */) {\n return element.bounds;\n }\n if (backgroundOrigin === 2 /* CONTENT_BOX */) {\n return contentBox(element);\n }\n return paddingBox(element);\n };\n var calculateBackgroundPaintingArea = function (backgroundClip, element) {\n if (backgroundClip === 0 /* BORDER_BOX */) {\n return element.bounds;\n }\n if (backgroundClip === 2 /* CONTENT_BOX */) {\n return contentBox(element);\n }\n return paddingBox(element);\n };\n var calculateBackgroundRendering = function (container, index, intrinsicSize) {\n var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);\n var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);\n var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);\n var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];\n var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);\n var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);\n var offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n var offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n };\n var isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };\n var hasIntrinsicValue = function (value) { return typeof value === 'number'; };\n var calculateBackgroundSize = function (size, _a, bounds) {\n var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];\n var first = size[0], second = size[1];\n if (!first) {\n return [0, 0];\n }\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n var targetRatio = bounds.width / bounds.height;\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n return [bounds.width, bounds.height];\n }\n var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth, intrinsicHeight];\n }\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n var width_1 = hasIntrinsicWidth\n ? intrinsicWidth\n : intrinsicHeight * intrinsicProportion;\n var height_1 = hasIntrinsicHeight\n ? intrinsicHeight\n : intrinsicWidth / intrinsicProportion;\n return [width_1, height_1];\n }\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;\n var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;\n return [width_2, height_2];\n }\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n var width_3 = 0;\n var height_3 = 0;\n if (isLengthPercentage(first)) {\n width_3 = getAbsoluteValue(first, bounds.width);\n }\n else if (isLengthPercentage(second)) {\n height_3 = getAbsoluteValue(second, bounds.height);\n }\n if (isAuto(first)) {\n width_3 = height_3 * intrinsicProportion;\n }\n else if (!second || isAuto(second)) {\n height_3 = width_3 / intrinsicProportion;\n }\n return [width_3, height_3];\n }\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n var width = null;\n var height = null;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n }\n else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / intrinsicWidth) * intrinsicHeight\n : bounds.height;\n }\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / intrinsicHeight) * intrinsicWidth\n : bounds.width;\n }\n if (width !== null && height !== null) {\n return [width, height];\n }\n throw new Error(\"Unable to calculate background-size for element\");\n };\n var getBackgroundValueForIndex = function (values, index) {\n var value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n return value;\n };\n var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {\n var x = _a[0], y = _a[1];\n var width = _b[0], height = _b[1];\n switch (repeat) {\n case 2 /* REPEAT_X */:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))\n ];\n case 3 /* REPEAT_Y */:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))\n ];\n case 1 /* NO_REPEAT */:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),\n new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))\n ];\n }\n };\n\n var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\n var SAMPLE_TEXT = 'Hidden Text';\n var FontMetrics = /** @class */ (function () {\n function FontMetrics(document) {\n this._data = {};\n this._document = document;\n }\n FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {\n var container = this._document.createElement('div');\n var img = this._document.createElement('img');\n var span = this._document.createElement('span');\n var body = this._document.body;\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n body.appendChild(container);\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n var baseline = img.offsetTop - span.offsetTop + 2;\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n var middle = img.offsetTop - container.offsetTop + 2;\n body.removeChild(container);\n return { baseline: baseline, middle: middle };\n };\n FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {\n var key = fontFamily + \" \" + fontSize;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n return this._data[key];\n };\n return FontMetrics;\n }());\n\n var Renderer = /** @class */ (function () {\n function Renderer(context, options) {\n this.context = context;\n this.options = options;\n }\n return Renderer;\n }());\n\n var MASK_OFFSET = 10000;\n var CanvasRenderer = /** @class */ (function (_super) {\n __extends(CanvasRenderer, _super);\n function CanvasRenderer(context, options) {\n var _this = _super.call(this, context, options) || this;\n _this._activeEffects = [];\n _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n _this.ctx = _this.canvas.getContext('2d');\n if (!options.canvas) {\n _this.canvas.width = Math.floor(options.width * options.scale);\n _this.canvas.height = Math.floor(options.height * options.scale);\n _this.canvas.style.width = options.width + \"px\";\n _this.canvas.style.height = options.height + \"px\";\n }\n _this.fontMetrics = new FontMetrics(document);\n _this.ctx.scale(_this.options.scale, _this.options.scale);\n _this.ctx.translate(-options.x, -options.y);\n _this.ctx.textBaseline = 'bottom';\n _this._activeEffects = [];\n _this.context.logger.debug(\"Canvas renderer initialized (\" + options.width + \"x\" + options.height + \") with scale \" + options.scale);\n return _this;\n }\n CanvasRenderer.prototype.applyEffects = function (effects) {\n var _this = this;\n while (this._activeEffects.length) {\n this.popEffect();\n }\n effects.forEach(function (effect) { return _this.applyEffect(effect); });\n };\n CanvasRenderer.prototype.applyEffect = function (effect) {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n this._activeEffects.push(effect);\n };\n CanvasRenderer.prototype.popEffect = function () {\n this._activeEffects.pop();\n this.ctx.restore();\n };\n CanvasRenderer.prototype.renderStack = function (stack) {\n return __awaiter(this, void 0, void 0, function () {\n var styles;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n styles = stack.element.container.styles;\n if (!styles.isVisible()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.renderStackContent(stack)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderNode = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {\n debugger;\n }\n if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];\n return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.renderNodeContent(paint)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {\n var _this = this;\n if (letterSpacing === 0) {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n else {\n var letters = segmentGraphemes(text.text);\n letters.reduce(function (left, letter) {\n _this.ctx.fillText(letter, left, text.bounds.top + baseline);\n return left + _this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n };\n CanvasRenderer.prototype.createFontStyle = function (styles) {\n var fontVariant = styles.fontVariant\n .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })\n .join('');\n var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n var fontSize = isDimensionToken(styles.fontSize)\n ? \"\" + styles.fontSize.number + styles.fontSize.unit\n : styles.fontSize.number + \"px\";\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n };\n CanvasRenderer.prototype.renderTextNode = function (text, styles) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;\n var _this = this;\n return __generator(this, function (_c) {\n _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];\n this.ctx.font = font;\n this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;\n paintOrder = styles.paintOrder;\n text.textBounds.forEach(function (text) {\n paintOrder.forEach(function (paintOrderLayer) {\n switch (paintOrderLayer) {\n case 0 /* FILL */:\n _this.ctx.fillStyle = asString(styles.color);\n _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n var textShadows = styles.textShadow;\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach(function (textShadow) {\n _this.ctx.shadowColor = asString(textShadow.color);\n _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;\n _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;\n _this.ctx.shadowBlur = textShadow.blur.number;\n _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n });\n _this.ctx.shadowColor = '';\n _this.ctx.shadowOffsetX = 0;\n _this.ctx.shadowOffsetY = 0;\n _this.ctx.shadowBlur = 0;\n }\n if (styles.textDecorationLine.length) {\n _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n styles.textDecorationLine.forEach(function (textDecorationLine) {\n switch (textDecorationLine) {\n case 1 /* UNDERLINE */:\n // Draws a line at the baseline of the font\n // TODO As some browsers display the line as more than 1px if the font-size is big,\n // need to take that into account both in position and size\n _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);\n break;\n case 2 /* OVERLINE */:\n _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);\n break;\n case 3 /* LINE_THROUGH */:\n // TODO try and find exact position for line-through\n _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);\n break;\n }\n });\n }\n break;\n case 1 /* STROKE */:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n _this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';\n _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n _this.ctx.strokeStyle = '';\n _this.ctx.lineWidth = 0;\n _this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {\n if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n var box = contentBox(container);\n var path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);\n this.ctx.restore();\n }\n };\n CanvasRenderer.prototype.renderNodeContent = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.applyEffects(paint.getEffects(4 /* CONTENT */));\n container = paint.container;\n curves = paint.curves;\n styles = container.styles;\n _i = 0, _a = container.textNodes;\n _c.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 4];\n child = _a[_i];\n return [4 /*yield*/, this.renderTextNode(child, styles)];\n case 2:\n _c.sent();\n _c.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4:\n if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];\n _c.label = 5;\n case 5:\n _c.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this.context.cache.match(container.src)];\n case 6:\n image = _c.sent();\n this.renderReplacedElement(container, curves, image);\n return [3 /*break*/, 8];\n case 7:\n _c.sent();\n this.context.logger.error(\"Error loading image \" + container.src);\n return [3 /*break*/, 8];\n case 8:\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];\n _c.label = 9;\n case 9:\n _c.trys.push([9, 11, , 12]);\n return [4 /*yield*/, this.context.cache.match(container.svg)];\n case 10:\n image = _c.sent();\n this.renderReplacedElement(container, curves, image);\n return [3 /*break*/, 12];\n case 11:\n _c.sent();\n this.context.logger.error(\"Error loading svg \" + container.svg.substring(0, 255));\n return [3 /*break*/, 12];\n case 12:\n if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];\n iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n return [4 /*yield*/, iframeRenderer.render(container.tree)];\n case 13:\n canvas = _c.sent();\n if (container.width && container.height) {\n this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);\n }\n _c.label = 14;\n case 14:\n if (container instanceof InputElementContainer) {\n size = Math.min(container.bounds.width, container.bounds.height);\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n if (isTextInputElement(container) && container.value.length) {\n _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];\n baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n bounds = contentBox(container);\n x = 0;\n switch (container.styles.textAlign) {\n case 1 /* CENTER */:\n x += bounds.width / 2;\n break;\n case 2 /* RIGHT */:\n x += bounds.width;\n break;\n }\n textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n this.ctx.clip();\n this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];\n if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];\n img = container.styles.listStyleImage;\n if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];\n image = void 0;\n url = img.url;\n _c.label = 15;\n case 15:\n _c.trys.push([15, 17, , 18]);\n return [4 /*yield*/, this.context.cache.match(url)];\n case 16:\n image = _c.sent();\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n return [3 /*break*/, 18];\n case 17:\n _c.sent();\n this.context.logger.error(\"Error loading list-style-image \" + url);\n return [3 /*break*/, 18];\n case 18: return [3 /*break*/, 20];\n case 19:\n if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {\n fontFamily = this.createFontStyle(styles)[0];\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);\n this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n _c.label = 20;\n case 20: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderStackContent = function (stack) {\n return __awaiter(this, void 0, void 0, function () {\n var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;\n return __generator(this, function (_p) {\n switch (_p.label) {\n case 0:\n if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];\n case 1:\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n _p.sent();\n _i = 0, _a = stack.negativeZIndex;\n _p.label = 2;\n case 2:\n if (!(_i < _a.length)) return [3 /*break*/, 5];\n child = _a[_i];\n return [4 /*yield*/, this.renderStack(child)];\n case 3:\n _p.sent();\n _p.label = 4;\n case 4:\n _i++;\n return [3 /*break*/, 2];\n case 5: \n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n return [4 /*yield*/, this.renderNodeContent(stack.element)];\n case 6:\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n _p.sent();\n _b = 0, _c = stack.nonInlineLevel;\n _p.label = 7;\n case 7:\n if (!(_b < _c.length)) return [3 /*break*/, 10];\n child = _c[_b];\n return [4 /*yield*/, this.renderNode(child)];\n case 8:\n _p.sent();\n _p.label = 9;\n case 9:\n _b++;\n return [3 /*break*/, 7];\n case 10:\n _d = 0, _e = stack.nonPositionedFloats;\n _p.label = 11;\n case 11:\n if (!(_d < _e.length)) return [3 /*break*/, 14];\n child = _e[_d];\n return [4 /*yield*/, this.renderStack(child)];\n case 12:\n _p.sent();\n _p.label = 13;\n case 13:\n _d++;\n return [3 /*break*/, 11];\n case 14:\n _f = 0, _g = stack.nonPositionedInlineLevel;\n _p.label = 15;\n case 15:\n if (!(_f < _g.length)) return [3 /*break*/, 18];\n child = _g[_f];\n return [4 /*yield*/, this.renderStack(child)];\n case 16:\n _p.sent();\n _p.label = 17;\n case 17:\n _f++;\n return [3 /*break*/, 15];\n case 18:\n _h = 0, _j = stack.inlineLevel;\n _p.label = 19;\n case 19:\n if (!(_h < _j.length)) return [3 /*break*/, 22];\n child = _j[_h];\n return [4 /*yield*/, this.renderNode(child)];\n case 20:\n _p.sent();\n _p.label = 21;\n case 21:\n _h++;\n return [3 /*break*/, 19];\n case 22:\n _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;\n _p.label = 23;\n case 23:\n if (!(_k < _l.length)) return [3 /*break*/, 26];\n child = _l[_k];\n return [4 /*yield*/, this.renderStack(child)];\n case 24:\n _p.sent();\n _p.label = 25;\n case 25:\n _k++;\n return [3 /*break*/, 23];\n case 26:\n _m = 0, _o = stack.positiveZIndex;\n _p.label = 27;\n case 27:\n if (!(_m < _o.length)) return [3 /*break*/, 30];\n child = _o[_m];\n return [4 /*yield*/, this.renderStack(child)];\n case 28:\n _p.sent();\n _p.label = 29;\n case 29:\n _m++;\n return [3 /*break*/, 27];\n case 30: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.mask = function (paths) {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n };\n CanvasRenderer.prototype.path = function (paths) {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n };\n CanvasRenderer.prototype.formatPath = function (paths) {\n var _this = this;\n paths.forEach(function (point, index) {\n var start = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n _this.ctx.moveTo(start.x, start.y);\n }\n else {\n _this.ctx.lineTo(start.x, start.y);\n }\n if (isBezierCurve(point)) {\n _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);\n }\n });\n };\n CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n };\n CanvasRenderer.prototype.resizeImage = function (image, width, height) {\n var _a;\n if (image.width === width && image.height === height) {\n return image;\n }\n var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;\n var canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n };\n CanvasRenderer.prototype.renderBackgroundImage = function (container) {\n return __awaiter(this, void 0, void 0, function () {\n var index, _loop_1, this_1, _i, _a, backgroundImage;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n index = container.styles.backgroundImage.length - 1;\n _loop_1 = function (backgroundImage) {\n var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];\n image = void 0;\n url = backgroundImage.url;\n _h.label = 1;\n case 1:\n _h.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this_1.context.cache.match(url)];\n case 2:\n image = _h.sent();\n return [3 /*break*/, 4];\n case 3:\n _h.sent();\n this_1.context.logger.error(\"Error loading background-image \" + url);\n return [3 /*break*/, 4];\n case 4:\n if (image) {\n _c = calculateBackgroundRendering(container, index, [\n image.width,\n image.height,\n image.width / image.height\n ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];\n pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');\n this_1.renderRepeat(path, pattern, x, y);\n }\n return [3 /*break*/, 6];\n case 5:\n if (isLinearGradient(backgroundImage)) {\n _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];\n _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];\n canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n ctx = canvas.getContext('2d');\n gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);\n processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {\n return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n });\n ctx.fillStyle = gradient_1;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n pattern = this_1.ctx.createPattern(canvas, 'repeat');\n this_1.renderRepeat(path, pattern, x, y);\n }\n }\n else if (isRadialGradient(backgroundImage)) {\n _f = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];\n position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n x = getAbsoluteValue(position[0], width);\n y = getAbsoluteValue(position[position.length - 1], height);\n _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];\n if (rx > 0 && ry > 0) {\n radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);\n processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {\n return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));\n });\n this_1.path(path);\n this_1.ctx.fillStyle = radialGradient_1;\n if (rx !== ry) {\n midX = container.bounds.left + 0.5 * container.bounds.width;\n midY = container.bounds.top + 0.5 * container.bounds.height;\n f = ry / rx;\n invF = 1 / f;\n this_1.ctx.save();\n this_1.ctx.translate(midX, midY);\n this_1.ctx.transform(1, 0, 0, f, 0, 0);\n this_1.ctx.translate(-midX, -midY);\n this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);\n this_1.ctx.restore();\n }\n else {\n this_1.ctx.fill();\n }\n }\n }\n _h.label = 6;\n case 6:\n index--;\n return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();\n _b.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 4];\n backgroundImage = _a[_i];\n return [5 /*yield**/, _loop_1(backgroundImage)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {\n return __awaiter(this, void 0, void 0, function () {\n var outerPaths, innerPaths;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(width < 3)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n case 2:\n outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {\n return __awaiter(this, void 0, void 0, function () {\n var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));\n styles = paint.container.styles;\n hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n borders = [\n { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },\n { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },\n { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },\n { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }\n ];\n backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);\n if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n return [4 /*yield*/, this.renderBackgroundImage(paint.container)];\n case 1:\n _a.sent();\n this.ctx.restore();\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach(function (shadow) {\n _this.ctx.save();\n var borderBoxArea = calculateBorderBoxPath(paint.curves);\n var maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));\n if (shadow.inset) {\n _this.path(borderBoxArea);\n _this.ctx.clip();\n _this.mask(shadowPaintingArea);\n }\n else {\n _this.mask(borderBoxArea);\n _this.ctx.clip();\n _this.path(shadowPaintingArea);\n }\n _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n _this.ctx.shadowOffsetY = shadow.offsetY.number;\n _this.ctx.shadowColor = asString(shadow.color);\n _this.ctx.shadowBlur = shadow.blur.number;\n _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n _this.ctx.fill();\n _this.ctx.restore();\n });\n _a.label = 2;\n case 2:\n side = 0;\n _i = 0, borders_1 = borders;\n _a.label = 3;\n case 3:\n if (!(_i < borders_1.length)) return [3 /*break*/, 13];\n border = borders_1[_i];\n if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];\n if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];\n case 4:\n _a.sent();\n return [3 /*break*/, 11];\n case 5:\n if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];\n return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];\n case 6:\n _a.sent();\n return [3 /*break*/, 11];\n case 7:\n if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];\n return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];\n case 8:\n _a.sent();\n return [3 /*break*/, 11];\n case 9: return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];\n case 10:\n _a.sent();\n _a.label = 11;\n case 11:\n side++;\n _a.label = 12;\n case 12:\n _i++;\n return [3 /*break*/, 3];\n case 13: return [2 /*return*/];\n }\n });\n });\n };\n CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {\n return __awaiter(this, void 0, void 0, function () {\n var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;\n return __generator(this, function (_a) {\n this.ctx.save();\n strokePaths = parsePathForBorderStroke(curvePoints, side);\n boxPaths = parsePathForBorder(curvePoints, side);\n if (style === 2 /* DASHED */) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n if (isBezierCurve(boxPaths[0])) {\n startX = boxPaths[0].start.x;\n startY = boxPaths[0].start.y;\n }\n else {\n startX = boxPaths[0].x;\n startY = boxPaths[0].y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = boxPaths[1].end.x;\n endY = boxPaths[1].end.y;\n }\n else {\n endX = boxPaths[1].x;\n endY = boxPaths[1].y;\n }\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n }\n else {\n length = Math.abs(startY - endY);\n }\n this.ctx.beginPath();\n if (style === 3 /* DOTTED */) {\n this.formatPath(strokePaths);\n }\n else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n dashLength = width < 3 ? width * 3 : width * 2;\n spaceLength = width < 3 ? width * 2 : width;\n if (style === 3 /* DOTTED */) {\n dashLength = width;\n spaceLength = width;\n }\n useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n }\n else if (length <= dashLength * 2 + spaceLength) {\n multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n }\n else {\n numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n if (useLineDash) {\n if (style === 3 /* DOTTED */) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n }\n else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n if (style === 3 /* DOTTED */) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n }\n else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n // dashed round edge gap\n if (style === 2 /* DASHED */) {\n if (isBezierCurve(boxPaths[0])) {\n path1 = boxPaths[3];\n path2 = boxPaths[0];\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n path1 = boxPaths[1];\n path2 = boxPaths[2];\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n this.ctx.restore();\n return [2 /*return*/];\n });\n });\n };\n CanvasRenderer.prototype.render = function (element) {\n return __awaiter(this, void 0, void 0, function () {\n var stack;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n stack = parseStackingContexts(element);\n return [4 /*yield*/, this.renderStack(stack)];\n case 1:\n _a.sent();\n this.applyEffects([]);\n return [2 /*return*/, this.canvas];\n }\n });\n });\n };\n return CanvasRenderer;\n }(Renderer));\n var isTextInputElement = function (container) {\n if (container instanceof TextareaElementContainer) {\n return true;\n }\n else if (container instanceof SelectElementContainer) {\n return true;\n }\n else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n };\n var calculateBackgroundCurvedPaintingArea = function (clip, curves) {\n switch (clip) {\n case 0 /* BORDER_BOX */:\n return calculateBorderBoxPath(curves);\n case 2 /* CONTENT_BOX */:\n return calculateContentBoxPath(curves);\n case 1 /* PADDING_BOX */:\n default:\n return calculatePaddingBoxPath(curves);\n }\n };\n var canvasTextAlign = function (textAlign) {\n switch (textAlign) {\n case 1 /* CENTER */:\n return 'center';\n case 2 /* RIGHT */:\n return 'right';\n case 0 /* LEFT */:\n default:\n return 'left';\n }\n };\n // see https://github.com/niklasvh/html2canvas/pull/2645\n var iOSBrokenFonts = ['-apple-system', 'system-ui'];\n var fixIOSSystemFonts = function (fontFamilies) {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter(function (fontFamily) { return iOSBrokenFonts.indexOf(fontFamily) === -1; })\n : fontFamilies;\n };\n\n var ForeignObjectRenderer = /** @class */ (function (_super) {\n __extends(ForeignObjectRenderer, _super);\n function ForeignObjectRenderer(context, options) {\n var _this = _super.call(this, context, options) || this;\n _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n _this.ctx = _this.canvas.getContext('2d');\n _this.options = options;\n _this.canvas.width = Math.floor(options.width * options.scale);\n _this.canvas.height = Math.floor(options.height * options.scale);\n _this.canvas.style.width = options.width + \"px\";\n _this.canvas.style.height = options.height + \"px\";\n _this.ctx.scale(_this.options.scale, _this.options.scale);\n _this.ctx.translate(-options.x, -options.y);\n _this.context.logger.debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + options.width + \"x\" + options.height + \" at \" + options.x + \",\" + options.y + \") with scale \" + options.scale);\n return _this;\n }\n ForeignObjectRenderer.prototype.render = function (element) {\n return __awaiter(this, void 0, void 0, function () {\n var svg, img;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);\n return [4 /*yield*/, loadSerializedSVG(svg)];\n case 1:\n img = _a.sent();\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n return [2 /*return*/, this.canvas];\n }\n });\n });\n };\n return ForeignObjectRenderer;\n }(Renderer));\n var loadSerializedSVG = function (svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n resolve(img);\n };\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n\n var Logger = /** @class */ (function () {\n function Logger(_a) {\n var id = _a.id, enabled = _a.enabled;\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n Logger.prototype.getTime = function () {\n return Date.now() - this.start;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error.apply(console, __spreadArray([this.id, this.getTime() + \"ms\"], args));\n }\n else {\n this.info.apply(this, args);\n }\n }\n };\n Logger.instances = {};\n return Logger;\n }());\n\n var Context = /** @class */ (function () {\n function Context(options, windowBounds) {\n var _a;\n this.windowBounds = windowBounds;\n this.instanceName = \"#\" + Context.instanceCount++;\n this.logger = new Logger({ id: this.instanceName, enabled: options.logging });\n this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);\n }\n Context.instanceCount = 1;\n return Context;\n }());\n\n var html2canvas = function (element, options) {\n if (options === void 0) { options = {}; }\n return renderElement(element, options);\n };\n if (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n }\n var renderElement = function (element, opts) { return __awaiter(void 0, void 0, void 0, function () {\n var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;\n var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n return __generator(this, function (_u) {\n switch (_u.label) {\n case 0:\n if (!element || typeof element !== 'object') {\n return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];\n }\n ownerDocument = element.ownerDocument;\n if (!ownerDocument) {\n throw new Error(\"Element is not attached to a Document\");\n }\n defaultView = ownerDocument.defaultView;\n if (!defaultView) {\n throw new Error(\"Document is not attached to a Window\");\n }\n resourceOptions = {\n allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,\n imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,\n proxy: opts.proxy,\n useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false\n };\n contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);\n windowOptions = {\n windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,\n windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,\n scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,\n scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset\n };\n windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);\n context = new Context(contextOptions, windowBounds);\n foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;\n cloneOptions = {\n allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n context.logger.debug(\"Starting document clone with size \" + windowBounds.width + \"x\" + windowBounds.height + \" scrolled to \" + -windowBounds.left + \",\" + -windowBounds.top);\n documentCloner = new DocumentCloner(context, element, cloneOptions);\n clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return [2 /*return*/, Promise.reject(\"Unable to find element in cloned iframe\")];\n }\n return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];\n case 1:\n container = _u.sent();\n _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;\n backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n renderOptions = {\n canvas: opts.canvas,\n backgroundColor: backgroundColor,\n scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,\n x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,\n y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,\n width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),\n height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)\n };\n if (!foreignObjectRendering) return [3 /*break*/, 3];\n context.logger.debug(\"Document cloned, using foreign object rendering\");\n renderer = new ForeignObjectRenderer(context, renderOptions);\n return [4 /*yield*/, renderer.render(clonedElement)];\n case 2:\n canvas = _u.sent();\n return [3 /*break*/, 5];\n case 3:\n context.logger.debug(\"Document cloned, element located at \" + left + \",\" + top + \" with size \" + width + \"x\" + height + \" using computed rendering\");\n context.logger.debug(\"Starting DOM parsing\");\n root = parseTree(context, clonedElement);\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n context.logger.debug(\"Starting renderer for element at \" + renderOptions.x + \",\" + renderOptions.y + \" with size \" + renderOptions.width + \"x\" + renderOptions.height);\n renderer = new CanvasRenderer(context, renderOptions);\n return [4 /*yield*/, renderer.render(root)];\n case 4:\n canvas = _u.sent();\n _u.label = 5;\n case 5:\n if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(\"Cannot detach cloned iframe as it is not in the DOM anymore\");\n }\n }\n context.logger.debug(\"Finished rendering\");\n return [2 /*return*/, canvas];\n }\n });\n }); };\n var parseBackgroundColor = function (context, element, backgroundColorOverride) {\n var ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n var documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)\n : COLORS.TRANSPARENT;\n var bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor)\n : COLORS.TRANSPARENT;\n var defaultBackgroundColor = typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n };\n\n return html2canvas;\n\n})));\n//# sourceMappingURL=html2canvas.js.map\n","import { KupDataTableDataset } from '../../components';\nimport { KupCardFamily } from '../../components/kup-card/kup-card-declarations';\nimport {\n KupCardBuiltInOpenAIMessages,\n KupCardBuiltInOpenAIOptions,\n} from '../../components/kup-card/kup-card-declarations';\nimport { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport { KupDom } from '../kup-manager/kup-manager-declarations';\nimport {\n KupOpenAIParameters,\n KupOpenAISessionInfo,\n} from './kup-openai-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\nexport class KupOpenAI {\n card: HTMLKupCardElement = null;\n container: HTMLElement;\n context = '';\n data: KupDataTableDataset = null;\n dialog: HTMLKupDialogElement = null;\n sessionInfo: KupOpenAISessionInfo = null;\n url: string = null;\n onFunClick?: (fun: string) => void;\n\n /**\n * Initializes KupOpenAI.\n */\n constructor(url: string) {\n this.container = document.createElement('div');\n this.container.setAttribute('kup-openai', '');\n document.body.appendChild(this.container);\n\n this.url = url;\n }\n\n getFunFromText = (text: string): RegExpMatchArray[] => {\n const pattern =\n /#\\[(?:F|C|A)\\(([^)]*)\\)\\s*(?:\\d\\(([^)]*)\\)\\s*)?(?:INPUT\\(([^)]*)\\)\\s*)?(?:SP\\(([^)]*)\\)\\s*)?(?:P\\(([^]*)\\)\\s*)?(?:CRO\\(([^)]*)\\)\\s*)?(?:SS\\(([^)]*)\\)\\s*)?(?:SERVER\\(([^)]*)\\)\\s*)?(?:SG\\(([^)]*)\\)\\s*)?(?:G\\(([^)]*)\\)\\s*)?(?:NOTIFY\\(([^)]*)\\)\\s*)?]\\#/g;\n return [...text.matchAll(pattern)];\n };\n\n setError(message: string, _this?: KupOpenAI, dontRefreshCard?: boolean) {\n if (!_this) {\n _this = this;\n }\n dom.ketchup.debug.logMessage(_this, message, KupDebugCategory.ERROR);\n if (dontRefreshCard) {\n return;\n }\n _this.getCardOptions().state = 'error';\n _this.card.refresh();\n }\n\n #invalidPassword(field: HTMLKupTextFieldElement) {\n field.helper = 'Invalid password.';\n field.classList.add('kup-danger');\n field.refresh();\n }\n\n #create() {\n this.card = document.createElement('kup-card');\n this.card.layoutFamily = KupCardFamily.BUILT_IN;\n this.card.layoutNumber = 7;\n this.card.sizeX = '100%';\n this.card.sizeY = '100%';\n\n this.dialog = document.createElement('kup-dialog');\n this.dialog.header = {\n title: 'Chat with Data',\n icons: { close: true },\n };\n this.dialog.id = 'openai';\n this.dialog.modal = null;\n this.dialog.sizeX = '50vw';\n this.dialog.sizeY = '50vh';\n this.dialog.addEventListener('kup-dialog-close', () => this.hide());\n this.dialog.appendChild(this.card);\n this.container.appendChild(this.dialog);\n\n if (!this.url) {\n this.getCardOptions().state = 'error';\n } else {\n this.mockAuth();\n }\n }\n\n getCardOptions(): KupCardBuiltInOpenAIOptions {\n if (!this.card.data) {\n this.card.data = {};\n }\n if (!this.card.data.options) {\n this.card.data.options = {\n submitCb: this.chat,\n authCb: this.auth,\n sttCb: this.stt,\n } as KupCardBuiltInOpenAIOptions;\n }\n return this.card.data.options as KupCardBuiltInOpenAIOptions;\n }\n\n async #connect() {\n if (!this.url) {\n return;\n }\n let response = null;\n try {\n response = await fetch(this.url + '/api/init', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n context: this.context,\n data: this.data,\n }),\n });\n } catch (e) {\n this.setError(e.message);\n return;\n }\n\n if (response) {\n if (response.status != 200) {\n this.setError(await response.text());\n return;\n }\n const responseJson = await response.json();\n this.sessionInfo = {\n context: this.context,\n fileId: responseJson.fileId,\n threadId: responseJson.threadId,\n };\n this.getCardOptions().state = 'ready';\n this.card.refresh();\n return;\n }\n this.getCardOptions().state = 'error';\n this.card.refresh();\n }\n\n async #disconnect() {\n if (!this.url) {\n return;\n }\n if (!this.sessionInfo) {\n return;\n }\n let response = null;\n try {\n response = await fetch(this.url + '/api/finalize', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n context: this.sessionInfo.context,\n fileId: this.sessionInfo.fileId,\n threadId: this.sessionInfo.threadId,\n }),\n });\n } catch (e) {\n this.setError(e.message, undefined, true);\n }\n\n this.sessionInfo = null;\n\n if (response) {\n if (response.status != 200) {\n this.setError(await response.text(), undefined, true);\n }\n }\n }\n\n async show(parameters: KupOpenAIParameters) {\n this.context = parameters.context;\n this.data = parameters.dataset;\n if (parameters.onFunClick) {\n this.onFunClick = parameters.onFunClick;\n }\n\n if (this.card) {\n await this.hide();\n }\n this.#create();\n }\n\n async stt(\n inputArea: HTMLKupTextFieldElement,\n button: HTMLKupButtonElement\n ) {\n const speechConstructor =\n window.SpeechRecognition || window.webkitSpeechRecognition;\n if (!speechConstructor) {\n alert('Speech recognition is not supported in this browser.');\n return;\n }\n const recognition = new speechConstructor();\n recognition.lang = dom.ketchup.language.getBCP47();\n recognition.interimResults = true;\n recognition.maxAlternatives = 1;\n\n recognition.addEventListener(\n 'result',\n (event: SpeechRecognitionEvent) => {\n const transcript = Array.from(event.results)\n .map((result) => result[0])\n .map((result) => result.transcript)\n .join('');\n dom.ketchup.debug.logMessage(\n 'KupOpenAi',\n 'STT response: ' + transcript\n );\n inputArea.setValue(transcript, true);\n const isFinal = event.results[event.results.length - 1].isFinal;\n if (isFinal) {\n recognition.stop();\n }\n }\n );\n\n recognition.addEventListener('end', () => {\n recognition.stop();\n button.showSpinner = false;\n });\n\n recognition.addEventListener('start', () => {\n inputArea.setFocus();\n button.showSpinner = true;\n });\n\n try {\n recognition.start();\n } catch (err) {\n console.error(err);\n }\n }\n\n async hide() {\n if (this.card) {\n this.card.remove();\n this.card = null;\n this.dialog.remove();\n this.dialog = null;\n await this.#disconnect();\n }\n }\n\n async mockAuth() {\n const openAI = dom.ketchup.openAI;\n if (!openAI.url) {\n return;\n }\n let response = null;\n try {\n response = await fetch(openAI.url + '/api/auth', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ data: 'mockup' }),\n });\n } catch (e) {\n openAI.setError(e.message, openAI);\n return;\n }\n\n if (response) {\n if (response.status === 200) {\n const responseJson = await response.json();\n if (responseJson.status == 'ok') {\n openAI.getCardOptions().state = 'connecting';\n openAI.card.refresh();\n openAI.#connect();\n return;\n }\n }\n }\n openAI.getCardOptions().state = 'error';\n openAI.card.refresh();\n }\n\n async auth(field: HTMLKupTextFieldElement) {\n const openAI = dom.ketchup.openAI;\n if (!openAI.url) {\n return;\n }\n const pwd = await field.getValue();\n let response = null;\n try {\n response = await fetch(openAI.url + '/api/auth', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ data: pwd }),\n });\n } catch (e) {\n openAI.setError(e.message, openAI);\n return;\n }\n\n if (response) {\n if (response.status != 200) {\n openAI.#invalidPassword(field);\n return;\n }\n const responseJson = await response.json();\n if (responseJson.status == 'ok') {\n openAI.getCardOptions().state = 'connecting';\n openAI.card.refresh();\n openAI.#connect();\n return;\n }\n }\n openAI.getCardOptions().state = 'error';\n openAI.card.refresh();\n }\n\n async chat(\n disableInteractivity: (status: boolean) => void,\n inputArea: HTMLKupTextFieldElement\n ) {\n const openAI = dom.ketchup.openAI;\n if (!openAI.card) {\n return;\n }\n\n const communicate = async (\n question: string\n ): Promise<KupCardBuiltInOpenAIMessages[]> => {\n if (!openAI.url) {\n return;\n }\n if (!openAI.sessionInfo) {\n return;\n }\n\n const responseMessages: KupCardBuiltInOpenAIMessages[] = [];\n let response = null;\n try {\n response = await fetch(openAI.url + '/api/chat', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n context: openAI.sessionInfo.context,\n fileId: openAI.sessionInfo.fileId,\n threadId: openAI.sessionInfo.threadId,\n question: question,\n }),\n });\n } catch (e) {\n openAI.setError(e.message, openAI);\n }\n\n if (response) {\n if (response.status != 200) {\n openAI.setError(await response.text(), openAI);\n return;\n }\n const responseJson = await response.json();\n if (responseJson && responseJson.messages) {\n for (let i = 0; i < responseJson.messages.length; i++) {\n const m: KupCardBuiltInOpenAIMessages =\n responseJson.messages[i];\n m.funs = openAI.getFunFromText(m.text);\n responseMessages.push(m);\n }\n }\n }\n\n return responseMessages;\n };\n\n disableInteractivity(true);\n openAI.getCardOptions().messages = await communicate(\n await inputArea.getValue()\n );\n openAI.card.refresh();\n disableInteractivity(false);\n }\n}\n","import { GenericCallback } from './kup-keys-binding-declarations';\n\n/**\n * Handles keys binding listeners.\n * @module KupKeysBinding\n */\nexport class KupKeysBinding {\n #SEPARATOR_KEYS_COMBO = '+';\n #pressedKeys: Set<string>;\n #keysEvents: Map<string, { event: GenericCallback; isLunched: boolean }>;\n\n constructor() {\n this.#keysEvents = new Map();\n this.#pressedKeys = new Set();\n document.addEventListener('keydown', this.#checkEvent.bind(this));\n document.addEventListener('keyup', this.#clearKey.bind(this));\n window.addEventListener('blur', () => {\n this.#pressedKeys.clear();\n });\n }\n\n /**\n * Registers key shortcut (can be also a combination of keys) and associated event.\n * @param {string} key - Key to listen for.\n * @param {GenericCallback} event - Event to start when key is pressed\n */\n register(key: string, event: GenericCallback): void {\n if (!key || !event) {\n return;\n }\n\n this.#keysEvents.set(key.toLowerCase(), { event, isLunched: false });\n }\n\n /**\n * Unregisteres key shortcut and associated event.\n * @param {string} key - Key to remove.\n */\n unregister(key: string): void {\n if (!key) {\n return;\n }\n this.#keysEvents.delete(key.toLowerCase());\n }\n\n #checkEvent(keyboardEvent: KeyboardEvent) {\n const keyPressed = keyboardEvent.key.toLowerCase();\n this.#pressedKeys.add(keyPressed);\n const keyEvent = this.#keysEvents.get(this.#getKeysCombination());\n if (keyEvent && !keyEvent.isLunched) {\n keyboardEvent.preventDefault();\n keyEvent.event();\n keyEvent.isLunched = true;\n }\n }\n\n #clearKey(keyboardEvent: KeyboardEvent) {\n const keyReleased = keyboardEvent.key.toLowerCase();\n const keyEvent = this.#keysEvents.get(this.#getKeysCombination());\n if (keyEvent && keyEvent.isLunched) {\n keyEvent.isLunched = false;\n }\n this.#pressedKeys.delete(keyReleased);\n }\n\n #getKeysCombination(): string {\n return Array.from(this.#pressedKeys).join(this.#SEPARATOR_KEYS_COMBO);\n }\n}\n","import type { Interaction } from '@interactjs/core/Interaction';\nimport type { ActionMap } from '@interactjs/core/scope';\nimport type { RectResolvable } from '@interactjs/types/index';\nimport type {\n KupDom,\n KupManagerClickCb,\n KupManagerInitialization,\n KupManagerStringFinderPayload,\n KupManagerUtilities,\n} from './kup-manager-declarations';\nimport type { ResizableKupComponent } from '../../types/GenericTypes';\nimport type { ResizeObserverEntry } from 'resize-observer/lib/ResizeObserverEntry';\nimport { KupDebug } from '../kup-debug/kup-debug';\nimport { KupDynamicPosition } from '../kup-dynamic-position/kup-dynamic-position';\nimport { KupInteract } from '../kup-interact/kup-interact';\nimport { KupLanguage } from '../kup-language/kup-language';\nimport { KupObjects } from '../kup-objects/kup-objects';\nimport { KupScrollOnHover } from '../kup-scroll-on-hover/kup-scroll-on-hover';\nimport { KupTheme } from '../kup-theme/kup-theme';\nimport { KupToolbar } from '../kup-toolbar/kup-toolbar';\nimport { ResizeObserver } from 'resize-observer';\nimport {\n KupLanguageDefaults,\n KupLanguageJSON,\n} from '../kup-language/kup-language-declarations';\nimport { KupObjectsJSON } from '../kup-objects/kup-objects-declarations';\nimport { KupThemeJSON } from '../kup-theme/kup-theme-declarations';\nimport { KupData } from '../kup-data/kup-data';\nimport { KupDates } from '../kup-dates/kup-dates';\nimport { KupDatesLocales } from '../kup-dates/kup-dates-declarations';\nimport { KupDebugCategory } from '../kup-debug/kup-debug-declarations';\nimport { KupSearch } from '../kup-search/kup-search';\nimport { KupDynamicPositionElement } from '../../managers/kup-dynamic-position/kup-dynamic-position-declarations';\nimport { KupMathLocales } from '../kup-math/kup-math-declarations';\nimport { KupMath } from '../kup-math/kup-math';\nimport { KupTooltip } from '../kup-tooltip/kup-tooltip';\nimport { setAssetPath } from '@stencil/core';\nimport { KupTooltipCallbacks } from '../kup-tooltip/kup-tooltip-declarations';\nimport html2canvas, { Options } from 'html2canvas';\nimport { KupOpenAI } from '../kup-openai/kup-openai';\nimport { KupKeysBinding } from '../kup-keys-binding/kup-keys-binding';\n\nconst dom: KupDom = document.documentElement as KupDom;\n\n/**\n * This class controls every other Ketchup utility suite.\n * @module KupManager\n */\nexport class KupManager {\n data: KupData;\n dates: KupDates;\n debug: KupDebug;\n dynamicPosition: KupDynamicPosition;\n enableExperimentalFeatures: boolean;\n interact: KupInteract;\n language: KupLanguage;\n magicBox: HTMLKupMagicBoxElement;\n openAI: KupOpenAI;\n math: KupMath;\n objects: KupObjects;\n overrides?: KupManagerInitialization;\n resize: ResizeObserver;\n scrollOnHover: KupScrollOnHover;\n search: KupSearch;\n utilities: KupManagerUtilities;\n theme: KupTheme;\n toolbar: KupToolbar;\n keysBinding: KupKeysBinding;\n tooltip: KupTooltip;\n /**\n * Initializes KupManager.\n */\n constructor(overrides?: KupManagerInitialization) {\n let datesLocale: KupDatesLocales = null,\n debugActive: boolean = null,\n debugAutoprint: boolean = null,\n debugLogLimit: number = null,\n dialogRestrictContainer: RectResolvable<\n [number, number, Interaction<keyof ActionMap>]\n > = null,\n dialogZIndex: number = null,\n languageList: KupLanguageJSON = null,\n languageName: string = null,\n objectsList: KupObjectsJSON = null,\n scrollOnHoverDelay: number = null,\n scrollOnHoverStep: number = null,\n themeList: KupThemeJSON = null,\n themeName: string = null,\n tooltipDelay: number = null,\n tooltipFCellCallbacks: KupTooltipCallbacks = null,\n tooltipModal: boolean = null;\n\n this.enableExperimentalFeatures = false;\n /** POI VIA */\n let openAIUrl = 'https://kokosstaging.smeup.com';\n\n if (overrides) {\n const assetsPath = overrides.assetsPath;\n const dates = overrides.dates;\n const debug = overrides.debug;\n const enableExperimentalFeatures =\n overrides.enableExperimentalFeatures;\n const interact = overrides.interact;\n const language = overrides.language;\n const objects = overrides.objects;\n const scrollOnHover = overrides.scrollOnHover;\n const theme = overrides.theme;\n const tooltip = overrides.tooltip;\n if (overrides.openAIUrl) {\n openAIUrl = overrides.openAIUrl;\n }\n if (assetsPath) {\n setAssetPath(assetsPath);\n }\n if (dates) {\n datesLocale = dates.locale ? dates.locale : null;\n }\n if (debug) {\n debugActive = debug.active ? debug.active : null;\n debugAutoprint = debug.autoPrint ? debug.autoPrint : null;\n debugLogLimit = debug.logLimit ? debug.logLimit : null;\n }\n if (enableExperimentalFeatures) {\n this.enableExperimentalFeatures = enableExperimentalFeatures;\n }\n if (interact) {\n dialogRestrictContainer = interact.restrictContainer\n ? dialogRestrictContainer\n : null;\n dialogZIndex = interact.zIndex ? interact.zIndex : null;\n }\n if (language) {\n languageList = language.list ? language.list : null;\n languageName = language.name ? language.name : null;\n }\n if (objects) {\n objectsList = objects.list ? objects.list : null;\n }\n if (scrollOnHover) {\n scrollOnHoverDelay = scrollOnHover.delay\n ? scrollOnHover.delay\n : null;\n scrollOnHoverStep = scrollOnHover.step\n ? scrollOnHover.step\n : null;\n }\n if (theme) {\n themeList = theme.list ? theme.list : null;\n themeName = theme.name ? theme.name : null;\n }\n if (tooltip) {\n tooltipDelay = tooltip.delay ? tooltip.delay : null;\n tooltipFCellCallbacks = tooltip.fCellCallbacks\n ? tooltip.fCellCallbacks\n : null;\n tooltipModal = tooltip.modal ? tooltip.modal : null;\n }\n }\n this.data = new KupData();\n this.dates = new KupDates(datesLocale);\n this.debug = new KupDebug(debugActive, debugAutoprint, debugLogLimit);\n this.dynamicPosition = new KupDynamicPosition();\n this.interact = new KupInteract(dialogZIndex, dialogRestrictContainer);\n this.language = new KupLanguage(languageList, languageName);\n this.magicBox = null;\n this.openAI = new KupOpenAI(openAIUrl);\n this.math = new KupMath();\n this.overrides = overrides ? overrides : null;\n this.objects = new KupObjects(objectsList);\n this.resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n entries.forEach((entry) => {\n if (entry.contentRect.height && entry.contentRect.width) {\n (entry.target as ResizableKupComponent).resizeCallback();\n this.debug.logMessage(\n 'kup-manager (' +\n entry.target.tagName +\n '#' +\n entry.target.id +\n ')',\n 'Size changed to x: ' +\n entry.contentRect.width +\n ', y: ' +\n entry.contentRect.height +\n '.'\n );\n }\n });\n });\n this.scrollOnHover = new KupScrollOnHover(\n scrollOnHoverDelay,\n scrollOnHoverStep\n );\n this.search = new KupSearch();\n this.utilities = {\n clickCallbacks: new Set(),\n lastPointerDownString: null,\n };\n this.theme = new KupTheme(themeList, themeName);\n this.toolbar = new KupToolbar();\n this.keysBinding = new KupKeysBinding();\n this.tooltip = new KupTooltip(\n tooltipDelay,\n tooltipFCellCallbacks,\n tooltipModal\n );\n document.addEventListener('pointerdown', (e) => {\n const paths = e.composedPath() as HTMLElement[];\n const lastString =\n paths[0].innerText || (paths[0] as HTMLInputElement).value;\n this.utilities.lastPointerDownString = lastString;\n if (lastString) {\n const e = new CustomEvent<KupManagerStringFinderPayload>(\n 'kup-manager-stringfinder',\n {\n bubbles: true,\n cancelable: true,\n detail: {\n string: lastString,\n },\n }\n );\n document.dispatchEvent(e);\n }\n });\n document.addEventListener('click', (e) => {\n const paths = e.composedPath() as HTMLElement[];\n this.utilities.clickCallbacks.forEach((obj) => {\n if (\n obj &&\n obj.el &&\n obj.el.isConnected &&\n !paths.includes(obj.el)\n ) {\n const elAsDynamicPos = obj.el as KupDynamicPositionElement;\n let found = false;\n if (\n elAsDynamicPos.kupDynamicPosition &&\n elAsDynamicPos.kupDynamicPosition.detach\n ) {\n for (let index = 0; index < paths.length; index++) {\n const pathEl = paths[index];\n const pathElAsDynamicPos =\n pathEl as KupDynamicPositionElement;\n if (\n pathElAsDynamicPos.kupDynamicPosition &&\n pathElAsDynamicPos.kupDynamicPosition.detach\n ) {\n const originalPath =\n pathElAsDynamicPos.kupDynamicPosition\n .originalPath;\n if (originalPath.includes(obj.el)) {\n found = true;\n }\n }\n }\n if (!found) {\n obj.cb();\n }\n } else {\n obj.cb();\n }\n }\n });\n });\n }\n /**\n * Creates kup-magic-box component.\n */\n showMagicBox(): void {\n if (this.magicBox) {\n return;\n }\n this.magicBox = document.createElement('kup-magic-box');\n this.magicBox.id = 'kup-magic-box';\n this.magicBox.style.position = 'fixed';\n this.magicBox.style.left = 'calc(50% - 350px)';\n this.magicBox.style.top = 'calc(50% - 150px)';\n document.body.append(this.magicBox);\n }\n /**\n * Removes kup-magic-box component.\n */\n hideMagicBox(): void {\n if (!this.magicBox) {\n return;\n }\n this.magicBox.remove();\n this.magicBox = null;\n }\n /**\n * Creates or removes kup-magic-box component depending on its existence.\n */\n toggleMagicBox(): void {\n if (!this.magicBox) {\n this.showMagicBox();\n } else {\n this.hideMagicBox();\n }\n }\n\n /**\n * Sets both locale and language library-wide.\n * @param {KupDatesLocales} locale - The supported locale.\n */\n setLibraryLocalization(locale: KupDatesLocales): void {\n if (!Object.values(KupDatesLocales).includes(locale)) {\n this.debug.logMessage(\n 'kup-manager',\n 'Missing locale (' + locale + ')!',\n KupDebugCategory.ERROR\n );\n return;\n }\n if (!KupLanguageDefaults[locale]) {\n this.debug.logMessage(\n 'kup-manager',\n 'Missing language for locale (' + locale + ')!',\n KupDebugCategory.ERROR\n );\n return;\n }\n this.dates.setLocale(locale);\n this.language.set(KupLanguageDefaults[locale]);\n this.math.setLocale(KupMathLocales[locale]);\n }\n /**\n * Adds a new click callback.\n * @param {KupManagerClickCb} cb - The callback to add.\n * @param {boolean} async - When true, the callback will be added asynchrounously to prevent instant firing if it was added through a click event.\n */\n addClickCallback(cb: KupManagerClickCb, async?: boolean): void {\n if (async) {\n setTimeout(() => {\n this.utilities.clickCallbacks.add(cb);\n }, 0);\n } else {\n this.utilities.clickCallbacks.add(cb);\n }\n }\n\n /**\n * Retrives event path from event.target\n * @param currentEl event.target\n * @param rootElement rootElement of component\n * @returns\n */\n getEventPath(currentEl: unknown, rootElement: HTMLElement): HTMLElement[] {\n const path: HTMLElement[] = [];\n\n while (\n currentEl &&\n currentEl !== rootElement &&\n currentEl !== document.body\n ) {\n path.push(currentEl as HTMLElement);\n currentEl = (currentEl as HTMLElement).parentNode\n ? (currentEl as HTMLElement).parentNode\n : (currentEl as ShadowRoot).host;\n }\n\n return path;\n }\n /**\n * Rasterizes an HTMLElement, transforming into a canvas.\n * @param {HTMLElement} el - Element to rasterize.\n * @returns {HTMLCanvasElement} - Canvas created from the HTMLElement.\n *\n * CSS Mask is not supported:\n * @see https://github.com/niklasvh/html2canvas/issues/2814\n * Warning in console about sourcemap, claimed to be solved here but...:\n * @see https://github.com/niklasvh/html2canvas/pull/2787/files\n */\n async rasterize(\n el: HTMLElement,\n options?: Partial<Options>\n ): Promise<HTMLCanvasElement> {\n return html2canvas(el, options).then((canvas) => {\n return canvas;\n });\n }\n /**\n * Removes the given click callback.\n * @param {KupManagerClickCb} cb - The callback to remove.\n */\n removeClickCallback(cb: KupManagerClickCb): void {\n this.utilities.clickCallbacks.delete(cb);\n }\n}\n/**\n * Called by the Ketchup components to retrieve the instance of KupManager (or creating a new one when missing).\n * @returns {KupManager} KupManager instance.\n */\nexport function kupManagerInstance(): KupManager {\n if (!dom.ketchup) {\n const overrides: KupManagerInitialization = dom.ketchupInit ?? null;\n dom.ketchup = new KupManager(overrides);\n dom.ketchup.theme.set();\n if (dom.ketchup.debug.active) {\n dom.ketchup.debug.toggle(dom.ketchup.debug.active);\n }\n globalThis.kupManager = dom.ketchup;\n if (overrides?.autoSetLocalization) {\n const locale = dom.ketchup.dates.locale;\n if (!overrides.language || !overrides.language.name) {\n dom.ketchup.language.set(KupLanguageDefaults[locale]);\n }\n if (!overrides.math || !overrides.math.locale) {\n dom.ketchup.math.setLocale(KupMathLocales[locale]);\n }\n }\n document.dispatchEvent(new CustomEvent('kup-manager-ready'));\n }\n return dom.ketchup;\n}\n"],"mappings":"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pD58B,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGR,IAAIgoD,GAAS,CACTprB,SAAU,CACN,IAAO,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEpD58B,OAAQ,CACJ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGR,IAAIioD,GAAW,CACXrrB,SAAU,CACN,IAAO,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC1G,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE5D58B,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAGR,IAAIkoD,GAAwB,SAAU/kG,EAAO0b,EAAKP,EAAKyqD,EAASo/B,EAAUt/B,GACtE,GAAI1lE,EAAQ0b,GAAO1b,EAAQmb,EAAK,CAC5B,OAAO8pF,GAAkBjlG,EAAOglG,EAAUt/B,EAAO/lE,OAAS,EACtE,CACQ,OAAQimE,EAAQ6T,SAASvhE,QAAO,SAAU1I,EAAQi5D,EAAS/oE,GACvD,MAAOM,GAASyoE,EAAS,CACrBzoE,GAASyoE,EACTj5D,GAAUo2D,EAAQ/oB,OAAOn9C,EACzC,CACY,OAAO8P,CACnB,GAAW,IAAMk2D,CACjB,EACI,IAAIw/B,GAAuC,SAAUllG,EAAOmlG,EAAsBC,EAAWC,GACzF,IAAI71F,EAAS,GACb,EAAG,CACC,IAAK41F,EAAW,CACZplG,GAChB,CACYwP,EAAS61F,EAASrlG,GAASwP,EAC3BxP,GAASmlG,CACrB,OAAiBnlG,EAAQmlG,GAAwBA,GACzC,OAAO31F,CACf,EACI,IAAI81F,GAA8B,SAAUtlG,EAAOulG,EAAqBC,EAAmBJ,EAAW1/B,GAClG,IAAIy/B,EAAuBK,EAAoBD,EAAsB,EACrE,OAASvlG,EAAQ,EAAI,IAAM,KACtBklG,GAAqC7sF,KAAKgL,IAAIrjB,GAAQmlG,EAAsBC,GAAW,SAAUj4B,GAC9F,OAAOJ,EAAgB10D,KAAKolB,MAAM0vC,EAAYg4B,GAAwBI,EACtF,IACgB7/B,EAChB,EACI,IAAI+/B,GAAgC,SAAUzlG,EAAO4lE,EAASF,GAC1D,GAAIA,SAAgB,EAAG,CAAEA,EAAS,IAAK,CACvC,IAAIy/B,EAAuBv/B,EAAQjmE,OACnC,OAAQulG,GAAqC7sF,KAAKgL,IAAIrjB,GAAQmlG,EAAsB,OAAO,SAAUh4B,GAAa,OAAOvH,EAAQvtD,KAAKolB,MAAM0vC,EAAYg4B,GAAuB,IAAMz/B,CAC7L,EACI,IAAIggC,GAAY,GAAK,EACrB,IAAIC,GAAuB,GAAK,EAChC,IAAIC,GAA4B,GAAK,EACrC,IAAIC,GAA2B,GAAK,EACpC,IAAIC,GAAmB,SAAU9lG,EAAOwnE,EAASu+B,EAAaC,EAActgC,EAAQ0B,GAChF,GAAIpnE,GAAS,MAAQA,EAAQ,KAAM,CAC/B,OAAOilG,GAAkBjlG,EAAO,EAAqB0lE,EAAO/lE,OAAS,EACjF,CACQ,IAAIsmG,EAAM5tF,KAAKgL,IAAIrjB,GACnB,IAAIwP,EAASk2D,EACb,GAAIugC,IAAQ,EAAG,CACX,OAAOz+B,EAAQ,GAAKh4D,CAChC,CACQ,IAAK,IAAIwtE,EAAQ,EAAGipB,EAAM,GAAKjpB,GAAS,EAAGA,IAAS,CAChD,IAAIkpB,EAAcD,EAAM,GACxB,GAAIC,IAAgB,GAAKj7F,GAASm8D,EAAOs+B,KAAcl2F,IAAW,GAAI,CAClEA,EAASg4D,EAAQ0+B,GAAe12F,CAChD,MACiB,GAAI02F,EAAc,GAClBA,IAAgB,GAAKlpB,IAAU,GAC/BkpB,IAAgB,GAAKlpB,IAAU,GAAK/xE,GAASm8D,EAAOu+B,KACpDO,IAAgB,GAAKlpB,IAAU,GAAK/xE,GAASm8D,EAAOw+B,KAA8B5lG,EAAQ,KAC1FkmG,IAAgB,GAAKlpB,EAAQ,GAAK/xE,GAASm8D,EAAOy+B,IAA4B,CAC/Er2F,EAASg4D,EAAQ0+B,IAAgBlpB,EAAQ,EAAI+oB,EAAY/oB,EAAQ,GAAK,IAAMxtE,CAC5F,MACiB,GAAI02F,IAAgB,GAAKlpB,EAAQ,EAAG,CACrCxtE,EAASu2F,EAAY/oB,EAAQ,GAAKxtE,CAClD,CACYy2F,EAAM5tF,KAAKolB,MAAMwoE,EAAM,GACnC,CACQ,OAAQjmG,EAAQ,EAAIgmG,EAAe,IAAMx2F,CACjD,EACI,IAAI22F,GAA+B,OACnC,IAAIC,GAA6B,OACjC,IAAIC,GAAoB,OACxB,IAAIC,GAAkB,OACtB,IAAIrB,GAAoB,SAAUjlG,EAAOsD,EAAMijG,GAC3C,IAAIC,EAAgBD,EAAe,KAAO,GAC1C,IAAIE,EAAYF,EAAe,IAAM,GACrC,IAAIG,EAAeH,EAAe,KAAO,GACzC,IAAII,EAAcJ,EAAe,IAAM,GACvC,OAAQjjG,GACJ,KAAK,EACD,MAAO,IAAMqjG,EACjB,KAAK,EACD,MAAO,IAAMA,EACjB,KAAK,EACD,MAAO,IAAMA,EACjB,KAAK,EACD,IAAIn3F,EAAS81F,GAA4BtlG,EAAO,GAAI,GAAI,KAAMwmG,GAC9D,OAAOh3F,EAAO7P,OAAS,EAAI,IAAM6P,EAASA,EAC9C,KAAK,EACD,OAAOi2F,GAA8BzlG,EAAO,aAAcymG,GAC9D,KAAK,EACD,OAAO1B,GAAsB/kG,EAAO,EAAG,KAAM2kG,GAAa,EAAiB6B,GAAej9D,cAC9F,KAAK,EACD,OAAOw7D,GAAsB/kG,EAAO,EAAG,KAAM2kG,GAAa,EAAiB6B,GAC/E,KAAK,EACD,OAAOlB,GAA4BtlG,EAAO,IAAK,IAAK,MAAOwmG,GAC/D,KAAK,EACD,OAAOlB,GAA4BtlG,EAAO,GAAI,IAAK,MAAOwmG,GAC9D,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,GAAI,GAAI,MAAOwmG,GAC7D,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAM,KAAM,KAAMwmG,GAChE,KAAK,GACL,KAAK,GACD,OAAOzB,GAAsB/kG,EAAO,EAAG,KAAM4kG,GAAU,EAAiB4B,GAC5E,KAAK,GACD,OAAOzB,GAAsB/kG,EAAO,EAAG,KAAM4kG,GAAU,EAAiB4B,GAAej9D,cAC3F,KAAK,GACD,OAAO+7D,GAA4BtlG,EAAO,KAAM,KAAM,KAAMwmG,GAChE,KAAK,GACL,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAM,KAAM,KAAMwmG,GAChE,KAAK,GACD,OAAOf,GAA8BzlG,EAAO,eAAgBymG,GAChE,KAAK,GACD,OAAOhB,GAA8BzlG,EAAO,aAAcymG,GAC9D,KAAK,GACL,KAAK,GACD,OAAOX,GAAiB9lG,EAAO,aAAcmmG,GAA8B,IAAKM,EAAWd,GAAuBC,GAA4BC,IAClJ,KAAK,GACD,OAAOC,GAAiB9lG,EAAO,aAAcomG,GAA4B,IAAKK,EAAWf,GAAYC,GAAuBC,GAA4BC,IAC5J,KAAK,GACD,OAAOC,GAAiB9lG,EAAO,aAAcmmG,GAA8B,IAAKM,EAAWd,GAAuBC,GAA4BC,IAClJ,KAAK,GACD,OAAOC,GAAiB9lG,EAAO,aAAcomG,GAA4B,IAAKK,EAAWf,GAAYC,GAAuBC,GAA4BC,IAC5J,KAAK,GACD,OAAOC,GAAiB9lG,EAAO,aAAc,OAAQqmG,GAAmBI,EAAW,GACvF,KAAK,GACD,OAAOX,GAAiB9lG,EAAO,aAAc,OAAQqmG,GAAmBI,EAAWf,GAAYC,GAAuBC,IAC1H,KAAK,GACD,OAAOE,GAAiB9lG,EAAO,aAAc,OAAQsmG,GAAiBI,EAAchB,GAAYC,GAAuBC,IAC3H,KAAK,GACD,OAAOE,GAAiB9lG,EAAO,aAAc,OAAQsmG,GAAiBI,EAAc,GACxF,KAAK,GACD,OAAOZ,GAAiB9lG,EAAO,aAAc,MAAOsmG,GAAiBI,EAAchB,GAAYC,GAAuBC,IAC1H,KAAK,GACD,OAAON,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOzB,GAAsB/kG,EAAO,EAAG,MAAO8kG,GAAU,EAAiB0B,GAC7E,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOzB,GAAsB/kG,EAAO,EAAG,MAAO6kG,GAAQ,EAAiB2B,GAC3E,KAAK,GACD,OAAOf,GAA8BzlG,EAAO,oDAChD,KAAK,GACD,OAAOylG,GAA8BzlG,EAAO,mDAChD,KAAK,GACD,OAAOslG,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOf,GAA8BzlG,EAAO,mDAAoDymG,GACpG,KAAK,GACD,OAAOhB,GAA8BzlG,EAAO,kDAAmDymG,GACnG,KAAK,GACD,OAAOnB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAQ,KAAQ,KAAMwmG,GACpE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAQ,KAAQ,KAAMwmG,GACpE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,GACD,OAAOlB,GAA4BtlG,EAAO,KAAO,KAAO,KAAMwmG,GAClE,KAAK,EACL,QACI,OAAOlB,GAA4BtlG,EAAO,GAAI,GAAI,KAAMwmG,GAExE,EAEI,IAAII,GAAmB,0BACvB,IAAIC,GAAgC,WAChC,SAASA,EAAe3vE,EAASjyB,EAASwM,GACtC3T,KAAKo5B,QAAUA,EACfp5B,KAAK2T,QAAUA,EACf3T,KAAKgpG,iBAAmB,GACxBhpG,KAAKipG,iBAAmB9hG,EACxBnH,KAAKwmG,SAAW,IAAID,GACpBvmG,KAAKkpG,WAAa,EAClB,IAAK/hG,EAAQiJ,cAAe,CACxB,MAAM,IAAI01D,MAAM,iDAChC,CACY9lE,KAAKR,gBAAkBQ,KAAK0sC,UAAUvlC,EAAQiJ,cAAc5Q,gBAAiB,MACzF,CACQupG,EAAe1iG,UAAU8iG,SAAW,SAAU/4F,EAAeg5F,GACzD,IAAI1G,EAAQ1iG,KACZ,IAAIkkG,EAASmF,GAAsBj5F,EAAeg5F,GAClD,IAAKlF,EAAOC,cAAe,CACvB,OAAOv6F,QAAQ4jE,OAAO,+BACtC,CACY,IAAIj1D,EAAUnI,EAAcC,YAAYlB,YACxC,IAAIsJ,EAAUrI,EAAcC,YAAYnB,YACxC,IAAIo6F,EAAcpF,EAAOC,cACzB,IAAIoF,EAAgBD,EAAY/pG,SAIhC,IAAIiqG,EAAaC,GAAavF,GAAQt+F,MAAK,WAAc,OAAOsnE,EAAUw1B,OAAY,OAAQ,GAAG,WAC7F,IAAIgH,EAAST,EACb,OAAOv7B,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACD3D,KAAKgpG,iBAAiBz/F,QAAQogG,IAC9B,GAAIL,EAAa,CACbA,EAAYM,SAASR,EAAWh7F,KAAMg7F,EAAWn7F,KACjD,GAAI,sBAAsB0D,KAAK2D,UAAUU,aACpCszF,EAAY7wF,UAAY2wF,EAAWn7F,KAAOq7F,EAAY/wF,UAAY6wF,EAAWh7F,MAAO,CACrFpO,KAAKo5B,QAAQywE,OAAOx/F,KAAK,yDACzBrK,KAAKo5B,QAAQk1C,aAAetuE,KAAKo5B,QAAQk1C,aAAa3nE,IAAI2iG,EAAY/wF,QAAU6wF,EAAWh7F,KAAMk7F,EAAY7wF,QAAU2wF,EAAWn7F,IAAK,EAAG,EAC9K,CACA,CAC4By7F,EAAU1pG,KAAK2T,QAAQ+1F,QACvBT,EAAmBjpG,KAAK8pG,uBACxB,UAAWb,IAAqB,YAAa,CACzC,MAAO,CAAC,EAAcr/F,QAAQ4jE,OAAO,qBAAuBxtE,KAAKipG,iBAAiBp3F,SAAW,2BAC7H,CAC4B,KAAM03F,EAAc7uD,OAAS6uD,EAAc7uD,MAAMqvD,OAAQ,MAAO,CAAC,EAAa,GAC9E,MAAO,CAAC,EAAaR,EAAc7uD,MAAMqvD,OAC7C,KAAK,EACD76D,EAAGy+B,OACHz+B,EAAGvrC,MAAQ,EACf,KAAK,EACD,IAAK,iBAAiBgO,KAAK2D,UAAUU,WAAY,MAAO,CAAC,EAAa,GACtE,MAAO,CAAC,EAAag0F,GAAYT,IACrC,KAAK,EACDr6D,EAAGy+B,OACHz+B,EAAGvrC,MAAQ,EACf,KAAK,EACD,UAAW+lG,IAAY,WAAY,CAC/B,MAAO,CAAC,EAAc9/F,QAAQ2jE,UACrB3nE,MAAK,WAAc,OAAO8jG,EAAQH,EAAeN,EAAkB,IACnErjG,MAAK,WAAc,OAAOs+F,CAAO,IAC1E,CAC4B,MAAO,CAAC,EAAcA,GAElD,GACA,GAAe,IACHqF,EAAchS,OACdgS,EAAchsB,MAAM0sB,GAAiB1qG,SAAS2qG,SAAW,iBAEzDC,GAAmBnqG,KAAKipG,iBAAiB74F,cAAemI,EAASE,GACjE8wF,EAAc9H,aAAa8H,EAAca,UAAUpqG,KAAKR,iBAAkB+pG,EAAc/pG,iBACxF+pG,EAAc/R,QACd,OAAOgS,CACnB,EACQT,EAAe1iG,UAAUgkG,mBAAqB,SAAUxiE,GACpD,GAAI2xD,GAAY3xD,EAAM,GAAgB,CAClC,QAChB,CACY,GAAI69D,GAAgB79D,GAAO,CACvB,OAAO7nC,KAAKsqG,kBAAkBziE,EAC9C,CACY,GAAIs+D,GAAet+D,GAAO,CACtB,OAAO7nC,KAAKuqG,iBAAiB1iE,EAC7C,CACY,GAAIu+D,GAAev+D,GAAO,CACtB,OAAO7nC,KAAKwqG,iBAAiB3iE,EAC7C,CACY,IAAI6+B,EAAQ7+B,EAAK6E,UAAU,OAC3B,GAAI+4D,GAAe/+B,GAAQ,CACvB,GAAI++B,GAAe59D,IAASA,EAAK86D,YAAc96D,EAAK86D,aAAe96D,EAAK+2D,IAAK,CACzEl4B,EAAMk4B,IAAM/2D,EAAK86D,WACjBj8B,EAAM+jC,OAAS,EACnC,CACgB,GAAI/jC,EAAMgkC,UAAY,OAAQ,CAC1BhkC,EAAMgkC,QAAU,OACpC,CACA,CACY,GAAIpE,GAAgB5/B,GAAQ,CACxB,OAAO1mE,KAAK2qG,yBAAyBjkC,EACrD,CACY,OAAOA,CACnB,EACQqiC,EAAe1iG,UAAUskG,yBAA2B,SAAU9iE,GAC1D,IAAI6+B,EAAQnnE,SAASY,cAAc,4BACnCyqG,GAAc/iE,EAAK/gC,MAAO4/D,GAC1B,OAAOA,CACnB,EACQqiC,EAAe1iG,UAAUmkG,iBAAmB,SAAU3iE,GAClD,IACI,IAAIgjE,EAAQhjE,EAAKgjE,MACjB,GAAIA,GAASA,EAAMC,SAAU,CACzB,IAAI9vD,EAAM,GAAG10C,MAAMC,KAAKskG,EAAMC,SAAU,GAAG1wF,QAAO,SAAU4gC,EAAK+vD,GAC7D,GAAIA,UAAeA,EAAKC,UAAY,SAAU,CAC1C,OAAOhwD,EAAM+vD,EAAKC,OAC9C,CACwB,OAAOhwD,CAC/B,GAAuB,IACH,IAAIl0C,EAAQ+gC,EAAK6E,UAAU,OAC3B5lC,EAAMmkG,YAAcjwD,EACpB,OAAOl0C,CAC3B,CACA,CACY,MAAO7B,GAEHjF,KAAKo5B,QAAQywE,OAAOpgG,MAAM,qCAAsCxE,GAChE,GAAIA,EAAEhD,OAAS,gBAAiB,CAC5B,MAAMgD,CAC1B,CACA,CACY,OAAO4iC,EAAK6E,UAAU,MAClC,EACQq8D,EAAe1iG,UAAUikG,kBAAoB,SAAU7L,GACnD,IAAIvvD,EACJ,GAAIlvC,KAAK2T,QAAQu3F,cAAgBzM,EAAOruF,cAAe,CACnD,IAAIouF,EAAMC,EAAOruF,cAAcjQ,cAAc,OAC7C,IACIq+F,EAAII,IAAMH,EAAOK,YACjB,OAAON,CAC3B,CACgB,MAAOv5F,GACHjF,KAAKo5B,QAAQywE,OAAOsB,KAAK,sDAAuD1M,EACpG,CACA,CACY,IAAI2M,EAAe3M,EAAO/xD,UAAU,OACpC,IACI0+D,EAAaxyF,MAAQ6lF,EAAO7lF,MAC5BwyF,EAAavyF,OAAS4lF,EAAO5lF,OAC7B,IAAI6lF,EAAMD,EAAOE,WAAW,MAC5B,IAAI0M,EAAYD,EAAazM,WAAW,MACxC,GAAI0M,EAAW,CACX,IAAKrrG,KAAK2T,QAAQ23F,YAAc5M,EAAK,CACjC2M,EAAUE,aAAa7M,EAAIa,aAAa,EAAG,EAAGd,EAAO7lF,MAAO6lF,EAAO5lF,QAAS,EAAG,EACvG,KACyB,CACD,IAAI2yF,GAAMt8D,EAAKuvD,EAAOE,WAAW,aAAe,MAAQzvD,SAAY,EAAIA,EAAKuvD,EAAOE,WAAW,SAC/F,GAAI6M,EAAI,CACJ,IAAIC,EAAUD,EAAGE,uBACjB,IAAKD,IAAY,MAAQA,SAAiB,OAAS,EAAIA,EAAQE,yBAA2B,MAAO,CAC7F3rG,KAAKo5B,QAAQywE,OAAOx/F,KAAK,sEAAuEo0F,EAChI,CACA,CACwB4M,EAAUxM,UAAUJ,EAAQ,EAAG,EACvD,CACA,CACgB,OAAO2M,CACvB,CACY,MAAOnmG,GACHjF,KAAKo5B,QAAQywE,OAAOsB,KAAK,0CAA2C1M,EACpF,CACY,OAAO2M,CACnB,EACQrC,EAAe1iG,UAAUkkG,iBAAmB,SAAUqB,GAClD,IAAInN,EAASmN,EAAMx7F,cAAcjQ,cAAc,UAC/Cs+F,EAAO7lF,MAAQgzF,EAAMr9F,YACrBkwF,EAAO5lF,OAAS+yF,EAAMn9F,aACtB,IAAIiwF,EAAMD,EAAOE,WAAW,MAC5B,IACI,GAAID,EAAK,CACLA,EAAIG,UAAU+M,EAAO,EAAG,EAAGnN,EAAO7lF,MAAO6lF,EAAO5lF,QAChD,IAAK7Y,KAAK2T,QAAQ23F,WAAY,CAC1B5M,EAAIa,aAAa,EAAG,EAAGd,EAAO7lF,MAAO6lF,EAAO5lF,OACpE,CACA,CACgB,OAAO4lF,CACvB,CACY,MAAOx5F,GACHjF,KAAKo5B,QAAQywE,OAAOsB,KAAK,yCAA0CS,EACnF,CACY,IAAIC,EAAcD,EAAMx7F,cAAcjQ,cAAc,UACpD0rG,EAAYjzF,MAAQgzF,EAAMr9F,YAC1Bs9F,EAAYhzF,OAAS+yF,EAAMn9F,aAC3B,OAAOo9F,CACnB,EACQ9C,EAAe1iG,UAAUylG,gBAAkB,SAAUplC,EAAO7M,EAAOkyC,GAC/D,IAAKhH,GAAclrC,KACbwsC,GAAgBxsC,KACbA,EAAMmyC,aAAalD,aACZ9oG,KAAK2T,QAAQs4F,iBAAmB,aAAejsG,KAAK2T,QAAQs4F,eAAepyC,IAAU,CACjG,IAAK75D,KAAK2T,QAAQo4F,aAAehH,GAAclrC,KAAWusC,GAAevsC,GAAQ,CAC7E6M,EAAMpmE,YAAYN,KAAK0sC,UAAUmtB,EAAOkyC,GAC5D,CACA,CACA,EACQhD,EAAe1iG,UAAU6lG,gBAAkB,SAAUrkE,EAAM6+B,EAAOqlC,GAC9D,IAAIrJ,EAAQ1iG,KACZ,IAAK,IAAI65D,EAAQhyB,EAAKw9D,WAAax9D,EAAKw9D,WAAWzH,WAAa/1D,EAAK+1D,WAAY/jC,EAAOA,EAAQA,EAAMgrC,YAAa,CAC/G,GAAIE,GAAclrC,IAAUmrC,GAAcnrC,WAAiBA,EAAMorC,gBAAkB,WAAY,CAC3F,IAAIA,EAAgBprC,EAAMorC,gBAC1B,GAAIA,EAAcpjG,OAAQ,CACtBojG,EAAc17F,SAAQ,SAAU4iG,GAAgB,OAAOzJ,EAAMoJ,gBAAgBplC,EAAOylC,EAAcJ,EAAY,GACtI,CACA,KACqB,CACD/rG,KAAK8rG,gBAAgBplC,EAAO7M,EAAOkyC,EACvD,CACA,CACA,EACQhD,EAAe1iG,UAAUqmC,UAAY,SAAU7E,EAAMkkE,GACjD,GAAIjH,GAAWj9D,GAAO,CAClB,OAAOtoC,SAASoR,eAAek3B,EAAKjlC,KACpD,CACY,IAAKilC,EAAKz3B,cAAe,CACrB,OAAOy3B,EAAK6E,UAAU,MACtC,CACY,IAAIpiC,EAASu9B,EAAKz3B,cAAcC,YAChC,GAAI/F,GAAUy6F,GAAcl9D,KAAU+xD,GAAkB/xD,IAASo+D,GAAiBp+D,IAAQ,CACtF,IAAI6+B,EAAQ1mE,KAAKqqG,mBAAmBxiE,GACpC6+B,EAAM5/D,MAAMslG,mBAAqB,OACjC,IAAItlG,EAAQwD,EAAO0N,iBAAiB6vB,GACpC,IAAIwkE,EAAc/hG,EAAO0N,iBAAiB6vB,EAAM,WAChD,IAAIykE,EAAahiG,EAAO0N,iBAAiB6vB,EAAM,UAC/C,GAAI7nC,KAAKipG,mBAAqBphE,GAAQ+xD,GAAkBlzB,GAAQ,CAC5D1mE,KAAK8pG,uBAAyBpjC,CAClD,CACgB,GAAIq/B,GAAcr/B,GAAQ,CACtB6lC,GAAuB7lC,EAC3C,CACgB,IAAI8/B,EAAWxmG,KAAKwmG,SAASnmC,MAAM,IAAI24B,GAA4Bh5F,KAAKo5B,QAAStyB,IACjF,IAAIoe,EAASllB,KAAKwsG,qBAAqB3kE,EAAM6+B,EAAO2lC,EAAaI,GAAkBC,QACnF,GAAIpG,GAAgBz+D,GAAO,CACvBkkE,EAAa,IACjC,CACgB,IAAK5F,GAAet+D,GAAO,CACvB7nC,KAAKksG,gBAAgBrkE,EAAM6+B,EAAOqlC,EACtD,CACgB,GAAI7mF,EAAQ,CACRwhD,EAAMimC,aAAaznF,EAAQwhD,EAAMk3B,WACrD,CACgB,IAAI71B,EAAQ/nE,KAAKwsG,qBAAqB3kE,EAAM6+B,EAAO4lC,EAAYG,GAAkBG,OACjF,GAAI7kC,EAAO,CACPrB,EAAMpmE,YAAYynE,EACtC,CACgB/nE,KAAKwmG,SAAS1nC,IAAI0nC,GAClB,GAAK1/F,IAAU9G,KAAK2T,QAAQo4F,YAAc9F,GAAiBp+D,MAAWi+D,GAAgBj+D,IAClFkkE,EAAY,CACZnB,GAAc9jG,EAAO4/D,EACzC,CACgB,GAAI7+B,EAAKnvB,YAAc,GAAKmvB,EAAKrvB,aAAe,EAAG,CAC/CxY,KAAKgpG,iBAAiBlnG,KAAK,CAAC4kE,EAAO7+B,EAAKrvB,WAAYqvB,EAAKnvB,WAC7E,CACgB,IAAK4sF,GAAkBz9D,IAAS29D,GAAgB39D,MAC3Cy9D,GAAkB5+B,IAAU8+B,GAAgB9+B,IAAS,CACtDA,EAAMxkE,MAAQ2lC,EAAK3lC,KACvC,CACgB,OAAOwkE,CACvB,CACY,OAAO7+B,EAAK6E,UAAU,MAClC,EACQq8D,EAAe1iG,UAAUmmG,qBAAuB,SAAU3kE,EAAM6+B,EAAO5/D,EAAO+lG,GAC1E,IAAInK,EAAQ1iG,KACZ,IAAK8G,EAAO,CACR,MAChB,CACY,IAAI5E,EAAQ4E,EAAM8vF,QAClB,IAAIr3F,EAAWmnE,EAAMt2D,cACrB,IAAK7Q,IAAa2C,GAASA,IAAU,QAAUA,IAAU,oBAAsB4E,EAAMosF,UAAY,OAAQ,CACrG,MAChB,CACYlzF,KAAKwmG,SAASnmC,MAAM,IAAI24B,GAA4Bh5F,KAAKo5B,QAAStyB,IAClE,IAAIqxF,EAAc,IAAIY,GAA2B/4F,KAAKo5B,QAAStyB,GAC/D,IAAIgmG,EAA2BvtG,EAASY,cAAc,4BACtDyqG,GAAc9jG,EAAOgmG,GACrB3U,EAAYvB,QAAQrtF,SAAQ,SAAUo0E,GAClC,GAAIA,EAAMn4E,OAAS,EAAsB,CACrCsnG,EAAyBxsG,YAAYf,EAASoR,eAAegtE,EAAMz7E,OACvF,MACqB,GAAIy7E,EAAMn4E,OAAS,GAAoB,CACxC,IAAIg5F,EAAMj/F,EAASY,cAAc,OACjCq+F,EAAII,IAAMjhB,EAAMz7E,MAChBs8F,EAAI13F,MAAMa,QAAU,IACpBmlG,EAAyBxsG,YAAYk+F,EACzD,MACqB,GAAI7gB,EAAMn4E,OAAS,GAAmB,CACvC,GAAIm4E,EAAM17E,OAAS,OAAQ,CACvB,IAAI8qG,EAAOpvB,EAAM5+B,OAAOlwB,OAAOqyD,IAC/B,GAAI6rB,EAAKlrG,OAAQ,CACbirG,EAAyBxsG,YAAYf,EAASoR,eAAek3B,EAAKiE,aAAaihE,EAAK,GAAG7qG,QAAU,IAC7H,CACA,MACyB,GAAIy7E,EAAM17E,OAAS,UAAW,CAC/B,IAAIitC,EAAKyuC,EAAM5+B,OAAOlwB,OAAOyyD,IAA0B0V,EAAU9nD,EAAG,GAAI89D,EAAe99D,EAAG,GAC1F,GAAI8nD,GAAW9V,GAAa8V,GAAU,CAClC,IAAIiW,EAAevK,EAAM8D,SAASC,gBAAgBzP,EAAQ90F,OAC1D,IAAIgrG,EAAcF,GAAgB9rB,GAAa8rB,GACzCjZ,GAAc1zB,MAAMqiC,EAAMtpE,QAAS4zE,EAAa9qG,OAChD,EACN4qG,EAAyBxsG,YAAYf,EAASoR,eAAew2F,GAAkB8F,EAAcC,EAAa,QACtI,CACA,MACyB,GAAIvvB,EAAM17E,OAAS,WAAY,CAChC,IAAI+8D,EAAK2e,EAAM5+B,OAAOlwB,OAAOyyD,IAA0B0V,EAAUh4B,EAAG,GAAImuC,EAAQnuC,EAAG,GAAIguC,EAAehuC,EAAG,GACzG,GAAIg4B,GAAW9V,GAAa8V,GAAU,CAClC,IAAIoW,EAAgB1K,EAAM8D,SAASE,iBAAiB1P,EAAQ90F,OAC5D,IAAImrG,EAAgBL,GAAgB9rB,GAAa8rB,GAC3CjZ,GAAc1zB,MAAMqiC,EAAMtpE,QAAS4zE,EAAa9qG,OAChD,EACN,IAAI4sC,EAAYq+D,GAASA,EAAM3nG,OAAS,EAAuB2nG,EAAMjrG,MAAQ,GAC7E,IAAIoqC,EAAO8gE,EACN/5F,KAAI,SAAUnR,GAAS,OAAOilG,GAAkBjlG,EAAOmrG,EAAe,MAAO,IAC7El2C,KAAKroB,GACVg+D,EAAyBxsG,YAAYf,EAASoR,eAAe27B,GACzF,CACA,MAEA,MACqB,GAAIqxC,EAAMn4E,OAAS,GAAsB,CAC1C,OAAQm4E,EAAMz7E,OACV,IAAK,aACD4qG,EAAyBxsG,YAAYf,EAASoR,eAAe8mF,GAASU,EAAYf,OAAQsL,EAAMwG,aAAc,QAC9G,MACJ,IAAK,cACD4D,EAAyBxsG,YAAYf,EAASoR,eAAe8mF,GAASU,EAAYf,SAAUsL,EAAMwG,WAAY,SAC9G,MACJ,QAEI4D,EAAyBxsG,YAAYf,EAASoR,eAAegtE,EAAMz7E,QAE/F,CACA,IACY4qG,EAAyBppG,UAAY4pG,GAAmC,IAAMC,GAC9E,IAAIC,EAAeX,IAAcJ,GAAkBC,OAC7C,IAAMY,GACN,IAAMC,GACZ,GAAItH,GAAiBv/B,GAAQ,CACzBA,EAAMhjE,UAAU+pG,WAAaD,CAC7C,KACiB,CACD9mC,EAAMhjE,WAAa8pG,CACnC,CACY,OAAOV,CACnB,EACQ/D,EAAexqE,QAAU,SAAUr+B,GAC/B,GAAIA,EAAUuM,WAAY,CACtBvM,EAAUuM,WAAW+wF,YAAYt9F,GACjC,OAAO,IACvB,CACY,OAAO,KACnB,EACQ,OAAO6oG,CACf,CAvWsB,GAwWlB,IAAI0D,IACJ,SAAWA,GACPA,EAAkBA,EAAkB,UAAY,GAAK,SACrDA,EAAkBA,EAAkB,SAAW,GAAK,OACvD,EAHD,CAGGA,KAAsBA,GAAoB,KAC7C,IAAIpD,GAAwB,SAAUj5F,EAAeypF,GACjD,IAAI6T,EAAuBt9F,EAAcjQ,cAAc,UACvDutG,EAAqBhqG,UAAY,wBACjCgqG,EAAqB5mG,MAAM+uF,WAAa,SACxC6X,EAAqB5mG,MAAM6F,SAAW,QACtC+gG,EAAqB5mG,MAAMsH,KAAO,WAClCs/F,EAAqB5mG,MAAMmH,IAAM,MACjCy/F,EAAqB5mG,MAAM6mG,OAAS,IACpCD,EAAqB90F,MAAQihF,EAAOjhF,MAAM7G,WAC1C27F,EAAqB70F,OAASghF,EAAOhhF,OAAO9G,WAC5C27F,EAAqBE,UAAY,KACjCF,EAAqBttG,aAAa0oG,GAAkB,QACpD14F,EAAc/P,KAAKC,YAAYotG,GAC/B,OAAOA,CACf,EACI,IAAIG,GAAa,SAAUrP,GACvB,OAAO,IAAI50F,SAAQ,SAAU2jE,GACzB,GAAIixB,EAAIsP,SAAU,CACdvgC,IACA,MAChB,CACY,IAAKixB,EAAII,IAAK,CACVrxB,IACA,MAChB,CACYixB,EAAIqB,OAAStyB,EACbixB,EAAIsB,QAAUvyB,CAC1B,GACA,EACI,IAAIy8B,GAAc,SAAUzqG,GACxB,OAAOqK,QAAQC,IAAI,GAAGvD,MAAMC,KAAKhH,EAASwuG,OAAQ,GAAG16F,IAAIw6F,IACjE,EACI,IAAIpE,GAAe,SAAUvF,GACzB,OAAO,IAAIt6F,SAAQ,SAAU2jE,EAASC,GAClC,IAAI87B,EAAcpF,EAAOC,cACzB,IAAKmF,EAAa,CACd,OAAO97B,EAAO,gCAC9B,CACY,IAAI+7B,EAAgBD,EAAY/pG,SAChC+pG,EAAYzJ,OAASqE,EAAOrE,OAAS,WACjCyJ,EAAYzJ,OAASqE,EAAOrE,OAAS,KACrC,IAAI5rC,EAAW+5C,aAAY,WACvB,GAAIzE,EAAclpG,KAAK4tG,WAAWpsG,OAAS,GAAK0nG,EAAc2E,aAAe,WAAY,CACrFvlE,cAAcsrB,GACdsZ,EAAQ22B,EAChC,CACA,GAAmB,GACnB,CACA,GACA,EACI,IAAIiK,GAAyB,CACzB,MACA,IACA,WAEJ,IAAIvD,GAAgB,SAAU9jG,EAAOoG,GAEjC,IAAK,IAAI2D,EAAI/J,EAAMjF,OAAS,EAAGgP,GAAK,EAAGA,IAAK,CACxC,IAAIm1D,EAAWl/D,EAAM8uD,KAAK/kD,GAC1B,GAAIs9F,GAAuBlmG,QAAQ+9D,MAAe,EAAG,CACjD94D,EAAOpG,MAAMsnG,YAAYpoC,EAAUl/D,EAAMunG,iBAAiBroC,GAC1E,CACA,CACQ,OAAO94D,CACf,EACI,IAAI+8F,GAAmB,SAAUC,GAC7B,IAAIp7B,EAAM,GACV,GAAIo7B,EAAS,CACTp7B,GAAO,aACP,GAAIo7B,EAAQjoG,KAAM,CACd6sE,GAAOo7B,EAAQjoG,IAC/B,CACY,GAAIioG,EAAQoE,eAAgB,CACxBx/B,GAAOo7B,EAAQoE,cAC/B,CACY,GAAIpE,EAAQqE,SAAU,CAClBz/B,GAAO,IAAOo7B,EAAQqE,SAAW,GACjD,CACY,GAAIrE,EAAQsE,SAAU,CAClB1/B,GAAO,IAAOo7B,EAAQsE,SAAW,GACjD,CACY1/B,GAAO,GACnB,CACQ,OAAOA,CACf,EACI,IAAIq7B,GAAqB,SAAU/5F,EAAe/B,EAAGC,GACjD,GAAI8B,GACAA,EAAcC,cACbhC,IAAM+B,EAAcC,YAAYlB,aAAeb,IAAM8B,EAAcC,YAAYnB,aAAc,CAC9FkB,EAAcC,YAAYu5F,SAASv7F,EAAGC,EAClD,CACA,EACI,IAAIq7F,GAAoB,SAAUz6D,GAC9B,IAAI/nC,EAAU+nC,EAAG,GAAI7gC,EAAI6gC,EAAG,GAAI5gC,EAAI4gC,EAAG,GACvC/nC,EAAQqR,WAAanK,EACrBlH,EAAQuR,UAAYpK,CAC5B,EACI,IAAImgG,GAAgB,UACpB,IAAIC,GAAe,SACnB,IAAIpB,GAAmC,wCACvC,IAAIC,GAAkC,uCACtC,IAAIoB,GAA4B,mEAChC,IAAIpC,GAAyB,SAAUlsG,GACnCuuG,GAAavuG,EAAM,IAAMitG,GAAmCmB,GAAgBE,GAA4B,eAAiBpB,GAAkCmB,GAAeC,GAClL,EACI,IAAIC,GAAe,SAAUvuG,EAAM47C,GAC/B,IAAI18C,EAAWc,EAAK+P,cACpB,GAAI7Q,EAAU,CACV,IAAIuH,EAAQvH,EAASY,cAAc,SACnC2G,EAAMmkG,YAAchvD,EACpB57C,EAAKC,YAAYwG,EAC7B,CACA,EAEI,IAAI+nG,GAA8B,WAC9B,SAASA,IACjB,CACQA,EAAaC,UAAY,SAAU/d,GAC/B,IAAIge,EAAOF,EAAaG,MACxB,IAAKD,EAAM,CACP,MAAO,aACvB,CACYA,EAAKE,KAAOle,EACZge,EAAKE,KAAOF,EAAKE,KACjB,OAAOF,EAAKG,SAAWH,EAAKI,SAAWJ,EAAKK,IACxD,EACQP,EAAaQ,aAAe,SAAUzQ,GAClC,OAAOiQ,EAAaC,UAAUlQ,KAASiQ,EAAaS,OAChE,EACQT,EAAaU,WAAa,SAAUjlG,GAChCukG,EAAaG,MAAQ1kG,EAAO/K,SAASY,cAAc,KACnD0uG,EAAaS,QAAUT,EAAaC,UAAUxkG,EAAOklG,SAASP,KAC1E,EACQJ,EAAaS,QAAU,cACvB,OAAOT,CACf,CArBoB,GAsBhB,IAAIY,GAAuB,WACvB,SAASA,EAAMr2E,EAASs2E,GACpB1vG,KAAKo5B,QAAUA,EACfp5B,KAAK0vG,SAAWA,EAEhB1vG,KAAK2vG,OAAS,EAC1B,CACQF,EAAMppG,UAAU4qF,SAAW,SAAU2N,GACjC,IAAIpwE,EAAS5kB,QAAQ2jE,UACrB,GAAIvtE,KAAKoJ,IAAIw1F,GAAM,CACf,OAAOpwE,CACvB,CACY,GAAIohF,GAAYhR,IAAQiR,GAAajR,GAAM,EACtC5+F,KAAK2vG,OAAO/Q,GAAO5+F,KAAK8vG,UAAUlR,IAAMY,OAAM,WAE/D,IACgB,OAAOhxE,CACvB,CACY,OAAOA,CACnB,EAEQihF,EAAMppG,UAAUy3C,MAAQ,SAAU8gD,GAC9B,OAAO5+F,KAAK2vG,OAAO/Q,EAC/B,EACQ6Q,EAAMppG,UAAUypG,UAAY,SAAUznG,GAClC,OAAO6kE,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIqvG,EAAcU,EAASC,EAAUpR,EACrC,IAAI8D,EAAQ1iG,KACZ,OAAO0tE,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACD0rG,EAAeR,GAAaQ,aAAahnG,GACzC0nG,GAAWE,GAAc5nG,IAAQrI,KAAK0vG,SAASK,UAAY,MAAQ9P,GAASM,sBAAwB8O,EACpGW,GAAYC,GAAc5nG,KACrBgnG,IACAO,GAAYvnG,WACNrI,KAAK0vG,SAASQ,QAAU,UAC/BjQ,GAASQ,mBACRsP,EACL,IAAKV,GACDrvG,KAAK0vG,SAASpE,aAAe,QAC5B2E,GAAc5nG,KACdunG,GAAYvnG,KACZ2nG,IACAD,EAAS,CACV,MAAO,CAAC,EACxC,CAC4BnR,EAAMv2F,EACN,IAAK2nG,EAAU,MAAO,CAAC,EAAa,GACpC,MAAO,CAAC,EAAahwG,KAAKkwG,MAAMtR,IACpC,KAAK,EACDA,EAAM1vD,EAAGy+B,OACTz+B,EAAGvrC,MAAQ,EACf,KAAK,EACD3D,KAAKo5B,QAAQywE,OAAOxwE,MAAM,eAAiBhxB,EAAI0mC,UAAU,EAAG,MAC5D,MAAO,CAAC,EAAa,IAAInlC,SAAQ,SAAU2jE,EAASC,GAC5C,IAAIgxB,EAAM,IAAIN,MACdM,EAAIqB,OAAS,WAAc,OAAOtyB,EAAQixB,EAAK,EAC/CA,EAAIsB,QAAUtyB,EAEd,GAAI2iC,GAAoBvR,IAAQmR,EAAS,CACrCvR,EAAIL,YAAc,WAC1D,CACoCK,EAAII,IAAMA,EACV,GAAIJ,EAAIsP,WAAa,KAAM,CAEvBnmF,YAAW,WAAc,OAAO4lD,EAAQixB,EAAK,GAAI,IACzF,CACoC,GAAIkE,EAAMgN,SAASU,aAAe,EAAG,CACjCzoF,YAAW,WAAc,OAAO6lD,EAAO,cAAgBk1B,EAAMgN,SAASU,aAAe,oBAAqB,GAAI1N,EAAMgN,SAASU,aACrK,CACA,KACwB,KAAK,EAAG,MAAO,CAAC,EAAclhE,EAAGy+B,QAEzD,GACA,GACA,EACQ8hC,EAAMppG,UAAU+C,IAAM,SAAUf,GAC5B,cAAcrI,KAAK2vG,OAAOtnG,KAAS,WAC/C,EACQonG,EAAMppG,UAAUqc,KAAO,WACnB,OAAO9Y,QAAQ2jE,QAAQjlE,OAAOoa,KAAK1iB,KAAK2vG,QACpD,EACQF,EAAMppG,UAAU6pG,MAAQ,SAAUtR,GAC9B,IAAI8D,EAAQ1iG,KACZ,IAAIkwG,EAAQlwG,KAAK0vG,SAASQ,MAC1B,IAAKA,EAAO,CACR,MAAM,IAAIpqC,MAAM,mBAChC,CACY,IAAIz9D,EAAMu2F,EAAI7vD,UAAU,EAAG,KAC3B,OAAO,IAAInlC,SAAQ,SAAU2jE,EAASC,GAClC,IAAI8wB,EAAe2B,GAASO,sBAAwB,OAAS,OAC7D,IAAI6P,EAAM,IAAIhS,eACdgS,EAAIxQ,OAAS,WACT,GAAIwQ,EAAIC,SAAW,IAAK,CACpB,GAAIhS,IAAiB,OAAQ,CACzB/wB,EAAQ8iC,EAAIE,SACxC,KAC6B,CACD,IAAIC,EAAW,IAAIC,WACnBD,EAAS/vG,iBAAiB,QAAQ,WAAc,OAAO8sE,EAAQijC,EAAShiF,OAAQ,GAAI,OACpFgiF,EAAS/vG,iBAAiB,SAAS,SAAUwE,GAAK,OAAOuoE,EAAOvoE,EAAG,GAAI,OACvEurG,EAASE,cAAcL,EAAIE,SACvD,CACA,KACyB,CACD/iC,EAAO,4BAA8BnlE,EAAM,qBAAuBgoG,EAAIC,OAC9F,CACA,EACgBD,EAAIvQ,QAAUtyB,EACd,IAAImjC,EAAcT,EAAMjoG,QAAQ,MAAQ,EAAI,IAAM,IAClDooG,EAAI9Y,KAAK,MAAO,GAAK2Y,EAAQS,EAAc,OAAS3vG,mBAAmB49F,GAAO,iBAAmBN,GACjG,GAAIA,IAAiB,QAAU+R,aAAehS,eAAgB,CAC1DgS,EAAI/R,aAAeA,CACvC,CACgB,GAAIoE,EAAMgN,SAASU,aAAc,CAC7B,IAAIQ,EAAYlO,EAAMgN,SAASU,aAC/BC,EAAIl5E,QAAUy5E,EACdP,EAAIQ,UAAY,WAAc,OAAOrjC,EAAO,cAAgBojC,EAAY,gBAAkBvoG,EAAK,CACnH,CACgBgoG,EAAIS,MACpB,GACA,EACQ,OAAOrB,CACf,CA5Ha,GA6HT,IAAIsB,GAAa,yBACjB,IAAIC,GAAgB,2BACpB,IAAIC,GAAa,mBACjB,IAAIpB,GAAe,SAAUjR,GAAO,OAAOqB,GAASG,sBAAwB8Q,GAAMtS,EAAK,EACvF,IAAIqR,GAAgB,SAAUrR,GAAO,OAAOqS,GAAWt/F,KAAKitF,EAAK,EACjE,IAAIuR,GAAsB,SAAUvR,GAAO,OAAOoS,GAAcr/F,KAAKitF,EAAK,EAC1E,IAAIgR,GAAc,SAAUhR,GAAO,OAAOA,EAAIrmE,OAAO,EAAG,KAAO,MAAO,EACtE,IAAI24E,GAAQ,SAAUtS,GAAO,OAAOA,EAAIrmE,QAAQ,GAAGkT,gBAAkB,OAASslE,GAAWp/F,KAAKitF,EAAK,EAEnG,IAAIuS,GAAwB,WACxB,SAASA,EAAO9iG,EAAGC,GACftO,KAAKwF,KAAO,EACZxF,KAAKqO,EAAIA,EACTrO,KAAKsO,EAAIA,CACrB,CACQ6iG,EAAO9qG,UAAUM,IAAM,SAAUyqG,EAAQC,GACrC,OAAO,IAAIF,EAAOnxG,KAAKqO,EAAI+iG,EAAQpxG,KAAKsO,EAAI+iG,EACxD,EACQ,OAAOF,CACf,CAVc,GAYV,IAAIG,GAAO,SAAUxgG,EAAGuE,EAAGxF,GACvB,OAAO,IAAIshG,GAAOrgG,EAAEzC,GAAKgH,EAAEhH,EAAIyC,EAAEzC,GAAKwB,EAAGiB,EAAExC,GAAK+G,EAAE/G,EAAIwC,EAAExC,GAAKuB,EACrE,EACI,IAAI0hG,GAA6B,WAC7B,SAASA,EAAY1jG,EAAO2jG,EAAcC,EAAYj+E,GAClDxzB,KAAKwF,KAAO,EACZxF,KAAK6N,MAAQA,EACb7N,KAAKwxG,aAAeA,EACpBxxG,KAAKyxG,WAAaA,EAClBzxG,KAAKwzB,IAAMA,CACvB,CACQ+9E,EAAYlrG,UAAUqrG,UAAY,SAAU7hG,EAAG8hG,GAC3C,IAAIC,EAAKN,GAAKtxG,KAAK6N,MAAO7N,KAAKwxG,aAAc3hG,GAC7C,IAAIgiG,EAAKP,GAAKtxG,KAAKwxG,aAAcxxG,KAAKyxG,WAAY5hG,GAClD,IAAIiiG,EAAKR,GAAKtxG,KAAKyxG,WAAYzxG,KAAKwzB,IAAK3jB,GACzC,IAAIkiG,EAAOT,GAAKM,EAAIC,EAAIhiG,GACxB,IAAImiG,EAAOV,GAAKO,EAAIC,EAAIjiG,GACxB,IAAIoiG,EAAOX,GAAKS,EAAMC,EAAMniG,GAC5B,OAAO8hG,EAAY,IAAIJ,EAAYvxG,KAAK6N,MAAO+jG,EAAIG,EAAME,GAAQ,IAAIV,EAAYU,EAAMD,EAAMF,EAAI9xG,KAAKwzB,IAClH,EACQ+9E,EAAYlrG,UAAUM,IAAM,SAAUyqG,EAAQC,GAC1C,OAAO,IAAIE,EAAYvxG,KAAK6N,MAAMlH,IAAIyqG,EAAQC,GAASrxG,KAAKwxG,aAAa7qG,IAAIyqG,EAAQC,GAASrxG,KAAKyxG,WAAW9qG,IAAIyqG,EAAQC,GAASrxG,KAAKwzB,IAAI7sB,IAAIyqG,EAAQC,GACpK,EACQE,EAAYlrG,UAAUyB,QAAU,WAC5B,OAAO,IAAIypG,EAAYvxG,KAAKwzB,IAAKxzB,KAAKyxG,WAAYzxG,KAAKwxG,aAAcxxG,KAAK6N,MACtF,EACQ,OAAO0jG,CACf,CAxBmB,GAyBf,IAAIW,GAAgB,SAAU51F,GAAQ,OAAOA,EAAK9W,OAAS,CAAqB,EAEhF,IAAI2sG,GAA6B,WAC7B,SAASA,EAAYhrG,GACjB,IAAI80C,EAAS90C,EAAQ80C,OACrB,IAAI49C,EAAS1yF,EAAQ0yF,OACrB,IAAI3qD,EAAK6yC,GAAyB9lC,EAAOm2C,oBAAqByH,EAAOjhF,MAAOihF,EAAOhhF,QAASu5F,EAAMljE,EAAG,GAAImjE,EAAMnjE,EAAG,GAClH,IAAI8vB,EAAK+iB,GAAyB9lC,EAAOo2C,qBAAsBwH,EAAOjhF,MAAOihF,EAAOhhF,QAASy5F,EAAMtzC,EAAG,GAAIuzC,EAAMvzC,EAAG,GACnH,IAAIwzC,EAAKzwB,GAAyB9lC,EAAOq2C,wBAAyBuH,EAAOjhF,MAAOihF,EAAOhhF,QAAS45F,EAAMD,EAAG,GAAIE,EAAMF,EAAG,GACtH,IAAIG,EAAK5wB,GAAyB9lC,EAAOs2C,uBAAwBsH,EAAOjhF,MAAOihF,EAAOhhF,QAAS+5F,EAAMD,EAAG,GAAIE,EAAMF,EAAG,GACrH,IAAIG,EAAU,GACdA,EAAQhxG,MAAMswG,EAAME,GAAOzY,EAAOjhF,OAClCk6F,EAAQhxG,MAAM8wG,EAAMH,GAAO5Y,EAAOjhF,OAClCk6F,EAAQhxG,MAAMuwG,EAAMQ,GAAOhZ,EAAOhhF,QAClCi6F,EAAQhxG,MAAMywG,EAAMG,GAAO7Y,EAAOhhF,QAClC,IAAIk6F,EAAYx4F,KAAK8C,IAAI9D,MAAMgB,KAAMu4F,GACrC,GAAIC,EAAY,EAAG,CACfX,GAAOW,EACPV,GAAOU,EACPT,GAAOS,EACPR,GAAOQ,EACPN,GAAOM,EACPL,GAAOK,EACPH,GAAOG,EACPF,GAAOE,CACvB,CACY,IAAIC,EAAWnZ,EAAOjhF,MAAQ05F,EAC9B,IAAIW,EAAcpZ,EAAOhhF,OAAS65F,EAClC,IAAIQ,EAAcrZ,EAAOjhF,MAAQ65F,EACjC,IAAIU,EAAatZ,EAAOhhF,OAASg6F,EACjC,IAAI/f,EAAiB72C,EAAO62C,eAC5B,IAAIC,EAAmB92C,EAAO82C,iBAC9B,IAAIC,EAAoB/2C,EAAO+2C,kBAC/B,IAAIC,EAAkBh3C,EAAOg3C,gBAC7B,IAAItpC,EAAas4B,GAAiBhmC,EAAO0N,WAAYxiD,EAAQ0yF,OAAOjhF,OACpE,IAAI27E,EAAetS,GAAiBhmC,EAAOs4C,aAAcptF,EAAQ0yF,OAAOjhF,OACxE,IAAI47E,EAAgBvS,GAAiBhmC,EAAOu4C,cAAertF,EAAQ0yF,OAAOjhF,OAC1E,IAAI8wC,EAAcu4B,GAAiBhmC,EAAOyN,YAAaviD,EAAQ0yF,OAAOjhF,OACtE5Y,KAAKozG,4BACDhB,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAM6kF,EAAiB,EAAGsf,EAAMnf,EAAkB,EAAGof,EAAMvf,EAAiB,EAAGwgB,GAAOjkG,UAC/I,IAAI8hG,GAAOtX,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAM6kF,EAAiB,GACtF9yF,KAAKuzG,6BACDnB,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAO4kG,EAAUnZ,EAAO5rF,IAAM6kF,EAAiB,EAAGwf,EAAMvf,EAAmB,EAAGwf,EAAMzf,EAAiB,EAAGwgB,GAAOhkG,WACrI,IAAI6hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAQm6E,EAAmB,EAAG8G,EAAO5rF,IAAM6kF,EAAiB,GACtG9yF,KAAKwzG,gCACDf,EAAM,GAAKC,EAAM,EACXW,GAAexZ,EAAOzrF,KAAO8kG,EAAarZ,EAAO5rF,IAAMglG,EAAaR,EAAM1f,EAAmB,EAAG2f,EAAM1f,EAAoB,EAAGsgB,GAAO7jG,cACpI,IAAI0hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAQm6E,EAAmB,EAAG8G,EAAO5rF,IAAM4rF,EAAOhhF,OAASm6E,EAAoB,GACzHhzF,KAAKyzG,+BACDb,EAAM,GAAKC,EAAM,EACXQ,GAAexZ,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAMklG,EAAYP,EAAM3f,EAAkB,EAAG4f,EAAM7f,EAAoB,EAAGsgB,GAAO9jG,aAC1I,IAAI2hG,GAAOtX,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAM4rF,EAAOhhF,OAASm6E,EAAoB,GACzGhzF,KAAK0zG,4BACDtB,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAQ6kF,EAAkB,EAAK,EAAG4G,EAAO5rF,IAAO6kF,EAAiB,EAAK,EAAGsf,EAAOnf,EAAkB,EAAK,EAAGof,EAAOvf,EAAiB,EAAK,EAAGwgB,GAAOjkG,UACvK,IAAI8hG,GAAOtX,EAAOzrF,KAAQ6kF,EAAkB,EAAK,EAAG4G,EAAO5rF,IAAO6kF,EAAiB,EAAK,GAClG9yF,KAAK2zG,6BACDvB,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAO4kG,EAAUnZ,EAAO5rF,IAAO6kF,EAAiB,EAAK,EAAGwf,EAAOvf,EAAmB,EAAK,EAAGwf,EAAOzf,EAAiB,EAAK,EAAGwgB,GAAOhkG,WACvJ,IAAI6hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAASm6E,EAAmB,EAAK,EAAG8G,EAAO5rF,IAAO6kF,EAAiB,EAAK,GAClH9yF,KAAK4zG,gCACDnB,EAAM,GAAKC,EAAM,EACXW,GAAexZ,EAAOzrF,KAAO8kG,EAAarZ,EAAO5rF,IAAMglG,EAAaR,EAAO1f,EAAmB,EAAK,EAAG2f,EAAO1f,EAAoB,EAAK,EAAGsgB,GAAO7jG,cAChJ,IAAI0hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAASm6E,EAAmB,EAAK,EAAG8G,EAAO5rF,IAAM4rF,EAAOhhF,OAAUm6E,EAAoB,EAAK,GACrIhzF,KAAK6zG,+BACDjB,EAAM,GAAKC,EAAM,EACXQ,GAAexZ,EAAOzrF,KAAQ6kF,EAAkB,EAAK,EAAG4G,EAAO5rF,IAAMklG,EAAYP,EAAO3f,EAAkB,EAAK,EAAG4f,EAAO7f,EAAoB,EAAK,EAAGsgB,GAAO9jG,aAC5J,IAAI2hG,GAAOtX,EAAOzrF,KAAQ6kF,EAAkB,EAAK,EAAG4G,EAAO5rF,IAAM4rF,EAAOhhF,OAAUm6E,EAAoB,EAAK,GACrHhzF,KAAK8zG,oBACD1B,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAM6kF,EAAiB,EAAGsf,EAAMnf,EAAkB,EAAGof,EAAMvf,EAAiB,EAAGwgB,GAAOjkG,UAC/I,IAAI8hG,GAAOtX,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAM6kF,EAAiB,GACtF9yF,KAAK+zG,qBACD3B,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAO4kG,EAAUnZ,EAAO5rF,IAAM6kF,EAAiB,EAAGwf,EAAMvf,EAAmB,EAAGwf,EAAMzf,EAAiB,EAAGwgB,GAAOhkG,WACrI,IAAI6hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAQm6E,EAAmB,EAAG8G,EAAO5rF,IAAM6kF,EAAiB,GACtG9yF,KAAKg0G,wBACDvB,EAAM,GAAKC,EAAM,EACXW,GAAexZ,EAAOzrF,KAAO8kG,EAAarZ,EAAO5rF,IAAMglG,EAAaR,EAAM1f,EAAmB,EAAG2f,EAAM1f,EAAoB,EAAGsgB,GAAO7jG,cACpI,IAAI0hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAQm6E,EAAmB,EAAG8G,EAAO5rF,IAAM4rF,EAAOhhF,OAASm6E,EAAoB,GACzHhzF,KAAKi0G,uBACDrB,EAAM,GAAKC,EAAM,EACXQ,GAAexZ,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAMklG,EAAYP,EAAM3f,EAAkB,EAAG4f,EAAM7f,EAAoB,EAAGsgB,GAAO9jG,aAC1I,IAAI2hG,GAAOtX,EAAOzrF,KAAO6kF,EAAkB,EAAG4G,EAAO5rF,IAAM4rF,EAAOhhF,OAASm6E,EAAoB,GACzGhzF,KAAKk0G,iBACD9B,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAMyrF,EAAO5rF,IAAKmkG,EAAKC,EAAKiB,GAAOjkG,UACzD,IAAI8hG,GAAOtX,EAAOzrF,KAAMyrF,EAAO5rF,KACzCjO,KAAKm0G,kBACD7B,EAAM,GAAKC,EAAM,EACXc,GAAexZ,EAAOzrF,KAAO4kG,EAAUnZ,EAAO5rF,IAAKqkG,EAAKC,EAAKe,GAAOhkG,WACpE,IAAI6hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAOihF,EAAO5rF,KACxDjO,KAAKo0G,qBACD3B,EAAM,GAAKC,EAAM,EACXW,GAAexZ,EAAOzrF,KAAO8kG,EAAarZ,EAAO5rF,IAAMglG,EAAaR,EAAKC,EAAKY,GAAO7jG,cACrF,IAAI0hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAOihF,EAAO5rF,IAAM4rF,EAAOhhF,QACrE7Y,KAAKq0G,oBACDzB,EAAM,GAAKC,EAAM,EACXQ,GAAexZ,EAAOzrF,KAAMyrF,EAAO5rF,IAAMklG,EAAYP,EAAKC,EAAKS,GAAO9jG,aACtE,IAAI2hG,GAAOtX,EAAOzrF,KAAMyrF,EAAO5rF,IAAM4rF,EAAOhhF,QACtD7Y,KAAKs0G,kBACDlC,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAO6kF,EAAiB4G,EAAO5rF,IAAM6kF,EAAgBv4E,KAAK8C,IAAI,EAAG+0F,EAAMnf,GAAkB14E,KAAK8C,IAAI,EAAGg1F,EAAMvf,GAAiBwgB,GAAOjkG,UACzJ,IAAI8hG,GAAOtX,EAAOzrF,KAAO6kF,EAAiB4G,EAAO5rF,IAAM6kF,GACjE9yF,KAAKu0G,mBACDjC,EAAM,GAAKC,EAAM,EACXc,GAAexZ,EAAOzrF,KAAOmM,KAAKqD,IAAIo1F,EAAUnZ,EAAOjhF,MAAQm6E,GAAmB8G,EAAO5rF,IAAM6kF,EAAgBkgB,EAAWnZ,EAAOjhF,MAAQm6E,EAAmB,EAAIx4E,KAAK8C,IAAI,EAAGi1F,EAAMvf,GAAmBx4E,KAAK8C,IAAI,EAAGk1F,EAAMzf,GAAiBwgB,GAAOhkG,WAC/O,IAAI6hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAQm6E,EAAkB8G,EAAO5rF,IAAM6kF,GACjF9yF,KAAKw0G,sBACD/B,EAAM,GAAKC,EAAM,EACXW,GAAexZ,EAAOzrF,KAAOmM,KAAKqD,IAAIs1F,EAAarZ,EAAOjhF,MAAQq6E,GAAkB4G,EAAO5rF,IAAMsM,KAAKqD,IAAIq1F,EAAapZ,EAAOhhF,OAASm6E,GAAoBz4E,KAAK8C,IAAI,EAAGo1F,EAAM1f,GAAmBx4E,KAAK8C,IAAI,EAAGq1F,EAAM1f,GAAoBsgB,GAAO7jG,cAC7O,IAAI0hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAQm6E,EAAkB8G,EAAO5rF,IAAM4rF,EAAOhhF,OAASm6E,GACjGhzF,KAAKy0G,qBACD7B,EAAM,GAAKC,EAAM,EACXQ,GAAexZ,EAAOzrF,KAAO6kF,EAAiB4G,EAAO5rF,IAAMsM,KAAKqD,IAAIu1F,EAAYtZ,EAAOhhF,OAASm6E,GAAoBz4E,KAAK8C,IAAI,EAAGu1F,EAAM3f,GAAkB14E,KAAK8C,IAAI,EAAGw1F,EAAM7f,GAAoBsgB,GAAO9jG,aACrM,IAAI2hG,GAAOtX,EAAOzrF,KAAO6kF,EAAiB4G,EAAO5rF,IAAM4rF,EAAOhhF,OAASm6E,GACjFhzF,KAAK00G,kBACDtC,EAAM,GAAKC,EAAM,EACXgB,GAAexZ,EAAOzrF,KAAO6kF,EAAkBvpC,EAAamwC,EAAO5rF,IAAM6kF,EAAiBnpC,EAAYpvC,KAAK8C,IAAI,EAAG+0F,GAAOnf,EAAkBvpC,IAAenvC,KAAK8C,IAAI,EAAGg1F,GAAOvf,EAAiBnpC,IAAc2pD,GAAOjkG,UACnN,IAAI8hG,GAAOtX,EAAOzrF,KAAO6kF,EAAkBvpC,EAAamwC,EAAO5rF,IAAM6kF,EAAiBnpC,GAChG3pD,KAAK20G,mBACDrC,EAAM,GAAKC,EAAM,EACXc,GAAexZ,EAAOzrF,KAAOmM,KAAKqD,IAAIo1F,EAAUnZ,EAAOjhF,MAAQq6E,EAAkBvpC,GAAcmwC,EAAO5rF,IAAM6kF,EAAiBnpC,EAAYqpD,EAAWnZ,EAAOjhF,MAAQq6E,EAAkBvpC,EAAc,EAAI4oD,EAAMrf,EAAkBvpC,EAAa6oD,GAAOzf,EAAiBnpC,GAAa2pD,GAAOhkG,WACxR,IAAI6hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,OAASm6E,EAAmBwB,GAAesF,EAAO5rF,IAAM6kF,EAAiBnpC,GACnH3pD,KAAK40G,sBACDnC,EAAM,GAAKC,EAAM,EACXW,GAAexZ,EAAOzrF,KAAOmM,KAAKqD,IAAIs1F,EAAarZ,EAAOjhF,OAASq6E,EAAkBvpC,IAAemwC,EAAO5rF,IAAMsM,KAAKqD,IAAIq1F,EAAapZ,EAAOhhF,OAASi6E,EAAiBnpC,GAAapvC,KAAK8C,IAAI,EAAGo1F,GAAO1f,EAAmBwB,IAAgBme,GAAO1f,EAAoBwB,GAAgB8e,GAAO7jG,cAC7R,IAAI0hG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,OAASm6E,EAAmBwB,GAAesF,EAAO5rF,IAAM4rF,EAAOhhF,QAAUm6E,EAAoBwB,IACvIx0F,KAAK60G,qBACDjC,EAAM,GAAKC,EAAM,EACXQ,GAAexZ,EAAOzrF,KAAO6kF,EAAkBvpC,EAAamwC,EAAO5rF,IAAMklG,EAAY54F,KAAK8C,IAAI,EAAGu1F,GAAO3f,EAAkBvpC,IAAempD,GAAO7f,EAAoBwB,GAAgB8e,GAAO9jG,aAC3L,IAAI2hG,GAAOtX,EAAOzrF,KAAO6kF,EAAkBvpC,EAAamwC,EAAO5rF,IAAM4rF,EAAOhhF,QAAUm6E,EAAoBwB,GAChI,CACQ,OAAO2d,CACf,CAtImB,GAuIf,IAAImB,IACJ,SAAWA,GACPA,EAAOA,EAAO,YAAc,GAAK,WACjCA,EAAOA,EAAO,aAAe,GAAK,YAClCA,EAAOA,EAAO,gBAAkB,GAAK,eACrCA,EAAOA,EAAO,eAAiB,GAAK,aACvC,EALD,CAKGA,KAAWA,GAAS,KACvB,IAAID,GAAiB,SAAUhlG,EAAGC,EAAGwmG,EAAIC,EAAIpoG,GACzC,IAAIqoG,EAAQ,IAAMz6F,KAAKC,KAAK,GAAK,GAAK,GACtC,IAAIy6F,EAAKH,EAAKE,EACd,IAAIE,EAAKH,EAAKC,EACd,IAAIG,EAAK9mG,EAAIymG,EACb,IAAIM,EAAK9mG,EAAIymG,EACb,OAAQpoG,GACJ,KAAK2mG,GAAOjkG,SACR,OAAO,IAAIkiG,GAAY,IAAIJ,GAAO9iG,EAAG+mG,GAAK,IAAIjE,GAAO9iG,EAAG+mG,EAAKF,GAAK,IAAI/D,GAAOgE,EAAKF,EAAI3mG,GAAI,IAAI6iG,GAAOgE,EAAI7mG,IAC7G,KAAKglG,GAAOhkG,UACR,OAAO,IAAIiiG,GAAY,IAAIJ,GAAO9iG,EAAGC,GAAI,IAAI6iG,GAAO9iG,EAAI4mG,EAAI3mG,GAAI,IAAI6iG,GAAOgE,EAAIC,EAAKF,GAAK,IAAI/D,GAAOgE,EAAIC,IAC5G,KAAK9B,GAAO7jG,aACR,OAAO,IAAI8hG,GAAY,IAAIJ,GAAOgE,EAAI7mG,GAAI,IAAI6iG,GAAOgE,EAAI7mG,EAAI4mG,GAAK,IAAI/D,GAAO9iG,EAAI4mG,EAAIG,GAAK,IAAIjE,GAAO9iG,EAAG+mG,IAC5G,KAAK9B,GAAO9jG,YACZ,QACI,OAAO,IAAI+hG,GAAY,IAAIJ,GAAOgE,EAAIC,GAAK,IAAIjE,GAAOgE,EAAKF,EAAIG,GAAK,IAAIjE,GAAO9iG,EAAGC,EAAI4mG,GAAK,IAAI/D,GAAO9iG,EAAGC,IAEzH,EACI,IAAI+mG,GAAyB,SAAUC,GACnC,MAAO,CAACA,EAAOpB,iBAAkBoB,EAAOnB,kBAAmBmB,EAAOlB,qBAAsBkB,EAAOjB,oBACvG,EACI,IAAIkB,GAA0B,SAAUD,GACpC,MAAO,CACHA,EAAOZ,kBACPY,EAAOX,mBACPW,EAAOV,sBACPU,EAAOT,qBAEnB,EACI,IAAIW,GAA0B,SAAUF,GACpC,MAAO,CACHA,EAAOhB,kBACPgB,EAAOf,mBACPe,EAAOd,sBACPc,EAAOb,qBAEnB,EAEI,IAAIgB,GAAiC,WACjC,SAASA,EAAgB7gB,EAASC,EAASM,GACvCn1F,KAAK40F,QAAUA,EACf50F,KAAK60F,QAAUA,EACf70F,KAAKm1F,OAASA,EACdn1F,KAAKwF,KAAO,EACZxF,KAAKkN,OAAS,EAA6B,CACvD,CACQ,OAAOuoG,CACf,CATuB,GAUnB,IAAIC,GAA4B,WAC5B,SAASA,EAAWp5F,EAAMpP,GACtBlN,KAAKsc,KAAOA,EACZtc,KAAKkN,OAASA,EACdlN,KAAKwF,KAAO,CACxB,CACQ,OAAOkwG,CACf,CAPkB,GAQd,IAAIC,GAA+B,WAC/B,SAASA,EAAchuG,GACnB3H,KAAK2H,QAAUA,EACf3H,KAAKwF,KAAO,EACZxF,KAAKkN,OAAS,EAA6B,CACvD,CACQ,OAAOyoG,CACf,CAPqB,GAQjB,IAAIC,GAAoB,SAAUvqE,GAC9B,OAAOA,EAAO7lC,OAAS,CAC/B,EACI,IAAIqwG,GAAe,SAAUxqE,GAAU,OAAOA,EAAO7lC,OAAS,CAAa,EAC3E,IAAIswG,GAAkB,SAAUzqE,GAAU,OAAOA,EAAO7lC,OAAS,CAAgB,EAEjF,IAAIuwG,GAAY,SAAUjlG,EAAGuE,GACzB,GAAIvE,EAAEjP,SAAWwT,EAAExT,OAAQ,CACvB,OAAOiP,EAAEksB,MAAK,SAAUxoB,EAAG3D,GAAK,OAAO2D,IAAMa,EAAExE,EAAG,GAC9D,CACQ,OAAO,KACf,EACI,IAAImlG,GAAgB,SAAU15F,EAAM80F,EAAQC,EAAQ4E,EAAQC,GACxD,OAAO55F,EAAKjJ,KAAI,SAAU8iG,EAAOv0G,GAC7B,OAAQA,GACJ,KAAK,EACD,OAAOu0G,EAAMxvG,IAAIyqG,EAAQC,GAC7B,KAAK,EACD,OAAO8E,EAAMxvG,IAAIyqG,EAAS6E,EAAQ5E,GACtC,KAAK,EACD,OAAO8E,EAAMxvG,IAAIyqG,EAAS6E,EAAQ5E,EAAS6E,GAC/C,KAAK,EACD,OAAOC,EAAMxvG,IAAIyqG,EAAQC,EAAS6E,GAE1C,OAAOC,CACnB,GACA,EAEI,IAAIC,GAAiC,WACjC,SAASA,EAAgBl2G,GACrBF,KAAKmH,QAAUjH,EACfF,KAAKq2G,YAAc,GACnBr2G,KAAKs2G,eAAiB,GACtBt2G,KAAKu2G,eAAiB,GACtBv2G,KAAKw2G,uCAAyC,GAC9Cx2G,KAAKy2G,eAAiB,GACtBz2G,KAAK02G,oBAAsB,GAC3B12G,KAAK22G,yBAA2B,EAC5C,CACQ,OAAOP,CACf,CAZuB,GAanB,IAAIQ,GAA8B,WAC9B,SAASA,EAAa12G,EAAW45D,GAC7B95D,KAAKE,UAAYA,EACjBF,KAAK85D,OAASA,EACd95D,KAAK62G,QAAU,GACf72G,KAAKs1G,OAAS,IAAInD,GAAYnyG,KAAKE,WACnC,GAAIF,KAAKE,UAAU+7C,OAAOt0C,QAAU,EAAG,CACnC3H,KAAK62G,QAAQ/0G,KAAK,IAAI6zG,GAAc31G,KAAKE,UAAU+7C,OAAOt0C,SAC1E,CACY,GAAI3H,KAAKE,UAAU+7C,OAAOxV,YAAc,KAAM,CAC1C,IAAImuD,EAAU50F,KAAKE,UAAU25F,OAAOzrF,KAAOpO,KAAKE,UAAU+7C,OAAO05C,gBAAgB,GAAGnkF,OACpF,IAAIqjF,EAAU70F,KAAKE,UAAU25F,OAAO5rF,IAAMjO,KAAKE,UAAU+7C,OAAO05C,gBAAgB,GAAGnkF,OACnF,IAAI2jF,EAASn1F,KAAKE,UAAU+7C,OAAOxV,UACnCzmC,KAAK62G,QAAQ/0G,KAAK,IAAI2zG,GAAgB7gB,EAASC,EAASM,GACxE,CACY,GAAIn1F,KAAKE,UAAU+7C,OAAOtI,YAAc,EAAiB,CACrD,IAAImjE,EAAYzB,GAAuBr1G,KAAKs1G,QAC5C,IAAIyB,EAAavB,GAAwBx1G,KAAKs1G,QAC9C,GAAIS,GAAUe,EAAWC,GAAa,CAClC/2G,KAAK62G,QAAQ/0G,KAAK,IAAI4zG,GAAWoB,EAAW,EAA6B,GAC7F,KACqB,CACD92G,KAAK62G,QAAQ/0G,KAAK,IAAI4zG,GAAWoB,EAAW,IAC5C92G,KAAK62G,QAAQ/0G,KAAK,IAAI4zG,GAAWqB,EAAY,GACjE,CACA,CACA,CACQH,EAAavwG,UAAU2wG,WAAa,SAAU9pG,GAC1C,IAAI+pG,EAAS,CAAC,EAAkB,GAAehvG,QAAQjI,KAAKE,UAAU+7C,OAAOtvC,aAAe,EAC5F,IAAImtD,EAAS95D,KAAK85D,OAClB,IAAI+8C,EAAU72G,KAAK62G,QAAQvwG,MAAM,GACjC,MAAOwzD,EAAQ,CACX,IAAIo9C,EAAkBp9C,EAAO+8C,QAAQhoF,QAAO,SAAUwc,GAAU,OAAQwqE,GAAaxqE,EAAQ,IAC7F,GAAI4rE,GAAUn9C,EAAO55D,UAAU+7C,OAAOtvC,WAAa,IAAmBmtD,EAAOA,OAAQ,CACjF+8C,EAAQv+F,QAAQiB,MAAMs9F,EAASK,GAC/BD,EAAS,CAAC,EAAkB,GAAehvG,QAAQ6xD,EAAO55D,UAAU+7C,OAAOtvC,aAAe,EAC1F,GAAImtD,EAAO55D,UAAU+7C,OAAOtI,YAAc,EAAiB,CACvD,IAAImjE,EAAYzB,GAAuBv7C,EAAOw7C,QAC9C,IAAIyB,EAAavB,GAAwB17C,EAAOw7C,QAChD,IAAKS,GAAUe,EAAWC,GAAa,CACnCF,EAAQv+F,QAAQ,IAAIo9F,GAAWqB,EAAY,EAA6B,GACpG,CACA,CACA,KACqB,CACDF,EAAQv+F,QAAQiB,MAAMs9F,EAASK,EACnD,CACgBp9C,EAASA,EAAOA,MAChC,CACY,OAAO+8C,EAAQhoF,QAAO,SAAUwc,GAAU,OAAOl+B,GAASk+B,EAAOn+B,OAAQA,EAAQ,GAC7F,EACQ,OAAO0pG,CACf,CApDoB,GAqDhB,IAAIO,GAAiB,SAAUr9C,EAAQs9C,EAAiBC,EAAqBC,GACzEx9C,EAAO55D,UAAUyN,SAASpE,SAAQ,SAAUswD,GACxC,IAAI09C,EAA6BpqG,GAAS0sD,EAAMyP,MAAO,GACvD,IAAI87B,EAAyBj4F,GAAS0sD,EAAMyP,MAAO,GACnD,IAAIkuC,EAAiB,IAAIZ,GAAa/8C,EAAOC,GAC7C,GAAI3sD,GAAS0sD,EAAM5d,OAAOi3C,QAAS,MAAuB,CACtDokB,EAAUx1G,KAAK01G,EAC/B,CACY,IAAIC,EAAiBtqG,GAAS0sD,EAAMyP,MAAO,GAAyB,GAAKguC,EACzE,GAAIC,GAA8BnS,EAAwB,CACtD,IAAIsS,EAAcH,GAA8B19C,EAAM5d,OAAO08C,eAAiB0e,EAAsBD,EACpG,IAAIO,EAAQ,IAAIvB,GAAgBoB,GAChC,GAAI39C,EAAM5d,OAAO08C,gBAAkB9+B,EAAM5d,OAAOt0C,QAAU,GAAKkyD,EAAM5d,OAAOy8C,gBAAiB,CACzF,IAAIkf,EAAU/9C,EAAM5d,OAAO3vC,OAAO4pF,MAClC,GAAI0hB,EAAU,EAAG,CACb,IAAIC,EAAU,EACdH,EAAYnB,eAAev5E,MAAK,SAAU45C,EAAS/lE,GAC/C,GAAI+mG,EAAUhhC,EAAQzvE,QAAQjH,UAAU+7C,OAAO3vC,OAAO4pF,MAAO,CACzD2hB,EAAUhnG,EACV,OAAO,KACvC,MACiC,GAAIgnG,EAAU,EAAG,CAClB,OAAO,IACvC,CAC4B,OAAO,KACnC,IACwBH,EAAYnB,eAAetkG,OAAO4lG,EAAS,EAAGF,EACtE,MACyB,GAAIC,EAAU,EAAG,CAClB,IAAIE,EAAU,EACdJ,EAAYjB,eAAez5E,MAAK,SAAU45C,EAAS/lE,GAC/C,GAAI+mG,GAAWhhC,EAAQzvE,QAAQjH,UAAU+7C,OAAO3vC,OAAO4pF,MAAO,CAC1D4hB,EAAUjnG,EAAI,EACd,OAAO,KACvC,MACiC,GAAIinG,EAAU,EAAG,CAClB,OAAO,IACvC,CAC4B,OAAO,KACnC,IACwBJ,EAAYjB,eAAexkG,OAAO6lG,EAAS,EAAGH,EACtE,KACyB,CACDD,EAAYlB,uCAAuC10G,KAAK61G,EAChF,CACA,KACqB,CACD,GAAI99C,EAAM5d,OAAO48C,aAAc,CAC3B6e,EAAYhB,oBAAoB50G,KAAK61G,EAC7D,KACyB,CACDD,EAAYf,yBAAyB70G,KAAK61G,EAClE,CACA,CACgBR,GAAeK,EAAgBG,EAAOJ,EAA6BI,EAAQN,EAAqBI,EAChH,KACiB,CACD,GAAI59C,EAAM5d,OAAO68C,gBAAiB,CAC9Bse,EAAgBf,YAAYv0G,KAAK01G,EACrD,KACqB,CACDJ,EAAgBd,eAAex0G,KAAK01G,EACxD,CACgBL,GAAeK,EAAgBJ,EAAiBC,EAAqBI,EACrF,CACY,GAAItqG,GAAS0sD,EAAMyP,MAAO,GAAwB,CAC9CyuC,GAAiBl+C,EAAO49C,EACxC,CACA,GACA,EACI,IAAIM,GAAmB,SAAUC,EAAOrqG,GACpC,IAAIsqG,EAAYD,aAAiB5U,GAAqB4U,EAAMnqG,MAAQ,EACpE,IAAIw1F,EAAW2U,aAAiB5U,GAAqB4U,EAAM3U,SAAW,MACtE,IAAK,IAAIxyF,EAAI,EAAGA,EAAIlD,EAAS9L,OAAQgP,IAAK,CACtC,IAAI+kD,EAAOjoD,EAASkD,GACpB,GAAI+kD,EAAK11D,qBAAqBijG,WACnBvtC,EAAK11D,UAAUgC,QAAU,UAChC0zD,EAAK11D,UAAUgC,QAAU,EAAG,CAC5B+1G,EAAYriD,EAAK11D,UAAUgC,KAC3C,CACY0zD,EAAKsiD,UAAY/Q,GAAkB8Q,EAAWriD,EAAK11D,UAAU+7C,OAAO83C,cAAe,MACnFkkB,GAAa5U,GAAY,EAAI,CACzC,CACA,EACI,IAAI8U,GAAwB,SAAUj4G,GAClC,IAAIs3G,EAAiB,IAAIZ,GAAa12G,EAAW,MACjD,IAAIwkG,EAAO,IAAI0R,GAAgBoB,GAC/B,IAAIF,EAAY,GAChBH,GAAeK,EAAgB9S,EAAMA,EAAM4S,GAC3CS,GAAiBP,EAAet3G,UAAWo3G,GAC3C,OAAO5S,CACf,EAEI,IAAI0T,GAAqB,SAAU9C,EAAQ+C,GACvC,OAAQA,GACJ,KAAK,EACD,OAAOC,GAAqBhD,EAAOpB,iBAAkBoB,EAAOhB,kBAAmBgB,EAAOnB,kBAAmBmB,EAAOf,oBACpH,KAAK,EACD,OAAO+D,GAAqBhD,EAAOnB,kBAAmBmB,EAAOf,mBAAoBe,EAAOlB,qBAAsBkB,EAAOd,uBACzH,KAAK,EACD,OAAO8D,GAAqBhD,EAAOlB,qBAAsBkB,EAAOd,sBAAuBc,EAAOjB,oBAAqBiB,EAAOb,sBAC9H,KAAK,EACL,QACI,OAAO6D,GAAqBhD,EAAOjB,oBAAqBiB,EAAOb,qBAAsBa,EAAOpB,iBAAkBoB,EAAOhB,mBAErI,EACI,IAAIiE,GAAgC,SAAUjD,EAAQ+C,GAClD,OAAQA,GACJ,KAAK,EACD,OAAOC,GAAqBhD,EAAOpB,iBAAkBoB,EAAOlC,4BAA6BkC,EAAOnB,kBAAmBmB,EAAO/B,8BAC9H,KAAK,EACD,OAAO+E,GAAqBhD,EAAOnB,kBAAmBmB,EAAO/B,6BAA8B+B,EAAOlB,qBAAsBkB,EAAO9B,iCACnI,KAAK,EACD,OAAO8E,GAAqBhD,EAAOlB,qBAAsBkB,EAAO9B,gCAAiC8B,EAAOjB,oBAAqBiB,EAAO7B,gCACxI,KAAK,EACL,QACI,OAAO6E,GAAqBhD,EAAOjB,oBAAqBiB,EAAO7B,+BAAgC6B,EAAOpB,iBAAkBoB,EAAOlC,6BAE/I,EACI,IAAIoF,GAAgC,SAAUlD,EAAQ+C,GAClD,OAAQA,GACJ,KAAK,EACD,OAAOC,GAAqBhD,EAAO5B,4BAA6B4B,EAAOhB,kBAAmBgB,EAAO3B,6BAA8B2B,EAAOf,oBAC1I,KAAK,EACD,OAAO+D,GAAqBhD,EAAO3B,6BAA8B2B,EAAOf,mBAAoBe,EAAO1B,gCAAiC0B,EAAOd,uBAC/I,KAAK,EACD,OAAO8D,GAAqBhD,EAAO1B,gCAAiC0B,EAAOd,sBAAuBc,EAAOzB,+BAAgCyB,EAAOb,sBACpJ,KAAK,EACL,QACI,OAAO6D,GAAqBhD,EAAOzB,+BAAgCyB,EAAOb,qBAAsBa,EAAO5B,4BAA6B4B,EAAOhB,mBAE3J,EACI,IAAImE,GAA2B,SAAUnD,EAAQ+C,GAC7C,OAAQA,GACJ,KAAK,EACD,OAAOK,GAA2BpD,EAAOxB,oBAAqBwB,EAAOvB,sBACzE,KAAK,EACD,OAAO2E,GAA2BpD,EAAOvB,qBAAsBuB,EAAOtB,yBAC1E,KAAK,EACD,OAAO0E,GAA2BpD,EAAOtB,wBAAyBsB,EAAOrB,wBAC7E,KAAK,EACL,QACI,OAAOyE,GAA2BpD,EAAOrB,uBAAwBqB,EAAOxB,qBAExF,EACI,IAAI4E,GAA6B,SAAUC,EAAQC,GAC/C,IAAIt8F,EAAO,GACX,GAAI41F,GAAcyG,GAAS,CACvBr8F,EAAKxa,KAAK62G,EAAOjH,UAAU,GAAK,OAC5C,KACa,CACDp1F,EAAKxa,KAAK62G,EACtB,CACQ,GAAIzG,GAAc0G,GAAS,CACvBt8F,EAAKxa,KAAK82G,EAAOlH,UAAU,GAAK,MAC5C,KACa,CACDp1F,EAAKxa,KAAK82G,EACtB,CACQ,OAAOt8F,CACf,EACI,IAAIg8F,GAAuB,SAAUK,EAAQE,EAAQD,EAAQE,GACzD,IAAIx8F,EAAO,GACX,GAAI41F,GAAcyG,GAAS,CACvBr8F,EAAKxa,KAAK62G,EAAOjH,UAAU,GAAK,OAC5C,KACa,CACDp1F,EAAKxa,KAAK62G,EACtB,CACQ,GAAIzG,GAAc0G,GAAS,CACvBt8F,EAAKxa,KAAK82G,EAAOlH,UAAU,GAAK,MAC5C,KACa,CACDp1F,EAAKxa,KAAK82G,EACtB,CACQ,GAAI1G,GAAc4G,GAAS,CACvBx8F,EAAKxa,KAAKg3G,EAAOpH,UAAU,GAAK,MAAM5pG,UAClD,KACa,CACDwU,EAAKxa,KAAKg3G,EACtB,CACQ,GAAI5G,GAAc2G,GAAS,CACvBv8F,EAAKxa,KAAK+2G,EAAOnH,UAAU,GAAK,OAAO5pG,UACnD,KACa,CACDwU,EAAKxa,KAAK+2G,EACtB,CACQ,OAAOv8F,CACf,EAEI,IAAIy6F,GAAa,SAAU5vG,GACvB,IAAI0yF,EAAS1yF,EAAQ0yF,OACrB,IAAI59C,EAAS90C,EAAQ80C,OACrB,OAAO49C,EAAOlzF,IAAIs1C,EAAOg3C,gBAAiBh3C,EAAO62C,iBAAkB72C,EAAO82C,iBAAmB92C,EAAOg3C,mBAAoBh3C,EAAO62C,eAAiB72C,EAAO+2C,mBAC/J,EACI,IAAI+lB,GAAa,SAAU5xG,GACvB,IAAI80C,EAAS90C,EAAQ80C,OACrB,IAAI49C,EAAS1yF,EAAQ0yF,OACrB,IAAInwC,EAAcu4B,GAAiBhmC,EAAOyN,YAAamwC,EAAOjhF,OAC9D,IAAI27E,EAAetS,GAAiBhmC,EAAOs4C,aAAcsF,EAAOjhF,OAChE,IAAI+wC,EAAas4B,GAAiBhmC,EAAO0N,WAAYkwC,EAAOjhF,OAC5D,IAAI47E,EAAgBvS,GAAiBhmC,EAAOu4C,cAAeqF,EAAOjhF,OAClE,OAAOihF,EAAOlzF,IAAI+iD,EAAczN,EAAOg3C,gBAAiBtpC,EAAa1N,EAAO62C,iBAAkB72C,EAAO82C,iBAAmB92C,EAAOg3C,gBAAkBvpC,EAAc6qC,KAAiBt4C,EAAO62C,eAAiB72C,EAAO+2C,kBAAoBrpC,EAAa6qC,GACxP,EAEI,IAAIwkB,GAAqC,SAAU1nB,EAAkBnqF,GACjE,GAAImqF,IAAqB,EAAoB,CACzC,OAAOnqF,EAAQ0yF,MAC3B,CACQ,GAAIvI,IAAqB,EAAqB,CAC1C,OAAOynB,GAAW5xG,EAC9B,CACQ,OAAO4vG,GAAW5vG,EAC1B,EACI,IAAI8xG,GAAkC,SAAUnsB,EAAgB3lF,GAC5D,GAAI2lF,IAAmB,EAAoB,CACvC,OAAO3lF,EAAQ0yF,MAC3B,CACQ,GAAI/M,IAAmB,EAAqB,CACxC,OAAOisB,GAAW5xG,EAC9B,CACQ,OAAO4vG,GAAW5vG,EAC1B,EACI,IAAI+xG,GAA+B,SAAUh5G,EAAW0B,EAAOu3G,GAC3D,IAAIC,EAA4BJ,GAAmCK,GAA2Bn5G,EAAU+7C,OAAOq1C,iBAAkB1vF,GAAQ1B,GACzI,IAAIo5G,EAAyBL,GAAgCI,GAA2Bn5G,EAAU+7C,OAAO6wC,eAAgBlrF,GAAQ1B,GACjI,IAAIq5G,EAAsBC,GAAwBH,GAA2Bn5G,EAAU+7C,OAAO01C,eAAgB/vF,GAAQu3G,EAAeC,GACrI,IAAIK,EAAYF,EAAoB,GAAIG,EAAaH,EAAoB,GACzE,IAAI5sG,EAAWo1E,GAAyBs3B,GAA2Bn5G,EAAU+7C,OAAOs1C,mBAAoB3vF,GAAQw3G,EAA0BxgG,MAAQ6gG,EAAWL,EAA0BvgG,OAAS6gG,GAChM,IAAIp9F,EAAOq9F,GAA8BN,GAA2Bn5G,EAAU+7C,OAAOu1C,iBAAkB5vF,GAAQ+K,EAAU4sG,EAAqBH,EAA2BE,GACzK,IAAI1kB,EAAUr6E,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOzB,EAAS,IACnE,IAAIkoF,EAAUt6E,KAAK0mB,MAAMm4E,EAA0BnrG,IAAMtB,EAAS,IAClE,MAAO,CAAC2P,EAAMs4E,EAASC,EAAS4kB,EAAWC,EACnD,EACI,IAAIE,GAAS,SAAUj8B,GAAS,OAAOuD,GAAavD,IAAUA,EAAMz7E,QAAUwvF,GAAgB7kF,IAAK,EACnG,IAAIgtG,GAAoB,SAAU33G,GAAS,cAAcA,IAAU,QAAS,EAC5E,IAAIs3G,GAA0B,SAAUlqB,EAAMpgD,EAAI2qD,GAC9C,IAAI+I,EAAiB1zD,EAAG,GAAI4zD,EAAkB5zD,EAAG,GAAI4qE,EAAsB5qE,EAAG,GAC9E,IAAIk+C,EAAQkC,EAAK,GAAIyqB,EAASzqB,EAAK,GACnC,IAAKlC,EAAO,CACR,MAAO,CAAC,EAAG,EACvB,CACQ,GAAI1L,GAAmB0L,IAAU2sB,GAAUr4B,GAAmBq4B,GAAS,CACnE,MAAO,CAAC93B,GAAiBmL,EAAOyM,EAAOjhF,OAAQqpE,GAAiB83B,EAAQlgB,EAAOhhF,QAC3F,CACQ,IAAImhG,EAAyBH,GAAkBC,GAC/C,GAAI54B,GAAakM,KAAWA,EAAMlrF,QAAUwvF,GAAgBtB,SAAWhD,EAAMlrF,QAAUwvF,GAAgBvB,OAAQ,CAC3G,GAAI0pB,GAAkBC,GAAsB,CACxC,IAAIG,EAAcpgB,EAAOjhF,MAAQihF,EAAOhhF,OACxC,OAAOohG,EAAcH,KAAyB1sB,EAAMlrF,QAAUwvF,GAAgBvB,OACxE,CAAC0J,EAAOjhF,MAAOihF,EAAOjhF,MAAQkhG,GAC9B,CAACjgB,EAAOhhF,OAASihG,EAAqBjgB,EAAOhhF,OACnE,CACY,MAAO,CAACghF,EAAOjhF,MAAOihF,EAAOhhF,OACzC,CACQ,IAAIqhG,EAAoBL,GAAkBjX,GAC1C,IAAIuX,EAAqBN,GAAkB/W,GAC3C,IAAIsX,EAAyBF,GAAqBC,EAElD,GAAIP,GAAOxsB,MAAY2sB,GAAUH,GAAOG,IAAU,CAE9C,GAAIG,GAAqBC,EAAoB,CACzC,MAAO,CAACvX,EAAgBE,EACxC,CAGY,IAAKkX,IAA2BI,EAAwB,CACpD,MAAO,CAACvgB,EAAOjhF,MAAOihF,EAAOhhF,OAC7C,CAIY,GAAIuhG,GAA0BJ,EAAwB,CAClD,IAAIK,EAAUH,EACRtX,EACAE,EAAkBgX,EACxB,IAAIQ,EAAWH,EACTrX,EACAF,EAAiBkX,EACvB,MAAO,CAACO,EAASC,EACjC,CAGY,IAAIC,EAAUL,EAAoBtX,EAAiB/I,EAAOjhF,MAC1D,IAAI4hG,EAAWL,EAAqBrX,EAAkBjJ,EAAOhhF,OAC7D,MAAO,CAAC0hG,EAASC,EAC7B,CAGQ,GAAIR,EAAwB,CACxB,IAAIS,EAAU,EACd,IAAIC,EAAW,EACf,GAAIh5B,GAAmB0L,GAAQ,CAC3BqtB,EAAUx4B,GAAiBmL,EAAOyM,EAAOjhF,MACzD,MACiB,GAAI8oE,GAAmBq4B,GAAS,CACjCW,EAAWz4B,GAAiB83B,EAAQlgB,EAAOhhF,OAC3D,CACY,GAAI+gG,GAAOxsB,GAAQ,CACfqtB,EAAUC,EAAWZ,CACrC,MACiB,IAAKC,GAAUH,GAAOG,GAAS,CAChCW,EAAWD,EAAUX,CACrC,CACY,MAAO,CAACW,EAASC,EAC7B,CAKQ,IAAI9hG,EAAQ,KACZ,IAAIC,EAAS,KACb,GAAI6oE,GAAmB0L,GAAQ,CAC3Bx0E,EAAQqpE,GAAiBmL,EAAOyM,EAAOjhF,MACnD,MACa,GAAImhG,GAAUr4B,GAAmBq4B,GAAS,CAC3ClhG,EAASopE,GAAiB83B,EAAQlgB,EAAOhhF,OACrD,CACQ,GAAID,IAAU,QAAUmhG,GAAUH,GAAOG,IAAU,CAC/ClhG,EACIqhG,GAAqBC,EACdvhG,EAAQgqF,EAAkBE,EAC3BjJ,EAAOhhF,MAC7B,CACQ,GAAIA,IAAW,MAAQ+gG,GAAOxsB,GAAQ,CAClCx0E,EACIshG,GAAqBC,EACdthG,EAASiqF,EAAmBF,EAC7B/I,EAAOjhF,KAC7B,CACQ,GAAIA,IAAU,MAAQC,IAAW,KAAM,CACnC,MAAO,CAACD,EAAOC,EAC3B,CACQ,MAAM,IAAIitD,MAAM,kDACxB,EACI,IAAIuzC,GAA6B,SAAUt6D,EAAQn9C,GAC/C,IAAIM,EAAQ68C,EAAOn9C,GACnB,UAAWM,IAAU,YAAa,CAC9B,OAAO68C,EAAO,EAC1B,CACQ,OAAO78C,CACf,EACI,IAAIy3G,GAAgC,SAAUhc,EAAQzuD,EAAI8vB,EAAIo6C,EAA2BE,GACrF,IAAIjrG,EAAI6gC,EAAG,GAAI5gC,EAAI4gC,EAAG,GACtB,IAAIt2B,EAAQomD,EAAG,GAAInmD,EAASmmD,EAAG,GAC/B,OAAQ2+B,GACJ,KAAK,EACD,MAAO,CACH,IAAIwT,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,MAAOmM,KAAK0mB,MAAMm4E,EAA0BnrG,IAAMK,IAClG,IAAI6iG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOgrG,EAA0BxgG,OAAQ2B,KAAK0mB,MAAMm4E,EAA0BnrG,IAAMK,IACpI,IAAI6iG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOgrG,EAA0BxgG,OAAQ2B,KAAK0mB,MAAMpoB,EAASugG,EAA0BnrG,IAAMK,IAC7I,IAAI6iG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,MAAOmM,KAAK0mB,MAAMpoB,EAASugG,EAA0BnrG,IAAMK,KAEnH,KAAK,EACD,MAAO,CACH,IAAI6iG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,GAAIkM,KAAK0mB,MAAMm4E,EAA0BnrG,MAChG,IAAIkjG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,EAAIuK,GAAQ2B,KAAK0mB,MAAMm4E,EAA0BnrG,MACxG,IAAIkjG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,EAAIuK,GAAQ2B,KAAK0mB,MAAMm4E,EAA0BvgG,OAASugG,EAA0BnrG,MAC3I,IAAIkjG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,GAAIkM,KAAK0mB,MAAMm4E,EAA0BvgG,OAASugG,EAA0BnrG,OAE3I,KAAK,EACD,MAAO,CACH,IAAIkjG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,GAAIkM,KAAK0mB,MAAMm4E,EAA0BnrG,IAAMK,IACtG,IAAI6iG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,EAAIuK,GAAQ2B,KAAK0mB,MAAMm4E,EAA0BnrG,IAAMK,IAC9G,IAAI6iG,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,EAAIuK,GAAQ2B,KAAK0mB,MAAMm4E,EAA0BnrG,IAAMK,EAAIuK,IAClH,IAAIs4F,GAAO52F,KAAK0mB,MAAMm4E,EAA0BhrG,KAAOC,GAAIkM,KAAK0mB,MAAMm4E,EAA0BnrG,IAAMK,EAAIuK,KAElH,QACI,MAAO,CACH,IAAIs4F,GAAO52F,KAAK0mB,MAAMq4E,EAAuBlrG,MAAOmM,KAAK0mB,MAAMq4E,EAAuBrrG,MACtF,IAAIkjG,GAAO52F,KAAK0mB,MAAMq4E,EAAuBlrG,KAAOkrG,EAAuB1gG,OAAQ2B,KAAK0mB,MAAMq4E,EAAuBrrG,MACrH,IAAIkjG,GAAO52F,KAAK0mB,MAAMq4E,EAAuBlrG,KAAOkrG,EAAuB1gG,OAAQ2B,KAAK0mB,MAAMq4E,EAAuBzgG,OAASygG,EAAuBrrG,MACrJ,IAAIkjG,GAAO52F,KAAK0mB,MAAMq4E,EAAuBlrG,MAAOmM,KAAK0mB,MAAMq4E,EAAuBzgG,OAASygG,EAAuBrrG,OAG1I,EAEI,IAAI0sG,GAAc,iFAElB,IAAIC,GAAc,cAClB,IAAIC,GAA6B,WAC7B,SAASA,EAAYt7G,GACjBS,KAAK86G,MAAQ,GACb96G,KAAK+6G,UAAYx7G,CAC7B,CACQs7G,EAAYx0G,UAAU20G,aAAe,SAAUzkB,EAAY3C,GACvD,IAAI1zF,EAAYF,KAAK+6G,UAAU56G,cAAc,OAC7C,IAAIq+F,EAAMx+F,KAAK+6G,UAAU56G,cAAc,OACvC,IAAI86G,EAAOj7G,KAAK+6G,UAAU56G,cAAc,QACxC,IAAIE,EAAOL,KAAK+6G,UAAU16G,KAC1BH,EAAU4G,MAAM+uF,WAAa,SAC7B31F,EAAU4G,MAAMyvF,WAAaA,EAC7Br2F,EAAU4G,MAAM8sF,SAAWA,EAC3B1zF,EAAU4G,MAAMmF,OAAS,IACzB/L,EAAU4G,MAAMo0G,QAAU,IAC1Bh7G,EAAU4G,MAAMq0G,WAAa,SAC7B96G,EAAKC,YAAYJ,GACjBs+F,EAAII,IAAM+b,GACVnc,EAAI5lF,MAAQ,EACZ4lF,EAAI3lF,OAAS,EACb2lF,EAAI13F,MAAMmF,OAAS,IACnBuyF,EAAI13F,MAAMo0G,QAAU,IACpB1c,EAAI13F,MAAMs0G,cAAgB,WAC1BH,EAAKn0G,MAAMyvF,WAAaA,EACxB0kB,EAAKn0G,MAAM8sF,SAAWA,EACtBqnB,EAAKn0G,MAAMmF,OAAS,IACpBgvG,EAAKn0G,MAAMo0G,QAAU,IACrBD,EAAK36G,YAAYN,KAAK+6G,UAAUpqG,eAAeiqG,KAC/C16G,EAAUI,YAAY26G,GACtB/6G,EAAUI,YAAYk+F,GACtB,IAAI6c,EAAW7c,EAAI8c,UAAYL,EAAKK,UAAY,EAChDp7G,EAAUs9F,YAAYyd,GACtB/6G,EAAUI,YAAYN,KAAK+6G,UAAUpqG,eAAeiqG,KACpD16G,EAAU4G,MAAM4sF,WAAa,SAC7B8K,EAAI13F,MAAMs0G,cAAgB,QAC1B,IAAIG,EAAS/c,EAAI8c,UAAYp7G,EAAUo7G,UAAY,EACnDj7G,EAAKm9F,YAAYt9F,GACjB,MAAO,CAAEm7G,SAAUA,EAAUE,OAAQA,EACjD,EACQV,EAAYx0G,UAAUm1G,WAAa,SAAUjlB,EAAY3C,GACrD,IAAIvrF,EAAMkuF,EAAa,IAAM3C,EAC7B,UAAW5zF,KAAK86G,MAAMzyG,KAAS,YAAa,CACxCrI,KAAK86G,MAAMzyG,GAAOrI,KAAKg7G,aAAazkB,EAAY3C,EAChE,CACY,OAAO5zF,KAAK86G,MAAMzyG,EAC9B,EACQ,OAAOwyG,CACf,CA/CmB,GAiDf,IAAIY,GAA0B,WAC1B,SAASA,EAASriF,EAASzlB,GACvB3T,KAAKo5B,QAAUA,EACfp5B,KAAK2T,QAAUA,CAC3B,CACQ,OAAO8nG,CACf,CANgB,GAQZ,IAAIC,GAAc,IAClB,IAAIC,GAAgC,SAAUlZ,GAC1C11B,EAAU4uC,EAAgBlZ,GAC1B,SAASkZ,EAAeviF,EAASzlB,GAC7B,IAAI+uF,EAAQD,EAAOl8F,KAAKvG,KAAMo5B,EAASzlB,IAAY3T,KACnD0iG,EAAMkZ,eAAiB,GACvBlZ,EAAMjE,OAAS9qF,EAAQ8qF,OAAS9qF,EAAQ8qF,OAASl/F,SAASY,cAAc,UACxEuiG,EAAMhE,IAAMgE,EAAMjE,OAAOE,WAAW,MACpC,IAAKhrF,EAAQ8qF,OAAQ,CACjBiE,EAAMjE,OAAO7lF,MAAQ2B,KAAKolB,MAAMhsB,EAAQiF,MAAQjF,EAAQ6Q,OACxDk+E,EAAMjE,OAAO5lF,OAAS0B,KAAKolB,MAAMhsB,EAAQkF,OAASlF,EAAQ6Q,OAC1Dk+E,EAAMjE,OAAO33F,MAAM8R,MAAQjF,EAAQiF,MAAQ,KAC3C8pF,EAAMjE,OAAO33F,MAAM+R,OAASlF,EAAQkF,OAAS,IAC7D,CACY6pF,EAAMmZ,YAAc,IAAIhB,GAAYt7G,UACpCmjG,EAAMhE,IAAIl6E,MAAMk+E,EAAM/uF,QAAQ6Q,MAAOk+E,EAAM/uF,QAAQ6Q,OACnDk+E,EAAMhE,IAAIz7F,WAAW0Q,EAAQtF,GAAIsF,EAAQrF,GACzCo0F,EAAMhE,IAAIod,aAAe,SACzBpZ,EAAMkZ,eAAiB,GACvBlZ,EAAMtpE,QAAQywE,OAAOxwE,MAAM,gCAAkC1lB,EAAQiF,MAAQ,IAAMjF,EAAQkF,OAAS,gBAAkBlF,EAAQ6Q,OAC9H,OAAOk+E,CACnB,CACQiZ,EAAet1G,UAAU01G,aAAe,SAAUlF,GAC9C,IAAInU,EAAQ1iG,KACZ,MAAOA,KAAK47G,eAAe/5G,OAAQ,CAC/B7B,KAAKg8G,WACrB,CACYnF,EAAQttG,SAAQ,SAAU8hC,GAAU,OAAOq3D,EAAMuZ,YAAY5wE,EAAQ,GACjF,EACQswE,EAAet1G,UAAU41G,YAAc,SAAU5wE,GAC7CrrC,KAAK0+F,IAAIwd,OACT,GAAIpG,GAAgBzqE,GAAS,CACzBrrC,KAAK0+F,IAAIyd,YAAc9wE,EAAO1jC,OAC9C,CACY,GAAIiuG,GAAkBvqE,GAAS,CAC3BrrC,KAAK0+F,IAAIz7F,UAAUooC,EAAOupD,QAASvpD,EAAOwpD,SAC1C70F,KAAK0+F,IAAIj4D,UAAU4E,EAAO8pD,OAAO,GAAI9pD,EAAO8pD,OAAO,GAAI9pD,EAAO8pD,OAAO,GAAI9pD,EAAO8pD,OAAO,GAAI9pD,EAAO8pD,OAAO,GAAI9pD,EAAO8pD,OAAO,IAC3Hn1F,KAAK0+F,IAAIz7F,WAAWooC,EAAOupD,SAAUvpD,EAAOwpD,QAC5D,CACY,GAAIghB,GAAaxqE,GAAS,CACtBrrC,KAAKsc,KAAK+uB,EAAO/uB,MACjBtc,KAAK0+F,IAAI0d,MACzB,CACYp8G,KAAK47G,eAAe95G,KAAKupC,EACrC,EACQswE,EAAet1G,UAAU21G,UAAY,WACjCh8G,KAAK47G,eAAe98C,MACpB9+D,KAAK0+F,IAAI2d,SACrB,EACQV,EAAet1G,UAAUi2G,YAAc,SAAU3E,GAC7C,OAAOzqC,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIi8C,EACJ,OAAOyxB,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACDs4C,EAAS07D,EAAMxwG,QAAQjH,UAAU+7C,OACjC,IAAKA,EAAOw8C,YAAa,MAAO,CAAC,EAAa,GAC9C,MAAO,CAAC,EAAaz4F,KAAKu8G,mBAAmB5E,IACjD,KAAK,EACDzoE,EAAGy+B,OACHz+B,EAAGvrC,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExC,GACA,GACA,EACQg4G,EAAet1G,UAAUm2G,WAAa,SAAUC,GAC5C,OAAOvvC,EAAUltE,UAAW,OAAQ,GAAG,WACnC,OAAO0tE,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACD,GAAIwJ,GAASsvG,EAAMv8G,UAAUopE,MAAO,IAAwB,CACxD,QAChC,CAC4B,IAAKmzC,EAAMv8G,UAAU+7C,OAAOw8C,YAAa,MAAO,CAAC,EAAa,GAC9D,MAAO,CAAC,EAAaz4F,KAAK08G,+BAA+BD,IAC7D,KAAK,EACDvtE,EAAGy+B,OACH,MAAO,CAAC,EAAa3tE,KAAK28G,kBAAkBF,IAChD,KAAK,EACDvtE,EAAGy+B,OACHz+B,EAAGvrC,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExC,GACA,GACA,EACQg4G,EAAet1G,UAAUu2G,4BAA8B,SAAUtwE,EAAMgnD,EAAe+nB,GAClF,IAAI3Y,EAAQ1iG,KACZ,GAAIszF,IAAkB,EAAG,CACrBtzF,KAAK0+F,IAAIme,SAASvwE,EAAKA,KAAMA,EAAKutD,OAAOzrF,KAAMk+B,EAAKutD,OAAO5rF,IAAMotG,EACjF,KACiB,CACD,IAAIyB,EAAU5b,GAAiB50D,EAAKA,MACpCwwE,EAAQ1iG,QAAO,SAAUhM,EAAM2uG,GAC3Bra,EAAMhE,IAAIme,SAASE,EAAQ3uG,EAAMk+B,EAAKutD,OAAO5rF,IAAMotG,GACnD,OAAOjtG,EAAOs0F,EAAMhE,IAAIse,YAAYD,GAAQnkG,KAChE,GAAmB0zB,EAAKutD,OAAOzrF,KAC/B,CACA,EACQutG,EAAet1G,UAAU42G,gBAAkB,SAAUhhE,GACjD,IAAIy6C,EAAcz6C,EAAOy6C,YACpB7nE,QAAO,SAAU2f,GAAW,OAAOA,IAAY,UAAYA,IAAY,YAAa,IACpF2oB,KAAK,IACV,IAAIo/B,EAAa2mB,GAAkBjhE,EAAOs6C,YAAYp/B,KAAK,MAC3D,IAAIy8B,EAAW5S,GAAiB/kC,EAAO23C,UACjC,GAAK33C,EAAO23C,SAASpiF,OAASyqC,EAAO23C,SAAS9T,KAC9C7jC,EAAO23C,SAASpiF,OAAS,KAC/B,MAAO,CACH,CAACyqC,EAAO06C,UAAWD,EAAaz6C,EAAO50C,WAAYusF,EAAU2C,GAAYp/B,KAAK,KAC9Eo/B,EACA3C,EAEhB,EACQ+nB,EAAet1G,UAAU82G,eAAiB,SAAU7wE,EAAM2P,GACtD,OAAOixB,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIkvC,EAAIkuE,EAAM7mB,EAAY3C,EAAU50B,EAAIq8C,EAAUE,EAAQzjB,EAC1D,IAAI4K,EAAQ1iG,KACZ,OAAO0tE,EAAY1tE,MAAM,SAAUwyG,GAC/BtjE,EAAKlvC,KAAKi9G,gBAAgBhhE,GAASmhE,EAAOluE,EAAG,GAAIqnD,EAAarnD,EAAG,GAAI0kD,EAAW1kD,EAAG,GACnFlvC,KAAK0+F,IAAI0e,KAAOA,EAChBp9G,KAAK0+F,IAAIrqD,UAAY4H,EAAO5H,YAAc,EAAc,MAAQ,MAChEr0C,KAAK0+F,IAAIjK,UAAY,OACrBz0F,KAAK0+F,IAAIod,aAAe,aACxB98C,EAAKh/D,KAAK67G,YAAYL,WAAWjlB,EAAY3C,GAAWynB,EAAWr8C,EAAGq8C,SAAUE,EAASv8C,EAAGu8C,OAC5FzjB,EAAa77C,EAAO67C,WACpBxrD,EAAKy0D,WAAWx3F,SAAQ,SAAU+iC,GAC9BwrD,EAAWvuF,SAAQ,SAAU8zG,GACzB,OAAQA,GACJ,KAAK,EACD3a,EAAMhE,IAAIO,UAAY/b,GAASjnC,EAAOmB,OACtCslD,EAAMka,4BAA4BtwE,EAAM2P,EAAOq3C,cAAe+nB,GAC9D,IAAIiC,EAAcrhE,EAAOy4C,WACzB,GAAI4oB,EAAYz7G,QAAUyqC,EAAKA,KAAKryB,OAAOpY,OAAQ,CAC/Cy7G,EACKh3G,MAAM,GACNwB,UACAyB,SAAQ,SAAUmrF,GACnBgO,EAAMhE,IAAI6e,YAAcr6B,GAASwR,EAAWt3C,OAC5CslD,EAAMhE,IAAI8e,cAAgB9oB,EAAWE,QAAQpjF,OAASkxF,EAAM/uF,QAAQ6Q,MACpEk+E,EAAMhE,IAAI+e,cAAgB/oB,EAAWG,QAAQrjF,OAASkxF,EAAM/uF,QAAQ6Q,MACpEk+E,EAAMhE,IAAIgf,WAAahpB,EAAWI,KAAKtjF,OACvCkxF,EAAMka,4BAA4BtwE,EAAM2P,EAAOq3C,cAAe+nB,EAC1G,IACwC3Y,EAAMhE,IAAI6e,YAAc,GACxB7a,EAAMhE,IAAI8e,cAAgB,EAC1B9a,EAAMhE,IAAI+e,cAAgB,EAC1B/a,EAAMhE,IAAIgf,WAAa,CAC/D,CACoC,GAAIzhE,EAAOo6C,mBAAmBx0F,OAAQ,CAClC6gG,EAAMhE,IAAIO,UAAY/b,GAASjnC,EAAOm6C,qBAAuBn6C,EAAOmB,OACpEnB,EAAOo6C,mBAAmB9sF,SAAQ,SAAU8sF,GACxC,OAAQA,GACJ,KAAK,EAIDqM,EAAMhE,IAAIQ,SAAS5yD,EAAKutD,OAAOzrF,KAAMmM,KAAK0mB,MAAMqL,EAAKutD,OAAO5rF,IAAMotG,GAAW/uE,EAAKutD,OAAOjhF,MAAO,GAChG,MACJ,KAAK,EACD8pF,EAAMhE,IAAIQ,SAAS5yD,EAAKutD,OAAOzrF,KAAMmM,KAAK0mB,MAAMqL,EAAKutD,OAAO5rF,KAAMq+B,EAAKutD,OAAOjhF,MAAO,GACrF,MACJ,KAAK,EAED8pF,EAAMhE,IAAIQ,SAAS5yD,EAAKutD,OAAOzrF,KAAMmM,KAAK23D,KAAK5lC,EAAKutD,OAAO5rF,IAAMstG,GAASjvE,EAAKutD,OAAOjhF,MAAO,GAC7F,MAEpD,GACA,CACoC,MACJ,KAAK,EACD,GAAIqjC,EAAOg8C,uBAAyB3rD,EAAKA,KAAKryB,OAAOpY,OAAQ,CACzD6gG,EAAMhE,IAAIif,YAAcz6B,GAASjnC,EAAO+7C,uBACxC0K,EAAMhE,IAAIkf,UAAY3hE,EAAOg8C,sBAE7ByK,EAAMhE,IAAImf,WAAavzG,OAAOwzG,OAAS,QAAU,QACjDpb,EAAMhE,IAAIqf,WAAWzxE,EAAKA,KAAMA,EAAKutD,OAAOzrF,KAAMk+B,EAAKutD,OAAO5rF,IAAMotG,EAC5G,CACoC3Y,EAAMhE,IAAIif,YAAc,GACxBjb,EAAMhE,IAAIkf,UAAY,EACtBlb,EAAMhE,IAAImf,SAAW,QACrB,MAEpC,GACA,IACoB,MAAO,CAAC,EAC5B,GACA,GACA,EACQlC,EAAet1G,UAAU23G,sBAAwB,SAAU99G,EAAWo1G,EAAQzkB,GAC1E,GAAIA,GAAS3wF,EAAU0iG,eAAiB,GAAK1iG,EAAU4iG,gBAAkB,EAAG,CACxE,IAAIv+E,EAAMw0F,GAAW74G,GACrB,IAAIoc,EAAOk5F,GAAwBF,GACnCt1G,KAAKsc,KAAKA,GACVtc,KAAK0+F,IAAIwd,OACTl8G,KAAK0+F,IAAI0d,OACTp8G,KAAK0+F,IAAIG,UAAUhO,EAAO,EAAG,EAAG3wF,EAAU0iG,eAAgB1iG,EAAU4iG,gBAAiBv+E,EAAInW,KAAMmW,EAAItW,IAAKsW,EAAI3L,MAAO2L,EAAI1L,QACvH7Y,KAAK0+F,IAAI2d,SACzB,CACA,EACQV,EAAet1G,UAAUs2G,kBAAoB,SAAUF,GACnD,OAAOvvC,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIE,EAAWo1G,EAAQr5D,EAAQizB,EAAIhgC,EAAI2qB,EAAOg3B,EAAOA,EAAOotB,EAAgBxf,EAAQnP,EAAMtwB,EAAIu3B,EAAY3C,EAAUynB,EAAUxhB,EAAQxrF,EAAG0yF,EAAYvC,EAAK3N,EAAOE,EAAKwF,EAAYsD,EAClL,OAAOnsB,EAAY1tE,MAAM,SAAUwyG,GAC/B,OAAQA,EAAG7uG,OACP,KAAK,EACD3D,KAAK+7G,aAAaU,EAAMzF,WAAW,IACnC92G,EAAYu8G,EAAMv8G,UAClBo1G,EAASmH,EAAMnH,OACfr5D,EAAS/7C,EAAU+7C,OACnBizB,EAAK,EAAGhgC,EAAKhvC,EAAUy5F,UACvB6Y,EAAG7uG,MAAQ,EACf,KAAK,EACD,KAAMurE,EAAKhgC,EAAGrtC,QAAS,MAAO,CAAC,EAAa,GAC5Cg4D,EAAQ3qB,EAAGggC,GACX,MAAO,CAAC,EAAalvE,KAAKm9G,eAAetjD,EAAO5d,IACpD,KAAK,EACDu2D,EAAG7kC,OACH6kC,EAAG7uG,MAAQ,EACf,KAAK,EACDurE,IACA,MAAO,CAAC,EAAa,GACzB,KAAK,EACD,KAAMhvE,aAAqBsiG,IAAwB,MAAO,CAAC,EAAa,GACxEgQ,EAAG7uG,MAAQ,EACf,KAAK,EACD6uG,EAAG5kC,KAAK9rE,KAAK,CAAC,EAAG,EAAC,CAAI,IACtB,MAAO,CAAC,EAAa9B,KAAKo5B,QAAQ43D,MAAMlzC,MAAM59C,EAAU0+F,MAC5D,KAAK,EACD/N,EAAQ2hB,EAAG7kC,OACX3tE,KAAKg+G,sBAAsB99G,EAAWo1G,EAAQzkB,GAC9C,MAAO,CAAC,EAAa,GACzB,KAAK,EACD2hB,EAAG7kC,OACH3tE,KAAKo5B,QAAQywE,OAAOpgG,MAAM,uBAAyBvJ,EAAU0+F,KAC7D,MAAO,CAAC,EAAa,GACzB,KAAK,EACD,GAAI1+F,aAAqB8iG,GAAwB,CAC7ChjG,KAAKg+G,sBAAsB99G,EAAWo1G,EAAQp1G,EAAUu+F,OACxF,CAC4B,KAAMv+F,aAAqB+iG,IAAsB,MAAO,CAAC,EAAa,IACtEuP,EAAG7uG,MAAQ,EACf,KAAK,EACD6uG,EAAG5kC,KAAK9rE,KAAK,CAAC,EAAG,GAAE,CAAI,KACvB,MAAO,CAAC,EAAa9B,KAAKo5B,QAAQ43D,MAAMlzC,MAAM59C,EAAUk/F,MAC5D,KAAK,GACDvO,EAAQ2hB,EAAG7kC,OACX3tE,KAAKg+G,sBAAsB99G,EAAWo1G,EAAQzkB,GAC9C,MAAO,CAAC,EAAa,IACzB,KAAK,GACD2hB,EAAG7kC,OACH3tE,KAAKo5B,QAAQywE,OAAOpgG,MAAM,qBAAuBvJ,EAAUk/F,IAAIrwD,UAAU,EAAG,MAC5E,MAAO,CAAC,EAAa,IACzB,KAAK,GACD,KAAM7uC,aAAqB+jG,IAA0B/jG,EAAUkkG,MAAO,MAAO,CAAC,EAAa,IAC3F6Z,EAAiB,IAAItC,EAAe37G,KAAKo5B,QAAS,CAC9C5U,MAAOxkB,KAAK2T,QAAQ6Q,MACpBzd,gBAAiB7G,EAAU6G,gBAC3BsH,EAAG,EACHC,EAAG,EACHsK,MAAO1Y,EAAU0Y,MACjBC,OAAQ3Y,EAAU2Y,SAEtB,MAAO,CAAC,EAAaolG,EAAeC,OAAOh+G,EAAUkkG,OACzD,KAAK,GACD3F,EAAS+T,EAAG7kC,OACZ,GAAIztE,EAAU0Y,OAAS1Y,EAAU2Y,OAAQ,CACrC7Y,KAAK0+F,IAAIG,UAAUJ,EAAQ,EAAG,EAAGv+F,EAAU0Y,MAAO1Y,EAAU2Y,OAAQ3Y,EAAU25F,OAAOzrF,KAAMlO,EAAU25F,OAAO5rF,IAAK/N,EAAU25F,OAAOjhF,MAAO1Y,EAAU25F,OAAOhhF,OAC1L,CAC4B25F,EAAG7uG,MAAQ,GACf,KAAK,GACD,GAAIzD,aAAqB2jG,GAAuB,CAC5CvU,EAAO/0E,KAAKqD,IAAI1d,EAAU25F,OAAOjhF,MAAO1Y,EAAU25F,OAAOhhF,QACzD,GAAI3Y,EAAUsF,OAASwyC,GAAU,CAC7B,GAAI93C,EAAUkD,QAAS,CACnBpD,KAAK0+F,IAAIwd,OACTl8G,KAAKsc,KAAK,CACN,IAAI60F,GAAOjxG,EAAU25F,OAAOzrF,KAAOkhF,EAAO,OAASpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,KACjF,IAAI6hB,GAAOjxG,EAAU25F,OAAOzrF,KAAOkhF,EAAO,IAAMpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,OAC9E,IAAI6hB,GAAOjxG,EAAU25F,OAAOzrF,KAAOkhF,EAAO,OAASpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,QACjF,IAAI6hB,GAAOjxG,EAAU25F,OAAOzrF,KAAOkhF,EAAO,OAASpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,OACjF,IAAI6hB,GAAOjxG,EAAU25F,OAAOzrF,KAAOkhF,EAAO,OAASpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,KACjF,IAAI6hB,GAAOjxG,EAAU25F,OAAOzrF,KAAOkhF,EAAO,IAAMpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,QAC9E,IAAI6hB,GAAOjxG,EAAU25F,OAAOzrF,KAAOkhF,EAAO,OAASpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,OAErFtvF,KAAK0+F,IAAIO,UAAY/b,GAAS0gB,IAC9B5jG,KAAK0+F,IAAIyf,OACTn+G,KAAK0+F,IAAI2d,SACjD,CACA,MACqC,GAAIn8G,EAAUsF,OAASgzC,GAAO,CAC/B,GAAIt4C,EAAUkD,QAAS,CACnBpD,KAAK0+F,IAAIwd,OACTl8G,KAAK0+F,IAAI0f,YACTp+G,KAAK0+F,IAAI2f,IAAIn+G,EAAU25F,OAAOzrF,KAAOkhF,EAAO,EAAGpvF,EAAU25F,OAAO5rF,IAAMqhF,EAAO,EAAGA,EAAO,EAAG,EAAG/0E,KAAKmD,GAAK,EAAG,MAC1G1d,KAAK0+F,IAAIO,UAAY/b,GAAS0gB,IAC9B5jG,KAAK0+F,IAAIyf,OACTn+G,KAAK0+F,IAAI2d,SACjD,CACA,CACA,CAC4B,GAAIiC,GAAmBp+G,IAAcA,EAAUgC,MAAML,OAAQ,CACzDm9D,EAAKh/D,KAAKi9G,gBAAgBhhE,GAASs6C,EAAav3B,EAAG,GAAI40B,EAAW50B,EAAG,GACrEq8C,EAAWr7G,KAAK67G,YAAYL,WAAWjlB,EAAY3C,GAAUynB,SAC7Dr7G,KAAK0+F,IAAI0e,KAAO7mB,EAChBv2F,KAAK0+F,IAAIO,UAAY/b,GAASjnC,EAAOmB,OACrCp9C,KAAK0+F,IAAIod,aAAe,aACxB97G,KAAK0+F,IAAIjK,UAAY8pB,GAAgBr+G,EAAU+7C,OAAOw4C,WACtDoF,EAASkf,GAAW74G,GACpBmO,EAAI,EACJ,OAAQnO,EAAU+7C,OAAOw4C,WACrB,KAAK,EACDpmF,GAAKwrF,EAAOjhF,MAAQ,EACpB,MACJ,KAAK,EACDvK,GAAKwrF,EAAOjhF,MACZ,MAERmoF,EAAalH,EAAOlzF,IAAI0H,EAAG,EAAG,GAAIwrF,EAAOhhF,OAAS,EAAI,GACtD7Y,KAAK0+F,IAAIwd,OACTl8G,KAAKsc,KAAK,CACN,IAAI60F,GAAOtX,EAAOzrF,KAAMyrF,EAAO5rF,KAC/B,IAAIkjG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAOihF,EAAO5rF,KAC9C,IAAIkjG,GAAOtX,EAAOzrF,KAAOyrF,EAAOjhF,MAAOihF,EAAO5rF,IAAM4rF,EAAOhhF,QAC3D,IAAIs4F,GAAOtX,EAAOzrF,KAAMyrF,EAAO5rF,IAAM4rF,EAAOhhF,UAEhD7Y,KAAK0+F,IAAI0d,OACTp8G,KAAK48G,4BAA4B,IAAIhc,GAAW1gG,EAAUgC,MAAO6+F,GAAa9kD,EAAOq3C,cAAe+nB,GACpGr7G,KAAK0+F,IAAI2d,UACTr8G,KAAK0+F,IAAIod,aAAe,aACxB97G,KAAK0+F,IAAIjK,UAAY,MACrD,CAC4B,IAAKtnF,GAASjN,EAAU+7C,OAAOi3C,QAAS,MAAuB,MAAO,CAAC,EAAa,IACpF,KAAMhzF,EAAU+7C,OAAO43C,iBAAmB,MAAO,MAAO,CAAC,EAAa,IACtE2K,EAAMt+F,EAAU+7C,OAAO43C,eACvB,KAAM2K,EAAIh5F,OAAS,GAAc,MAAO,CAAC,EAAa,IACtDqrF,OAAa,EACbE,EAAMyN,EAAIzN,IACVyhB,EAAG7uG,MAAQ,GACf,KAAK,GACD6uG,EAAG5kC,KAAK9rE,KAAK,CAAC,GAAI,GAAE,CAAI,KACxB,MAAO,CAAC,EAAa9B,KAAKo5B,QAAQ43D,MAAMlzC,MAAMizC,IAClD,KAAK,GACDF,EAAQ2hB,EAAG7kC,OACX3tE,KAAK0+F,IAAIG,UAAUhO,EAAO3wF,EAAU25F,OAAOzrF,MAAQyiF,EAAMj4E,MAAQ,IAAK1Y,EAAU25F,OAAO5rF,KACvF,MAAO,CAAC,EAAa,IACzB,KAAK,GACDukG,EAAG7kC,OACH3tE,KAAKo5B,QAAQywE,OAAOpgG,MAAM,kCAAoCsnF,GAC9D,MAAO,CAAC,EAAa,IACzB,KAAK,GAAI,MAAO,CAAC,EAAa,IAC9B,KAAK,GACD,GAAI0rB,EAAMvE,WAAah4G,EAAU+7C,OAAO83C,iBAAmB,EAAc,CACrEwC,EAAav2F,KAAKi9G,gBAAgBhhE,GAAQ,GAC1Cj8C,KAAK0+F,IAAI0e,KAAO7mB,EAChBv2F,KAAK0+F,IAAIO,UAAY/b,GAASjnC,EAAOmB,OACrCp9C,KAAK0+F,IAAIod,aAAe,SACxB97G,KAAK0+F,IAAIjK,UAAY,QACrBoF,EAAS,IAAI1rB,EAAOjuE,EAAU25F,OAAOzrF,KAAMlO,EAAU25F,OAAO5rF,IAAMg0E,GAAiB/hF,EAAU+7C,OAAO0N,WAAYzpD,EAAU25F,OAAOjhF,OAAQ1Y,EAAU25F,OAAOjhF,MAAO+6E,GAAkB13C,EAAOy3C,WAAYz3C,EAAO23C,SAASpiF,QAAU,EAAI,GACpOxR,KAAK48G,4BAA4B,IAAIhc,GAAW6b,EAAMvE,UAAWre,GAAS59C,EAAOq3C,cAAeK,GAAkB13C,EAAOy3C,WAAYz3C,EAAO23C,SAASpiF,QAAU,EAAI,GACnKxR,KAAK0+F,IAAIod,aAAe,SACxB97G,KAAK0+F,IAAIjK,UAAY,MACrD,CAC4B+d,EAAG7uG,MAAQ,GACf,KAAK,GAAI,MAAO,CAAC,GAEzC,GACA,GACA,EACQg4G,EAAet1G,UAAUk2G,mBAAqB,SAAU5E,GACpD,OAAOzqC,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIkvE,EAAIhgC,EAAI2qB,EAAOmF,EAAIwzC,EAAI34C,EAAO84C,EAAIpkF,EAAIsrC,EAAO2kD,EAAIC,EAAI5kD,EAAO6kD,EAAIC,EAAI9kD,EAAO+kD,EAAIC,EAAIhlD,EAAOilD,EAAIh4E,EAAI+yB,EACtG,OAAO6T,EAAY1tE,MAAM,SAAU++G,GAC/B,OAAQA,EAAGp7G,OACP,KAAK,EACD,GAAIwJ,GAASwqG,EAAMxwG,QAAQjH,UAAUopE,MAAO,IAAwB,CAChE,QAChC,CAG4B,MAAO,CAAC,EAAatpE,KAAK08G,+BAA+B/E,EAAMxwG,UACnE,KAAK,EAGD43G,EAAGpxC,OACHuB,EAAK,EAAGhgC,EAAKyoE,EAAMpB,eACnBwI,EAAGp7G,MAAQ,EACf,KAAK,EACD,KAAMurE,EAAKhgC,EAAGrtC,QAAS,MAAO,CAAC,EAAa,GAC5Cg4D,EAAQ3qB,EAAGggC,GACX,MAAO,CAAC,EAAalvE,KAAKs8G,YAAYziD,IAC1C,KAAK,EACDklD,EAAGpxC,OACHoxC,EAAGp7G,MAAQ,EACf,KAAK,EACDurE,IACA,MAAO,CAAC,EAAa,GACzB,KAAK,EAEL,MAAO,CAAC,EAAalvE,KAAK28G,kBAAkBhF,EAAMxwG,UAClD,KAAK,EAED43G,EAAGpxC,OACH3O,EAAK,EAAGwzC,EAAKmF,EAAMrB,eACnByI,EAAGp7G,MAAQ,EACf,KAAK,EACD,KAAMq7D,EAAKwzC,EAAG3wG,QAAS,MAAO,CAAC,EAAa,IAC5Cg4D,EAAQ24C,EAAGxzC,GACX,MAAO,CAAC,EAAah/D,KAAKw8G,WAAW3iD,IACzC,KAAK,EACDklD,EAAGpxC,OACHoxC,EAAGp7G,MAAQ,EACf,KAAK,EACDq7D,IACA,MAAO,CAAC,EAAa,GACzB,KAAK,GACD2zC,EAAK,EAAGpkF,EAAKopF,EAAMjB,oBACnBqI,EAAGp7G,MAAQ,GACf,KAAK,GACD,KAAMgvG,EAAKpkF,EAAG1sB,QAAS,MAAO,CAAC,EAAa,IAC5Cg4D,EAAQtrC,EAAGokF,GACX,MAAO,CAAC,EAAa3yG,KAAKs8G,YAAYziD,IAC1C,KAAK,GACDklD,EAAGpxC,OACHoxC,EAAGp7G,MAAQ,GACf,KAAK,GACDgvG,IACA,MAAO,CAAC,EAAa,IACzB,KAAK,GACD6L,EAAK,EAAGC,EAAK9G,EAAMhB,yBACnBoI,EAAGp7G,MAAQ,GACf,KAAK,GACD,KAAM66G,EAAKC,EAAG58G,QAAS,MAAO,CAAC,EAAa,IAC5Cg4D,EAAQ4kD,EAAGD,GACX,MAAO,CAAC,EAAax+G,KAAKs8G,YAAYziD,IAC1C,KAAK,GACDklD,EAAGpxC,OACHoxC,EAAGp7G,MAAQ,GACf,KAAK,GACD66G,IACA,MAAO,CAAC,EAAa,IACzB,KAAK,GACDE,EAAK,EAAGC,EAAKhH,EAAMtB,YACnB0I,EAAGp7G,MAAQ,GACf,KAAK,GACD,KAAM+6G,EAAKC,EAAG98G,QAAS,MAAO,CAAC,EAAa,IAC5Cg4D,EAAQ8kD,EAAGD,GACX,MAAO,CAAC,EAAa1+G,KAAKw8G,WAAW3iD,IACzC,KAAK,GACDklD,EAAGpxC,OACHoxC,EAAGp7G,MAAQ,GACf,KAAK,GACD+6G,IACA,MAAO,CAAC,EAAa,IACzB,KAAK,GACDE,EAAK,EAAGC,EAAKlH,EAAMnB,uCACnBuI,EAAGp7G,MAAQ,GACf,KAAK,GACD,KAAMi7G,EAAKC,EAAGh9G,QAAS,MAAO,CAAC,EAAa,IAC5Cg4D,EAAQglD,EAAGD,GACX,MAAO,CAAC,EAAa5+G,KAAKs8G,YAAYziD,IAC1C,KAAK,GACDklD,EAAGpxC,OACHoxC,EAAGp7G,MAAQ,GACf,KAAK,GACDi7G,IACA,MAAO,CAAC,EAAa,IACzB,KAAK,GACDE,EAAK,EAAGh4E,EAAK6wE,EAAMlB,eACnBsI,EAAGp7G,MAAQ,GACf,KAAK,GACD,KAAMm7G,EAAKh4E,EAAGjlC,QAAS,MAAO,CAAC,EAAa,IAC5Cg4D,EAAQ/yB,EAAGg4E,GACX,MAAO,CAAC,EAAa9+G,KAAKs8G,YAAYziD,IAC1C,KAAK,GACDklD,EAAGpxC,OACHoxC,EAAGp7G,MAAQ,GACf,KAAK,GACDm7G,IACA,MAAO,CAAC,EAAa,IACzB,KAAK,GAAI,MAAO,CAAC,GAEzC,GACA,GACA,EACQnD,EAAet1G,UAAU24G,KAAO,SAAU7yC,GACtCnsE,KAAK0+F,IAAI0f,YACTp+G,KAAK0+F,IAAIugB,OAAO,EAAG,GACnBj/G,KAAK0+F,IAAIwgB,OAAOl/G,KAAKy+F,OAAO7lF,MAAO,GACnC5Y,KAAK0+F,IAAIwgB,OAAOl/G,KAAKy+F,OAAO7lF,MAAO5Y,KAAKy+F,OAAO5lF,QAC/C7Y,KAAK0+F,IAAIwgB,OAAO,EAAGl/G,KAAKy+F,OAAO5lF,QAC/B7Y,KAAK0+F,IAAIwgB,OAAO,EAAG,GACnBl/G,KAAKm/G,WAAWhzC,EAAM7lE,MAAM,GAAGwB,WAC/B9H,KAAK0+F,IAAI0gB,WACrB,EACQzD,EAAet1G,UAAUiW,KAAO,SAAU6vD,GACtCnsE,KAAK0+F,IAAI0f,YACTp+G,KAAKm/G,WAAWhzC,GAChBnsE,KAAK0+F,IAAI0gB,WACrB,EACQzD,EAAet1G,UAAU84G,WAAa,SAAUhzC,GAC5C,IAAIu2B,EAAQ1iG,KACZmsE,EAAM5iE,SAAQ,SAAU4sG,EAAOv0G,GAC3B,IAAIiM,EAAQqkG,GAAciE,GAASA,EAAMtoG,MAAQsoG,EACjD,GAAIv0G,IAAU,EAAG,CACb8gG,EAAMhE,IAAIugB,OAAOpxG,EAAMQ,EAAGR,EAAMS,EACpD,KACqB,CACDo0F,EAAMhE,IAAIwgB,OAAOrxG,EAAMQ,EAAGR,EAAMS,EACpD,CACgB,GAAI4jG,GAAciE,GAAQ,CACtBzT,EAAMhE,IAAI2gB,cAAclJ,EAAM3E,aAAanjG,EAAG8nG,EAAM3E,aAAaljG,EAAG6nG,EAAM1E,WAAWpjG,EAAG8nG,EAAM1E,WAAWnjG,EAAG6nG,EAAM3iF,IAAInlB,EAAG8nG,EAAM3iF,IAAIllB,EACvJ,CACA,GACA,EACQqtG,EAAet1G,UAAUi5G,aAAe,SAAUhjG,EAAMijG,EAAS3qB,EAASC,GACtE70F,KAAKsc,KAAKA,GACVtc,KAAK0+F,IAAIO,UAAYsgB,EACrBv/G,KAAK0+F,IAAIz7F,UAAU2xF,EAASC,GAC5B70F,KAAK0+F,IAAIyf,OACTn+G,KAAK0+F,IAAIz7F,WAAW2xF,GAAUC,EAC1C,EACQ8mB,EAAet1G,UAAUm5G,YAAc,SAAU3uB,EAAOj4E,EAAOC,GAC3D,IAAIq2B,EACJ,GAAI2hD,EAAMj4E,QAAUA,GAASi4E,EAAMh4E,SAAWA,EAAQ,CAClD,OAAOg4E,CACvB,CACY,IAAIzgF,GAAiB8+B,EAAKlvC,KAAKy+F,OAAOruF,iBAAmB,MAAQ8+B,SAAY,EAAIA,EAAK3vC,SACtF,IAAIk/F,EAASruF,EAAcjQ,cAAc,UACzCs+F,EAAO7lF,MAAQ2B,KAAK8C,IAAI,EAAGzE,GAC3B6lF,EAAO5lF,OAAS0B,KAAK8C,IAAI,EAAGxE,GAC5B,IAAI6lF,EAAMD,EAAOE,WAAW,MAC5BD,EAAIG,UAAUhO,EAAO,EAAG,EAAGA,EAAMj4E,MAAOi4E,EAAMh4E,OAAQ,EAAG,EAAGD,EAAOC,GACnE,OAAO4lF,CACnB,EACQkd,EAAet1G,UAAUo5G,sBAAwB,SAAUv/G,GACvD,OAAOgtE,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAI4B,EAAOqgG,EAASyd,EAAQxwC,EAAIhgC,EAAImiD,EACpC,OAAO3jB,EAAY1tE,MAAM,SAAUg/D,GAC/B,OAAQA,EAAGr7D,OACP,KAAK,EACD/B,EAAQ1B,EAAU+7C,OAAOo1C,gBAAgBxvF,OAAS,EAClDogG,EAAU,SAAU5Q,GAChB,IAAIR,EAAOE,EAAKyhB,EAAIl2F,EAAMjO,EAAGC,EAAGsK,EAAOC,EAAQ0mG,EAAS5M,EAAIr2F,EAAMjO,EAAGC,EAAGsK,EAAOC,EAAQ0V,EAAI4+D,EAAYp7D,EAAI4tF,EAAI3tF,EAAI4tF,EAAInhB,EAAQC,EAAKmhB,EAAYN,EAASf,EAAIliG,EAAMlO,EAAM0xG,EAAOlnG,EAAOC,EAAQlM,EAAU0B,EAAGC,EAAGmwG,EAAIrvB,EAAIC,EAAI0wB,EAAkBC,EAAMC,EAAM9tG,EAAG+tG,EAC5P,OAAOxyC,EAAY1tE,MAAM,SAAU0+G,GAC/B,OAAQA,EAAG/6G,OACP,KAAK,EACD,KAAM0tF,EAAgB7rF,OAAS,GAAc,MAAO,CAAC,EAAa,GAClEqrF,OAAa,EACbE,EAAMM,EAAgBN,IACtB2tB,EAAG/6G,MAAQ,EACf,KAAK,EACD+6G,EAAG9wC,KAAK9rE,KAAK,CAAC,EAAG,EAAC,CAAI,IACtB,MAAO,CAAC,EAAa49G,EAAOtmF,QAAQ43D,MAAMlzC,MAAMizC,IACpD,KAAK,EACDF,EAAQ6tB,EAAG/wC,OACX,MAAO,CAAC,EAAa,GACzB,KAAK,EACD+wC,EAAG/wC,OACH+xC,EAAOtmF,QAAQywE,OAAOpgG,MAAM,kCAAoCsnF,GAChE,MAAO,CAAC,EAAa,GACzB,KAAK,EACD,GAAIF,EAAO,CACP2hB,EAAK0G,GAA6Bh5G,EAAW0B,EAAO,CAChDivF,EAAMj4E,MACNi4E,EAAMh4E,OACNg4E,EAAMj4E,MAAQi4E,EAAMh4E,SACpByD,EAAOk2F,EAAG,GAAInkG,EAAImkG,EAAG,GAAIlkG,EAAIkkG,EAAG,GAAI55F,EAAQ45F,EAAG,GAAI35F,EAAS25F,EAAG,GACnE+M,EAAUG,EAAOhhB,IAAIyhB,cAAcT,EAAOF,YAAY3uB,EAAOj4E,EAAOC,GAAS,UAC7E6mG,EAAOJ,aAAahjG,EAAMijG,EAASlxG,EAAGC,EACtF,CAC4C,MAAO,CAAC,EAAa,GACzB,KAAK,EACD,GAAIoiF,GAAiBW,GAAkB,CACnCshB,EAAKuG,GAA6Bh5G,EAAW0B,EAAO,CAAC,KAAM,KAAM,OAAQ0a,EAAOq2F,EAAG,GAAItkG,EAAIskG,EAAG,GAAIrkG,EAAIqkG,EAAG,GAAI/5F,EAAQ+5F,EAAG,GAAI95F,EAAS85F,EAAG,GACxIpkF,EAAK2/D,GAA2BmD,EAAgB3sE,MAAO9L,EAAOC,GAASs0E,EAAa5+D,EAAG,GAAIwD,EAAKxD,EAAG,GAAIoxF,EAAKpxF,EAAG,GAAIyD,EAAKzD,EAAG,GAAIqxF,EAAKrxF,EAAG,GACvIkwE,EAASl/F,SAASY,cAAc,UAChCs+F,EAAO7lF,MAAQA,EACf6lF,EAAO5lF,OAASA,EAChB6lF,EAAMD,EAAOE,WAAW,MACxBkhB,EAAanhB,EAAI0hB,qBAAqBruF,EAAIC,EAAI2tF,EAAIC,GAClD3yB,GAAkBoE,EAAgBnE,MAAOC,GAAY5jF,SAAQ,SAAUmmF,GACnE,OAAOmwB,EAAWQ,aAAa3wB,EAAU5hF,KAAMo1E,GAASwM,EAAUtyC,OACtH,IACgDshD,EAAIO,UAAY4gB,EAChBnhB,EAAIQ,SAAS,EAAG,EAAGtmF,EAAOC,GAC1B,GAAID,EAAQ,GAAKC,EAAS,EAAG,CACzB0mG,EAAUG,EAAOhhB,IAAIyhB,cAAc1hB,EAAQ,UAC3CihB,EAAOJ,aAAahjG,EAAMijG,EAASlxG,EAAGC,EAC1F,CACA,MACiD,GAAIsiF,GAAiBS,GAAkB,CACxCmtB,EAAKtF,GAA6Bh5G,EAAW0B,EAAO,CAChD,KACA,KACA,OACA0a,EAAOkiG,EAAG,GAAIpwG,EAAOowG,EAAG,GAAIsB,EAAQtB,EAAG,GAAI5lG,EAAQ4lG,EAAG,GAAI3lG,EAAS2lG,EAAG,GAC1E7xG,EAAW0kF,EAAgB1kF,SAAS9K,SAAW,EAAI,CAACggF,IAAiBwP,EAAgB1kF,SACrF0B,EAAI4zE,GAAiBt1E,EAAS,GAAIiM,GAClCtK,EAAI2zE,GAAiBt1E,EAASA,EAAS9K,OAAS,GAAIgX,GACpD4lG,EAAKvvB,GAAgBmC,EAAiBhjF,EAAGC,EAAGsK,EAAOC,GAASu2E,EAAKqvB,EAAG,GAAIpvB,EAAKovB,EAAG,GAChF,GAAIrvB,EAAK,GAAKC,EAAK,EAAG,CAClB0wB,EAAmBL,EAAOhhB,IAAI4hB,qBAAqBlyG,EAAOC,EAAGyxG,EAAQxxG,EAAG,EAAGF,EAAOC,EAAGyxG,EAAQxxG,EAAG8gF,GAChGnC,GAAkBoE,EAAgBnE,MAAOkC,EAAK,GAAG7lF,SAAQ,SAAUmmF,GAC/D,OAAOqwB,EAAiBM,aAAa3wB,EAAU5hF,KAAMo1E,GAASwM,EAAUtyC,OAChI,IACoDsiE,EAAOpjG,KAAKA,GACZojG,EAAOhhB,IAAIO,UAAY8gB,EACvB,GAAI3wB,IAAOC,EAAI,CACX2wB,EAAO9/G,EAAU25F,OAAOzrF,KAAO,GAAMlO,EAAU25F,OAAOjhF,MACtDqnG,EAAO//G,EAAU25F,OAAO5rF,IAAM,GAAM/N,EAAU25F,OAAOhhF,OACrD1G,EAAIk9E,EAAKD,EACT8wB,EAAO,EAAI/tG,EACXutG,EAAOhhB,IAAIwd,OACXwD,EAAOhhB,IAAIz7F,UAAU+8G,EAAMC,GAC3BP,EAAOhhB,IAAIj4D,UAAU,EAAG,EAAG,EAAGt0B,EAAG,EAAG,GACpCutG,EAAOhhB,IAAIz7F,WAAW+8G,GAAOC,GAC7BP,EAAOhhB,IAAIQ,SAAS9wF,EAAM8xG,GAAQJ,EAAQG,GAAQA,EAAMrnG,EAAOC,EAASqnG,GACxER,EAAOhhB,IAAI2d,SACnE,KACyD,CACDqD,EAAOhhB,IAAIyf,MACnE,CACA,CACA,CAC4CO,EAAG/6G,MAAQ,EACf,KAAK,EACD/B,IACA,MAAO,CAAC,GAEpD,GACA,EAC4B89G,EAAS1/G,KACTkvE,EAAK,EAAGhgC,EAAKhvC,EAAU+7C,OAAOo1C,gBAAgB/qF,MAAM,GAAGwB,UACvDk3D,EAAGr7D,MAAQ,EACf,KAAK,EACD,KAAMurE,EAAKhgC,EAAGrtC,QAAS,MAAO,CAAC,EAAa,GAC5CwvF,EAAkBniD,EAAGggC,GACrB,MAAO,CAAC,EAAc+yB,EAAQ5Q,IAClC,KAAK,EACDryB,EAAG2O,OACH3O,EAAGr7D,MAAQ,EACf,KAAK,EACDurE,IACA,MAAO,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExC,GACA,GACA,EACQysC,EAAet1G,UAAUk6G,kBAAoB,SAAUnjE,EAAO00C,EAAM0uB,GAChE,OAAOtzC,EAAUltE,UAAW,OAAQ,GAAG,WACnC,OAAO0tE,EAAY1tE,MAAM,SAAUkvC,GAC/BlvC,KAAKsc,KAAK87F,GAAmBoI,EAAa1uB,IAC1C9xF,KAAK0+F,IAAIO,UAAY/b,GAAS9lC,GAC9Bp9C,KAAK0+F,IAAIyf,OACT,MAAO,CAAC,EAC5B,GACA,GACA,EACQxC,EAAet1G,UAAUo6G,mBAAqB,SAAUrjE,EAAOxkC,EAAOk5E,EAAM0uB,GACxE,OAAOtzC,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAI0gH,EAAYC,EAChB,OAAOjzC,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACD,KAAMiV,EAAQ,GAAI,MAAO,CAAC,EAAa,GACvC,MAAO,CAAC,EAAa5Y,KAAKugH,kBAAkBnjE,EAAO00C,EAAM0uB,IAC7D,KAAK,EACDtxE,EAAGy+B,OACH,MAAO,CAAC,GACZ,KAAK,EACD+yC,EAAanI,GAA8BiI,EAAa1uB,GACxD9xF,KAAKsc,KAAKokG,GACV1gH,KAAK0+F,IAAIO,UAAY/b,GAAS9lC,GAC9Bp9C,KAAK0+F,IAAIyf,OACTwC,EAAanI,GAA8BgI,EAAa1uB,GACxD9xF,KAAKsc,KAAKqkG,GACV3gH,KAAK0+F,IAAIyf,OACT,MAAO,CAAC,GAEpC,GACA,GACA,EACQxC,EAAet1G,UAAUq2G,+BAAiC,SAAUD,GAChE,OAAOvvC,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIi8C,EAAQ2kE,EAAeC,EAASvH,EAAwBxnB,EAAM5iB,EAAI4xC,EAAWnT,EACjF,IAAIjL,EAAQ1iG,KACZ,OAAO0tE,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACD3D,KAAK+7G,aAAaU,EAAMzF,WAAW,IACnC/6D,EAASwgE,EAAMv8G,UAAU+7C,OACzB2kE,GAAiB39B,GAAchnC,EAAOl1C,kBAAoBk1C,EAAOo1C,gBAAgBxvF,OACjFg/G,EAAU,CACN,CAAE/5G,MAAOm1C,EAAOw2C,eAAgBr1C,MAAOnB,EAAO81C,eAAgBn5E,MAAOqjC,EAAO62C,gBAC5E,CAAEhsF,MAAOm1C,EAAOy2C,iBAAkBt1C,MAAOnB,EAAO+1C,iBAAkBp5E,MAAOqjC,EAAO82C,kBAChF,CAAEjsF,MAAOm1C,EAAO02C,kBAAmBv1C,MAAOnB,EAAOg2C,kBAAmBr5E,MAAOqjC,EAAO+2C,mBAClF,CAAElsF,MAAOm1C,EAAO22C,gBAAiBx1C,MAAOnB,EAAOi2C,gBAAiBt5E,MAAOqjC,EAAOg3C,kBAElFqmB,EAAyByH,GAAsC1H,GAA2Bp9D,EAAO6wC,eAAgB,GAAI2vB,EAAMnH,QAC3H,KAAMsL,GAAiB3kE,EAAO07C,UAAU91F,QAAS,MAAO,CAAC,EAAa,GACtE7B,KAAK0+F,IAAIwd,OACTl8G,KAAKsc,KAAKg9F,GACVt5G,KAAK0+F,IAAI0d,OACT,IAAKn5B,GAAchnC,EAAOl1C,iBAAkB,CACxC/G,KAAK0+F,IAAIO,UAAY/b,GAASjnC,EAAOl1C,iBACrC/G,KAAK0+F,IAAIyf,MACzC,CAC4B,MAAO,CAAC,EAAan+G,KAAKy/G,sBAAsBhD,EAAMv8G,YAC1D,KAAK,EACDgvC,EAAGy+B,OACH3tE,KAAK0+F,IAAI2d,UACTpgE,EAAO07C,UACFrxF,MAAM,GACNwB,UACAyB,SAAQ,SAAUorF,GACnB+N,EAAMhE,IAAIwd,OACV,IAAI8E,EAAgB3L,GAAuBoH,EAAMnH,QACjD,IAAI2L,EAAatsB,EAAOkD,MAAQ,EAAI6jB,GACpC,IAAIwF,EAAqBlL,GAAcgL,GAAgBC,GAActsB,EAAOkD,MAAQ,GAAK,GAAKlD,EAAOiD,OAAOpmF,QAASmjF,EAAOkD,MAAQ,GAAK,GAAKlD,EAAOiD,OAAOpmF,OAAQmjF,EAAOiD,OAAOpmF,QAAUmjF,EAAOkD,OAAS,EAAI,GAAIlD,EAAOiD,OAAOpmF,QAAUmjF,EAAOkD,OAAS,EAAI,IAChQ,GAAIlD,EAAOkD,MAAO,CACd6K,EAAMpmF,KAAK0kG,GACXte,EAAMhE,IAAI0d,OACV1Z,EAAMsc,KAAKkC,EAC/C,KACqC,CACDxe,EAAMsc,KAAKgC,GACXte,EAAMhE,IAAI0d,OACV1Z,EAAMpmF,KAAK4kG,EAC/C,CACgCxe,EAAMhE,IAAI8e,cAAgB7oB,EAAOC,QAAQpjF,OAASyvG,EAClDve,EAAMhE,IAAI+e,cAAgB9oB,EAAOE,QAAQrjF,OACzCkxF,EAAMhE,IAAI6e,YAAcr6B,GAASyR,EAAOv3C,OACxCslD,EAAMhE,IAAIgf,WAAa/oB,EAAOG,KAAKtjF,OACnCkxF,EAAMhE,IAAIO,UAAYtK,EAAOkD,MAAQ3U,GAASyR,EAAOv3C,OAAS,gBAC9DslD,EAAMhE,IAAIyf,OACVzb,EAAMhE,IAAI2d,SAC1C,IAC4BntE,EAAGvrC,MAAQ,EACf,KAAK,EACDmuF,EAAO,EACP5iB,EAAK,EAAG4xC,EAAYD,EACpB3xE,EAAGvrC,MAAQ,EACf,KAAK,EACD,KAAMurE,EAAK4xC,EAAUj/G,QAAS,MAAO,CAAC,EAAa,IACnD8rG,EAASmT,EAAU5xC,GACnB,KAAMy+B,EAAO7mG,QAAU,IAAiBm8E,GAAc0qB,EAAOvwD,QAAUuwD,EAAO/0F,MAAQ,GAAI,MAAO,CAAC,EAAa,IAC/G,KAAM+0F,EAAO7mG,QAAU,GAAiB,MAAO,CAAC,EAAa,GAC7D,MAAO,CAAC,EAAa9G,KAAKmhH,yBAAyBxT,EAAOvwD,MAAOuwD,EAAO/0F,MAAOk5E,EAAM2qB,EAAMnH,OAAQ,IACvG,KAAK,EACDpmE,EAAGy+B,OACH,MAAO,CAAC,EAAa,IACzB,KAAK,EACD,KAAMggC,EAAO7mG,QAAU,GAAiB,MAAO,CAAC,EAAa,GAC7D,MAAO,CAAC,EAAa9G,KAAKmhH,yBAAyBxT,EAAOvwD,MAAOuwD,EAAO/0F,MAAOk5E,EAAM2qB,EAAMnH,OAAQ,IACvG,KAAK,EACDpmE,EAAGy+B,OACH,MAAO,CAAC,EAAa,IACzB,KAAK,EACD,KAAMggC,EAAO7mG,QAAU,GAAiB,MAAO,CAAC,EAAa,GAC7D,MAAO,CAAC,EAAa9G,KAAKygH,mBAAmB9S,EAAOvwD,MAAOuwD,EAAO/0F,MAAOk5E,EAAM2qB,EAAMnH,SACzF,KAAK,EACDpmE,EAAGy+B,OACH,MAAO,CAAC,EAAa,IACzB,KAAK,EAAG,MAAO,CAAC,EAAa3tE,KAAKugH,kBAAkB5S,EAAOvwD,MAAO00C,EAAM2qB,EAAMnH,SAC9E,KAAK,GACDpmE,EAAGy+B,OACHz+B,EAAGvrC,MAAQ,GACf,KAAK,GACDmuF,IACA5iD,EAAGvrC,MAAQ,GACf,KAAK,GACDurE,IACA,MAAO,CAAC,EAAa,GACzB,KAAK,GAAI,MAAO,CAAC,GAEzC,GACA,GACA,EACQysC,EAAet1G,UAAU86G,yBAA2B,SAAU/jE,EAAOxkC,EAAOk5E,EAAM0uB,EAAa15G,GAC3F,OAAOomE,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIohH,EAAaC,EAAUC,EAAQC,EAAQC,EAAMC,EAAM5/G,EAAQ6/G,EAAYC,EAAaC,EAAa18C,EAAY28C,EAAgBC,EAAUC,EAAUC,EAAOC,EAAOD,EAAOC,EAC1K,OAAOv0C,EAAY1tE,MAAM,SAAUkvC,GAC/BlvC,KAAK0+F,IAAIwd,OACTkF,EAAc3I,GAAyB+H,EAAa1uB,GACpDuvB,EAAWjJ,GAAmBoI,EAAa1uB,GAC3C,GAAIhrF,IAAU,EAAgB,CAC1B9G,KAAKsc,KAAK+kG,GACVrhH,KAAK0+F,IAAI0d,MACjC,CACoB,GAAIlK,GAAcmP,EAAS,IAAK,CAC5BC,EAASD,EAAS,GAAGxzG,MAAMQ,EAC3BkzG,EAASF,EAAS,GAAGxzG,MAAMS,CACnD,KACyB,CACDgzG,EAASD,EAAS,GAAGhzG,EACrBkzG,EAASF,EAAS,GAAG/yG,CAC7C,CACoB,GAAI4jG,GAAcmP,EAAS,IAAK,CAC5BG,EAAOH,EAAS,GAAG7tF,IAAInlB,EACvBozG,EAAOJ,EAAS,GAAG7tF,IAAIllB,CAC/C,KACyB,CACDkzG,EAAOH,EAAS,GAAGhzG,EACnBozG,EAAOJ,EAAS,GAAG/yG,CAC3C,CACoB,GAAIwjF,IAAS,GAAKA,IAAS,EAAG,CAC1BjwF,EAAS0Y,KAAKgL,IAAI+7F,EAASE,EACnD,KACyB,CACD3/G,EAAS0Y,KAAKgL,IAAIg8F,EAASE,EACnD,CACoBzhH,KAAK0+F,IAAI0f,YACT,GAAIt3G,IAAU,EAAgB,CAC1B9G,KAAKm/G,WAAWiC,EACxC,KACyB,CACDphH,KAAKm/G,WAAWkC,EAAS/6G,MAAM,EAAG,GAC1D,CACoBo7G,EAAa9oG,EAAQ,EAAIA,EAAQ,EAAIA,EAAQ,EAC7C+oG,EAAc/oG,EAAQ,EAAIA,EAAQ,EAAIA,EACtC,GAAI9R,IAAU,EAAgB,CAC1B46G,EAAa9oG,EACb+oG,EAAc/oG,CACtC,CACoBgpG,EAAc,KACd,GAAI//G,GAAU6/G,EAAa,EAAG,CAC1BE,EAAc,KACtC,MACyB,GAAI//G,GAAU6/G,EAAa,EAAIC,EAAa,CAC7Cz8C,EAAarjE,GAAU,EAAI6/G,EAAaC,GACxCD,GAAcx8C,EACdy8C,GAAez8C,CACvC,KACyB,CACD28C,EAAiBtnG,KAAKolB,OAAO99B,EAAS8/G,IAAgBD,EAAaC,IACnEG,GAAYjgH,EAASggH,EAAiBH,IAAeG,EAAiB,GACtEE,GAAYlgH,GAAUggH,EAAiB,GAAKH,GAAcG,EAC1DF,EACII,GAAY,GAAKxnG,KAAKgL,IAAIo8F,EAAcG,GAAYvnG,KAAKgL,IAAIo8F,EAAcI,GACrED,EACAC,CAClC,CACoB,GAAIH,EAAa,CACb,GAAI96G,IAAU,EAAgB,CAC1B9G,KAAK0+F,IAAIwjB,YAAY,CAAC,EAAGR,EAAaC,GAClE,KAC6B,CACD3hH,KAAK0+F,IAAIwjB,YAAY,CAACR,EAAYC,GAC9D,CACA,CACoB,GAAI76G,IAAU,EAAgB,CAC1B9G,KAAK0+F,IAAIyjB,QAAU,QACnBniH,KAAK0+F,IAAIkf,UAAYhlG,CAC7C,KACyB,CACD5Y,KAAK0+F,IAAIkf,UAAYhlG,EAAQ,EAAI,GACzD,CACoB5Y,KAAK0+F,IAAIif,YAAcz6B,GAAS9lC,GAChCp9C,KAAK0+F,IAAI0jB,SACTpiH,KAAK0+F,IAAIwjB,YAAY,IAErB,GAAIp7G,IAAU,EAAgB,CAC1B,GAAIorG,GAAcmP,EAAS,IAAK,CAC5BW,EAAQX,EAAS,GACjBY,EAAQZ,EAAS,GACjBrhH,KAAK0+F,IAAI0f,YACTp+G,KAAKm/G,WAAW,CAAC,IAAIhO,GAAO6Q,EAAMxuF,IAAInlB,EAAG2zG,EAAMxuF,IAAIllB,GAAI,IAAI6iG,GAAO8Q,EAAMp0G,MAAMQ,EAAG4zG,EAAMp0G,MAAMS,KAC7FtO,KAAK0+F,IAAI0jB,QACrC,CACwB,GAAIlQ,GAAcmP,EAAS,IAAK,CAC5BW,EAAQX,EAAS,GACjBY,EAAQZ,EAAS,GACjBrhH,KAAK0+F,IAAI0f,YACTp+G,KAAKm/G,WAAW,CAAC,IAAIhO,GAAO6Q,EAAMxuF,IAAInlB,EAAG2zG,EAAMxuF,IAAIllB,GAAI,IAAI6iG,GAAO8Q,EAAMp0G,MAAMQ,EAAG4zG,EAAMp0G,MAAMS,KAC7FtO,KAAK0+F,IAAI0jB,QACrC,CACA,CACoBpiH,KAAK0+F,IAAI2d,UACT,MAAO,CAAC,EAC5B,GACA,GACA,EACQV,EAAet1G,UAAU63G,OAAS,SAAU/2G,GACxC,OAAO+lE,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAI23G,EACJ,OAAOjqC,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACD,GAAI3D,KAAK2T,QAAQ5M,gBAAiB,CAC9B/G,KAAK0+F,IAAIO,UAAY/b,GAASljF,KAAK2T,QAAQ5M,iBAC3C/G,KAAK0+F,IAAIQ,SAASl/F,KAAK2T,QAAQtF,EAAGrO,KAAK2T,QAAQrF,EAAGtO,KAAK2T,QAAQiF,MAAO5Y,KAAK2T,QAAQkF,OACnH,CAC4B8+F,EAAQQ,GAAsBhxG,GAC9B,MAAO,CAAC,EAAanH,KAAKs8G,YAAY3E,IAC1C,KAAK,EACDzoE,EAAGy+B,OACH3tE,KAAK+7G,aAAa,IAClB,MAAO,CAAC,EAAc/7G,KAAKy+F,QAEvD,GACA,GACA,EACQ,OAAOkd,CACf,CAx4BsB,CAw4BhBF,IACF,IAAI6C,GAAqB,SAAUp+G,GAC/B,GAAIA,aAAqB8jG,GAA0B,CAC/C,OAAO,IACnB,MACa,GAAI9jG,aAAqB4jG,GAAwB,CAClD,OAAO,IACnB,MACa,GAAI5jG,aAAqB2jG,IAAyB3jG,EAAUsF,OAASgzC,IAASt4C,EAAUsF,OAASwyC,GAAU,CAC5G,OAAO,IACnB,CACQ,OAAO,KACf,EACI,IAAI+oE,GAAwC,SAAU3E,EAAM9G,GACxD,OAAQ8G,GACJ,KAAK,EACD,OAAO/G,GAAuBC,GAClC,KAAK,EACD,OAAOC,GAAwBD,GACnC,KAAK,EACL,QACI,OAAOE,GAAwBF,GAE/C,EACI,IAAIiJ,GAAkB,SAAU9pB,GAC5B,OAAQA,GACJ,KAAK,EACD,MAAO,SACX,KAAK,EACD,MAAO,QACX,KAAK,EACL,QACI,MAAO,OAEvB,EAEI,IAAI4tB,GAAiB,CAAC,gBAAiB,aACvC,IAAInF,GAAoB,SAAUoF,GAC9B,MAAO,qBAAqB3wG,KAAKrH,OAAOgL,UAAUU,WAC5CssG,EAAazzF,QAAO,SAAU0nE,GAAc,OAAO8rB,GAAep6G,QAAQsuF,MAAiB,CAAE,IAC7F+rB,CACd,EAEI,IAAIC,GAAuC,SAAU9f,GACjD11B,EAAUw1C,EAAuB9f,GACjC,SAAS8f,EAAsBnpF,EAASzlB,GACpC,IAAI+uF,EAAQD,EAAOl8F,KAAKvG,KAAMo5B,EAASzlB,IAAY3T,KACnD0iG,EAAMjE,OAAS9qF,EAAQ8qF,OAAS9qF,EAAQ8qF,OAASl/F,SAASY,cAAc,UACxEuiG,EAAMhE,IAAMgE,EAAMjE,OAAOE,WAAW,MACpC+D,EAAM/uF,QAAUA,EAChB+uF,EAAMjE,OAAO7lF,MAAQ2B,KAAKolB,MAAMhsB,EAAQiF,MAAQjF,EAAQ6Q,OACxDk+E,EAAMjE,OAAO5lF,OAAS0B,KAAKolB,MAAMhsB,EAAQkF,OAASlF,EAAQ6Q,OAC1Dk+E,EAAMjE,OAAO33F,MAAM8R,MAAQjF,EAAQiF,MAAQ,KAC3C8pF,EAAMjE,OAAO33F,MAAM+R,OAASlF,EAAQkF,OAAS,KAC7C6pF,EAAMhE,IAAIl6E,MAAMk+E,EAAM/uF,QAAQ6Q,MAAOk+E,EAAM/uF,QAAQ6Q,OACnDk+E,EAAMhE,IAAIz7F,WAAW0Q,EAAQtF,GAAIsF,EAAQrF,GACzCo0F,EAAMtpE,QAAQywE,OAAOxwE,MAAM,oDAAsD1lB,EAAQiF,MAAQ,IAAMjF,EAAQkF,OAAS,OAASlF,EAAQtF,EAAI,IAAMsF,EAAQrF,EAAI,gBAAkBqF,EAAQ6Q,OACzL,OAAOk+E,CACnB,CACQ6f,EAAsBl8G,UAAU63G,OAAS,SAAU/2G,GAC/C,OAAO+lE,EAAUltE,UAAW,OAAQ,GAAG,WACnC,IAAIo/F,EAAKZ,EACT,OAAO9wB,EAAY1tE,MAAM,SAAUkvC,GAC/B,OAAQA,EAAGvrC,OACP,KAAK,EACDy7F,EAAMC,GAAuBr/F,KAAK2T,QAAQiF,MAAQ5Y,KAAK2T,QAAQ6Q,MAAOxkB,KAAK2T,QAAQkF,OAAS7Y,KAAK2T,QAAQ6Q,MAAOxkB,KAAK2T,QAAQ6Q,MAAOxkB,KAAK2T,QAAQ6Q,MAAOrd,GACxJ,MAAO,CAAC,EAAaq7G,GAAkBpjB,IAC3C,KAAK,EACDZ,EAAMtvD,EAAGy+B,OACT,GAAI3tE,KAAK2T,QAAQ5M,gBAAiB,CAC9B/G,KAAK0+F,IAAIO,UAAY/b,GAASljF,KAAK2T,QAAQ5M,iBAC3C/G,KAAK0+F,IAAIQ,SAAS,EAAG,EAAGl/F,KAAK2T,QAAQiF,MAAQ5Y,KAAK2T,QAAQ6Q,MAAOxkB,KAAK2T,QAAQkF,OAAS7Y,KAAK2T,QAAQ6Q,MACpI,CAC4BxkB,KAAK0+F,IAAIG,UAAUL,GAAMx+F,KAAK2T,QAAQtF,EAAIrO,KAAK2T,QAAQ6Q,OAAQxkB,KAAK2T,QAAQrF,EAAItO,KAAK2T,QAAQ6Q,OAC7F,MAAO,CAAC,EAAcxkB,KAAKy+F,QAEvD,GACA,GACA,EACQ,OAAO8jB,CACf,CArC6B,CAqCvB9G,IACF,IAAI+G,GAAoB,SAAUpjB,GAC9B,OAAO,IAAIx1F,SAAQ,SAAU2jE,EAASC,GAClC,IAAIgxB,EAAM,IAAIN,MACdM,EAAIqB,OAAS,WACTtyB,EAAQixB,EACxB,EACYA,EAAIsB,QAAUtyB,EACdgxB,EAAII,IAAM,oCAAsC59F,oBAAmB,IAAI++F,eAAgBC,kBAAkBZ,GACrH,GACA,EAEI,IAAIqjB,GAAwB,WACxB,SAASA,EAAOvzE,GACZ,IAAIntC,EAAKmtC,EAAGntC,GAAI6R,EAAUs7B,EAAGt7B,QAC7B5T,KAAK+B,GAAKA,EACV/B,KAAK4T,QAAUA,EACf5T,KAAK6N,MAAQ1D,KAAKS,KAC9B,CAEQ63G,EAAOp8G,UAAUgzB,MAAQ,WACrB,IAAI+rC,EAAO,GACX,IAAK,IAAI8J,EAAK,EAAGA,EAAK9uD,UAAUve,OAAQqtE,IAAM,CAC1C9J,EAAK8J,GAAM9uD,UAAU8uD,EACrC,CACY,GAAIlvE,KAAK4T,QAAS,CAEd,UAAWtJ,SAAW,aAAeA,OAAO9B,gBAAkBA,QAAQ6wB,QAAU,WAAY,CAExF7wB,QAAQ6wB,MAAM9f,MAAM/Q,QAASylE,EAAc,CAACjuE,KAAK+B,GAAI/B,KAAK0iH,UAAY,MAAOt9C,GACjG,KACqB,CACDplE,KAAKmrG,KAAK5xF,MAAMvZ,KAAMolE,EAC1C,CACA,CACA,EACQq9C,EAAOp8G,UAAUq8G,QAAU,WACvB,OAAOv4G,KAAKS,MAAQ5K,KAAK6N,KACrC,EAEQ40G,EAAOp8G,UAAU8kG,KAAO,WACpB,IAAI/lC,EAAO,GACX,IAAK,IAAI8J,EAAK,EAAGA,EAAK9uD,UAAUve,OAAQqtE,IAAM,CAC1C9J,EAAK8J,GAAM9uD,UAAU8uD,EACrC,CACY,GAAIlvE,KAAK4T,QAAS,CAEd,UAAWtJ,SAAW,aAAeA,OAAO9B,gBAAkBA,QAAQ2iG,OAAS,WAAY,CAEvF3iG,QAAQ2iG,KAAK5xF,MAAM/Q,QAASylE,EAAc,CAACjuE,KAAK+B,GAAI/B,KAAK0iH,UAAY,MAAOt9C,GAChG,CACA,CACA,EAEQq9C,EAAOp8G,UAAUgE,KAAO,WACpB,IAAI+6D,EAAO,GACX,IAAK,IAAI8J,EAAK,EAAGA,EAAK9uD,UAAUve,OAAQqtE,IAAM,CAC1C9J,EAAK8J,GAAM9uD,UAAU8uD,EACrC,CACY,GAAIlvE,KAAK4T,QAAS,CAEd,UAAWtJ,SAAW,aAAeA,OAAO9B,gBAAkBA,QAAQ6B,OAAS,WAAY,CAEvF7B,QAAQ6B,KAAKkP,MAAM/Q,QAASylE,EAAc,CAACjuE,KAAK+B,GAAI/B,KAAK0iH,UAAY,MAAOt9C,GAChG,KACqB,CACDplE,KAAKmrG,KAAK5xF,MAAMvZ,KAAMolE,EAC1C,CACA,CACA,EAEQq9C,EAAOp8G,UAAUoD,MAAQ,WACrB,IAAI27D,EAAO,GACX,IAAK,IAAI8J,EAAK,EAAGA,EAAK9uD,UAAUve,OAAQqtE,IAAM,CAC1C9J,EAAK8J,GAAM9uD,UAAU8uD,EACrC,CACY,GAAIlvE,KAAK4T,QAAS,CAEd,UAAWtJ,SAAW,aAAeA,OAAO9B,gBAAkBA,QAAQiB,QAAU,WAAY,CAExFjB,QAAQiB,MAAM8P,MAAM/Q,QAASylE,EAAc,CAACjuE,KAAK+B,GAAI/B,KAAK0iH,UAAY,MAAOt9C,GACjG,KACqB,CACDplE,KAAKmrG,KAAK5xF,MAAMvZ,KAAMolE,EAC1C,CACA,CACA,EACQq9C,EAAOE,UAAY,GACnB,OAAOF,CACf,CA7Ec,GA+EV,IAAIG,GAAyB,WACzB,SAASA,EAAQjvG,EAAS26D,GACtB,IAAIp/B,EACJlvC,KAAKsuE,aAAeA,EACpBtuE,KAAK6iH,aAAe,IAAMD,EAAQE,gBAClC9iH,KAAK6pG,OAAS,IAAI4Y,GAAO,CAAE1gH,GAAI/B,KAAK6iH,aAAcjvG,QAASD,EAAQovG,UACnE/iH,KAAKgxF,OAAS9hD,EAAKv7B,EAAQq9E,SAAW,MAAQ9hD,SAAY,EAAIA,EAAK,IAAIugE,GAAMzvG,KAAM2T,EAC/F,CACQivG,EAAQE,cAAgB,EACxB,OAAOF,CACf,CAVe,GAYX,IAAII,GAAc,SAAU77G,EAASwM,GACjC,GAAIA,SAAiB,EAAG,CAAEA,EAAU,EAAG,CACvC,OAAOsvG,GAAc97G,EAASwM,EACtC,EACI,UAAWrJ,SAAW,YAAa,CAC/BukG,GAAaU,WAAWjlG,OAChC,CACI,IAAI24G,GAAgB,SAAU97G,EAAS+7G,GAAQ,OAAOh2C,OAAe,OAAQ,OAAQ,GAAG,WACpF,IAAI98D,EAAeC,EAAa8yG,EAAiBC,EAAgBC,EAAe/0C,EAAcl1C,EAASkqF,EAAwBC,EAAcC,EAAgBC,EAAevjH,EAAWgvC,EAAIt2B,EAAOC,EAAQzK,EAAMH,EAAKlH,EAAiB28G,EAAejlB,EAAQklB,EAAUjf,EAAMif,EAC7Q,IAAI3kD,EAAIwzC,EAAIG,EAAIpkF,EAAIiwF,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIh4E,EAAIi4E,EAAI6E,EAAI/iF,EAAIgjF,EAAIx+F,EACpE,OAAOqoD,EAAY1tE,MAAM,SAAU8jH,GAC/B,OAAQA,EAAGngH,OACP,KAAK,EACD,IAAKwD,UAAkBA,IAAY,SAAU,CACzC,MAAO,CAAC,EAAcyC,QAAQ4jE,OAAO,8CAC7D,CACoBp9D,EAAgBjJ,EAAQiJ,cACxB,IAAKA,EAAe,CAChB,MAAM,IAAI01D,MAAM,wCACxC,CACoBz1D,EAAcD,EAAcC,YAC5B,IAAKA,EAAa,CACd,MAAM,IAAIy1D,MAAM,uCACxC,CACoBq9C,EAAkB,CACd7X,YAAatsC,EAAKkkD,EAAK5X,cAAgB,MAAQtsC,SAAY,EAAIA,EAAK,MACpEoxC,cAAeoC,EAAK0Q,EAAK9S,gBAAkB,MAAQoC,SAAY,EAAIA,EAAK,KACxEtC,MAAOgT,EAAKhT,MACZH,SAAU4C,EAAKuQ,EAAKnT,WAAa,MAAQ4C,SAAY,EAAIA,EAAK,OAElEyQ,EAAiBn2C,EAAS,CAAE81C,SAAUx0F,EAAK20F,EAAKH,WAAa,MAAQx0F,SAAY,EAAIA,EAAK,KAAMyiE,MAAOkyB,EAAKlyB,OAASmyB,GACrHE,EAAgB,CACZU,aAAcvF,EAAK0E,EAAKa,eAAiB,MAAQvF,SAAY,EAAIA,EAAKnuG,EAAY7B,WAClFw1G,cAAevF,EAAKyE,EAAKc,gBAAkB,MAAQvF,SAAY,EAAIA,EAAKpuG,EAAY3B,YACpF6J,SAAUmmG,EAAKwE,EAAK3qG,WAAa,MAAQmmG,SAAY,EAAIA,EAAKruG,EAAYlB,YAC1EsJ,SAAUkmG,EAAKuE,EAAKzqG,WAAa,MAAQkmG,SAAY,EAAIA,EAAKtuG,EAAYnB,aAE9Eo/D,EAAe,IAAIH,EAAOk1C,EAAc9qG,QAAS8qG,EAAc5qG,QAAS4qG,EAAcU,YAAaV,EAAcW,cACjH5qF,EAAU,IAAIwpF,GAAQQ,EAAgB90C,GACtCg1C,GAA0B1E,EAAKsE,EAAKI,0BAA4B,MAAQ1E,SAAY,EAAIA,EAAK,MAC7F2E,EAAe,CACXjY,YAAauT,EAAKqE,EAAK5X,cAAgB,MAAQuT,SAAY,EAAIA,EAAK,MACpEnV,QAASwZ,EAAKxZ,QACduC,eAAgBiX,EAAKjX,eACrBf,aAAcoY,EACdvX,WAAYuX,GAEhBlqF,EAAQywE,OAAOxwE,MAAM,qCAAuCi1C,EAAa11D,MAAQ,IAAM01D,EAAaz1D,OAAS,iBAAmBy1D,EAAalgE,KAAO,KAAOkgE,EAAargE,KACxKu1G,EAAiB,IAAIza,GAAe3vE,EAASjyB,EAASo8G,GACtDE,EAAgBD,EAAe1Z,uBAC/B,IAAK2Z,EAAe,CAChB,MAAO,CAAC,EAAc75G,QAAQ4jE,OAAO,2CAC7D,CACoB,MAAO,CAAC,EAAag2C,EAAera,SAAS/4F,EAAek+D,IAChE,KAAK,EACDpuE,EAAY4jH,EAAGn2C,OACfz+B,EAAK62D,GAAc0d,IAAkBvd,GAAcud,GAC7C70C,EAAkB60C,EAAcrzG,eAChCu+D,EAAYv1C,EAASqqF,GAAgB7qG,EAAQs2B,EAAGt2B,MAAOC,EAASq2B,EAAGr2B,OAAQzK,EAAO8gC,EAAG9gC,KAAMH,EAAMihC,EAAGjhC,IAC1GlH,EAAkBk9G,GAAqB7qF,EAASqqF,EAAeP,EAAKn8G,iBACpE28G,EAAgB,CACZjlB,OAAQykB,EAAKzkB,OACb13F,gBAAiBA,EACjByd,OAAQsiB,GAAMg4E,EAAKoE,EAAK1+F,SAAW,MAAQs6F,SAAY,EAAIA,EAAKzuG,EAAY6zG,oBAAsB,MAAQp9E,SAAY,EAAIA,EAAK,EAC/Hz4B,IAAK0wG,EAAKmE,EAAK70G,KAAO,MAAQ0wG,SAAY,EAAIA,EAAK,GAAK3wG,EACxDE,IAAKs1G,EAAKV,EAAK50G,KAAO,MAAQs1G,SAAY,EAAIA,EAAK,GAAK31G,EACxD2K,OAAQioB,EAAKqiF,EAAKtqG,SAAW,MAAQioB,SAAY,EAAIA,EAAKtmB,KAAK23D,KAAKt5D,GACpEC,QAASgrG,EAAKX,EAAKrqG,UAAY,MAAQgrG,SAAY,EAAIA,EAAKtpG,KAAK23D,KAAKr5D,IAE1E,IAAKyqG,EAAwB,MAAO,CAAC,EAAa,GAClDlqF,EAAQywE,OAAOxwE,MAAM,mDACrBsqF,EAAW,IAAIpB,GAAsBnpF,EAASsqF,GAC9C,MAAO,CAAC,EAAaC,EAASzF,OAAOuF,IACzC,KAAK,EACDhlB,EAASqlB,EAAGn2C,OACZ,MAAO,CAAC,EAAa,GACzB,KAAK,EACDv0C,EAAQywE,OAAOxwE,MAAM,uCAAyCjrB,EAAO,IAAMH,EAAM,cAAgB2K,EAAQ,IAAMC,EAAS,6BACxHugB,EAAQywE,OAAOxwE,MAAM,wBACrBqrE,EAAOL,GAAUjrE,EAASqqF,GAC1B,GAAI18G,IAAoB29F,EAAKzoD,OAAOl1C,gBAAiB,CACjD29F,EAAKzoD,OAAOl1C,gBAAkBg8E,GAAOC,WAC7D,CACoB5pD,EAAQywE,OAAOxwE,MAAM,oCAAsCqqF,EAAcr1G,EAAI,IAAMq1G,EAAcp1G,EAAI,cAAgBo1G,EAAc9qG,MAAQ,IAAM8qG,EAAc7qG,QAC/J8qG,EAAW,IAAIhI,GAAeviF,EAASsqF,GACvC,MAAO,CAAC,EAAaC,EAASzF,OAAOxZ,IACzC,KAAK,EACDjG,EAASqlB,EAAGn2C,OACZm2C,EAAGngH,MAAQ,EACf,KAAK,EACD,IAAK0hB,EAAK69F,EAAKiB,mBAAqB,MAAQ9+F,SAAY,EAAIA,EAAK,KAAM,CACnE,IAAK0jF,GAAexqE,QAAQr+B,GAAY,CACpCk5B,EAAQywE,OAAOpgG,MAAM,8DACjD,CACA,CACoB2vB,EAAQywE,OAAOxwE,MAAM,sBACrB,MAAO,CAAC,EAAcolE,GAE1C,GACA,GAAO,EACH,IAAIwlB,GAAuB,SAAU7qF,EAASjyB,EAASi9G,GACnD,IAAIh0G,EAAgBjJ,EAAQiJ,cAE5B,IAAIk0F,EAA0Bl0F,EAAc5Q,gBACtCikF,GAAWrqD,EAASphB,iBAAiB5H,EAAc5Q,iBAAiBuH,iBACpEg8E,GAAOC,YACb,IAAIuhB,EAAsBn0F,EAAc/P,KAClCojF,GAAWrqD,EAASphB,iBAAiB5H,EAAc/P,MAAM0G,iBACzDg8E,GAAOC,YACb,IAAIqhC,SAAgCD,IAA4B,SAC1D3gC,GAAWrqD,EAASgrF,GACpBA,IAA4B,KACxBrhC,GAAOC,YACP,WACV,OAAO77E,IAAYiJ,EAAc5Q,gBAC3ByjF,GAAcqhB,GACVrhB,GAAcshB,GACV8f,EACA9f,EACJD,EACJ+f,CACd,EAEI,OAAOrB,EAEV,G,4YCvoPD,MAAM1jH,GAAcC,SAASC,gB,MAEhB8kH,GAaT,WAAA5kH,CAAYqxF,G,aAZZ/wF,KAAA8hE,KAA2B,KAE3B9hE,KAAAo5B,QAAU,GACVp5B,KAAA4C,KAA4B,KAC5B5C,KAAAukH,OAA+B,KAC/BvkH,KAAAwkH,YAAoC,KACpCxkH,KAAA+wF,IAAc,KAcd/wF,KAAAykH,eAAkBn4E,IACd,MAAMizE,EACF,4PACJ,MAAO,IAAIjzE,EAAKo4E,SAASnF,GAAS,EAVlCv/G,KAAKE,UAAYX,SAASY,cAAc,OACxCH,KAAKE,UAAUE,aAAa,aAAc,IAC1Cb,SAASc,KAAKC,YAAYN,KAAKE,WAE/BF,KAAK+wF,IAAMA,C,CASf,QAAA4zB,CAAS98G,EAAiB66F,EAAmBkiB,GACzC,IAAKliB,EAAO,CACRA,EAAQ1iG,I,CAEZV,GAAIkC,QAAQ63B,MAAM5xB,WAAWi7F,EAAO76F,EAASzI,EAAiByH,OAC9D,GAAI+9G,EAAiB,CACjB,M,CAEJliB,EAAMmiB,iBAAiBt1F,MAAQ,QAC/BmzE,EAAM5gC,KAAKp8D,S,CAoCf,cAAAm/G,GACI,IAAK7kH,KAAK8hE,KAAKl/D,KAAM,CACjB5C,KAAK8hE,KAAKl/D,KAAO,E,CAErB,IAAK5C,KAAK8hE,KAAKl/D,KAAK+Q,QAAS,CACzB3T,KAAK8hE,KAAKl/D,KAAK+Q,QAAU,CACrBmxG,SAAU9kH,KAAK+kH,KACfC,OAAQhlH,KAAKilH,KACbC,MAAOllH,KAAKmlH,I,CAGpB,OAAOnlH,KAAK8hE,KAAKl/D,KAAK+Q,O,CA4E1B,UAAM01C,CAAK+7D,GACPplH,KAAKo5B,QAAUgsF,EAAWhsF,QAC1Bp5B,KAAK4C,KAAOwiH,EAAWpwD,QACvB,GAAIowD,EAAWC,WAAY,CACvBrlH,KAAKqlH,WAAaD,EAAWC,U,CAGjC,GAAIrlH,KAAK8hE,KAAM,OACL9hE,KAAKopD,M,CAEf1oD,GAAAV,KAAIslH,GAAA,IAAAC,IAAQh/G,KAAZvG,K,CAGJ,SAAMmlH,CACFK,EACA3iH,GAEA,MAAM4iH,EACFn7G,OAAOo7G,mBAAqBp7G,OAAOq7G,wBACvC,IAAKF,EAAmB,CACpBG,MAAM,wDACN,M,CAEJ,MAAMC,EAAc,IAAIJ,EACxBI,EAAYC,KAAOxmH,GAAIkC,QAAQC,SAASwtC,WACxC42E,EAAYE,eAAiB,KAC7BF,EAAYG,gBAAkB,EAE9BH,EAAYplH,iBACR,UACC6E,IACG,MAAM2gH,EAAa7/G,MAAMqT,KAAKnU,EAAMmxF,SAC/BpjF,KAAKmb,GAAWA,EAAO,KACvBnb,KAAKmb,GAAWA,EAAOy3F,aACvB9uD,KAAK,IACV73D,GAAIkC,QAAQ63B,MAAM5xB,WACd,YACA,iBAAmBw+G,GAEvBT,EAAUU,SAASD,EAAY,MAC/B,MAAME,EAAU7gH,EAAMmxF,QAAQnxF,EAAMmxF,QAAQ50F,OAAS,GAAGskH,QACxD,GAAIA,EAAS,CACTN,EAAY/3G,M,KAKxB+3G,EAAYplH,iBAAiB,OAAO,KAChColH,EAAY/3G,OACZjL,EAAOujH,YAAc,KAAK,IAG9BP,EAAYplH,iBAAiB,SAAS,KAClC+kH,EAAUa,WACVxjH,EAAOujH,YAAc,IAAI,IAG7B,IACIP,EAAYh4G,O,CACd,MAAOrG,GACLgB,QAAQiB,MAAMjC,E,EAItB,UAAM4hD,GACF,GAAIppD,KAAK8hE,KAAM,CACX9hE,KAAK8hE,KAAKzgE,SACVrB,KAAK8hE,KAAO,KACZ9hE,KAAKukH,OAAOljH,SACZrB,KAAKukH,OAAS,WACR7jH,GAAAV,KAAIslH,GAAA,IAAAgB,IAAY//G,KAAhBvG,K,EAId,cAAMumH,GACF,MAAMC,EAASlnH,GAAIkC,QAAQglH,OAC3B,IAAKA,EAAOz1B,IAAK,CACb,M,CAEJ,IAAIwf,EAAW,KACf,IACIA,QAAiBjQ,MAAMkmB,EAAOz1B,IAAM,YAAa,CAC7C01B,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBrmH,KAAMY,KAAKC,UAAU,CAAE0B,KAAM,Y,CAEnC,MAAOqC,GACLuhH,EAAO7B,SAAS1/G,EAAE4C,QAAS2+G,GAC3B,M,CAGJ,GAAIjW,EAAU,CACV,GAAIA,EAASD,SAAW,IAAK,CACzB,MAAMqW,QAAqBpW,EAASqW,OACpC,GAAID,EAAarW,QAAU,KAAM,CAC7BkW,EAAO3B,iBAAiBt1F,MAAQ,aAChCi3F,EAAO1kD,KAAKp8D,UACZhF,GAAA8lH,EAAMlB,GAAA,IAAAuB,IAAStgH,KAAfigH,GACA,M,GAIZA,EAAO3B,iBAAiBt1F,MAAQ,QAChCi3F,EAAO1kD,KAAKp8D,S,CAGhB,UAAMu/G,CAAK6B,GACP,MAAMN,EAASlnH,GAAIkC,QAAQglH,OAC3B,IAAKA,EAAOz1B,IAAK,CACb,M,CAEJ,MAAMg2B,QAAYD,EAAMprD,WACxB,IAAI60C,EAAW,KACf,IACIA,QAAiBjQ,MAAMkmB,EAAOz1B,IAAM,YAAa,CAC7C01B,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBrmH,KAAMY,KAAKC,UAAU,CAAE0B,KAAMmkH,K,CAEnC,MAAO9hH,GACLuhH,EAAO7B,SAAS1/G,EAAE4C,QAAS2+G,GAC3B,M,CAGJ,GAAIjW,EAAU,CACV,GAAIA,EAASD,QAAU,IAAK,CACxB5vG,GAAA8lH,EAAMlB,GAAA,IAAA0B,IAAiBzgH,KAAvBigH,EAAwBM,GACxB,M,CAEJ,MAAMH,QAAqBpW,EAASqW,OACpC,GAAID,EAAarW,QAAU,KAAM,CAC7BkW,EAAO3B,iBAAiBt1F,MAAQ,aAChCi3F,EAAO1kD,KAAKp8D,UACZhF,GAAA8lH,EAAMlB,GAAA,IAAAuB,IAAStgH,KAAfigH,GACA,M,EAGRA,EAAO3B,iBAAiBt1F,MAAQ,QAChCi3F,EAAO1kD,KAAKp8D,S,CAGhB,UAAMq/G,CACFkC,EACAzB,GAEA,MAAMgB,EAASlnH,GAAIkC,QAAQglH,OAC3B,IAAKA,EAAO1kD,KAAM,CACd,M,CAGJ,MAAMolD,EAAcC,MAChBC,IAEA,IAAKZ,EAAOz1B,IAAK,CACb,M,CAEJ,IAAKy1B,EAAOhC,YAAa,CACrB,M,CAGJ,MAAM6C,EAAmD,GACzD,IAAI9W,EAAW,KACf,IACIA,QAAiBjQ,MAAMkmB,EAAOz1B,IAAM,YAAa,CAC7C01B,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBrmH,KAAMY,KAAKC,UAAU,CACjBk4B,QAASotF,EAAOhC,YAAYprF,QAC5BkuF,OAAQd,EAAOhC,YAAY8C,OAC3BC,SAAUf,EAAOhC,YAAY+C,SAC7BH,SAAUA,K,CAGpB,MAAOniH,GACLuhH,EAAO7B,SAAS1/G,EAAE4C,QAAS2+G,E,CAG/B,GAAIjW,EAAU,CACV,GAAIA,EAASD,QAAU,IAAK,CACxBkW,EAAO7B,eAAepU,EAASjkE,OAAQk6E,GACvC,M,CAEJ,MAAMG,QAAqBpW,EAASqW,OACpC,GAAID,GAAgBA,EAAaa,SAAU,CACvC,IAAK,IAAI32G,EAAI,EAAGA,EAAI81G,EAAaa,SAAS3lH,OAAQgP,IAAK,CACnD,MAAMuE,EACFuxG,EAAaa,SAAS32G,GAC1BuE,EAAEqyG,KAAOjB,EAAO/B,eAAervG,EAAEk3B,MACjC+6E,EAAiBvlH,KAAKsT,E,GAKlC,OAAOiyG,CAAgB,EAG3BJ,EAAqB,MACrBT,EAAO3B,iBAAiB2C,eAAiBN,QAC/B1B,EAAU9pD,YAEpB8qD,EAAO1kD,KAAKp8D,UACZuhH,EAAqB,M,+BAvURH,GACbA,EAAMY,OAAS,oBACfZ,EAAMpgH,UAAUC,IAAI,cACpBmgH,EAAMphH,SACV,EAAC6/G,GAAA,SAAAA,IAGGvlH,KAAK8hE,KAAOviE,SAASY,cAAc,YACnCH,KAAK8hE,KAAKp9D,aAAexG,EAAcypH,SACvC3nH,KAAK8hE,KAAKl9D,aAAe,EACzB5E,KAAK8hE,KAAKj9D,MAAQ,OAClB7E,KAAK8hE,KAAKh9D,MAAQ,OAElB9E,KAAKukH,OAAShlH,SAASY,cAAc,cACrCH,KAAKukH,OAAOqD,OAAS,CACjB5kH,MAAO,iBACP64C,MAAO,CAAE27C,MAAO,OAEpBx3F,KAAKukH,OAAOxiH,GAAK,SACjB/B,KAAKukH,OAAOv4C,MAAQ,KACpBhsE,KAAKukH,OAAO1/G,MAAQ,OACpB7E,KAAKukH,OAAOz/G,MAAQ,OACpB9E,KAAKukH,OAAO9jH,iBAAiB,oBAAoB,IAAMT,KAAKopD,SAC5DppD,KAAKukH,OAAOjkH,YAAYN,KAAK8hE,MAC7B9hE,KAAKE,UAAUI,YAAYN,KAAKukH,QAEhC,IAAKvkH,KAAK+wF,IAAK,CACX/wF,KAAK6kH,iBAAiBt1F,MAAQ,O,KAC3B,CACHvvB,KAAKumH,U,CAEb,EAACM,GAgBDM,eAAAN,IACI,IAAK7mH,KAAK+wF,IAAK,CACX,M,CAEJ,IAAIwf,EAAW,KACf,IACIA,QAAiBjQ,MAAMtgG,KAAK+wF,IAAM,YAAa,CAC3C01B,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBrmH,KAAMY,KAAKC,UAAU,CACjBk4B,QAASp5B,KAAKo5B,QACdx2B,KAAM5C,KAAK4C,Q,CAGrB,MAAOqC,GACLjF,KAAK2kH,SAAS1/G,EAAE4C,SAChB,M,CAGJ,GAAI0oG,EAAU,CACV,GAAIA,EAASD,QAAU,IAAK,CACxBtwG,KAAK2kH,eAAepU,EAASjkE,QAC7B,M,CAEJ,MAAMq6E,QAAqBpW,EAASqW,OACpC5mH,KAAKwkH,YAAc,CACfprF,QAASp5B,KAAKo5B,QACdkuF,OAAQX,EAAaW,OACrBC,SAAUZ,EAAaY,UAE3BvnH,KAAK6kH,iBAAiBt1F,MAAQ,QAC9BvvB,KAAK8hE,KAAKp8D,UACV,M,CAEJ1F,KAAK6kH,iBAAiBt1F,MAAQ,QAC9BvvB,KAAK8hE,KAAKp8D,SACd,EAAC4gH,GAEDa,eAAAb,IACI,IAAKtmH,KAAK+wF,IAAK,CACX,M,CAEJ,IAAK/wF,KAAKwkH,YAAa,CACnB,M,CAEJ,IAAIjU,EAAW,KACf,IACIA,QAAiBjQ,MAAMtgG,KAAK+wF,IAAM,gBAAiB,CAC/C01B,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBrmH,KAAMY,KAAKC,UAAU,CACjBk4B,QAASp5B,KAAKwkH,YAAYprF,QAC1BkuF,OAAQtnH,KAAKwkH,YAAY8C,OACzBC,SAAUvnH,KAAKwkH,YAAY+C,Y,CAGrC,MAAOtiH,GACLjF,KAAK2kH,SAAS1/G,EAAE4C,QAASiE,UAAW,K,CAGxC9L,KAAKwkH,YAAc,KAEnB,GAAIjU,EAAU,CACV,GAAIA,EAASD,QAAU,IAAK,CACxBtwG,KAAK2kH,eAAepU,EAASjkE,OAAQxgC,UAAW,K,EAG5D,E,2xBCtKS+7G,GAKT,WAAAnoH,G,aAJAooH,GAAA/nH,IAAAC,KAAwB,KACxB+nH,GAAAhoH,IAAAC,UAAA,GACAgoH,GAAAjoH,IAAAC,UAAA,GAGIQ,GAAAR,KAAIgoH,GAAe,IAAIh2D,IAAK,KAC5BxxD,GAAAR,KAAI+nH,GAAgB,IAAI9+G,IAAK,KAC7B1J,SAASkB,iBAAiB,UAAWC,GAAAV,KAAIioH,GAAA,IAAAC,IAAaxgG,KAAK1nB,OAC3DT,SAASkB,iBAAiB,QAASC,GAAAV,KAAIioH,GAAA,IAAAE,IAAWzgG,KAAK1nB,OACvDsK,OAAO7J,iBAAiB,QAAQ,KAC5BC,GAAAV,KAAI+nH,GAAA,KAAcK,OAAO,G,CASjC,QAAAr8G,CAAS1D,EAAa/C,GAClB,IAAK+C,IAAQ/C,EAAO,CAChB,M,CAGJ5E,GAAAV,KAAIgoH,GAAA,KAAajoH,IAAIsI,EAAIojC,cAAe,CAAEnmC,QAAO+iH,UAAW,O,CAOhE,UAAA36G,CAAWrF,GACP,IAAKA,EAAK,CACN,M,CAEJ3H,GAAAV,KAAIgoH,GAAA,KAAap6G,OAAOvF,EAAIojC,c,4EAGpB68E,GACR,MAAMC,EAAaD,EAAcjgH,IAAIojC,cACrC/qC,GAAAV,KAAI+nH,GAAA,KAAcphH,IAAI4hH,GACtB,MAAMC,EAAW9nH,GAAAV,KAAIgoH,GAAA,KAAa9qG,IAAIxc,GAAAV,KAAIioH,GAAA,IAAAQ,IAAoBliH,KAAxBvG,OACtC,GAAIwoH,IAAaA,EAASH,UAAW,CACjCC,EAAcrsG,iBACdusG,EAASljH,QACTkjH,EAASH,UAAY,I,CAE7B,EAACF,GAAA,SAAAA,EAESG,GACN,MAAMI,EAAcJ,EAAcjgH,IAAIojC,cACtC,MAAM+8E,EAAW9nH,GAAAV,KAAIgoH,GAAA,KAAa9qG,IAAIxc,GAAAV,KAAIioH,GAAA,IAAAQ,IAAoBliH,KAAxBvG,OACtC,GAAIwoH,GAAYA,EAASH,UAAW,CAChCG,EAASH,UAAY,K,CAEzB3nH,GAAAV,KAAI+nH,GAAA,KAAcn6G,OAAO86G,EAC7B,EAACD,GAAA,SAAAA,IAGG,OAAOriH,MAAMqT,KAAK/Y,GAAAV,KAAI+nH,GAAA,MAAe5wD,KAAKz2D,GAAAV,KAAI8nH,GAAA,KAClD,ECzBJ,MAAMxoH,GAAcC,SAASC,gB,MAMhBmpH,GAwBT,WAAAjpH,CAAYkpH,GACR,IAAIC,EAA+B,KAC/BC,EAAuB,KACvBC,EAA0B,KAC1BC,EAAwB,KACxBC,EAEI,KACJC,EAAuB,KACvBC,EAAgC,KAChCC,EAAuB,KACvBC,EAA8B,KAC9BC,EAA6B,KAC7BC,EAA4B,KAC5BC,EAA0B,KAC1BC,EAAoB,KACpBC,EAAuB,KACvBC,EAA6C,KAC7CC,EAAwB,KAE5B5pH,KAAK6pH,2BAA6B,MAElC,IAAIC,EAAY,iCAEhB,GAAIlB,EAAW,CACX,MAAMmB,EAAanB,EAAUmB,WAC7B,MAAMvnH,EAAQomH,EAAUpmH,MACxB,MAAM62B,EAAQuvF,EAAUvvF,MACxB,MAAMwwF,EACFjB,EAAUiB,2BACd,MAAM5+E,EAAW29E,EAAU39E,SAC3B,MAAMxpC,EAAWmnH,EAAUnnH,SAC3B,MAAMwtD,EAAU25D,EAAU35D,QAC1B,MAAMrb,EAAgBg1E,EAAUh1E,cAChC,MAAMxxC,EAAQwmH,EAAUxmH,MACxB,MAAM4nH,EAAUpB,EAAUoB,QAC1B,GAAIpB,EAAUkB,UAAW,CACrBA,EAAYlB,EAAUkB,S,CAE1B,GAAIC,EAAY,CACZE,EAAaF,E,CAEjB,GAAIvnH,EAAO,CACPqmH,EAAcrmH,EAAMG,OAASH,EAAMG,OAAS,I,CAEhD,GAAI02B,EAAO,CACPyvF,EAAczvF,EAAM15B,OAAS05B,EAAM15B,OAAS,KAC5CopH,EAAiB1vF,EAAMp5B,UAAYo5B,EAAMp5B,UAAY,KACrD+oH,EAAgB3vF,EAAMx5B,SAAWw5B,EAAMx5B,SAAW,I,CAEtD,GAAIgqH,EAA4B,CAC5B7pH,KAAK6pH,2BAA6BA,C,CAEtC,GAAI5+E,EAAU,CACVg+E,EAA0Bh+E,EAASH,kBAC7Bm+E,EACA,KACNC,EAAej+E,EAAS3+B,OAAS2+B,EAAS3+B,OAAS,I,CAEvD,GAAI7K,EAAU,CACV0nH,EAAe1nH,EAAS2f,KAAO3f,EAAS2f,KAAO,KAC/CgoG,EAAe3nH,EAASQ,KAAOR,EAASQ,KAAO,I,CAEnD,GAAIgtD,EAAS,CACTo6D,EAAcp6D,EAAQ7tC,KAAO6tC,EAAQ7tC,KAAO,I,CAEhD,GAAIwyB,EAAe,CACf01E,EAAqB11E,EAAcznB,MAC7BynB,EAAcznB,MACd,KACNo9F,EAAoB31E,EAAcf,KAC5Be,EAAcf,KACd,I,CAEV,GAAIzwC,EAAO,CACPonH,EAAYpnH,EAAMgf,KAAOhf,EAAMgf,KAAO,KACtCqoG,EAAYrnH,EAAMH,KAAOG,EAAMH,KAAO,I,CAE1C,GAAI+nH,EAAS,CACTN,EAAeM,EAAQ79F,MAAQ69F,EAAQ79F,MAAQ,KAC/Cw9F,EAAwBK,EAAQj+C,eAC1Bi+C,EAAQj+C,eACR,KACN69C,EAAeI,EAAQh+C,MAAQg+C,EAAQh+C,MAAQ,I,EAGvDhsE,KAAK4C,KAAO,IAAI64D,GAChBz7D,KAAKwC,MAAQ,IAAI0nH,EAASrB,GAC1B7oH,KAAKq5B,MAAQ,IAAI55B,EAASqpH,EAAaC,EAAgBC,GACvDhpH,KAAKqN,gBAAkB,IAAI3B,EAC3B1L,KAAKirC,SAAW,IAAIJ,GAAYq+E,EAAcD,GAC9CjpH,KAAKyB,SAAW,IAAIysC,GAAYi7E,EAAcC,GAC9CppH,KAAKmqH,SAAW,KAChBnqH,KAAKwmH,OAAS,IAAIlC,GAAUwF,GAC5B9pH,KAAKkG,KAAO,IAAIsjE,GAChBxpE,KAAK4oH,UAAYA,EAAYA,EAAY,KACzC5oH,KAAKivD,QAAU,IAAIrf,GAAWy5E,GAC9BrpH,KAAK0lB,OAAS,IAAIglC,IAAgB8B,IAC9BA,EAAQjjD,SAASmjD,IACb,GAAIA,EAAMpC,YAAYzxC,QAAU6zC,EAAMpC,YAAY1xC,MAAO,CACpD8zC,EAAMx/C,OAAiCk9G,iBACxCpqH,KAAKq5B,MAAM5xB,WACP,gBACIilD,EAAMx/C,OAAOvD,QACb,IACA+iD,EAAMx/C,OAAOnL,GACb,IACJ,sBACI2qD,EAAMpC,YAAY1xC,MAClB,QACA8zC,EAAMpC,YAAYzxC,OAClB,I,IAGd,IAEN7Y,KAAK4zC,cAAgB,IAAIhB,GACrB02E,EACAC,GAEJvpH,KAAKma,OAAS,IAAIynD,GAClB5hE,KAAKqqH,UAAY,CACbC,eAAgB,IAAIrhH,IACpBshH,sBAAuB,MAE3BvqH,KAAKoC,MAAQ,IAAIk4C,GAASkvE,EAAWC,GACrCzpH,KAAKmpD,QAAU,IAAIJ,GACnB/oD,KAAKwqH,YAAc,IAAI3C,GACvB7nH,KAAKgqH,QAAU,IAAIl+C,GACf49C,EACAC,EACAC,GAEJrqH,SAASkB,iBAAiB,eAAgBwE,IACtC,MAAMknE,EAAQlnE,EAAEoX,eAChB,MAAMouG,EACFt+C,EAAM,GAAGrwB,WAAcqwB,EAAM,GAAwBjqE,MACzDlC,KAAKqqH,UAAUE,sBAAwBE,EACvC,GAAIA,EAAY,CACZ,MAAMxlH,EAAI,IAAI6D,YACV,2BACA,CACIyB,QAAS,KACTwiC,WAAY,KACZ1nC,OAAQ,CACJqM,OAAQ+4G,KAIpBlrH,SAASsJ,cAAc5D,E,KAG/B1F,SAASkB,iBAAiB,SAAUwE,IAChC,MAAMknE,EAAQlnE,EAAEoX,eAChBrc,KAAKqqH,UAAUC,eAAe/gH,SAASa,IACnC,GACIA,GACAA,EAAIZ,IACJY,EAAIZ,GAAGuE,cACNo+D,EAAM9vB,SAASjyC,EAAIZ,IACtB,CACE,MAAMkhH,EAAiBtgH,EAAIZ,GAC3B,IAAIihE,EAAQ,MACZ,GACIigD,EAAe99G,oBACf89G,EAAe99G,mBAAmBT,OACpC,CACE,IAAK,IAAIvK,EAAQ,EAAGA,EAAQuqE,EAAMtqE,OAAQD,IAAS,CAC/C,MAAM+oH,EAASx+C,EAAMvqE,GACrB,MAAMgpH,EACFD,EACJ,GACIC,EAAmBh+G,oBACnBg+G,EAAmBh+G,mBAAmBT,OACxC,CACE,MAAMI,EACFq+G,EAAmBh+G,mBACdL,aACT,GAAIA,EAAa8vC,SAASjyC,EAAIZ,IAAK,CAC/BihE,EAAQ,I,GAIpB,IAAKA,EAAO,CACRrgE,EAAI2jC,I,MAEL,CACH3jC,EAAI2jC,I,KAGd,G,CAMV,YAAA88E,GACI,GAAI7qH,KAAKmqH,SAAU,CACf,M,CAEJnqH,KAAKmqH,SAAW5qH,SAASY,cAAc,iBACvCH,KAAKmqH,SAASpoH,GAAK,gBACnB/B,KAAKmqH,SAASrjH,MAAM6F,SAAW,QAC/B3M,KAAKmqH,SAASrjH,MAAMsH,KAAO,oBAC3BpO,KAAKmqH,SAASrjH,MAAMmH,IAAM,oBAC1B1O,SAASc,KAAK6E,OAAOlF,KAAKmqH,S,CAK9B,YAAAW,GACI,IAAK9qH,KAAKmqH,SAAU,CAChB,M,CAEJnqH,KAAKmqH,SAAS9oH,SACdrB,KAAKmqH,SAAW,I,CAKpB,cAAArkH,GACI,IAAK9F,KAAKmqH,SAAU,CAChBnqH,KAAK6qH,c,KACF,CACH7qH,KAAK8qH,c,EAQb,sBAAAC,CAAuBpoH,GACnB,IAAK2F,OAAOy2C,OAAOisE,GAAiB3uE,SAAS15C,GAAS,CAClD3C,KAAKq5B,MAAM5xB,WACP,cACA,mBAAqB9E,EAAS,KAC9BvD,EAAiByH,OAErB,M,CAEJ,IAAKvI,EAAoBqE,GAAS,CAC9B3C,KAAKq5B,MAAM5xB,WACP,cACA,gCAAkC9E,EAAS,KAC3CvD,EAAiByH,OAErB,M,CAEJ7G,KAAKwC,MAAMyD,UAAUtD,GACrB3C,KAAKyB,SAAS1B,IAAIzB,EAAoBqE,IACtC3C,KAAKkG,KAAKD,UAAUm8D,GAAez/D,G,CAOvC,gBAAAkqE,CAAiB9+B,EAAuBo5E,GACpC,GAAIA,EAAO,CACPx/F,YAAW,KACP3nB,KAAKqqH,UAAUC,eAAe3jH,IAAIonC,EAAG,GACtC,E,KACA,CACH/tC,KAAKqqH,UAAUC,eAAe3jH,IAAIonC,E,EAU1C,YAAAk9E,CAAaz+G,EAAoB9C,GAC7B,MAAM4S,EAAsB,GAE5B,MACI9P,GACAA,IAAc9C,GACd8C,IAAcjN,SAASc,KACzB,CACEic,EAAKxa,KAAK0K,GACVA,EAAaA,EAA0BC,WAChCD,EAA0BC,WAC1BD,EAAyBE,I,CAGpC,OAAO4P,C,CAYX,eAAM4uG,CACF1hH,EACAmK,GAEA,OAAOqvG,GAAYx5G,EAAImK,GAAS/N,MAAM64F,GAC3BA,G,CAOf,mBAAAjyB,CAAoBz+B,GAChB/tC,KAAKqqH,UAAUC,eAAe18G,OAAOmgC,E,WAO7Bo9E,K,MACZ,IAAK7rH,GAAIkC,QAAS,CACd,MAAMonH,GAAsC15E,EAAA5vC,GAAI8rH,eAAW,MAAAl8E,SAAA,EAAAA,EAAI,KAC/D5vC,GAAIkC,QAAU,IAAImnH,GAAWC,GAC7BtpH,GAAIkC,QAAQY,MAAMrC,MAClB,GAAIT,GAAIkC,QAAQ63B,MAAM15B,OAAQ,CAC1BL,GAAIkC,QAAQ63B,MAAMtzB,OAAOzG,GAAIkC,QAAQ63B,MAAM15B,O,CAE/C6gC,WAAW6qF,WAAa/rH,GAAIkC,QAC5B,GAAIonH,IAAS,MAATA,SAAS,SAATA,EAAW0C,oBAAqB,CAChC,MAAM3oH,EAASrD,GAAIkC,QAAQgB,MAAMG,OACjC,IAAKimH,EAAUnnH,WAAamnH,EAAUnnH,SAASQ,KAAM,CACjD3C,GAAIkC,QAAQC,SAAS1B,IAAIzB,EAAoBqE,G,CAEjD,IAAKimH,EAAU1iH,OAAS0iH,EAAU1iH,KAAKvD,OAAQ,CAC3CrD,GAAIkC,QAAQ0E,KAAKD,UAAUm8D,GAAez/D,G,EAGlDpD,SAASsJ,cAAc,IAAIC,YAAY,qB,CAE3C,OAAOxJ,GAAIkC,OACf,Q","ignoreList":[]}