{"version":3,"names":["DefaultMatcher","IdentityMatcher","ShallowMatcher","DeepMatcher","BaseActiveExpression","aexpr","func","args","EventTarget","Annotations","Event","default","EventTypes","shallowEqualsArray","shallowEqualsSet","shallowEqualsMap","shallowEquals","deepEquals","isString","clone","cloneDeep","pluralize","Preferences","sourcemap","IdentitySymbolProvider","AExprRegistry","LoggingModes","HACK","window","__compareAExprResults__","compare","lastResult","newResult","Array","isArray","Set","Map","Number","isNaN","store","result","prototype","slice","call","DebugConceptType","AE","SIGNAL","DB","ILA","ROQ","MATCHER_MAP","NO_VALUE_YET","Symbol","aeCounter","identitiySymbolProvider","constructor","params","match","errorMode","disabled","location","sourceCode","isDataBinding","dataBindingContext","dataBindingIdentifier","isILA","ila","id","loggingMode","DEFAULT","completeHistory","_eventTarget","_isEnabled","setupMatcher","callbacks","_isDisposed","_shouldDisposeOnLastCallbackDetached","_annotations","meta","identifierSymbol","next","conceptType","conceptInfo","context","identifier","initializeEvents","addToRegistry","_initLastValue","logEvent","CREATED","stack","lively","value","lastValue","updateLastValue","isError","evaluateToCurrentValue","storeResult","addAExpr","hasCallbacks","length","getCurrentValue","addToEvaluationStack","returnValue","popEvaluationStack","e","eventPromise","EVALFAIL","error","on","type","callback","addEventListener","off","removeEventListener","emit","dispatchEvent","getEventListeners","onChange","originalSource","push","CBADDED","updateAExpr","offChange","index","indexOf","splice","CBREMOVED","dispose","checkAndNotify","infoPromises","callbackStackTop","callbackStack","then","event","Promise","all","triggers","parentAE","ae","compareResults","notify","expr","findCallee","frames","frame","file","includes","getSourceLocBabelStyle","undefined","extractSourceMap","code","m","sourceMappingURL","fetch","json","extractSourceURL","matchConfig","has","Error","matcher","get","hasOwnProperty","forEach","addToCallbackStack","popCallbackStack","updateDependencies","setExpression","checkImmediately","Function","TypeError","onBecomeTrue","bool","onBecomeFalse","dataflow","orignalSource","removeAllCallbacks","removeAExpr","DISPOSED","isDisposed","disposeOnLastCallbackDetached","gotDisposed","_disposedPromise","resolve","enable","check","disable","isEnabled","isDisabled","shouldLogEvents","shouldLog","start","line","ALL","toggleLogging","setLogging","NONE","logState","events","annotation","add","getSymbol","getLocationText","substring","lastIndexOf","getIdentifier","getDataBinding","getLayer","name","getSourceCode","getName","getType","getTypeShort","cutoff","oneLine","startsWith","replace","trim","supportsDependencies","markTimestamp","reason","CUSTOM","addEvent","overallID","sort","e1","e2","shift","overrideTimestamp","isMeta","ensureResolved","migrateEvents","other","otherEvents","unshift","nextValue","values","valueQueue","gotNewValue","waitForValue","resetWaitForValue","v","temp","asyncIterator","done","race"],"sources":["active-expression.js"],"sourcesContent":["import EventTarget from '../utils/event-target.js';\nimport Annotations from '../utils/annotations.js';\nimport { default as Event, EventTypes } from './events/event.js';\nimport { shallowEqualsArray, shallowEqualsSet, shallowEqualsMap, shallowEquals, deepEquals } from '../utils/equality.js';\nimport { isString, clone, cloneDeep, pluralize } from 'utils';\nimport Preferences from 'src/client/preferences.js';\n\nimport sourcemap from 'src/external/source-map.min.js';\nimport { IdentitySymbolProvider } from 'src/babylonian-programming-editor/utils/tracker.js';\n\nimport { AExprRegistry, LoggingModes } from 'src/client/reactive/active-expression/ae-registry.js';\n\n// #TODO: this is use to keep SystemJS from messing up scoping\n// (BaseActiveExpression would not be defined in aexpr)\nconst HACK = {};\n\nwindow.__compareAExprResults__ = false;\n/*MD # Equality Matchers MD*/\nclass DefaultMatcher {\n  static compare(lastResult, newResult) {\n    // array\n    if (Array.isArray(lastResult) && Array.isArray(newResult)) {\n      return shallowEqualsArray(lastResult, newResult);\n    }\n\n    // set\n    if (lastResult instanceof Set && newResult instanceof Set) {\n      return shallowEqualsSet(lastResult, newResult);\n    }\n\n    // map\n    if (lastResult instanceof Map && newResult instanceof Map) {\n      return shallowEqualsMap(lastResult, newResult);\n    }\n\n    // Workaround for NaN === NaN -> false\n    if (Number.isNaN(lastResult) && Number.isNaN(newResult)) {\n      return true;\n    }\n\n    return lastResult === newResult;\n  }\n\n  static store(result) {\n    // array\n    if (Array.isArray(result)) {\n      return Array.prototype.slice.call(result);\n    }\n\n    // set\n    if (result instanceof Set) {\n      return new Set(result);\n    }\n\n    // map\n    if (result instanceof Map) {\n      return new Map(result);\n    }\n\n    return result;\n  }\n}\n\nclass IdentityMatcher {\n  static compare(lastResult, newResult) {\n    return lastResult === newResult;\n  }\n\n  static store(result) {\n    return result;\n  }\n}\n\nclass ShallowMatcher {\n  static compare(lastResult, newResult) {\n    // array\n    if (Array.isArray(lastResult) && Array.isArray(newResult)) {\n      return shallowEqualsArray(lastResult, newResult);\n    }\n\n    // set\n    if (lastResult instanceof Set && newResult instanceof Set) {\n      return shallowEqualsSet(lastResult, newResult);\n    }\n\n    // map\n    if (lastResult instanceof Map && newResult instanceof Map) {\n      return shallowEqualsMap(lastResult, newResult);\n    }\n\n    // Workaround for NaN === NaN -> false\n    if (Number.isNaN(lastResult) && Number.isNaN(newResult)) {\n      return true;\n    }\n\n    return shallowEquals(lastResult, newResult);\n  }\n\n  static store(result) {\n    return clone.call(result);\n  }\n}\n\nclass DeepMatcher {\n  static compare(lastResult, newResult) {\n    return deepEquals(lastResult, newResult);\n  }\n\n  static store(result) {\n    return cloneDeep.call(result);\n  }\n}\n\nexport const DebugConceptType = {\n  AE: \"AE\",\n  SIGNAL: \"Signal\",\n  DB: \"DB\",\n  ILA: \"ILA\",\n  ROQ: \"ROQ\",\n}\n\nconst MATCHER_MAP = new Map([['default', DefaultMatcher], ['identity', IdentityMatcher], ['shallow', ShallowMatcher], ['deep', DeepMatcher]]);\n\nconst NO_VALUE_YET = Symbol('No value yet');\n\nlet aeCounter = 0;\n\nconst identitiySymbolProvider = new IdentitySymbolProvider();\n/*MD # ACTIVE EXPRESSIONS MD*/\nexport class BaseActiveExpression {\n\n  /**\n   *\n   * @param func (Function) the expression to be observed\n   * #TODO: incorrect parameter list, how to specify spread arguments in jsdoc?\n   * @param ...params (Objects) the instances bound as parameters to the expression\n   */\n  constructor(func, {\n    params = [], match,\n    errorMode = 'silent',\n    disabled = false,\n    location,\n    sourceCode,\n    isDataBinding,\n    dataBindingContext,\n    dataBindingIdentifier,\n    isILA,\n    ila\n\n  } = {}) {\n    this.id = aeCounter;\n    aeCounter++;\n    this.loggingMode = LoggingModes.DEFAULT;\n    this.completeHistory = true;\n    \n    this._eventTarget = new EventTarget(), this.func = func;\n    this.params = params;\n    this.errorMode = errorMode;\n    this._isEnabled = !disabled;\n    this.setupMatcher(match);\n    this.callbacks = [];\n\n    this._isDisposed = false;\n    this._shouldDisposeOnLastCallbackDetached = false;\n\n    this._annotations = new Annotations();\n    if (location) {\n      this.meta({ location });\n    }\n    \n    this.identifierSymbol = identitiySymbolProvider.next();\n    if (sourceCode) {\n      this.meta({ sourceCode });\n    }\n\n    if(isDataBinding) {\n      this.meta({ conceptType: DebugConceptType.DB });\n      this.meta({ conceptInfo: {context: dataBindingContext, identifier: dataBindingIdentifier}});      \n    } else if (isILA) {\n      this.meta({ conceptType: DebugConceptType.ILA });\n      this.meta({ conceptInfo: ila});      \n    } else {      \n      this.meta({ conceptType: DebugConceptType.AE });\n    }\n\n    this.initializeEvents();\n\n    this.addToRegistry();\n    this._initLastValue();\n    this.logEvent(EventTypes.CREATED, { stack: lively.stack(), value: this.lastValue });\n  }\n\n  _initLastValue() {\n    this.lastValue = NO_VALUE_YET;\n    this.updateLastValue();\n  }\n\n  updateLastValue() {\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError) {\n      this.storeResult(value);\n    }\n  }\n\n  addToRegistry() {\n    AExprRegistry.addAExpr(this);\n  }\n\n  hasCallbacks() {\n    return this.callbacks.length !== 0;\n  }\n\n  /**\n   * Executes the encapsulated expression with the given parameters.\n   * aliases with 'now' (#TODO: caution, consider ambigous terminology: 'now' as in 'give me the value' or as in 'dataflow'?)\n   * @private\n   * @returns {*} the current value of the expression\n   */\n  getCurrentValue() {\n    AExprRegistry.addToEvaluationStack(this);\n    let returnValue;\n    try {\n      returnValue = this.func(...this.params);\n    } finally {\n      AExprRegistry.popEvaluationStack();\n    }\n    return returnValue;\n  }\n\n  /**\n   * Safely executes the encapsulated expression with the given parameters.\n   * @public\n   * @returns {{ value: *, isError: Boolean}} the current value of the expression, or the thrown error if any\n   */\n  evaluateToCurrentValue() {\n    try {\n      const result = this.getCurrentValue();\n      return { value: result, isError: false };\n    } catch (e) {\n      const eventPromise = this.logEvent(EventTypes.EVALFAIL, {error: e});\n      return { value: e, isError: true, eventPromise };\n    }\n  }\n\n  /*MD ## EventTarget Interface MD*/\n  // #TODO: additional callbacks\n  // - 'change-complete' for tail end of notification\n  // - 'dependency-changed' for reflection\n  on(type, callback) {\n    this._eventTarget.addEventListener(type, callback);\n    return this;\n  }\n\n  off(type, callback) {\n    this._eventTarget.removeEventListener(type, callback);\n    return this;\n  }\n\n  emit(type, ...params) {\n    this._eventTarget.dispatchEvent(type, ...params);\n  }\n\n  getEventListeners(type) {\n    return this._eventTarget.getEventListeners(type);\n  }\n\n  /*MD ## Basic Interface MD*/\n  /**\n   * @public\n   * @param callback\n   * @returns {BaseActiveExpression} this very active expression (for chaining)\n   */\n  onChange(callback, originalSource) {\n    this.callbacks.push(callback);\n    this.logEvent(EventTypes.CBADDED, { callback, originalSource });\n    AExprRegistry.updateAExpr(this);\n    return this;\n  }\n  /**\n   * @public\n   * @param callback\n   * @returns {BaseActiveExpression} this very active expression (for chaining)\n   */\n  // #TODO: should this remove all occurences of the callback?\n  offChange(callback, originalSource) {\n    const index = this.callbacks.indexOf(callback);\n    if (index > -1) {\n      this.callbacks.splice(index, 1);\n      this.logEvent(EventTypes.CBREMOVED, { callback, originalSource });\n      AExprRegistry.updateAExpr(this);\n    }\n    if (this._shouldDisposeOnLastCallbackDetached && this.callbacks.length === 0) {\n      this.dispose();\n    }\n\n    return this;\n  }\n\n  /**\n   * Signals the active expression that a state change might have happened.\n   * Mainly for implementation strategies.\n   * @public\n   */\n  checkAndNotify(infoPromises = []) {\n    if (!this._isEnabled) {\n      return;\n    }\n\n    const { value, isError, eventPromise } = this.evaluateToCurrentValue();\n    const callbackStackTop = AExprRegistry.callbackStack[AExprRegistry.callbackStack.length - 1];\n    if (isError) {\n      eventPromise.then(event => {\n        if(!event.value) return;\n        Promise.all(infoPromises).then(triggers => {\n          event.value.triggers = triggers;\n          event.value.parentAE = callbackStackTop && callbackStackTop.ae;\n          event.value.callback = callbackStackTop && callbackStackTop.callback;\n        });\n      });\n      return;\n    } else if (this.compareResults(this.lastValue, value)) {\n      return;\n    }\n    const lastValue = this.lastValue;\n    this.storeResult(value);\n    this.logEvent('changed value', Promise.all(infoPromises).then(triggers => {\n      /*if(dependency) {\n        if(dependency.context instanceof HTMLElement) {\n          if(!dependency.context.changedAEs) {\n            dependency.context.changedAEs = new Set();\n          }\n          dependency.context.changedAEs.add(this);\n        }\n      }*/\n      return {\n        value,\n        triggers,\n        lastValue,\n        parentAE: callbackStackTop && callbackStackTop.ae,\n        callback: callbackStackTop && callbackStackTop.callback };\n    }));\n\n    this.notify(value, {\n      lastValue,\n      expr: this.func,\n      aexpr: this\n    });\n  }\n\n  async findCallee() {\n    const stack = lively.stack();\n    const frames = stack.frames;\n\n    for (let frame of frames) {\n      if (!frame.file.includes(\"active-expression\") && frame.file !== \"<anonymous>\") {\n        return await frame.getSourceLocBabelStyle();\n      }\n    }\n    return undefined;\n  }\n\n  async extractSourceMap(code) {\n    var m = code.match(/\\/\\/# sourceMappingURL=(.*)(\\n|$)/);\n    if (!m) return false;\n    var sourceMappingURL = m[1];\n    return (await fetch(sourceMappingURL)).json();\n  }\n\n  extractSourceURL(code) {\n    var m = code.match(/\\/\\/# sourceURL=(.*)(\\n|$)/);\n    if (!m) return false;\n    return m[1];\n  }\n\n  setupMatcher(matchConfig) {\n    // configure using existing matcher\n    if (matchConfig && isString.call(matchConfig)) {\n      if (!MATCHER_MAP.has(matchConfig)) {\n        throw new Error(`No matcher of type '${matchConfig}' registered.`);\n      }\n      this.matcher = MATCHER_MAP.get(matchConfig);\n      return;\n    }\n\n    // configure using a custom matcher\n    if (typeof matchConfig === 'object') {\n      if (matchConfig.hasOwnProperty('compare') && matchConfig.hasOwnProperty('store')) {\n        this.matcher = matchConfig;\n        return;\n      }\n      throw new Error(`Given matcher object does not provide 'compare' and 'store' methods.`);\n    }\n\n    // use smart default matcher\n    this.matcher = DefaultMatcher;\n  }\n\n  // #TODO: extract into CompareAndStore classes\n  compareResults(lastResult, newResult) {\n    try {\n      window.__compareAExprResults__ = true;\n      return this.matcher.compare(lastResult, newResult);\n    } finally {\n      window.__compareAExprResults__ = false;\n    }\n  }\n\n  storeResult(result) {\n    try {\n      window.__compareAExprResults__ = true;\n      this.lastValue = this.matcher.store(result);\n    } finally {\n      window.__compareAExprResults__ = false;\n    }\n  }\n\n  notify(...args) {\n    this.callbacks.forEach(callback => {\n      AExprRegistry.addToCallbackStack(this, callback);\n      callback(...args);\n      AExprRegistry.popCallbackStack();\n    });\n    AExprRegistry.updateAExpr(this);\n  }\n\n  updateDependencies() {}\n\n  /**\n   * Change the expression to be monitored.\n   * @public\n   * @param func (Function) the new function to be monitored.\n   * @param options ({ checkImmediately = true }) whether `notify` will be executed if the current value of the expression is different from the last on, defaults to true.\n   * @returns {BaseActiveExpression} this very active expression (for chaining)\n   */\n  setExpression(func, { checkImmediately = true } = {}) {\n    if (!(func instanceof Function)) {\n      throw new TypeError('no function given to .setExpression');\n    }\n\n    this.func = func;\n    this.updateDependencies();\n    if (checkImmediately) {\n      this.checkAndNotify();\n    }\n\n    return this;\n  }\n\n  /*MD ## Convenience Methods MD*/\n  onBecomeTrue(callback) {\n    // setup dependency\n    this.onChange(bool => {\n      if (bool) {\n        callback();\n      }\n    });\n\n    // check initial state\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError && value) {\n      this.storeResult(value);\n      callback();\n    }\n\n    return this;\n  }\n\n  onBecomeFalse(callback) {\n    // setup dependency\n    this.onChange(bool => {\n      if (!bool) {\n        callback();\n      }\n    });\n\n    // check initial state\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError && !value) {\n      this.storeResult(value);\n      callback();\n    }\n\n    return this;\n  }\n\n  dataflow(callback, orignalSource) {\n    // setup dependency\n    this.onChange(callback, orignalSource);\n\n    // call immediately\n    // #TODO: duplicated code: we should extract this call\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError) {\n      this.storeResult(value);\n      callback(value, {});\n    }\n\n    return this;\n  }\n\n  /*MD ## Disposing MD*/\n  dispose() {\n    if (!this._isDisposed) {\n      this._isDisposed = true;\n      this.removeAllCallbacks();\n      AExprRegistry.removeAExpr(this);\n      this.emit('dispose');\n      this.logEvent(EventTypes.DISPOSED);\n    }\n  }\n\n  removeAllCallbacks() {\n    for (const callback of this.callbacks) {\n      this.offChange(callback);\n    }\n  }\n\n  isDisposed() {\n    return this._isDisposed;\n  }\n\n  /**\n   * #TODO: implement\n   * disposeOnLastCallbackDetached\n   * chainable\n   * for some auto-cleanup\n   * (only triggers, when a callback is detached; not initially, if there are no callbacks)\n   */\n  disposeOnLastCallbackDetached() {\n    this._shouldDisposeOnLastCallbackDetached = true;\n    return this;\n  }\n\n  gotDisposed() {\n    if (this._disposedPromise) {\n      return this._disposedPromise;\n    }\n\n    return this._disposedPromise = new Promise(resolve => {\n      if (this.isDisposed()) {\n        resolve();\n      } else {\n        this.on('dispose', resolve);\n      }\n    });\n  }\n\n  /*MD ## Scoping: Enable, Disable \n  \n    In contrast to scoping with respect to applying a single expression to multiple subjects\n  MD*/\n\n  enable({ check = true } = {}) {\n    if (!this._isEnabled) {\n      this._isEnabled = true;\n      this.emit('enable');\n\n      this.updateDependencies();\n      if (check) {\n        this.checkAndNotify();\n      } else {\n        this.updateLastValue();\n      }\n    }\n  }\n\n  disable() {\n    if (this._isEnabled) {\n      this._isEnabled = false;\n      this.emit('disable');\n    }\n  }\n\n  isEnabled() {\n    return this._isEnabled;\n  }\n\n  isDisabled() {\n    return !this._isEnabled;\n  }\n\n  /*MD ## Reflection Information MD*/\n  shouldLogEvents() {\n    if(this.loggingMode === LoggingModes.DEFAULT) {\n      const location = this.meta().get(\"location\");\n      if(location) {\n        return AExprRegistry.shouldLog(location.file, location.start.line) \n      }\n    }\n    return this.loggingMode === LoggingModes.ALL;\n  }\n  \n  toggleLogging() {\n    this.setLogging(!this.shouldLogEvents());\n  }\n  \n  setLogging(enable) {\n    this.loggingMode = enable ? LoggingModes.ALL : LoggingModes.NONE;\n  }\n  \n  logState() {\n    let events = this.events;\n    return (this.shouldLogEvents() ? \"logged: \" : \"not logged: \") + (this.completeHistory ? \"complete \" : \"incomplete \") + pluralize(events.length, \"event\")\n  }\n  \n  meta(annotation) {\n    if (annotation) {\n      this._annotations.add(annotation);\n      return this;\n    } else {\n      return this._annotations;\n    }\n  }\n\n  getSymbol() {\n    return this.identifierSymbol;\n  }\n\n  getLocationText() {\n    const location = this.meta().get(\"location\");\n    if (location) {\n      return location.file.substring(location.file.lastIndexOf(\"/\") + 1) + \" line \" + location.start.line;\n    } else {\n      return \"unknown location\";\n    }\n  }\n  \n  getIdentifier() {\n    if(this.isDataBinding()) {\n      return this.getDataBinding().identifier;\n    }\n    if(this.isILA()) {\n      return this.getLayer().name;\n    }\n    return this.getSourceCode(60);\n  }\n\n  getName() {\n    if(this.isDataBinding()) {\n      return this.identifierSymbol + \" \" + this.getDataBinding().identifier;\n    }\n    if(this.isILA()) {\n      return this.identifierSymbol + \" \" + this.getLayer().name;\n    }\n    const location = this.meta().get(\"location\");\n    if (location) {\n      return this.identifierSymbol + \" \" + this.getLocationText();\n    } else {\n      return this.identifierSymbol + \" \" + this.meta().get(\"id\");\n    }\n  }\n  \n  get events() {\n    return this.meta().get('events')\n  }\n\n  isDataBinding() {\n    return this.meta().get('conceptType') === DebugConceptType.DB;\n  }\n\n  isILA() {\n    return this.meta().get('conceptType') === DebugConceptType.ILA;\n  }\n  \n  getType() {\n    if(this.isDataBinding()) {\n      return \"Signal\";\n    }\n    if(this.isILA()) {\n      return \"Implicit Layer\";\n    }\n    return \"Active Expression\";\n  }\n  \n  getTypeShort() {\n    if(this.isDataBinding()) {\n      return \"SI\";\n    } \n    if(this.isILA()) {\n      return \"IL\";\n    }\n    return \"AE\";\n  }\n  \n  getLayer() {\n    if(!this.isILA()) return undefined;\n    return this.meta().get('conceptInfo');\n  }\n  \n  getDataBinding() {\n    if(!this.isDataBinding()) return undefined;\n    return this.meta().get('conceptInfo');\n  }\n\n  getSourceCode(cutoff = -1, oneLine = true) {\n    let code;\n    if (this.meta().has('sourceCode')) {\n      code = this.meta().get('sourceCode');\n    } else {\n      code = \"unknown code\";\n    }\n    if (code.startsWith(\"() =>\")) {\n      code = code.substring(5);\n    }\n    if (oneLine) {\n      code = code.replace(/\\s+/g, \" \");\n    }\n    code = code.trim();\n    if (cutoff < 0) return code;\n    if (code.length > cutoff + 3) {\n      return code.substring(0, cutoff) + \"...\";\n    }\n    return code;\n  }\n\n  supportsDependencies() {\n    return false;\n  }\n\n  initializeEvents() {\n    this.meta({ events: new Array() });\n  }\n  \n  markTimestamp(reason) {\n    this.logEvent(EventTypes.CUSTOM, reason);\n  }\n  \n  addEvent(event) {\n    const events = this.events;\n    events.push(event);\n    if(events.length !== 1 && events[events.length - 2].overallID > event.overallID) {\n      events.sort((e1, e2) => e1.overallID - e2.overallID);\n    }\n    if (events.length > 5000) events.shift();\n    return events.length; //IDs are broken after 5000 events.\n  }\n\n  logEvent(type, value, overrideTimestamp = undefined) {\n    if (this.isMeta()) return;\n    if(!this.shouldLogEvents()) {\n      this.completeHistory = false;\n      return Promise.resolve({});\n    }\n    if(type == EventTypes.CBADDED && (this.isILA() || this.isDataBinding())) {\n      return; //We do not need to log callbacks for signals and layers\n    }\n    const e = new Event(this, value, type, overrideTimestamp);\n    return e.ensureResolved();\n  }\n\n  // Migrates the events from another event to this one. \n  // It is advisable to only call this, when we know that this AE replaces \"other\" and when other was disposed before this AE was created..\n  migrateEvents(other) {\n    let otherEvents = other.events;\n    let events = this.events;\n\n    events.unshift(...otherEvents);\n  }\n\n  isMeta(value) {\n    if (value !== undefined) this.meta({ isMeta: value });else return this.meta().has('isMeta') && this.meta().get('isMeta');\n  }\n\n  /*MD ## Iterators and Utility Methods MD*/\n\n  // #Discussion: should this reject, if the aexpr gets disposed?\n  nextValue() {\n    return new Promise(resolve => {\n      const callback = value => {\n        this.offChange(callback);\n        resolve(value);\n      };\n      this.onChange(callback);\n    });\n  }\n\n  values() {\n    const gotDisposed = this.gotDisposed();\n\n    const valueQueue = [];\n\n    let gotNewValue;\n    let waitForValue;\n    function resetWaitForValue() {\n      waitForValue = new Promise(resolve => {\n        gotNewValue = resolve;\n      });\n    }\n    resetWaitForValue();\n\n    this.onChange(v => {\n      valueQueue.push(v);\n      const temp = gotNewValue;\n      resetWaitForValue();\n      temp();\n    });\n\n    return {\n      [Symbol.asyncIterator]() {\n        return {\n          next() {\n            if (valueQueue.length > 0) {\n              return {\n                value: valueQueue.shift(),\n                done: false\n              };\n            } else {\n              return Promise.race([waitForValue.then(() => this.next()), gotDisposed.then(() => ({ done: true }))]);\n            }\n          }\n        };\n      }\n    };\n  }\n}\n\nexport function aexpr(func, ...args) {\n  return new BaseActiveExpression(func, ...args);\n}\n\nexport default BaseActiveExpression;\n\n// #TODO: migrate aexpr object to new/reloaded classes"],"mappings":";;;0PAkBMA,cAAc,EA6CdC,eAAe,EAUfC,cAAc,EA8BdC,WAAW,EA0BJC,oBAAoB;EA+qB1B,SAASC,KAAK,CAACC,IAAI,EAAE,GAAGC,IAAI,EAAE;IACnC,OAAO,IAAIH,oBAAoB,CAACE,IAAI,EAAE,GAAGC,IAAI,CAAC;EAChD;EAAC;IAAA;IAAA,OAFeF;EAAK;EAAA;IAAA;MAhzBdG,WAAW;IAAA;MACXC,WAAW;IAAA;MACEC,KAAK,kBAAhBC,OAAO;MAAWC,UAAU,kBAAVA,UAAU;IAAA;MAC5BC,kBAAkB,oBAAlBA,kBAAkB;MAAEC,gBAAgB,oBAAhBA,gBAAgB;MAAEC,gBAAgB,oBAAhBA,gBAAgB;MAAEC,aAAa,oBAAbA,aAAa;MAAEC,UAAU,oBAAVA,UAAU;IAAA;MACjFC,QAAQ,UAARA,QAAQ;MAAEC,KAAK,UAALA,KAAK;MAAEC,SAAS,UAATA,SAAS;MAAEC,SAAS,UAATA,SAAS;IAAA;MACvCC,WAAW;IAAA;MAEXC,SAAS;IAAA;MACPC,sBAAsB,iDAAtBA,sBAAsB;IAAA;MAEtBC,aAAa,kDAAbA,aAAa;MAAEC,YAAY,kDAAZA,YAAY;IAAA;IAAA;MAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,iBAsyBpBrB,sCAAK;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAhzBdG,4CAAW;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACXC,4CAAW;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACSG,2CAAU;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAjBF,sCAAK;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACuDO,2CAAU;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAzBD,8CAAa;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAA/BD,iDAAgB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAlCD,iDAAgB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAApCD,mDAAkB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACUQ,0CAAS;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAApBD,0CAAS;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAhBD,sCAAK;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAAfD,yCAAQ;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACVI,4CAAW;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAEXC,0CAAS;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACPC,uDAAsB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAEPE,6CAAY;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAA3BD,8CAAa;UAAA;QAAA;QAAA;QAAA;MAAA;MAEtB;MACA;MACME,IAAI,GAAG,CAAC,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAATA,qCAAI;UAAA;QAAA;QAAA;QAAA;MAAA;MAEVC,MAAM,CAACC,uBAAuB,GAAG,KAAK;MACtC;MACM7B,cAAc,GAApB,MAAMA,cAAc,CAAC;QACnB,OAAO8B,OAAO,CAACC,UAAU,EAAEC,SAAS,EAAE;UACpC;UACA,IAAIC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,IAAIE,KAAK,CAACC,OAAO,CAACF,SAAS,CAAC,EAAE;YACzD,OAAOnB,kBAAkB,CAACkB,UAAU,EAAEC,SAAS,CAAC;UAClD;;UAEA;UACA,IAAID,UAAU,YAAYI,GAAG,IAAIH,SAAS,YAAYG,GAAG,EAAE;YACzD,OAAOrB,gBAAgB,CAACiB,UAAU,EAAEC,SAAS,CAAC;UAChD;;UAEA;UACA,IAAID,UAAU,YAAYK,GAAG,IAAIJ,SAAS,YAAYI,GAAG,EAAE;YACzD,OAAOrB,gBAAgB,CAACgB,UAAU,EAAEC,SAAS,CAAC;UAChD;;UAEA;UACA,IAAIK,MAAM,CAACC,KAAK,CAACP,UAAU,CAAC,IAAIM,MAAM,CAACC,KAAK,CAACN,SAAS,CAAC,EAAE;YACvD,OAAO,IAAI;UACb;UAEA,OAAOD,UAAU,KAAKC,SAAS;QACjC;QAEA,OAAOO,KAAK,CAACC,MAAM,EAAE;UACnB;UACA,IAAIP,KAAK,CAACC,OAAO,CAACM,MAAM,CAAC,EAAE;YACzB,OAAOP,KAAK,CAACQ,SAAS,CAACC,KAAK,CAACC,IAAI,CAACH,MAAM,CAAC;UAC3C;;UAEA;UACA,IAAIA,MAAM,YAAYL,GAAG,EAAE;YACzB,OAAO,IAAIA,GAAG,CAACK,MAAM,CAAC;UACxB;;UAEA;UACA,IAAIA,MAAM,YAAYJ,GAAG,EAAE;YACzB,OAAO,IAAIA,GAAG,CAACI,MAAM,CAAC;UACxB;UAEA,OAAOA,MAAM;QACf;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UA3CKxC,+CAAc;UAAA;QAAA;QAAA;QAAA;MAAA;MA6CdC,eAAe,GAArB,MAAMA,eAAe,CAAC;QACpB,OAAO6B,OAAO,CAACC,UAAU,EAAEC,SAAS,EAAE;UACpC,OAAOD,UAAU,KAAKC,SAAS;QACjC;QAEA,OAAOO,KAAK,CAACC,MAAM,EAAE;UACnB,OAAOA,MAAM;QACf;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UARKvC,gDAAe;UAAA;QAAA;QAAA;QAAA;MAAA;MAUfC,cAAc,GAApB,MAAMA,cAAc,CAAC;QACnB,OAAO4B,OAAO,CAACC,UAAU,EAAEC,SAAS,EAAE;UACpC;UACA,IAAIC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,IAAIE,KAAK,CAACC,OAAO,CAACF,SAAS,CAAC,EAAE;YACzD,OAAOnB,kBAAkB,CAACkB,UAAU,EAAEC,SAAS,CAAC;UAClD;;UAEA;UACA,IAAID,UAAU,YAAYI,GAAG,IAAIH,SAAS,YAAYG,GAAG,EAAE;YACzD,OAAOrB,gBAAgB,CAACiB,UAAU,EAAEC,SAAS,CAAC;UAChD;;UAEA;UACA,IAAID,UAAU,YAAYK,GAAG,IAAIJ,SAAS,YAAYI,GAAG,EAAE;YACzD,OAAOrB,gBAAgB,CAACgB,UAAU,EAAEC,SAAS,CAAC;UAChD;;UAEA;UACA,IAAIK,MAAM,CAACC,KAAK,CAACP,UAAU,CAAC,IAAIM,MAAM,CAACC,KAAK,CAACN,SAAS,CAAC,EAAE;YACvD,OAAO,IAAI;UACb;UAEA,OAAOhB,aAAa,CAACe,UAAU,EAAEC,SAAS,CAAC;QAC7C;QAEA,OAAOO,KAAK,CAACC,MAAM,EAAE;UACnB,OAAOrB,KAAK,CAACwB,IAAI,CAACH,MAAM,CAAC;QAC3B;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UA5BKtC,+CAAc;UAAA;QAAA;QAAA;QAAA;MAAA;MA8BdC,WAAW,GAAjB,MAAMA,WAAW,CAAC;QAChB,OAAO2B,OAAO,CAACC,UAAU,EAAEC,SAAS,EAAE;UACpC,OAAOf,UAAU,CAACc,UAAU,EAAEC,SAAS,CAAC;QAC1C;QAEA,OAAOO,KAAK,CAACC,MAAM,EAAE;UACnB,OAAOpB,SAAS,CAACuB,IAAI,CAACH,MAAM,CAAC;QAC/B;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UARKrC,4CAAW;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA,4BAUJyC,gBAAgB,GAAG;QAC9BC,EAAE,EAAE,IAAI;QACRC,MAAM,EAAE,QAAQ;QAChBC,EAAE,EAAE,IAAI;QACRC,GAAG,EAAE,KAAK;QACVC,GAAG,EAAE;MACP,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,4BANYL,iDAAgB;UAAA;QAAA;QAAA;QAAA;MAAA;MAQvBM,WAAW,GAAG,IAAId,GAAG,CAAC,CAAC,CAAC,SAAS,EAAEpC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAEC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAEC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAEC,WAAW,CAAC,CAAC,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAAvI+C,4CAAW;UAAA;QAAA;QAAA;QAAA;MAAA;MAEXC,YAAY,GAAGC,MAAM,CAAC,cAAc,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAArCD,6CAAY;UAAA;QAAA;QAAA;QAAA;MAAA;MAEdE,SAAS,GAAG,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAAbA,0CAAS;UAAA;QAAA;QAAA;QAAA;MAAA;MAEPC,uBAAuB,GAAG,IAAI9B,sBAAsB,EAAE;MAC5D;MAAA;QAAA;UAAA;QAAA;QAAA;UADM8B,wDAAuB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA,gCAEhBlD,oBAAoB,GAA1B,MAAMA,oBAAoB,CAAC;QAEhC;AACF;AACA;AACA;AACA;AACA;QACEmD,WAAW,CAACjD,IAAI,EAAE;UAChBkD,MAAM,GAAG,EAAE;UAAEC,KAAK;UAClBC,SAAS,GAAG,QAAQ;UACpBC,QAAQ,GAAG,KAAK;UAChBC,QAAQ;UACRC,UAAU;UACVC,aAAa;UACbC,kBAAkB;UAClBC,qBAAqB;UACrBC,KAAK;UACLC;QAEF,CAAC,GAAG,CAAC,CAAC,EAAE;UACN,IAAI,CAACC,EAAE,GAAGd,SAAS;UACnBA,SAAS,EAAE;UACX,IAAI,CAACe,WAAW,GAAG1C,YAAY,CAAC2C,OAAO;UACvC,IAAI,CAACC,eAAe,GAAG,IAAI;UAE3B,IAAI,CAACC,YAAY,GAAG,IAAI/D,WAAW,EAAE,EAAE,IAAI,CAACF,IAAI,GAAGA,IAAI;UACvD,IAAI,CAACkD,MAAM,GAAGA,MAAM;UACpB,IAAI,CAACE,SAAS,GAAGA,SAAS;UAC1B,IAAI,CAACc,UAAU,GAAG,CAACb,QAAQ;UAC3B,IAAI,CAACc,YAAY,CAAChB,KAAK,CAAC;UACxB,IAAI,CAACiB,SAAS,GAAG,EAAE;UAEnB,IAAI,CAACC,WAAW,GAAG,KAAK;UACxB,IAAI,CAACC,oCAAoC,GAAG,KAAK;UAEjD,IAAI,CAACC,YAAY,GAAG,IAAIpE,WAAW,EAAE;UACrC,IAAImD,QAAQ,EAAE;YACZ,IAAI,CAACkB,IAAI,CAAC;cAAElB;YAAS,CAAC,CAAC;UACzB;UAEA,IAAI,CAACmB,gBAAgB,GAAGzB,uBAAuB,CAAC0B,IAAI,EAAE;UACtD,IAAInB,UAAU,EAAE;YACd,IAAI,CAACiB,IAAI,CAAC;cAAEjB;YAAW,CAAC,CAAC;UAC3B;UAEA,IAAGC,aAAa,EAAE;YAChB,IAAI,CAACgB,IAAI,CAAC;cAAEG,WAAW,EAAErC,gBAAgB,CAACG;YAAG,CAAC,CAAC;YAC/C,IAAI,CAAC+B,IAAI,CAAC;cAAEI,WAAW,EAAE;gBAACC,OAAO,EAAEpB,kBAAkB;gBAAEqB,UAAU,EAAEpB;cAAqB;YAAC,CAAC,CAAC;UAC7F,CAAC,MAAM,IAAIC,KAAK,EAAE;YAChB,IAAI,CAACa,IAAI,CAAC;cAAEG,WAAW,EAAErC,gBAAgB,CAACI;YAAI,CAAC,CAAC;YAChD,IAAI,CAAC8B,IAAI,CAAC;cAAEI,WAAW,EAAEhB;YAAG,CAAC,CAAC;UAChC,CAAC,MAAM;YACL,IAAI,CAACY,IAAI,CAAC;cAAEG,WAAW,EAAErC,gBAAgB,CAACC;YAAG,CAAC,CAAC;UACjD;UAEA,IAAI,CAACwC,gBAAgB,EAAE;UAEvB,IAAI,CAACC,aAAa,EAAE;UACpB,IAAI,CAACC,cAAc,EAAE;UACrB,IAAI,CAACC,QAAQ,CAAC5E,UAAU,CAAC6E,OAAO,EAAE;YAAEC,KAAK,EAAEC,MAAM,CAACD,KAAK,EAAE;YAAEE,KAAK,EAAE,IAAI,CAACC;UAAU,CAAC,CAAC;QACrF;QAEAN,cAAc,GAAG;UACf,IAAI,CAACM,SAAS,GAAG1C,YAAY;UAC7B,IAAI,CAAC2C,eAAe,EAAE;QACxB;QAEAA,eAAe,GAAG;UAChB,MAAM;YAAEF,KAAK;YAAEG;UAAQ,CAAC,GAAG,IAAI,CAACC,sBAAsB,EAAE;UACxD,IAAI,CAACD,OAAO,EAAE;YACZ,IAAI,CAACE,WAAW,CAACL,KAAK,CAAC;UACzB;QACF;QAEAN,aAAa,GAAG;UACd7D,aAAa,CAACyE,QAAQ,CAAC,IAAI,CAAC;QAC9B;QAEAC,YAAY,GAAG;UACb,OAAO,IAAI,CAACzB,SAAS,CAAC0B,MAAM,KAAK,CAAC;QACpC;;QAEA;AACF;AACA;AACA;AACA;AACA;QACEC,eAAe,GAAG;UAChB5E,aAAa,CAAC6E,oBAAoB,CAAC,IAAI,CAAC;UACxC,IAAIC,WAAW;UACf,IAAI;YACFA,WAAW,GAAG,IAAI,CAACjG,IAAI,CAAC,GAAG,IAAI,CAACkD,MAAM,CAAC;UACzC,CAAC,SAAS;YACR/B,aAAa,CAAC+E,kBAAkB,EAAE;UACpC;UACA,OAAOD,WAAW;QACpB;;QAEA;AACF;AACA;AACA;AACA;QACEP,sBAAsB,GAAG;UACvB,IAAI;YACF,MAAMxD,MAAM,GAAG,IAAI,CAAC6D,eAAe,EAAE;YACrC,OAAO;cAAET,KAAK,EAAEpD,MAAM;cAAEuD,OAAO,EAAE;YAAM,CAAC;UAC1C,CAAC,CAAC,OAAOU,CAAC,EAAE;YACV,MAAMC,YAAY,GAAG,IAAI,CAAClB,QAAQ,CAAC5E,UAAU,CAAC+F,QAAQ,EAAE;cAACC,KAAK,EAAEH;YAAC,CAAC,CAAC;YACnE,OAAO;cAAEb,KAAK,EAAEa,CAAC;cAAEV,OAAO,EAAE,IAAI;cAAEW;YAAa,CAAC;UAClD;QACF;;QAEA;QACA;QACA;QACA;QACAG,EAAE,CAACC,IAAI,EAAEC,QAAQ,EAAE;UACjB,IAAI,CAACxC,YAAY,CAACyC,gBAAgB,CAACF,IAAI,EAAEC,QAAQ,CAAC;UAClD,OAAO,IAAI;QACb;QAEAE,GAAG,CAACH,IAAI,EAAEC,QAAQ,EAAE;UAClB,IAAI,CAACxC,YAAY,CAAC2C,mBAAmB,CAACJ,IAAI,EAAEC,QAAQ,CAAC;UACrD,OAAO,IAAI;QACb;QAEAI,IAAI,CAACL,IAAI,EAAE,GAAGtD,MAAM,EAAE;UACpB,IAAI,CAACe,YAAY,CAAC6C,aAAa,CAACN,IAAI,EAAE,GAAGtD,MAAM,CAAC;QAClD;QAEA6D,iBAAiB,CAACP,IAAI,EAAE;UACtB,OAAO,IAAI,CAACvC,YAAY,CAAC8C,iBAAiB,CAACP,IAAI,CAAC;QAClD;;QAEA;QACA;AACF;AACA;AACA;AACA;QACEQ,QAAQ,CAACP,QAAQ,EAAEQ,cAAc,EAAE;UACjC,IAAI,CAAC7C,SAAS,CAAC8C,IAAI,CAACT,QAAQ,CAAC;UAC7B,IAAI,CAACvB,QAAQ,CAAC5E,UAAU,CAAC6G,OAAO,EAAE;YAAEV,QAAQ;YAAEQ;UAAe,CAAC,CAAC;UAC/D9F,aAAa,CAACiG,WAAW,CAAC,IAAI,CAAC;UAC/B,OAAO,IAAI;QACb;QACA;AACF;AACA;AACA;AACA;QACE;QACAC,SAAS,CAACZ,QAAQ,EAAEQ,cAAc,EAAE;UAClC,MAAMK,KAAK,GAAG,IAAI,CAAClD,SAAS,CAACmD,OAAO,CAACd,QAAQ,CAAC;UAC9C,IAAIa,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAClD,SAAS,CAACoD,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;YAC/B,IAAI,CAACpC,QAAQ,CAAC5E,UAAU,CAACmH,SAAS,EAAE;cAAEhB,QAAQ;cAAEQ;YAAe,CAAC,CAAC;YACjE9F,aAAa,CAACiG,WAAW,CAAC,IAAI,CAAC;UACjC;UACA,IAAI,IAAI,CAAC9C,oCAAoC,IAAI,IAAI,CAACF,SAAS,CAAC0B,MAAM,KAAK,CAAC,EAAE;YAC5E,IAAI,CAAC4B,OAAO,EAAE;UAChB;UAEA,OAAO,IAAI;QACb;;QAEA;AACF;AACA;AACA;AACA;QACEC,cAAc,CAACC,YAAY,GAAG,EAAE,EAAE;UAChC,IAAI,CAAC,IAAI,CAAC1D,UAAU,EAAE;YACpB;UACF;UAEA,MAAM;YAAEoB,KAAK;YAAEG,OAAO;YAAEW;UAAa,CAAC,GAAG,IAAI,CAACV,sBAAsB,EAAE;UACtE,MAAMmC,gBAAgB,GAAG1G,aAAa,CAAC2G,aAAa,CAAC3G,aAAa,CAAC2G,aAAa,CAAChC,MAAM,GAAG,CAAC,CAAC;UAC5F,IAAIL,OAAO,EAAE;YACXW,YAAY,CAAC2B,IAAI,CAACC,KAAK,IAAI;cACzB,IAAG,CAACA,KAAK,CAAC1C,KAAK,EAAE;cACjB2C,OAAO,CAACC,GAAG,CAACN,YAAY,CAAC,CAACG,IAAI,CAACI,QAAQ,IAAI;gBACzCH,KAAK,CAAC1C,KAAK,CAAC6C,QAAQ,GAAGA,QAAQ;gBAC/BH,KAAK,CAAC1C,KAAK,CAAC8C,QAAQ,GAAGP,gBAAgB,IAAIA,gBAAgB,CAACQ,EAAE;gBAC9DL,KAAK,CAAC1C,KAAK,CAACmB,QAAQ,GAAGoB,gBAAgB,IAAIA,gBAAgB,CAACpB,QAAQ;cACtE,CAAC,CAAC;YACJ,CAAC,CAAC;YACF;UACF,CAAC,MAAM,IAAI,IAAI,CAAC6B,cAAc,CAAC,IAAI,CAAC/C,SAAS,EAAED,KAAK,CAAC,EAAE;YACrD;UACF;UACA,MAAMC,SAAS,GAAG,IAAI,CAACA,SAAS;UAChC,IAAI,CAACI,WAAW,CAACL,KAAK,CAAC;UACvB,IAAI,CAACJ,QAAQ,CAAC,eAAe,EAAE+C,OAAO,CAACC,GAAG,CAACN,YAAY,CAAC,CAACG,IAAI,CAACI,QAAQ,IAAI;YACxE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;YACM,OAAO;cACL7C,KAAK;cACL6C,QAAQ;cACR5C,SAAS;cACT6C,QAAQ,EAAEP,gBAAgB,IAAIA,gBAAgB,CAACQ,EAAE;cACjD5B,QAAQ,EAAEoB,gBAAgB,IAAIA,gBAAgB,CAACpB;YAAS,CAAC;UAC7D,CAAC,CAAC,CAAC;UAEH,IAAI,CAAC8B,MAAM,CAACjD,KAAK,EAAE;YACjBC,SAAS;YACTiD,IAAI,EAAE,IAAI,CAACxI,IAAI;YACfD,KAAK,EAAE;UACT,CAAC,CAAC;QACJ;QAEA,MAAM0I,UAAU,GAAG;UACjB,MAAMrD,KAAK,GAAGC,MAAM,CAACD,KAAK,EAAE;UAC5B,MAAMsD,MAAM,GAAGtD,KAAK,CAACsD,MAAM;UAE3B,KAAK,IAAIC,KAAK,IAAID,MAAM,EAAE;YACxB,IAAI,CAACC,KAAK,CAACC,IAAI,CAACC,QAAQ,CAAC,mBAAmB,CAAC,IAAIF,KAAK,CAACC,IAAI,KAAK,aAAa,EAAE;cAC7E,OAAO,MAAMD,KAAK,CAACG,sBAAsB,EAAE;YAC7C;UACF;UACA,OAAOC,SAAS;QAClB;QAEA,MAAMC,gBAAgB,CAACC,IAAI,EAAE;UAC3B,IAAIC,CAAC,GAAGD,IAAI,CAAC9F,KAAK,CAAC,mCAAmC,CAAC;UACvD,IAAI,CAAC+F,CAAC,EAAE,OAAO,KAAK;UACpB,IAAIC,gBAAgB,GAAGD,CAAC,CAAC,CAAC,CAAC;UAC3B,OAAO,CAAC,MAAME,KAAK,CAACD,gBAAgB,CAAC,EAAEE,IAAI,EAAE;QAC/C;QAEAC,gBAAgB,CAACL,IAAI,EAAE;UACrB,IAAIC,CAAC,GAAGD,IAAI,CAAC9F,KAAK,CAAC,4BAA4B,CAAC;UAChD,IAAI,CAAC+F,CAAC,EAAE,OAAO,KAAK;UACpB,OAAOA,CAAC,CAAC,CAAC,CAAC;QACb;QAEA/E,YAAY,CAACoF,WAAW,EAAE;UACxB;UACA,IAAIA,WAAW,IAAI3I,QAAQ,CAACyB,IAAI,CAACkH,WAAW,CAAC,EAAE;YAC7C,IAAI,CAAC3G,WAAW,CAAC4G,GAAG,CAACD,WAAW,CAAC,EAAE;cACjC,MAAM,IAAIE,KAAK,CAAE,uBAAsBF,WAAY,eAAc,CAAC;YACpE;YACA,IAAI,CAACG,OAAO,GAAG9G,WAAW,CAAC+G,GAAG,CAACJ,WAAW,CAAC;YAC3C;UACF;;UAEA;UACA,IAAI,OAAOA,WAAW,KAAK,QAAQ,EAAE;YACnC,IAAIA,WAAW,CAACK,cAAc,CAAC,SAAS,CAAC,IAAIL,WAAW,CAACK,cAAc,CAAC,OAAO,CAAC,EAAE;cAChF,IAAI,CAACF,OAAO,GAAGH,WAAW;cAC1B;YACF;YACA,MAAM,IAAIE,KAAK,CAAE,sEAAqE,CAAC;UACzF;;UAEA;UACA,IAAI,CAACC,OAAO,GAAGhK,cAAc;QAC/B;;QAEA;QACA4I,cAAc,CAAC7G,UAAU,EAAEC,SAAS,EAAE;UACpC,IAAI;YACFJ,MAAM,CAACC,uBAAuB,GAAG,IAAI;YACrC,OAAO,IAAI,CAACmI,OAAO,CAAClI,OAAO,CAACC,UAAU,EAAEC,SAAS,CAAC;UACpD,CAAC,SAAS;YACRJ,MAAM,CAACC,uBAAuB,GAAG,KAAK;UACxC;QACF;QAEAoE,WAAW,CAACzD,MAAM,EAAE;UAClB,IAAI;YACFZ,MAAM,CAACC,uBAAuB,GAAG,IAAI;YACrC,IAAI,CAACgE,SAAS,GAAG,IAAI,CAACmE,OAAO,CAACzH,KAAK,CAACC,MAAM,CAAC;UAC7C,CAAC,SAAS;YACRZ,MAAM,CAACC,uBAAuB,GAAG,KAAK;UACxC;QACF;QAEAgH,MAAM,CAAC,GAAGtI,IAAI,EAAE;UACd,IAAI,CAACmE,SAAS,CAACyF,OAAO,CAACpD,QAAQ,IAAI;YACjCtF,aAAa,CAAC2I,kBAAkB,CAAC,IAAI,EAAErD,QAAQ,CAAC;YAChDA,QAAQ,CAAC,GAAGxG,IAAI,CAAC;YACjBkB,aAAa,CAAC4I,gBAAgB,EAAE;UAClC,CAAC,CAAC;UACF5I,aAAa,CAACiG,WAAW,CAAC,IAAI,CAAC;QACjC;QAEA4C,kBAAkB,GAAG,CAAC;;QAEtB;AACF;AACA;AACA;AACA;AACA;AACA;QACEC,aAAa,CAACjK,IAAI,EAAE;UAAEkK,gBAAgB,GAAG;QAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UACpD,IAAI,EAAElK,IAAI,YAAYmK,QAAQ,CAAC,EAAE;YAC/B,MAAM,IAAIC,SAAS,CAAC,qCAAqC,CAAC;UAC5D;UAEA,IAAI,CAACpK,IAAI,GAAGA,IAAI;UAChB,IAAI,CAACgK,kBAAkB,EAAE;UACzB,IAAIE,gBAAgB,EAAE;YACpB,IAAI,CAACvC,cAAc,EAAE;UACvB;UAEA,OAAO,IAAI;QACb;;QAEA;QACA0C,YAAY,CAAC5D,QAAQ,EAAE;UACrB;UACA,IAAI,CAACO,QAAQ,CAACsD,IAAI,IAAI;YACpB,IAAIA,IAAI,EAAE;cACR7D,QAAQ,EAAE;YACZ;UACF,CAAC,CAAC;;UAEF;UACA,MAAM;YAAEnB,KAAK;YAAEG;UAAQ,CAAC,GAAG,IAAI,CAACC,sBAAsB,EAAE;UACxD,IAAI,CAACD,OAAO,IAAIH,KAAK,EAAE;YACrB,IAAI,CAACK,WAAW,CAACL,KAAK,CAAC;YACvBmB,QAAQ,EAAE;UACZ;UAEA,OAAO,IAAI;QACb;QAEA8D,aAAa,CAAC9D,QAAQ,EAAE;UACtB;UACA,IAAI,CAACO,QAAQ,CAACsD,IAAI,IAAI;YACpB,IAAI,CAACA,IAAI,EAAE;cACT7D,QAAQ,EAAE;YACZ;UACF,CAAC,CAAC;;UAEF;UACA,MAAM;YAAEnB,KAAK;YAAEG;UAAQ,CAAC,GAAG,IAAI,CAACC,sBAAsB,EAAE;UACxD,IAAI,CAACD,OAAO,IAAI,CAACH,KAAK,EAAE;YACtB,IAAI,CAACK,WAAW,CAACL,KAAK,CAAC;YACvBmB,QAAQ,EAAE;UACZ;UAEA,OAAO,IAAI;QACb;QAEA+D,QAAQ,CAAC/D,QAAQ,EAAEgE,aAAa,EAAE;UAChC;UACA,IAAI,CAACzD,QAAQ,CAACP,QAAQ,EAAEgE,aAAa,CAAC;;UAEtC;UACA;UACA,MAAM;YAAEnF,KAAK;YAAEG;UAAQ,CAAC,GAAG,IAAI,CAACC,sBAAsB,EAAE;UACxD,IAAI,CAACD,OAAO,EAAE;YACZ,IAAI,CAACE,WAAW,CAACL,KAAK,CAAC;YACvBmB,QAAQ,CAACnB,KAAK,EAAE,CAAC,CAAC,CAAC;UACrB;UAEA,OAAO,IAAI;QACb;;QAEA;QACAoC,OAAO,GAAG;UACR,IAAI,CAAC,IAAI,CAACrD,WAAW,EAAE;YACrB,IAAI,CAACA,WAAW,GAAG,IAAI;YACvB,IAAI,CAACqG,kBAAkB,EAAE;YACzBvJ,aAAa,CAACwJ,WAAW,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC9D,IAAI,CAAC,SAAS,CAAC;YACpB,IAAI,CAAC3B,QAAQ,CAAC5E,UAAU,CAACsK,QAAQ,CAAC;UACpC;QACF;QAEAF,kBAAkB,GAAG;UACnB,KAAK,MAAMjE,QAAQ,IAAI,IAAI,CAACrC,SAAS,EAAE;YACrC,IAAI,CAACiD,SAAS,CAACZ,QAAQ,CAAC;UAC1B;QACF;QAEAoE,UAAU,GAAG;UACX,OAAO,IAAI,CAACxG,WAAW;QACzB;;QAEA;AACF;AACA;AACA;AACA;AACA;AACA;QACEyG,6BAA6B,GAAG;UAC9B,IAAI,CAACxG,oCAAoC,GAAG,IAAI;UAChD,OAAO,IAAI;QACb;QAEAyG,WAAW,GAAG;UACZ,IAAI,IAAI,CAACC,gBAAgB,EAAE;YACzB,OAAO,IAAI,CAACA,gBAAgB;UAC9B;UAEA,OAAO,IAAI,CAACA,gBAAgB,GAAG,IAAI/C,OAAO,CAACgD,OAAO,IAAI;YACpD,IAAI,IAAI,CAACJ,UAAU,EAAE,EAAE;cACrBI,OAAO,EAAE;YACX,CAAC,MAAM;cACL,IAAI,CAAC1E,EAAE,CAAC,SAAS,EAAE0E,OAAO,CAAC;YAC7B;UACF,CAAC,CAAC;QACJ;;QAEA;AACF;AACA;AACA;;QAEEC,MAAM,CAAC;UAAEC,KAAK,GAAG;QAAK,CAAC,GAAG,CAAC,CAAC,EAAE;UAC5B,IAAI,CAAC,IAAI,CAACjH,UAAU,EAAE;YACpB,IAAI,CAACA,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC2C,IAAI,CAAC,QAAQ,CAAC;YAEnB,IAAI,CAACmD,kBAAkB,EAAE;YACzB,IAAImB,KAAK,EAAE;cACT,IAAI,CAACxD,cAAc,EAAE;YACvB,CAAC,MAAM;cACL,IAAI,CAACnC,eAAe,EAAE;YACxB;UACF;QACF;QAEA4F,OAAO,GAAG;UACR,IAAI,IAAI,CAAClH,UAAU,EAAE;YACnB,IAAI,CAACA,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC2C,IAAI,CAAC,SAAS,CAAC;UACtB;QACF;QAEAwE,SAAS,GAAG;UACV,OAAO,IAAI,CAACnH,UAAU;QACxB;QAEAoH,UAAU,GAAG;UACX,OAAO,CAAC,IAAI,CAACpH,UAAU;QACzB;;QAEA;QACAqH,eAAe,GAAG;UAChB,IAAG,IAAI,CAACzH,WAAW,KAAK1C,YAAY,CAAC2C,OAAO,EAAE;YAC5C,MAAMT,QAAQ,GAAG,IAAI,CAACkB,IAAI,EAAE,CAACmF,GAAG,CAAC,UAAU,CAAC;YAC5C,IAAGrG,QAAQ,EAAE;cACX,OAAOnC,aAAa,CAACqK,SAAS,CAAClI,QAAQ,CAACsF,IAAI,EAAEtF,QAAQ,CAACmI,KAAK,CAACC,IAAI,CAAC;YACpE;UACF;UACA,OAAO,IAAI,CAAC5H,WAAW,KAAK1C,YAAY,CAACuK,GAAG;QAC9C;QAEAC,aAAa,GAAG;UACd,IAAI,CAACC,UAAU,CAAC,CAAC,IAAI,CAACN,eAAe,EAAE,CAAC;QAC1C;QAEAM,UAAU,CAACX,MAAM,EAAE;UACjB,IAAI,CAACpH,WAAW,GAAGoH,MAAM,GAAG9J,YAAY,CAACuK,GAAG,GAAGvK,YAAY,CAAC0K,IAAI;QAClE;QAEAC,QAAQ,GAAG;UACT,IAAIC,MAAM,GAAG,IAAI,CAACA,MAAM;UACxB,OAAO,CAAC,IAAI,CAACT,eAAe,EAAE,GAAG,UAAU,GAAG,cAAc,KAAK,IAAI,CAACvH,eAAe,GAAG,WAAW,GAAG,aAAa,CAAC,GAAGjD,SAAS,CAACiL,MAAM,CAAClG,MAAM,EAAE,OAAO,CAAC;QAC1J;QAEAtB,IAAI,CAACyH,UAAU,EAAE;UACf,IAAIA,UAAU,EAAE;YACd,IAAI,CAAC1H,YAAY,CAAC2H,GAAG,CAACD,UAAU,CAAC;YACjC,OAAO,IAAI;UACb,CAAC,MAAM;YACL,OAAO,IAAI,CAAC1H,YAAY;UAC1B;QACF;QAEA4H,SAAS,GAAG;UACV,OAAO,IAAI,CAAC1H,gBAAgB;QAC9B;QAEA2H,eAAe,GAAG;UAChB,MAAM9I,QAAQ,GAAG,IAAI,CAACkB,IAAI,EAAE,CAACmF,GAAG,CAAC,UAAU,CAAC;UAC5C,IAAIrG,QAAQ,EAAE;YACZ,OAAOA,QAAQ,CAACsF,IAAI,CAACyD,SAAS,CAAC/I,QAAQ,CAACsF,IAAI,CAAC0D,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAGhJ,QAAQ,CAACmI,KAAK,CAACC,IAAI;UACrG,CAAC,MAAM;YACL,OAAO,kBAAkB;UAC3B;QACF;QAEAa,aAAa,GAAG;UACd,IAAG,IAAI,CAAC/I,aAAa,EAAE,EAAE;YACvB,OAAO,IAAI,CAACgJ,cAAc,EAAE,CAAC1H,UAAU;UACzC;UACA,IAAG,IAAI,CAACnB,KAAK,EAAE,EAAE;YACf,OAAO,IAAI,CAAC8I,QAAQ,EAAE,CAACC,IAAI;UAC7B;UACA,OAAO,IAAI,CAACC,aAAa,CAAC,EAAE,CAAC;QAC/B;QAEAC,OAAO,GAAG;UACR,IAAG,IAAI,CAACpJ,aAAa,EAAE,EAAE;YACvB,OAAO,IAAI,CAACiB,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC+H,cAAc,EAAE,CAAC1H,UAAU;UACvE;UACA,IAAG,IAAI,CAACnB,KAAK,EAAE,EAAE;YACf,OAAO,IAAI,CAACc,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAACgI,QAAQ,EAAE,CAACC,IAAI;UAC3D;UACA,MAAMpJ,QAAQ,GAAG,IAAI,CAACkB,IAAI,EAAE,CAACmF,GAAG,CAAC,UAAU,CAAC;UAC5C,IAAIrG,QAAQ,EAAE;YACZ,OAAO,IAAI,CAACmB,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC2H,eAAe,EAAE;UAC7D,CAAC,MAAM;YACL,OAAO,IAAI,CAAC3H,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAACD,IAAI,EAAE,CAACmF,GAAG,CAAC,IAAI,CAAC;UAC5D;QACF;QAEA,IAAIqC,MAAM,GAAG;UACX,OAAO,IAAI,CAACxH,IAAI,EAAE,CAACmF,GAAG,CAAC,QAAQ,CAAC;QAClC;QAEAnG,aAAa,GAAG;UACd,OAAO,IAAI,CAACgB,IAAI,EAAE,CAACmF,GAAG,CAAC,aAAa,CAAC,KAAKrH,gBAAgB,CAACG,EAAE;QAC/D;QAEAkB,KAAK,GAAG;UACN,OAAO,IAAI,CAACa,IAAI,EAAE,CAACmF,GAAG,CAAC,aAAa,CAAC,KAAKrH,gBAAgB,CAACI,GAAG;QAChE;QAEAmK,OAAO,GAAG;UACR,IAAG,IAAI,CAACrJ,aAAa,EAAE,EAAE;YACvB,OAAO,QAAQ;UACjB;UACA,IAAG,IAAI,CAACG,KAAK,EAAE,EAAE;YACf,OAAO,gBAAgB;UACzB;UACA,OAAO,mBAAmB;QAC5B;QAEAmJ,YAAY,GAAG;UACb,IAAG,IAAI,CAACtJ,aAAa,EAAE,EAAE;YACvB,OAAO,IAAI;UACb;UACA,IAAG,IAAI,CAACG,KAAK,EAAE,EAAE;YACf,OAAO,IAAI;UACb;UACA,OAAO,IAAI;QACb;QAEA8I,QAAQ,GAAG;UACT,IAAG,CAAC,IAAI,CAAC9I,KAAK,EAAE,EAAE,OAAOoF,SAAS;UAClC,OAAO,IAAI,CAACvE,IAAI,EAAE,CAACmF,GAAG,CAAC,aAAa,CAAC;QACvC;QAEA6C,cAAc,GAAG;UACf,IAAG,CAAC,IAAI,CAAChJ,aAAa,EAAE,EAAE,OAAOuF,SAAS;UAC1C,OAAO,IAAI,CAACvE,IAAI,EAAE,CAACmF,GAAG,CAAC,aAAa,CAAC;QACvC;QAEAgD,aAAa,CAACI,MAAM,GAAG,CAAC,CAAC,EAAEC,OAAO,GAAG,IAAI,EAAE;UACzC,IAAI/D,IAAI;UACR,IAAI,IAAI,CAACzE,IAAI,EAAE,CAACgF,GAAG,CAAC,YAAY,CAAC,EAAE;YACjCP,IAAI,GAAG,IAAI,CAACzE,IAAI,EAAE,CAACmF,GAAG,CAAC,YAAY,CAAC;UACtC,CAAC,MAAM;YACLV,IAAI,GAAG,cAAc;UACvB;UACA,IAAIA,IAAI,CAACgE,UAAU,CAAC,OAAO,CAAC,EAAE;YAC5BhE,IAAI,GAAGA,IAAI,CAACoD,SAAS,CAAC,CAAC,CAAC;UAC1B;UACA,IAAIW,OAAO,EAAE;YACX/D,IAAI,GAAGA,IAAI,CAACiE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;UAClC;UACAjE,IAAI,GAAGA,IAAI,CAACkE,IAAI,EAAE;UAClB,IAAIJ,MAAM,GAAG,CAAC,EAAE,OAAO9D,IAAI;UAC3B,IAAIA,IAAI,CAACnD,MAAM,GAAGiH,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO9D,IAAI,CAACoD,SAAS,CAAC,CAAC,EAAEU,MAAM,CAAC,GAAG,KAAK;UAC1C;UACA,OAAO9D,IAAI;QACb;QAEAmE,oBAAoB,GAAG;UACrB,OAAO,KAAK;QACd;QAEArI,gBAAgB,GAAG;UACjB,IAAI,CAACP,IAAI,CAAC;YAAEwH,MAAM,EAAE,IAAIrK,KAAK;UAAG,CAAC,CAAC;QACpC;QAEA0L,aAAa,CAACC,MAAM,EAAE;UACpB,IAAI,CAACpI,QAAQ,CAAC5E,UAAU,CAACiN,MAAM,EAAED,MAAM,CAAC;QAC1C;QAEAE,QAAQ,CAACxF,KAAK,EAAE;UACd,MAAMgE,MAAM,GAAG,IAAI,CAACA,MAAM;UAC1BA,MAAM,CAAC9E,IAAI,CAACc,KAAK,CAAC;UAClB,IAAGgE,MAAM,CAAClG,MAAM,KAAK,CAAC,IAAIkG,MAAM,CAACA,MAAM,CAAClG,MAAM,GAAG,CAAC,CAAC,CAAC2H,SAAS,GAAGzF,KAAK,CAACyF,SAAS,EAAE;YAC/EzB,MAAM,CAAC0B,IAAI,CAAC,CAACC,EAAE,EAAEC,EAAE,KAAKD,EAAE,CAACF,SAAS,GAAGG,EAAE,CAACH,SAAS,CAAC;UACtD;UACA,IAAIzB,MAAM,CAAClG,MAAM,GAAG,IAAI,EAAEkG,MAAM,CAAC6B,KAAK,EAAE;UACxC,OAAO7B,MAAM,CAAClG,MAAM,CAAC,CAAC;QACxB;;QAEAZ,QAAQ,CAACsB,IAAI,EAAElB,KAAK,EAAEwI,iBAAiB,GAAG/E,SAAS,EAAE;UACnD,IAAI,IAAI,CAACgF,MAAM,EAAE,EAAE;UACnB,IAAG,CAAC,IAAI,CAACxC,eAAe,EAAE,EAAE;YAC1B,IAAI,CAACvH,eAAe,GAAG,KAAK;YAC5B,OAAOiE,OAAO,CAACgD,OAAO,CAAC,CAAC,CAAC,CAAC;UAC5B;UACA,IAAGzE,IAAI,IAAIlG,UAAU,CAAC6G,OAAO,KAAK,IAAI,CAACxD,KAAK,EAAE,IAAI,IAAI,CAACH,aAAa,EAAE,CAAC,EAAE;YACvE,OAAO,CAAC;UACV;;UACA,MAAM2C,CAAC,GAAG,IAAI/F,KAAK,CAAC,IAAI,EAAEkF,KAAK,EAAEkB,IAAI,EAAEsH,iBAAiB,CAAC;UACzD,OAAO3H,CAAC,CAAC6H,cAAc,EAAE;QAC3B;;QAEA;QACA;QACAC,aAAa,CAACC,KAAK,EAAE;UACnB,IAAIC,WAAW,GAAGD,KAAK,CAAClC,MAAM;UAC9B,IAAIA,MAAM,GAAG,IAAI,CAACA,MAAM;UAExBA,MAAM,CAACoC,OAAO,CAAC,GAAGD,WAAW,CAAC;QAChC;QAEAJ,MAAM,CAACzI,KAAK,EAAE;UACZ,IAAIA,KAAK,KAAKyD,SAAS,EAAE,IAAI,CAACvE,IAAI,CAAC;YAAEuJ,MAAM,EAAEzI;UAAM,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAACd,IAAI,EAAE,CAACgF,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAChF,IAAI,EAAE,CAACmF,GAAG,CAAC,QAAQ,CAAC;QAC1H;;QAEA;;QAEA;QACA0E,SAAS,GAAG;UACV,OAAO,IAAIpG,OAAO,CAACgD,OAAO,IAAI;YAC5B,MAAMxE,QAAQ,GAAGnB,KAAK,IAAI;cACxB,IAAI,CAAC+B,SAAS,CAACZ,QAAQ,CAAC;cACxBwE,OAAO,CAAC3F,KAAK,CAAC;YAChB,CAAC;YACD,IAAI,CAAC0B,QAAQ,CAACP,QAAQ,CAAC;UACzB,CAAC,CAAC;QACJ;QAEA6H,MAAM,GAAG;UACP,MAAMvD,WAAW,GAAG,IAAI,CAACA,WAAW,EAAE;UAEtC,MAAMwD,UAAU,GAAG,EAAE;UAErB,IAAIC,WAAW;UACf,IAAIC,YAAY;UAChB,SAASC,iBAAiB,GAAG;YAC3BD,YAAY,GAAG,IAAIxG,OAAO,CAACgD,OAAO,IAAI;cACpCuD,WAAW,GAAGvD,OAAO;YACvB,CAAC,CAAC;UACJ;UACAyD,iBAAiB,EAAE;UAEnB,IAAI,CAAC1H,QAAQ,CAAC2H,CAAC,IAAI;YACjBJ,UAAU,CAACrH,IAAI,CAACyH,CAAC,CAAC;YAClB,MAAMC,IAAI,GAAGJ,WAAW;YACxBE,iBAAiB,EAAE;YACnBE,IAAI,EAAE;UACR,CAAC,CAAC;UAEF,OAAO;YACL,CAAC9L,MAAM,CAAC+L,aAAa,IAAI;cACvB,OAAO;gBACLnK,IAAI,GAAG;kBACL,IAAI6J,UAAU,CAACzI,MAAM,GAAG,CAAC,EAAE;oBACzB,OAAO;sBACLR,KAAK,EAAEiJ,UAAU,CAACV,KAAK,EAAE;sBACzBiB,IAAI,EAAE;oBACR,CAAC;kBACH,CAAC,MAAM;oBACL,OAAO7G,OAAO,CAAC8G,IAAI,CAAC,CAACN,YAAY,CAAC1G,IAAI,CAAC,MAAM,IAAI,CAACrD,IAAI,EAAE,CAAC,EAAEqG,WAAW,CAAChD,IAAI,CAAC,OAAO;sBAAE+G,IAAI,EAAE;oBAAK,CAAC,CAAC,CAAC,CAAC,CAAC;kBACvG;gBACF;cACF,CAAC;YACH;UACF,CAAC;QACH;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,gCA7qBYhP,qDAAoB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA,mBAmrBlBA,oBAAoB,GAEnC;IAAA;EAAA;AAAA"}